Skip to content

Releases: rogasper/onesist

Onesist v0.4.2

Choose a tag to compare

@github-actions github-actions released this 21 Oct 23:31

Chat kini bisa memakai tool dari server MCP di luar Onesist. Server dikelola dari Settings → MCP: pilih preset, hubungkan, uji koneksi, lalu tentukan apakah server itu baca-saja atau tidak.

Feat — MCP

  • Lima preset: GitHub, Figma, Miro, Monday, dan Custom (HTTP, SSE, atau Stdio).
  • GitHub lewat gh CLI. GitHub tidak menerima pendaftaran klien OAuth otomatis, jadi Onesist memakai token gh yang sudah login dan menampilkan akun serta scope-nya.
  • OAuth 2.0 + PKCE dengan dynamic client registration untuk Miro dan Monday. Figma dan GitHub memakai Personal Access Token.
  • Kredensial baru tersimpan saat menekan Simpan. Koneksi menghasilkan referensi sementara (30 menit); Batal atau ganti preset tidak meninggalkan token apa pun.
  • Tool diberi namespace <server>__<tool> supaya tidak bentrok, dan tampil di transkrip sebagai grup "MCP".
  • Trigger %server di composer untuk memakai satu server saja pada pesan itu. Tanpa trigger, semua server yang aktif dimuat.
  • Toggle baca-saja per server. Server yang ditandai baca-saja tidak meminta persetujuan untuk setiap tool; server lain selalu meminta izin sebelum tool dijalankan.
  • Halaman callback OAuth mandiri, tanpa aset dari CDN.

Security — MCP

  • Hanya http/https dan host publik. Endpoint yang mengarah ke localhost, loopback, jaringan privat, link-local, atau rentang reserved ditolak, termasuk IPv6 mapped dan bentuk desimal/hex dari alamat yang sama. Hostname di-resolve dan setiap alamatnya diperiksa; redirect diikuti manual supaya URL publik tidak bisa memantul ke jaringan lokal.
  • Nama server tidak boleh mengandung __, karena nama itu menjadi prefix tool yang dibaca lagi oleh gerbang izin.
  • Token OAuth tidak dikirim ke halaman. Halaman hanya memegang referensi kredensial sampai baris disimpan.
  • Halaman callback tidak lagi memuat script dari CDN dan semua nilai dari query string di-escape sebelum masuk ke HTML.

Fix — Chat

  • Turn CLI tidak lagi menghubungi server MCP. Tool eksternal hanya dimuat untuk turn native, dan server yang tidak menjawab dibatasi 12 detik agar tidak menahan giliran.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.4.1

Choose a tag to compare

@github-actions github-actions released this 19 Oct 05:54
0f71810

Perbaikan untuk chat yang berhenti di tengah run. Run di server tetap jalan seperti biasa, dan sekarang klien juga kembali mengikutinya.

Fix — Chat

  • Stream putus tidak lagi membuat chat macet. Setelah koneksi terputus, chat menyambung ulang ke run yang masih berjalan. Tombol Hentikan tetap terlihat, dan banner error disembunyikan selama run aktif.
  • Hentikan tersedia saat menonton run yang dimulai dari window lain.
  • Coba lagi dan edit pesan saat run masih berjalan menunggu run selesai dengan pesan yang jelas, bukan pesan error mentah.
  • Satu pesan yang gagal ditampilkan tidak menjatuhkan seluruh chat. Teks pesan tetap terlihat, dan kejadiannya dicatat di log server.
  • Chat lebih ringan saat jawaban sedang mengalir: pembaruan tampilan digabung dalam jeda singkat.

Fix — Desktop

  • Log server sesi sebelumnya disimpan sebagai server.prev.log, tidak ditimpa saat aplikasi dibuka ulang.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 08:21
77ca888

Rilis besar setelah v0.3.0: chat kini bisa memakai Claude Code, Codex, Antigravity, dan Pi sebagai agent, lengkap dengan izin per aksi dan tombol Stop. Thread bisa dipindah antar provider, dicabang, dan dikerjakan di worktree sendiri. Pane bisa dibuka di window desktop terpisah.

