Repository navigation
Releases: rogasper/onesist
Release list
Onesist v0.4.2
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
ghyang 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
%serverdi 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
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
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-runnersudah 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
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
/compactdi 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 typecheckbersih.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
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_capturemembuka tautan di jendela browser yang dikelola Onesist (Chrome atau Edge, profil terpisah), lalu menyimpan screenshot keinput/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 typecheckbersih. 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
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 sebagaiRunEvent::Exit(bukanExitRequested), dan di sanastate.stop()memancarkansidecar-statuske WebView yang justru sedang dibongkar macOS. Pengirimannya memblokir main thread di dalam semaphore milik tao, dan quit terukur ~123 detik. Sekarang adastop_quiet()— mematikan sidecar tanpa mengumumkannya — dan itulah yang dipakai jalur terminate (RunEvent::Exit,ExitRequested, danDrop), sementaratray::watch_sidecar_statusmelewati penerusan selamaQUITTING. 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 kePOST /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. SekarangOpenProjectDialogmencoba 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.tsmenolak jalur darwin saatSA_DESKTOP=1dengan pesan yang jelas, dan setiap kegagalan picker dicatat kelogs/server.err.log(reportClientError) sehingga rantai kegagalannya kelihatan. - Konsekuensi yang disengaja: sheet folder bawaan macOS tidak lagi terjangkau di aplikasi desktop sampai
pick_folderdiberi 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; jalurxattr -cr /Applications/Onesist.apptetap berlaku sebagai cadangan yang dijamin bekerja.
Verifikasi
bun run typecheckbersih,bun run buildsukses, dan sidecar + shell Rust terkompilasi lewatbunx tauri build --bundles app.- Bundle hasil build dijalankan: aplikasi boot, sidecar melayani
/api/health200, dan quit terukur 0,48 detik tanpa proses yatim. - Penjaga picker diuji lewat sidecar produksi: dengan
SA_DESKTOP=1,POST /api/helpers/choose-foldermenjawab{"path":null,"error":"Folder picker native gagal — jalur osascript dinonaktifkan di aplikasi desktop"}(tidak ada osascript yang dijalankan),POST /api/helpers/list-dirsmengembalikan daftar direktori, dan jejak[client] folder-picker/…benar-benar mendarat dilogs/server.err.logaplikasi. - Belum diuji: jalur picker secara klik-nyata di macOS (yang diperiksa sisi server + peruteannya) dan perilaku di Windows — penulis PR juga belum mengujinya; cabang
win32tidak berubah perilakunya dan penjaga disystem.tshanya 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
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 berkasdata.db-nya, sementara Drizzle tidak pernah menjalankan ulang revisi yang sudah tercatat — tabel yang hilang tetap hilang dan aplikasi melemparno such table: business_requirements. Sekarang, saat runtime-migration berjalan, nama tabel yang seharusnya ada dibaca dari berkas migrasi; bila ada yang kurang, pernyataanCREATE/ALTERidempoten diputar ulang (pernyataan destruktif sepertiDROP/INSERT/UPDATE/DELETE/RENAMEdilewati) 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. Diverifikasiverify-schema-repair.ts— 11 check.
Fix — Project tidak bisa dihapus bila pernah dipakai chat
src/server/routes/projects/index.ts—DELETE /api/projects/:idkini ikut menghapus thread chat.chat_threads.project_idmenunjuk keprojects.id, dan tidak ada satu pun penghapusan sebelumnya yang menyentuhnya, sehingga project yang punya percakapan selalu gagal dihapus denganFOREIGN KEY constraint failed(HTTP 500 di dasbor). Terukur sebelum perbaikan: project dengan 5 thread → 500, tanpa thread → 200. Sekarang setiap thread project dihapus lewatdeleteThreadyang 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 lewatclearProjectsupaya 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, sehinggares.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 typecheckbersih dan build produksi (bun run build:server) hijau.verify-api.tsnaik 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/rtmpada 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
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_schemaread-only plusapp_writeke 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 devplugin 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 (). - 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-analyzer1.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 danPUT …/../settingsditerima). Sekarang path di-decode, pemisah diseragamkan,..ditolak sebelum pemeriksaan, dan placeholder:id/<projectId>diselesaikan. Suiteverify-db-accessnaik 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
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 menyalinresources/vendor-skillske appData satu kali seumur instalasi (penjaganya: "kalaufsd-analyzer/SKILL.mdbelum ada"). Akibatnya, begitu aplikasi pernah dijalankan, penambahan skill baru di rilis berikutnya tidak pernah ikut tersalin: salinan di appData tetap berisifsd-analyzer+markitdownsaja. Installer lalu melaporkanVendored skill missing: vendor/skills/<nama>/SKILL.mduntukdiagram-svgdanquery-writer— 2 dari 4 skill gagal, dan project baru tidak bisa melewati langkah setup skill. Sekarang perilakunya sama sepertiensure_server_dir: direktori dibersihkan lalu disalin ulang tiap launch.
Fix — project duplikat saat percobaan diulang
src/server/routes/projects/index.ts—POST /api/projectskini 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 lewatpath.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_DIRmenunjuk ke salinan appData asli: POST folder yang sama dua kali mengembalikan id yang sama (1 baris di DB), laluPOST /skills/installmencapaireadydengan keempat skill (fsd-analyzer,markitdown,diagram-svg,query-writer) terpasang danSKILL.mdbenar-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
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—skillsStatusdi DB bisa tertinggal bernilaiinstalling(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 daninstallinghanya dilaporkan selama install benar-benar berjalan di proses ini (penanda in-memory per project), sehingga retry selalu bisa dan kegagalan tampil sebagaifailedbeserta pesannya, bukan menggantung.
Verifikasi
- Route API asli dijalankan pada server uji dengan salinan database aplikasi:
DELETEuntuk project berisi anak (36 spec + 105 task, dan 1 spec + 21 task) menjawab HTTP 200 dan baris bersih;GET /skillsmenjawabpendingketika kolom DB dipaksainstalling; alur install selesaireadydenganfsd-analyzer,markitdown,diagram-svg,query-writerterpasang. - Bump
0.1.42 → 0.1.43.