Feat — Chat

  • Claude Code, Codex, Antigravity (agy), dan Pi sebagai provider chat. Masing-masing dideteksi, bisa diuji dari pengaturan, dan memakai binary yang sudah terpasang di komputer.
  • Izin per aksi. Aksi yang butuh izin (tulis berkas, perintah shell) menampilkan kartu "Izinkan sekali", "Selalu izinkan", atau "Tolak". Mode baca-saja tidak pernah menjalankan perubahan.
  • Lanjutkan di terminal untuk thread Claude Code, Codex, Antigravity, dan Pi.
  • Pindah provider di tengah thread. Riwayat dibawa ke sesi CLI baru secara terbatas, dan saat kembali hanya perubahan sejak terakhir yang dikirim. Pergantian ditandai di transkrip.
  • Fork dan merge back. Thread bisa dicabang, dan hasil cabang bisa dibawa kembali ke induknya.
  • Workspace per thread. Thread bisa bekerja di folder project, di repo input/code/<repo>, atau di worktree Git baru. Worktree bisa dibersihkan dari aplikasi; perubahan lokal tidak akan hilang tanpa konfirmasi.
  • Generate OpenAPI, RTM, dan SIT berjalan sebagai thread chat.
  • Output tool besar dipotong di transkrip dan bisa dimuat utuh dari kartu tool.

Feat — Window

  • Pane di window desktop terpisah. Tombol "Window baru" di tab project membuka satu tab di window sendiri, sampai 5 window.
  • Satu penulis per dokumen. Dokumen yang sedang dibuka di window lain tampil hanya-baca sampai window itu melepasnya.

Fix

  • Aplikasi macOS: entitlements untuk sidecar Bun, supaya aplikasi tidak crash saat dibuka.
  • Sesi CLI disimpan sebelum giliran pertama selesai, sehingga thread tidak kehilangan sesinya kalau giliran gagal.
  • Pesan saat run berjalan masuk antrean di server dan tidak hilang.
  • Edit yang belum disimpan di pane window: pindah tab atau tutup window meminta konfirmasi dulu.
  • Dialog izin Claude Code tidak lagi menyimpan "selalu izinkan" ke pengaturan project.

Perubahan perilaku

  • agent-runner sudah dihapus. Generate OpenAPI, RTM, dan SIT sekarang membuka thread chat, bukan proses terpisah di halaman.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.3.0

Choose a tag to compare

@github-actions github-actions released this 11 Oct 13:59
6236d49

Rilis perbaikan UI chat dan project: panel Berkas dan Memori dipindah ke sheet samping, composer satu baris, dan tab Task dibuka sebagai modal. Konteks percakapan yang penuh kini diringkas otomatis dan terlihat di transkrip.

Feat — Chat

  • Berkas dan Memori di sheet samping (Berkas, Memori). Berkas yang dibaca agent lalu berubah di luar agent ditandai di header.
  • Composer satu baris dengan menu Mode (Jawab, Rencana, Kerjakan), Aksi, dan Izin. Meter konteks menampilkan total percakapan dan status ringkasan.
  • Daftar model lengkap per provider. Pemilih model menampilkan semua model yang diberikan provider, dengan pencarian, dan tombol "Perbarui" per provider.
  • Konteks diringkas otomatis. Sebelum giliran dikirim, percakapan yang sudah melewati 70% konteks diringkas dulu. Saat run berjalan, ringkasan juga bisa dibuat di tengah run.
  • Divider ringkasan di transkrip. "Meringkas konteks…" saat berjalan, lalu "Konteks diringkas · X → Y token · otomatis/manual". Ringkasan lama tampil dengan gaya yang sama setelah halaman dimuat ulang.
  • Ikon untuk aksi jawaban: coba lagi, cabang, dan salin. Jumlah token dan waktu berpikir tampil sebagai ikon.
  • Tabel di jawaban bisa digeser ke samping dan kolomnya tidak lagi terhimpit.
  • Perintah /compact di menu / untuk meringkas percakapan.
  • Panel chat dan terminal menempel di tepi kanan jendela, penuh dari atas sampai bawah.

Feat — Project

  • Pratinjau PDF dan gambar di Overview. Gambar dan PDF dibuka di dalam aplikasi lewat GET /api/files/raw (hanya PDF dan gambar yang diizinkan).
  • Folder di Overview tertutup secara default. Folder yang berisi berkas aktif dibuka otomatis.
  • Pencarian berkas untuk ERD dan API Spec, menggantikan dropdown biasa.
  • Tab Docs: prompt Agent mengisi tinggi kolom, dan dokumen yang dihasilkan tampil sebagai daftar dengan viewer di modal.
  • Tab Task: detail task dibuka sebagai modal. Tombol Copy menyalin tampilan yang sudah dirender, dan Copy Agent Prompt menyalin prompt.

Fix

  • Banner update tampil di atas sidebar. Pemeriksaan update saat start tidak lagi menggeser layout (tidak ada bar sementara).

Verifikasi

  • bun run typecheck bersih. bun test: 161 tes di 33 berkas lulus.
  • Dijalankan di aplikasi desktop yang di-build (debug) pada project customer-service-ai dan technical-assesment: layout panel dock, ringkasan manual (meter turun dari 15% ke 7%), divider ringkasan setelah dimuat ulang, footer berikon, dan menu /compact.
  • Belum diuji di aplikasi: ringkasan otomatis sebelum giliran dan di tengah run (perlu thread di atas 70%), tabel yang bisa digeser pada jawaban nyata, dan jalur Windows.

Catatan

  • Tombol "Lihat file asli" di tab FSD belum dibuat.
  • Pengecekan di Windows tidak dilakukan selama pengembangan di macOS.
  • Bump 0.2.0 → 0.3.0.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Oct 07:11
cd48269

Rilis besar: tab Chat per project kini punya antrean pesan di server, tanya-balik ke user di tengah run, edit dan kirim ulang, cabang thread, dan undo perubahan file per giliran. Tautan desain Figma bisa dibaca lewat browser yang dikelola Onesist.

Feat — Chat agent (paritas dengan alur ZCode)

  • Antrean dan run di server: pesan yang dikirim saat agent masih bekerja masuk antrean di server, dan run yang sedang berjalan bisa disambung kembali setelah halaman dimuat ulang. Persetujuan tool lewat SSE.
  • Tanya-balik saat run (ask_user), edit dan kirim ulang, coba lagi jawaban, dan cabang thread dari giliran mana pun.
  • Undo perubahan file per giliran, dan approval diingat sesuai cakupannya.
  • Transkrip: hasil tool dikelompokkan per jenis, ada rel giliran, pencarian dalam thread, dan riwayat dimuat per halaman.
  • Composer: referensi berkas, meter konteks, pilihan tingkat berpikir, lampiran gambar (untuk provider yang bisa membaca gambar), kutipan jawaban, draf tersimpan per thread, dan recall prompt dengan ↑/↓.
  • Saran langkah berikutnya untuk project, dan badge pada thread yang sedang berjalan.

Feat — Mention folder dan berkas root

  • @ di composer kini juga menampilkan folder dan berkas di root project. Memilih folder menyisipkan @nama/.

Feat — Baca tautan desain Figma

  • Tool browser_capture membuka tautan di jendela browser yang dikelola Onesist (Chrome atau Edge, profil terpisah), lalu menyimpan screenshot ke input/assets/captures/.
  • Untuk tautan dengan node-id, hanya frame yang dipilih yang di-crop, dan UI serta komentar Figma disembunyikan.
  • Login hanya diminta untuk tautan privat, dan dilakukan sendiri di jendela itu. Onesist tidak mengetik atau menyimpan password.
  • Pengaturan provider baru: Model bisa melihat gambar. Hanya model yang ditandai begitu yang menerima gambar hasil capture.

Feat — Layout chat dan project

  • Panel chat bisa dibuka bersamaan dengan area project tanpa menutupi tab-nya. Di lebar yang sempit, chat menjadi overlay.
  • Sidebar otomatis terlipat saat chat dibuka dan kembali seperti semula saat ditutup.

Perf — Lag di Windows

  • Satu stream event untuk seluruh tab menggantikan beberapa koneksi SSE per komponen, sehingga permintaan biasa tidak lagi antre.
  • Watcher berkas tanpa polling sinkron: scan berjalan asinkron dan di-debounce, dan GC memori hanya jalan saat batas terlampaui.

Fix

  • Transkrip tidak lagi bisa digeser ke samping, dan bubble pesan membungkus teks panjang.
  • Daftar berkas project ikut berubah saat isi folder berubah.
  • Pesan yang hanya berisi gambar tidak lagi hilang di server.

Verifikasi

  • bun run typecheck bersih. Tes komponen dan lib (61 tes di 9 berkas) lulus.
  • Capture Figma dijalankan di aplikasi desktop yang di-build (debug): tool terpanggil, screenshot tersimpan dan di-crop ke frame, dan thumbnail tampil di chat.
  • Belum diuji: jalur Windows (tidak dilakukan selama pengembangan di macOS), dan jawaban model yang bisa membaca gambar desain (model uji yang tersedia belum ditandai bisa melihat gambar).
  • Bump 0.1.47 → 0.2.0.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.1.47

Choose a tag to compare

@github-actions github-actions released this 06 Oct 13:49

Fix — Quit macOS ~2 menit → di bawah 1 detik

  • src-tauri/src/sidecar.rs + lib.rs + tray.rs — jalur terminate tidak lagi mengirim event ke WebView. Dock Quit / Cmd+Q masuk sebagai RunEvent::Exit (bukan ExitRequested), dan di sana state.stop() memancarkan sidecar-status ke WebView yang justru sedang dibongkar macOS. Pengirimannya memblokir main thread di dalam semaphore milik tao, dan quit terukur ~123 detik. Sekarang ada stop_quiet() — mematikan sidecar tanpa mengumumkannya — dan itulah yang dipakai jalur terminate (RunEvent::Exit, ExitRequested, dan Drop), sementara tray::watch_sidecar_status melewati penerusan selama QUITTING. Terukur di mesin ini pada bundle rilis: quit 0,48 detik dan tidak ada proses yang tertinggal (penulis PR mengukur 0,65 detik pada bundle debug).
  • Klik ikon Dock kini memunculkan jendela yang sedang tersembunyi ke tray (handler RunEvent::Reopen; sebelumnya ikonnya tampak mati).

Fix — Folder picker macOS: "Load failed" (osascript tidak lagi dipakai di aplikasi desktop)

  • Desktop tidak pernah lagi jatuh ke osascript. Rantainya: invoke("pick_folder") gagal (perintah milik app ini tidak punya entri izin app-level, jadi Tauri menjawab "Plugin not found"), lalu jatuh ke POST /api/helpers/choose-folder → osascript "tell me to activate" → aktivasi direbut → proses web-content di-suspend → setiap fetch yang sedang jalan mati dengan "Load failed" (itu kata-kata WebKit, bukan pesan Onesist) dan muncul dialog kedua. Sekarang OpenProjectDialog mencoba perintah native sekali lagi, lalu beralih ke folder browser bawaan aplikasi yang bicara langsung ke sidecar lewat HTTP (/api/helpers/list-dirs) tanpa proses anak; system.ts menolak jalur darwin saat SA_DESKTOP=1 dengan pesan yang jelas, dan setiap kegagalan picker dicatat ke logs/server.err.log (reportClientError) sehingga rantai kegagalannya kelihatan.
  • Konsekuensi yang disengaja: sheet folder bawaan macOS tidak lagi terjangkau di aplikasi desktop sampai pick_folder diberi izin app-level (atau dipindah ke dialog plugin). Ini keputusan desain yang masih terbuka — untuk sekarang folder browser bawaan aplikasi yang berlaku.

Feat — Pilih provider BYOK saat membuka project

  • Dialog Open Project kini punya dropdown provider (hanya provider buatan Anda yang siap pakai; bootstrap environment bukan konfigurasi tersimpan, jadi tidak bisa dijadikan default). Pilihannya disimpan sebagai default aplikasi saat project dibuka, jadi project berikutnya memakai provider yang sama tanpa ditanya lagi; tombol Kelola membuka pengaturan provider sebagai modal di atas dialog, dan Batal tidak mengubah apa pun.

Catatan — DMG macOS sekarang ter-seal (rilis pertama setelah #5)

  • Mulai rilis ini bundle macOS ditandatangani ad-hoc (bundle.macOS.signingIdentity: "-"), jadi Gatekeeper menampilkan dialog yang menawarkan Open Anyway alih-alih vonis "damaged" yang tidak punya jalan masuk. Belum ada Developer ID/notarization, jadi halaman rilis tetap membawa catatan pemasangan; jalur xattr -cr /Applications/Onesist.app tetap berlaku sebagai cadangan yang dijamin bekerja.

Verifikasi

  • bun run typecheck bersih, bun run build sukses, dan sidecar + shell Rust terkompilasi lewat bunx tauri build --bundles app.
  • Bundle hasil build dijalankan: aplikasi boot, sidecar melayani /api/health 200, dan quit terukur 0,48 detik tanpa proses yatim.
  • Penjaga picker diuji lewat sidecar produksi: dengan SA_DESKTOP=1, POST /api/helpers/choose-folder menjawab {"path":null,"error":"Folder picker native gagal — jalur osascript dinonaktifkan di aplikasi desktop"} (tidak ada osascript yang dijalankan), POST /api/helpers/list-dirs mengembalikan daftar direktori, dan jejak [client] folder-picker/… benar-benar mendarat di logs/server.err.log aplikasi.
  • Belum diuji: jalur picker secara klik-nyata di macOS (yang diperiksa sisi server + peruteannya) dan perilaku di Windows — penulis PR juga belum mengujinya; cabang win32 tidak berubah perilakunya dan penjaga di system.ts hanya berlaku untuk darwin.
  • Bump 0.1.46 → 0.1.47.

macOS: saat app pertama kali dibuka, macOS akan menolak dengan "Apple could not verify 'Onesist.app' is free of malware". Klik Done, lalu buka System Settings → Privacy & Security, cari Onesist dan klik Open Anyway.

Kalau tombolnya tidak muncul, atau lebih suka terminal, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.1.46

Choose a tag to compare

@github-actions github-actions released this 04 Oct 14:16

Fix — no such table: business_requirements setelah data.db dipindah antar mesin

  • src/server/db/client.ts — penjaga skema saat startup. Folder project yang dipindah lewat zip (SQLite WAL belum di-checkpoint) membawa jurnal migrasi yang mengklaim revisi yang tidak ada di berkas data.db-nya, sementara Drizzle tidak pernah menjalankan ulang revisi yang sudah tercatat — tabel yang hilang tetap hilang dan aplikasi melempar no such table: business_requirements. Sekarang, saat runtime-migration berjalan, nama tabel yang seharusnya ada dibaca dari berkas migrasi; bila ada yang kurang, pernyataan CREATE/ALTER idempoten diputar ulang (pernyataan destruktif seperti DROP/INSERT/UPDATE/DELETE/RENAME dilewati) dan hasilnya dicatat di log server. Bila tabel masih kurang, langkah pemulihan ditulis ke log, bukan gagal senyap. Biaya terukur: 0,54 ms saat skema sehat (tanpa memutar ulang apa pun), 2,6 ms saat pemulihan penuh. Diverifikasi verify-schema-repair.ts — 11 check.

Fix — Project tidak bisa dihapus bila pernah dipakai chat

  • src/server/routes/projects/index.ts — DELETE /api/projects/:id kini ikut menghapus thread chat. chat_threads.project_id menunjuk ke projects.id, dan tidak ada satu pun penghapusan sebelumnya yang menyentuhnya, sehingga project yang punya percakapan selalu gagal dihapus dengan FOREIGN KEY constraint failed (HTTP 500 di dasbor). Terukur sebelum perbaikan: project dengan 5 thread → 500, tanpa thread → 200. Sekarang setiap thread project dihapus lewat deleteThread yang sudah ada (pesan, tool call, berkas, bacaan, run, dan baris FTS ikut bersih), dan baris index kode (index_files/chunks/symbols/index_fts, tanpa foreign key) dibersihkan lewat clearProject supaya tidak tertinggal yatim.

Fix — Galat route API dijawab JSON, bukan halaman HTML 500

  • src/server/api-router.ts — error yang dilempar handler route dulu lolos ke handler SSR dan kembali sebagai halaman HTML 500, sehingga res.json() di klien gagal pada HTML-nya alih-alih menampilkan pesan aslinya. Sekarang handler dibungkus dan membalas JSON {"error": …} 500 sekaligus mencatat penyebabnya di log server.

Verifikasi

  • bun run typecheck bersih dan build produksi (bun run build:server) hijau.
  • verify-api.ts naik 35 → 41 check dengan bagian G yang mereproduksi kegagalan FK hapus project. Bukti bahwa check-nya benar-benar menangkap kelas bug ini: dengan perbaikan di-revert sementara, bagian G gagal 5 check (status=500, FOREIGN KEY constraint failed, thread/baris index tertinggal); setelah perbaikan dipasang kembali, hijau.
  • verify-schema-repair.ts — 11 check; GET /api/projects/:id/rtm pada DB yang dipulihkan menjawab 200.
  • Bump 0.1.45 → 0.1.46.

macOS: kalau muncul "Onesist is damaged and can't be opened" setelah app dipindah ke /Applications, jalankan sekali:

xattr -cr /Applications/Onesist.app

Detailnya di #3.

Onesist v0.1.45

Choose a tag to compare

@github-actions github-actions released this 04 Oct 11:41

Rilis besar: tab Chat per project menjalankan agent langsung di dalam Onesist memakai provider BYOK Anda — tanpa CLI agent. Fitur ini sebelumnya hidup di branch feat/agent-native-chat; rilis ini adalah kali pertama masuk ke main.

Feat — Chat agent native (BYOK)

  • Runtime & provider: Vercel AI SDK v7 di dalam aplikasi; dialog provider dengan 23 preset + custom (endpoint, gaya API, header HTTP tambahan), key hanya tersimpan di perangkat Anda, uji koneksi dengan hasil yang tersimpan.
  • Mode & izin: tanya-jawab / kerja / rencana (read-only; rencananya bisa disetujui lalu dijalankan) dan 4 mode izin — Tanya dulu (kartu izin per penulisan), Otomatis, Tanpa shell, Read-only.
  • Tool agent: baca/tulis/cari berkas, bash (environment dibersihkan), index FTS5 + code_search, subagent read-only, memory lintas percakapan, dan akses aplikasi: db_query/db_schema read-only plus app_write ke Tasks/RTM/Wiki.
  • UX chat: panel bisa di-resize (lebar diingat), pesan bisa disalin, isi tool terlipat sampai diklik, antrian pesan dan pesan sisipan ke run yang sedang berjalan, pencarian lintas percakapan, slash command, serta token & perkiraan biaya per percakapan.
  • Notifikasi native: dua pemicu — run mencapai status akhir saat jendela tidak fokus, dan run menunggu izin. Catatan: di tauri dev plugin mengarahkan notifikasi ke Terminal, jadi uji banner harus memakai aplikasi ter-bundle, dan macOS hanya menanyakan izin sekali — jawab Allow (jangan Return, defaultnya Don't Allow).

Feat — Gambar di markdown (input/assets)

  • Editor markdown (FSD, Wiki, Overview) kini punya tombol gambar, paste, dan drag-drop; berkas disimpan ke input/assets/ dan markdown menyimpan path relatif (![UI](input/assets/foo.png)).
  • Semua viewer merendernya: FSD, Wiki, Spec, Docs, SIT, chat, dan kartu task FE/fullstack — task yang menunjuk gambar desain menampilkan UI-nya di samping link Figma (skill fsd-analyzer 1.5.0 → 1.6.0).
  • Ekspor DOCX belum memuat gambar (menyusul).

Fix — Tiga tab (Tasks/RTM/Wiki) ikut berubah dari jalur berkas

  • Peta permukaan di prompt menyuruh agent memanggil endpoint impor (tasks/import, rtm/import/apply) setelah menulis artefak, sehingga hasil kerja berbasis berkas muncul di tab berbasis DB tanpa aksi manual — lewat panggilan yang terlihat di transcript, bukan penulisan database senyap.

Fix — Keamanan: whitelist app_write tidak bisa lagi ditembus

  • Penjaga whitelist memeriksa path mentah sementara URL dinormalisasi setelahnya, sehingga projects/<id>/tasks/../../../chat/threads/<tid> lolos pemeriksaan (terukur sebelum perbaikan: thread chat benar-benar terhapus dan PUT …/../settings diterima). Sekarang path di-decode, pemisah diseragamkan, .. ditolak sebelum pemeriksaan, dan placeholder :id/<projectId> diselesaikan. Suite verify-db-access naik 66 → 80 check.

Fix — lain-lain

  • Banner skills tidak lagi jalan buntu: project dengan sebagian skill terpasang (status pending) kini punya tombol Install, nama skill diambil dari payload, polling 250 ms, dan kegagalan nyata ditampilkan.
  • Uji koneksi provider bertahan setelah menekan Kembali, dan daftar provider disegarkan.
  • Kegagalan notifikasi tercatat di log server (sebelumnya ditelan senyap); UX tetap tidak terganggu.

Verifikasi

  • bun run typecheck, build produksi (bun run build:server), dan 16 suite verifikasi hijau. Aplikasi ter-bundle diuji untuk notifikasi: jendela fokus → senyap, jendela tidak fokus → event sampai, plugin dimuat, dan notifikasi terkirim (banner menunggu izin OS di System Settings → Notifications → Onesist).

Onesist v0.1.44

Choose a tag to compare

@github-actions github-actions released this 18 Sep 12:08

Fix — dua skill baru selalu gagal terinstal (project baru tidak bisa lanjut)

  • src-tauri/src/sidecar.rs — ensure_skills_dir() disegarkan setiap kali aplikasi dibuka. Sebelumnya fungsi ini hanya menyalin resources/vendor-skills ke appData satu kali seumur instalasi (penjaganya: "kalau fsd-analyzer/SKILL.md belum ada"). Akibatnya, begitu aplikasi pernah dijalankan, penambahan skill baru di rilis berikutnya tidak pernah ikut tersalin: salinan di appData tetap berisi fsd-analyzer + markitdown saja. Installer lalu melaporkan Vendored skill missing: vendor/skills/<nama>/SKILL.md untuk diagram-svg dan query-writer — 2 dari 4 skill gagal, dan project baru tidak bisa melewati langkah setup skill. Sekarang perilakunya sama seperti ensure_server_dir: direktori dibersihkan lalu disalin ulang tiap launch.

Fix — project duplikat saat percobaan diulang

  • src/server/routes/projects/index.ts — POST /api/projects kini idempoten per folder. Setiap percobaan membuka folder mengirim POST baru dan tiap POST menyisipkan baris baru, jadi folder yang sama menumpuk menjadi beberapa project identik ketika langkah setup skill gagal dan diulang. Sekarang folder yang sudah terdaftar (dibandingkan lewat path.resolve, mengabaikan garis miring di akhir) mengembalikan baris yang sudah ada.

Verifikasi

  • Route API asli di server uji, dengan salinan database aplikasi dan SA_VENDOR_SKILLS_DIR menunjuk ke salinan appData asli: POST folder yang sama dua kali mengembalikan id yang sama (1 baris di DB), lalu POST /skills/install mencapai ready dengan keempat skill (fsd-analyzer, markitdown, diagram-svg, query-writer) terpasang dan SKILL.md benar-benar ada di .agents/skills/ project.
  • Salinan appData yang basi juga sudah disinkronkan langsung, sehingga aplikasi yang sedang berjalan bisa menginstal tanpa menunggu rilis.
  • Bump 0.1.43 → 0.1.44.

Onesist v0.1.43

Choose a tag to compare

@github-actions github-actions released this 18 Sep 01:24

Fix — Project tidak bisa dihapus

  • src/server/routes/projects/index.ts — hapus project gagal total begitu project punya baris anak. Penyebabnya snapshot/endpoint anak dihapus memakai id project, padahal kolomnya menunjuk ke id baris induknya (erd_snapshots.erd_id → erds.id, api_snapshots/api_endpoints.spec_id → api_specs.id, wiki_snapshots.page_id → wiki_pages.id, task_snapshots.task_id → tasks.id). Penghapusan itu tidak mengenai apa pun, lalu penghapusan baris induk melanggar foreign key (PRAGMA foreign_keys = ON) sehingga seluruh request gagal — tidak ada project yang bisa dihapus selama ada baris anak. Sekarang id anak dikumpulkan dulu, baru dihapus berdasarkan id tersebut.

Fix — Banner "Installing required project skills" tidak pernah selesai

  • src/server/routes/projects/skills.ts — skillsStatus di DB bisa tertinggal bernilai installing (mis. app ditutup saat install berjalan) dan tidak pernah dibersihkan; route install lalu menolak setiap percobaan dengan 409 "Installation already in progress", jadi bannernya macet permanen. Status sekarang dihitung dari keadaan disk dan installing hanya dilaporkan selama install benar-benar berjalan di proses ini (penanda in-memory per project), sehingga retry selalu bisa dan kegagalan tampil sebagai failed beserta pesannya, bukan menggantung.

Verifikasi

  • Route API asli dijalankan pada server uji dengan salinan database aplikasi: DELETE untuk project berisi anak (36 spec + 105 task, dan 1 spec + 21 task) menjawab HTTP 200 dan baris bersih; GET /skills menjawab pending ketika kolom DB dipaksa installing; alur install selesai ready dengan fsd-analyzer, markitdown, diagram-svg, query-writer terpasang.
  • Bump 0.1.42 → 0.1.43.