Changelog

v0.4.179

0.4.179

  • fix(ssh-servers): pasang openssh-client di Dockerfile.dev (staging) dan stage runner Dockerfile (prod) — binary ssh wajib ada di container agar Tes Koneksi bisa jalan, bukan kebetulan dari base image.
  • fix(ssh-servers): pesan gagal Tes Koneksi kini menampilkan penyebab asli tersanitasi (spawn ssh ENOENT, Permission denied, timeout/refused, exit code) di lastTestMessage + audit, bukan teks generik.

0.4.178

  • SSH Servers: field upload private key SSH di form tambah/edit (simpan 600 di host, fingerprint SHA256 otomatis, key tidak masuk DB).

0.4.177

  • feat(admin): menu Settings → SSH Servers — CRUD registry server SSH (auth key/password terenkripsi), Test Connection read-only (hostname/whoami/uptime), audit log; seed cen-internal/cen-dcpns/jarwo nonaktif tanpa kredensial

0.4.176

  • fix(vibe-browse): registry route Browse pindah ke VIBE_ROOT/.sangga/browse-registry.db (bersama app prod/staging dan host, di-seed dari mirror JSON) — sejak Postgres, claim saat buat codespace gagal diam-diam sehingga prototype baru tidak pernah terpublikasi
  • fix(vibe-browse): reconcile host tidak lagi crash UNIQUE constraint failed: vibe_browse_routes.port (port dipegang baris basi), transaksional, --dry-run; port 3183 (jembatan lama peruri-ai) diblok
  • fix(vibe-browse): cron ensure-production-up me-regenerasi nginx (ensure-vibe-code-proxy.sh --no-start) begitu ada start.sh/registry baru — tidak menunggu deploy
  • fix(security): PREFIX/nama folder divalidasi sebelum masuk config nginx (cegah sisipan direktif lewat start.sh)
  • fix(vibe-browse): start.sh yang ditulis Sangga meng-export PORT/PREFIX, menyisip setelah shebang, dan scaffold menjalankan server di background (tidak dibunuh timeout 60 watchdog)

0.4.175

  • feat(onlyoffice): plugin panel kanan diganti merek menjadi Sangga (GUID sama, upgrade di tempat); thread chat kini menempel ke workspace (docId=null, tampil di semua dokumen workspace) seperti thread embed Sangga di Optima — konteks tetap dokumen yang sedang dibuka; thread lama per-dokumen tetap tampil hanya di dokumen asalnya dengan lencana · Dokumen ini

0.4.174

  • feat(telegram): OCR gambar inbound (Tesseract ind+eng) pada ekstraksi Telegram, chat workspace, dan lampiran BPMN; berkas disimpan di /data/telegram-inbound

0.4.172

  • feat(db): Production memakai PostgreSQL (sangga_prod di supabase-sangga), termasuk FTS tsvector
  • fix(db): ETL SQLite ke Postgres menyalin DEFAULT kolom supaya insert antrian tidak ditolak
  • feat(whatsapp): sidecar Production memakai WA_DATABASE_URL bila diisi

0.4.171

  • feat(db): Staging memakai PostgreSQL (sangga_staging di supabase-sangga), termasuk FTS tsvector dan vektor pgvector
  • feat(whatsapp): sidecar Staging memakai WA_DATABASE_URL (Postgres) bila diisi; SQLite tetap jika kosong

0.4.170

  • feat(whatsapp): promote tautan WA Staging → Prod (Settings pair user + steward QR + addressing grup + inbound harden)
  • feat(codespace): Git Diff Viewer inline + side-by-side (0.4.166–168)
  • fix(telegram): reply di topic forum (message_thread_id / reply_to_message_id) (0.4.169)
  • chore: schema wa_groups / wa_voice_pending ikut ensure di Prod

0.4.169

  • fix(telegram): sendMessage/sendDocument/sendPhoto meneruskan reply_to_message_id + message_thread_id (balasan mention di topic yang benar, bukan #General)
  • fix(telegram): konteks reply/topic ikut antrian job + lampiran outbound
  • fix(codespace): editor CM harden light (localStorage fallback + CSS belt); ScmDiffView light pakai !important anti-override

0.4.168

  • fix(codespace): CodeMirror editor ikut data-theme (light = tema terang; dark = oneDark)
  • fix(codespace): DiffPanel agent pakai token sendiri agar kontras di light theme

0.4.167

  • fix(codespace): viewer diff bisa di-scroll (wrapper editor flex + overflow-hidden)
  • fix(codespace): kontras light theme di GitDiffViewer / ScmDiffView (token sendiri, bukan remap slate)

0.4.166

  • feat(codespace): klik file di tab Git membuka viewer diff di editor (inline + side-by-side)
  • feat(codespace): ScmDiffView shared highlight untuk Git + DiffPanel agent; edge binary/deleted/untracked/truncate
  • feat(codespace): API git diff + detail:true mengembalikan before/after untuk side-by-side

0.4.165

  • feat(whatsapp): aktifkan outbound prefix Staging sangga_bot_stg: via WHATSAPP_OUTBOUND_PREFIX
  • fix(whatsapp): ensureWhatsAppPrefix mempertahankan spasi setelah : (trim tidak lagi menempelkan label ke teks)

0.4.164

  • feat(whatsapp): F2 on-par Jarwo di Staging — grup allowlist + mention/reply, media inbound, ATTACH: → /send-media, voice note (Whisper → YA/koreksi/TOLAK), mirror Telegram, health alert steward, prefix outbound opsional
  • feat(whatsapp): sidecar /send-media, /group-members, download media, event sidecar_event
  • feat(settings): Pengaturan → WhatsApp — daftar grup + toggle enable (steward)

0.4.163

  • fix(codespace): /codespace browse-status tidak lagi menabrak batas 4096 Telegram (scope folder user; all untuk global; sendLongMessage)

0.4.162

  • feat(vibe-browse): registry PORT/PREFIX unik (pool 3120–3299) + mirror JSON .sangga/browse-registry.json
  • feat(vibe-browse): preflight path taken/reserve platform; /codespace browse-status + /codespace set-prefix
  • fix(vibe-proxy): ensure-proxy pakai registry, satu snippet managed, auto-include di tiap server{}; watchdog hormati registry + timeout start.sh
  • chore(docker): publish vibe-watchdog 3120-3299

0.4.161

  • feat(companion): POST /chat mirrors Coucou prompts to Telegram (💻 Coucou:\n…) before status/queue; status antrian tetap pesan terpisah
  • feat(companion): body menerima text atau prompt; respons menambah telegramMirrored
  • docs(companion): OpenAPI Companion 0.5.1

0.4.160

  • feat(whatsapp): sidecar whatsmeow (satu nomor operasional per lingkungan) — DM WhatsApp masuk jalur Coucou: slash = handler Telegram, teks biasa = antrian agent, balasan akhir kembali ke WA
  • feat(settings): Pengaturan → WhatsApp — kode /start KODE (6 digit Companion), daftar nomor tertaut; steward: QR / kode nomor telepon / logout

0.4.159

  • feat(companion): slash Coucou (/help, /status, /workspace, …) memakai handler Telegram yang sama
  • fix(telegram): typo /sudi diarahkan ke /sudo tanpa menyimpan argumen

0.4.158

  • feat(companion): POST /api/v1/companion/chat — Coucou island chat masuk antrian agent (bukan file coucou-chat.txt)

0.4.155

  • fix(companion): Settings → Companion — panduan pair sesuai alur Coucou + bridge (--device / --base, tokens.json, Allow 37865); base URL mengikuti PUBLIC_APP_URL (STG/Prod)

0.4.154

  • feat(companion): R0 screenshot / R1 CMD-PowerShell / R2 sesi mesh — edge kinds, allowlist default deny, Allow 37865

0.4.153

  • feat(companion): pill sangga heartbeat, GET /device, edge enqueue/next (Cursor CLI allowlist) — staging P2.5+P3

0.4.152

  • feat(companion): Companion API + Coucou bridge (pair device, jobs/events SSE, approvals sudo/deploy, file drop) — staging P0–P2

0.4.151

  • BPMN Layar & Form: kontras font (preview field, chip, muted) dark+light

v0.4.148

0.4.150

  • fix(bpmn): lane DI inset 30px agar header pool kiri tidak tertimpa (ensure on load/apply + rule di prompt AI)

0.4.149

  • fix(bpmn/chat): Generate/Update Prototype seed bubble + progress blob di tab Chat (paritas prompt AgentPanel; poll job agent)

  • fix(agent): spill prompt >100KB ke file workspace — hindari spawn E2BIG (MAX_ARG_STRLEN)

  • fix(bpmn/layar-form): Generate Prototype path-only (tanpa embed XML) + kontras font box tombol

v0.4.147

  • feat(bpmn/layar-form): Supabase field-aligned P0+P1 — dropdown kolom, isi dari key, buat kolom hilang, mode persistensi, tipe field

v0.4.146

  • fix(bpmn/chat): samakan layout chat tab BPMN dengan AgentPanel codespace (CsThreadBar, composer, bubble)

v0.4.145

  • feat(bpmn/layar-form): tombol Generate / Update Prototype — LLM agent menyambungkan BPMN aktif ke prototype (semantik) atau membuat baru

v0.4.144

  • fix(bpmn/layar-form): auto-load semua schema Supabase non-sistem di dropdown (bukan hanya cs_{proyek})

v0.4.143

  • feat(bpmn/supabase): binding schema terbuka — semua schema user boleh dipilih; blokir hanya underlay Supabase/Postgres (auth, storage, pg_*, …)

v0.4.142

  • fix(bpmn): grup tombol Lint / Pool / Lane+ di chrome; hapus dropdown Lane ▾ (aksi lanjut di ⋯)

v0.4.141

  • feat(bpmn): zoom toolbar chrome (− / % Fit / +) + lint panel ringan
  • feat(bpmn): grid snap di atas align guide kit; pinch default 4×
  • feat(bpmn): clipboard publik (copyElements/paste) + duplicate tetap di lane
  • feat(bpmn): nudge arrow re-route orthogonal; rename file dari breadcrumb
  • feat(bpmn): tombol Pool / Lane+ native di chrome (tanpa template wizard)

v0.4.140

  • fix(bpmn/mobile): breakpoint chrome selaras panel — Undo/Redo + menu ⋯ sampai <768px (bukan hanya <640)
  • fix(bpmn/mobile): safe-area notch + chrome satu baris (Browse/Lane/Export/Panel di ⋯)

v0.4.139

  • fix(bpmn/mobile): rapihkan chrome editor menjadi satu baris dan tampilkan Undo/Redo langsung
  • fix(bpmn/mobile): pindahkan Browse, Lane, Export, dan Panel ke menu lainnya agar canvas lebih lega

[0.4.138] - 2026-09-11

Added

  • feat(konfigurasi): bar Sensitivitas pinch zoom di Control (default 2×, range 0.5–4) — terpisah dari pan/scroll-zoom

Changed

  • fix(bpmn): pinch trackpad (Ctrl+scroll) & 2-jari memakai pinchSens (default 2× pengaruh vs v0.4.135)

[0.4.137] - 2026-09-11

Added

  • feat(codespace): Rename di list web — popup nama + slug dengan validasi; slug berubah → rename folder disk + sync active_code_project_slug + PREFIX start.sh

Fixed

  • fix(ui): CTA cyan solid (bg-cyan-600/500 + text-slate-950 dan sejenis) dipaksa teks putih di cyan-700 (dark & light) via .btn-cyan-cta + remap CSS

[0.4.136] - 2026-09-10

Fixed

  • Kontras tombol CTA cyan di codespace IDE (BPMN baru / Salin ke codespace / Buka codespace baru): text-white di bg-cyan-700 (bukan text-slate-950 di cyan-500/600).

v0.4.135

  • feat(codespace): shared tanpa Git — banner view-only (bukan modal blocking); baca tree/file OK
  • feat(codespace): duplicate mode auto — ada remote → git-collab; tanpa remote → FS-copy OWN ({slug}-copy, strip .git)
  • fix(bpmn): sensitivitas Konfigurasi → rebind wheel/pointermove (Z0); kurva Ctrl+scroll pinch (Z1); pinch 2-jari pow(ratio,sens) (Z2)

v0.4.134

  • fix(codespace): kontras strip Chat saat panel Agent collapsed — token dark/light (bukan slate-400 di bg-slate-900/70 yang me-remap gelap@gelap)
  • fix(codespace): tombol toolbar Chat / Tutup chat pakai token tema; state collapsed accent sky

v0.4.133

  • feat(share): daftar user sudah di-share tetap terlihat; tombol Impersonate untuk admin (admin.users)
  • feat(impersonate): privilege/codespace mengikuti target; AI tetap di akun actor (jobs/skills/Telegram/Cursor)
  • feat(nav): banner impersonate + tombol Exit impersonate di atas Log out

v0.4.132

  • feat(konfigurasi): menu Konfigurasi di bawah Profil (role Pengguna + Administrator via settings.controls)
  • feat(control): submenu Control — bar sensitivitas mousepad (default 1.75×) untuk pan & zoom editor BPMN
  • feat(bpmn): wire pointer sensitivity ke ViewportController (wheel zoom + pan drag), live-update dari localStorage

v0.4.131

  • feat(codespace): tombol Tutup chat / Chat desktop + strip vertical saat collapsed (persist localStorage)
  • feat(filetree): persist expand/collapse folder + file selected ke localStorage (survive kembali dari BPMN)
  • feat(filetree): attach folder ke chat AI — expand rekursif ke file (cap 40); server expand folder juga
  • fix(bpmn): refresh editor tidak lagi 500 document is not defined (onDestroy SSR) · restore last saved path
  • fix(share): kontras warna ShareWizard dark/light (CTA putih di accent)

v0.4.130

  • feat(bpmn): resize pool tidak mengecilkan/melebarkan lane kecuali lane juga selected (mouse edge + Alt/property solo tetap)
  • feat(bpmn): arrow keys geser objek terpilih (Shift = 10px); tanpa seleksi tetap pan viewport

v0.4.129

  • fix(bpmn): tombol snap panel (▾ ▯ ▴) + handle geser hanya di mobile — scoped CSS sebelumnya menimpa Tailwind md:hidden di desktop

v0.4.128

  • feat(bpmn): Lane ▾ di top bar (keluar menu ⋯) · Browse selalu visible mobile+desktop · token kontras chrome
  • feat(bpmn): edge-drag resize pool/lane (4 tepi) · hapus strip Browse dari chat AgentPanel

v0.4.127

  • feat(codespace): wizard Bagikan web — list user Sangga + status sudah/belum di-share, multi-select share, cabut akses (owner only)

v0.4.126

  • fix(chat): bubble AI overflow — konten panjang (URL/kode/tabel) tidak lagi keluar dari bubble di Codespace, BPMN, dan Prototype

v0.4.125

  • fix(bpmn): editor beku saat dibuka — MutationObserver kelas FAB HUD memicu dirinya sendiri tanpa henti sehingga XML tidak pernah dimuat

v0.4.124

  • feat(bpmn/mobile): panel Properties min/mid/max + FAB palet bisa digeser saat collapsed (expand kembali ke home)
  • fix(bpmn/hud): rapihkan grid menu elemen mobile (4 tools + 3×2 grup, flyout wrap)

v0.4.123

  • feat(codespace/filetree): explorer setara Cursor — new file/folder, rename inline (F2), navigasi keyboard, ikon filetype, dekorasi git, filter, cut/copy/paste/duplicate, drag-drop pindah, multi-select
  • feat(codespace/opener): klik file buka viewer sesuai jenis — audio/video player, notebook .ipynb, fallback biner (hex 4 KB), highlight bahasa diperluas

v0.4.122

  • fix(prod-ops): izinkan juga custom PREFIX URL + browse /collab/{user}/{slug} (share codespace) tanpa ProdOps

v0.4.121

  • fix(prod-ops): ruang lingkup prototype/codespace/browse vibe URL di sangga.cartenz.co.id/{user}/{slug} tidak kena ProdOps

v0.4.120

  • fix(prod-ops): chat biasa di Sangga prod boleh tanpa allowlist; ProdOps hanya jika prompt menyentuh Optima/Sangga/Trustgrid (atau sinyal prod/CRP/deploy)

v0.4.119

  • feat(chat): samakan UX AI chat Codespace AgentPanel ↔ BPMN editor (blob + ⏱ sementara, bubble cs-tg-*, slash hint)
  • extract ChatProgressBlob shared component

v0.4.118

  • feat(auth): allowlist domain email multi-value (AUTH_ALLOWED_EMAIL_DOMAIN=cartenz.co.id,gmail.com)
  • Google OAuth hd hanya untuk single Workspace domain (gmail/multi bebas pilih akun)
  • UI login/settings/Telegram ikut label multi-domain

v0.4.117

  • feat(upload): gimmick loading realtime (%, bytes, kecepatan, ETA, jalur paket) di workspace Files + codespace FileTree
  • upload codespace ganti ke XHR supaya progress onprogress tersedia

v0.4.116

  • feat(model): katalog Cursor hidup (cursor-agent --list-models) + picker bercabang famili→seri→varian di Telegram /model dan chat web (IDE/BPMN/Prototyping)
  • paritas Jarwo: ~200 model (effort/thinking/fast), bukan 7 slug datar

v0.4.115

  • feat(bpmn): pilihan Layar & Form dari prototype Codespace + tombol Generate list layar
  • fix(bpmn): path HTML katalog layar tanpa ekstensi (.html → /login)

0.4.113

  • Prototyping Mode: fix resize tanpa klik, chat floating = widget codespace (blob, waktu, attach, slash, quick attach, konteks bersama)

0.4.111

  • Codespace prototyping v2.7: tab Layar & Form, Prototyping Mode, FEEL gateway, chat multi-thread, slash choice, attach BPMN, Git dual-path, schema cs_*

[0.4.110] - 2026-09-07

Fixed

  • Tab Data: overlay loading Supabase Studio ikut tema light/dark (kontras teks + background)

[0.4.108] - 2026-09-06

Added

  • BPMN: Tambah lane / pool+lane dari menu Swimlane dan Properties (palette kit tidak punya create lane)
  • Duplikasi lane (Properties, HUD Duplicate, Copy fallback) — kit native no-op karena lane bukan flowElement

[0.4.106] - 2026-09-06

Fixed

  • BPMN Properties: ubah lebar/tinggi pool tidak mengubah lane (resize hanya objek terpilih)
  • Field lebar/tinggi bisa dikosongkan; commit hanya blur/Enter; nilai invalid tidak mengubah bentuk
  • Hubungan parent-child (pool↔lane / lane bersarang) tampil di Properties + Unlink

[0.4.105] - 2026-09-06

Changed

  • BPMN editor UI/UX: HUD hit 40px desktop / 44px mobile, token light/dark eksplisit
  • Header file chrome saja (Export / Panel / Simpan + menu overflow); Cut/Copy/Paste/Sample/Swimlane ke overflow
  • Drop-in ikon static/bpmn-hud/*.svg via mask (tanpa fork @bpmnkit)

0.4.104

  • Codespace file tabs: kontras close light/dark (.cs-file-tab*); klik kanan → Tutup / yang lain / kiri / kanan

0.4.103

  • Fix markdown fenced ```text / <pre> contrast: follow light/dark theme (no dark-on-dark from :not(.cs-mermaid) specificity war).

0.4.102

  • FileTree toolbar: 2 baris + wrap (Upload / Attach / Download / Delete) + kontras light/dark
  • Codespace header: tinggi tombol seragam, Browse bertombol, label Tutup tree

0.4.101

  • BPMN Properties: section Posisi label (X/Y, nudge, preset Atas/Bawah/Kiri/Kanan, Default) untuk label eksternal (event, gateway, data, sequence/message flow)

0.4.100

  • Tree → Agent: Attach chat (toolbar + menu) pin file sebagai contextPaths
  • API agent: hybrid inject (embed teks ≤64KB / path-only binary-besar)
  • AgentPanel: chip konteks file (session UI)

0.4.99

  • Unduh PDF preview MD: pipeline host render_pdf.py (sama Telegram) via daemon socket + renderMdToPdf
  • API POST /api/codespaces/:id/export-pdf

0.4.98

  • Codespace AgentPanel: chat tetap terbuka saat job jalan (pesan berikutnya masuk antrean)
  • Slash commands di chat Codespace: /sudo, /antrian, /status, /help, …
  • FileTree: context menu portal ke body (tidak terlempar jauh)
  • Markdown preview: render Mermaid + tombol Unduh PDF

0.4.97

  • Codespace AgentPanel: progress blob live + durasi sementara (paritas Telegram)

0.4.96

  • Codespace Arsip: kontras warna list item (dark + light)

0.4.95

  • Rename stack Supabase ossrba → supabase-sangga (Studio label, API path, cookie embed)

0.4.94

  • Soft-archive Codespace: section Arsip di list (owner+editor), write lock, Telegram archive/unarchive

0.4.93

  • Browse URL tombol codespace hormati PREFIX kustom di start.sh (bukan selalu /{emailDir}/{slug}/)

0.4.92

  • Lazyload BPMN Chat widget + AgentPanel (chunk dinamis)
  • Tab Data: overlay loading Studio iframe

0.4.91

  • Media viewer Codespace: raster/SVG/PDF embed; AgentPanel skin Telegram-like

0.4.90

  • BPMN editor: kontras tab Properties|Chat + header chat di tema light & dark.

0.4.89

  • BPMN editor: panel Properties | Chat (satu jendela switch) — edit nama, tipe, warna, W×H + lock ratio untuk semua objek termasuk lane/pool/sequence flow.
  • Hapus dropdown Lane tinggi; shortcut Alt+panah tetap. Menu Swimlane template tetap.

0.4.88

  • Codespace: tab Data (provider Supabase) — embed Supabase Studio iframe untuk member codespace.
  • API: POST /api/codespaces/:id/supabase/studio-access, GET /api/auth/session-check (nginx auth_request).
  • Nginx: /supabase-studio-ossrba/ + proxy asset Studio (/_next, /project, /api/platform) dengan gate session Sangga.

0.4.87

  • BPMN Kit: edit label sequence flow dari UI (dblclick / klik kanan Edit label) via patch @bpmnkit/editor.

[0.4.86] - 2026-09-06

Added

  • Codespace collab Rev.2 MVP: editor harus duplicate shared codespace → kerja di branch collab/{vibeDir}; soft-block write/agent/git-mutate sampai duplicate; browse URL fork /collab/{emailDir}/{slug}/
  • Request merge ke main → notifikasi inbox owner (Approve/Reject via GitLab MR)
  • API: POST …/collab/duplicate, GET …/collab/status, git action request-merge, GET/POST /api/notifications

Fixed

  • BPMN: Copy/Paste/Cut shortcut + tombol — satu jalur capture (hindari double-fire), feedback clipboard kosong, fallback duplicate jika paste tanpa clipboard, expose copy() dari _doCopy

[0.4.85] - 2026-09-06

Added

  • Codespace Git: tombol Sambungkan ke GitLab — git init + buat/hubungkan repo di group vibe-code-product (path {emailDir}-{slug}, sama seperti publish Telegram), remote HTTPS, initial commit+push bila ada file

[0.4.84] - 2026-09-06

Added

  • Codespace: upload file/ZIP hingga 100 MB (multipart) + menu Extract ZIP
  • Codespace: konfirmasi hapus folder dengan jumlah file + bulk delete dari multi-select
  • Codespace: panel Git (status/diff/stage/commit/branch/pull/push) + git di image app
  • Telegram: TELEGRAM_API_ROOT untuk Local Bot API (ZIP Telegram hingga 100 MB bila server lokal aktif)

Changed

  • Batas ZIP Codespace (MAX_CODE_UPLOAD_BYTES) 20→100 MB; max entry ZIP 500→2000

[0.4.83] - 2026-09-06

Fixed

  • Codespace file tree: tombol Download font putih di latar cyan tua (kontras di dark & light)

[0.4.82] - 2026-09-06

Fixed

  • BPMN: tinggikan lane (atas→bawah) sekarang menggeser pool/sibling di bawah + menu Lane tinggi dengan picker (tanpa wajib klik canvas); shortcut Alt+↓/↑

[0.4.81] - 2026-09-05

Fixed

  • Telegram ZIP → Codespace: sentinel Zip64 0xFFFFFFFF tidak lagi dianggap ~4 GB (false "maks 100 MB"); batas ekstrak naik ke 500 MB; error menampilkan perkiraan ukuran

[0.4.80] - 2026-09-05

Fixed

  • Light mode: semua font cyan/sky/text-accent (link, brand, path BPMN, chip) jadi biru tua agar kontras di background putih

[0.4.79] - 2026-09-05

Added

  • BPMN Chat: wajib pair Telegram dulu (guide TelegramPairingFreeze seperti workspace / AgentPanel) + gate API

[0.4.78] - 2026-09-05

Added

  • BPMN: resize lane/pool via menu Lane (lebar/tinggi) — BPMN Kit tidak punya handle resize swimlane

[0.4.77] - 2026-09-05

Fixed

  • BPMN Chat: history thread tidak muncul saat diklik — lazy-load pesan (N terakhir), cache per thread, satu instance widget (bukan dual mount), effect init dengan cancel

[0.4.76] - 2026-09-05

Added

  • BPMN editor: shortcut Undo/Redo/Copy/Cut/Paste (juga saat fokus di toolbar) + tombol edit + popup Kontrol keyboard (Ctrl+/)

[0.4.75] - 2026-09-05

Added

  • Codespace file tree: Upload (tombol toolbar + menu klik kanan / ⋯) dan drop ke folder spesifik

Fixed

  • Light mode: text-cyan-200/300 (path BPMN dll.) jadi cyan tua agar kontras

[0.4.74] - 2026-09-05

Added

  • BPMN Chat: upload lampiran PDF / DOCX / XLSX dan gambar (raster & vector/SVG) di widget AI

[0.4.73] - 2026-09-05

Fixed

  • BPMN editor mobile: menu Swimlane/Export jadi bottom sheet; toolbar actions scroll horizontal
  • Light mode: font cyan muda diganti cyan tua agar kontras

[0.4.72] - 2026-09-05

Added

  • BPMN: export ke BPMN XML, SVG, PNG
  • BPMN: template swimlane (2 pool + lane) — tombol Swimlane + template=swimlane di API create

[0.4.71] - 2026-09-05

Fixed

  • BPMN canvas: XML tanpa BPMNDiagram membuat createShape no-op — autoLayout saat load + template Approval Flow sekarang punya DI

[0.4.70] - 2026-09-05

Added

  • Codespace file tree: Download (klik kanan) + checkbox select → Download (multi-file jadi zip)

[0.4.69] - 2026-09-05

Added

  • Codespace file tree: Rename dan Delete (klik kanan / ⋯) — API PATCH/DELETE /api/codespaces/:id/file

[0.4.68] - 2026-09-05

Fixed

  • Agent Telegram: hentikan loop requeue — max 1× pengulangan setelah restart; job pemicu host-deploy dibatalkan (bukan diulang); WORKASSIST_JOB_ID diteruskan lewat sudo
  • Codespace: satu tombol BPMN baru di header saja (hapus duplikat toolbar/strip/FAB/menu); CSS defensif sembunyikan sisa .cs-bpmn-*

[0.4.67] - 2026-09-05

Fixed

  • Codespace: benar-benar satu tombol BPMN baru (hapus duplikat di toolbar desktop)

[0.4.66] - 2026-09-05

Fixed

  • BPMN Kit: pakai load() / exportXml() (bukan loadXML) — error c.loadXML is not a function saat buka editor baru
  • BPMN AI: pakai cursorAgentChat (bukan ChatStream) — error full.trim is not a function saat minta AI buat diagram
  • BPMN canvas: ikuti data-theme app (light/dark) via setTheme, bukan hardcode dark

[0.4.65] - 2026-09-05

Changed

  • Codespace: satu tombol BPMN baru di header (FAB/strip/duplikat dihapus)

[0.4.64] - 2026-09-05

Changed

  • Codespace: satu tombol BPMN baru — desktop di toolbar, mobile hanya FAB (hapus strip/header/Files/nav)

[0.4.63] - 2026-09-05

Fixed

  • Codespace mobile: FAB BPMN baru fixed (anti clip) + strip nav IDE sampai 1023px / touch

[0.4.63] - 2026-09-05

Fixed

  • Codespace mobile: FAB + BPMN fixed + CSS !important untuk strip/bottom-nav (tidak kalah Tailwind); mkdir induk bpmn/ saat create

[0.4.62] - 2026-09-05

Fixed

  • Codespace mobile: BPMN baru di header + strip + pane Files (default HP); MQ sampai 1023px

[0.4.61] - 2026-09-05

Fixed

  • Codespace mobile: tombol + BPMN di kiri header (tidak terpotong) + strip/nav via CSS khusus (bukan hanya md:hidden)

[0.4.60] - 2026-09-05

Fixed

  • Codespace mobile: tombol BPMN baru di header solid, strip + BPMN baru kontras, tab BPMN di bottom nav

[0.4.59] - 2026-09-05

Fixed

  • Codespace mobile: tombol BPMN selalu di header + strip BPMN baru full-width lebih kontras

[0.4.58] - 2026-09-05

Fixed

  • Codespace mobile: tombol BPMN baru di strip aksi full-width di bawah header + tombol di empty editor

[0.4.57] - 2026-09-05

Fixed

  • Codespace mobile: tombol BPMN baru di header + menu ⋯ (sebelumnya hanya desktop toolbar)

[0.4.56] - 2026-09-05

Fixed

  • BPMN Baru: pastikan root codespace + folder bpmn/ dibuat otomatis; nama file unik jika sudah ada

[0.4.55] - 2026-09-05

Fixed

  • Codespace FS: buat nested dir otomatis saat write (fix error «Direktori induk tidak ada» untuk BPMN baru di bpmn/)

[0.4.54] - 2026-09-05

Added

  • Codespace BPMN Kit editor (/codespaces/:id/bpmn) — load/save .bpmn, sample Approval Flow
  • Widget chat Sangga + multi-thread AI (paritas OnlyOffice AI) + «Terapkan ke diagram»

0.4.53

Fixes

  • Markdown preview tema light: kontras dipaksa lewat CSS dinamis berbasis ID (specificity tinggi) + observer data-theme, supaya teks gelap di latar putih tidak kalah perang !important / Tailwind remap. Docs workspace + chat prose ikut di-harden.

0.4.52

Fixes

  • Markdown light theme: perbaiki -webkit-text-fill-color pada blok pre/code (fill gelap dari parent sempat menimpa → teks code hilang di background gelap) di chat workspace, Agent panel, dan Live.

0.4.51

Fixes

  • Markdown preview tema light: hapus data-md-contrast (default dark sempat bocor teks terang); kontras hanya dari html[data-theme] + override eksplisit light/dark supaya preview selalu terbaca.

0.4.50

Changes

  • Sidebar: label menu Home diganti Workspace (ikon folder); state aktif mencakup / dan /workspaces/*.

0.4.49

Fixes

  • Markdown preview tema light: default teks gelap di latar putih; warna terang hanya di data-theme=dark (+ mirror data-md-contrast di komponen) supaya tidak ada perang !important yang membuat preview tidak terbaca.

0.4.48

Fixes

  • Markdown preview tema light: warna hex langsung + selector * / !important (Preview MD Codespace, Live, Changelog) supaya teks gelap selalu terbaca di latar putih.

0.4.47

Fixes

  • Markdown / chat light theme: hapus prose-invert di Live (latar bg-slate-950 di-remap putih → teks terang hilang). Preview Codespace pakai CSS variables di komponen. Panel Agent tidak lagi memaksa warna gelap ws-chat-prose di atas bubble bertema.

0.4.46

Fixes

  • Markdown preview tema light: buang class Tailwind prose sepenuhnya; styling .cs-md-* pakai :is() + !important supaya teks gelap di latar putih selalu menang (cache-bust 0.4.46).

0.4.45

Fixes

  • Markdown preview (Codespace) tema light: hapus prose-invert + bg-slate-950 yang bentrok dengan remap light (latar putih + teks terang). Preview memakai kelas .cs-md-preview / .cs-md-prose dengan kontras eksplisit untuk dark & light.

0.4.44

Features

  • Riwayat Agent per Codespace: 50 job terakhir dimuat kembali dari agent_jobs berdasarkan channel_ref=codespace:{id}; riwayat tidak tercampur antar-Codespace.
  • Indikator proses Telegram-style: balon tiga titik animasi tampil selama job mengantre atau berjalan, termasuk setelah halaman dimuat ulang.

Fixes

  • Kontras reply Sangga: jawaban AI pada Workspace, Chat Telegram, dan panel Agent Codespace memakai warna teks/latar eksplisit untuk tema light maupun dark.

0.4.43

Fixes

  • Panel petunjuk pairing: warna kartu/langkah memakai CSS khusus (.tg-pairing-card--compact|sheet) — kontras tinggi di dark & light, tidak lagi bergantung util Tailwind yang bentrok.
  • Teks hint kosong di panel Agent dinaikkan kontrasnya (near-white di dark / near-black di light).

0.4.42

Features

  • Tema light/dark: saklar di sidebar (di atas Log out); preferensi tersimpan di localStorage (wa-theme).
  • Tema saat ini (slate gelap) menjadi dark; tema light memakai latar terang + teks kontras.

Fixes

  • Panel petunjuk pairing Telegram (Agent / Codespace): teks langkah tidak lagi abu muda di kartu putih — kelas Tailwind yang bentrok (bg-white + bg-slate-900) dipisah; kontras dinaikkan.

0.4.41

Features

  • Pendaftaran akun web (/register): user baru self-register dengan status pending.
  • Approval admin di /admin/users: tombol Approve / Tolak / Aktifkan.
  • Login (password & Google baru) diblokir sampai account_status=approved.
  • User yang dibuat admin langsung approved.

Ops

  • Migrasi runtime kolom users.account_status (default existing = approved).

0.4.40

Alternate production release — promote fitur Staging ke Prod tanpa Otomasi Wizard dan tanpa CloudTable (Optima).

Production

  • Guardrail G0–G3 + G1b: klasifikasi target env; default ikut runtime Sangga (Prod→prod, STG→stg); override hanya jika env disebut eksplisit; CRP/deploy tetap steward-only.
  • Codespace Web IDE: tree, CodeMirror, Agent panel, diff, upload, browse URL vibe-proxy.
  • Sangga Live (/live): voice + chat (tanpa «jalankan otomasi» di Prod).
  • Pairing freeze: chat web/Live/workspace/Codespace/embed dibekukan sampai Telegram /start KODE + approved.
  • Chat Telegram: sync web↔bot, lampiran file, HTML tags.
  • Optima curated CLI (agent hint) tetap mengarah ke jalur capability-gated — curated API Optima Prod belum diaktifkan di gelombang ini.

Sengaja belum ke Prod

  • /automations Otomasi Wizard V2 + pipeline (tetap Staging).
  • Optima CloudTable (tetap Dev).
  • Optima curated C5 promote (setelah G4 stabil).

Ops

  • Backup DB Prod sebelum deploy wajib.
  • Downtime singkat saat recreate container + webhook Telegram.

0.4.30

  • Guardrail G1: classifyTargetEnv + heuristik URL/host (dev-* vs prod)
  • Guardrail G2: unit test per kanal + wire otomasi runner (channel=automation)
  • Guardrail G3: /prod-ops audit [n] + Docs AI gate (jika belum)

0.4.29

  • Guardrail G0: assertChatGuardrail di External, web chat, Live, Codespace, Telegram
  • CRP develop + trigger deploy Optima/Sangga: steward-only (bukan allowlist TTL)
  • Steward baru: [email protected]

0.4.27

Fixes

  • Chat Telegram web → bot: pesan dari /chat-telegram di-mirror ke DM Telegram (sebelumnya hanya DB bersama; balasan agent tidak muncul di bot).

Features

  • Kirim file dari Chat Telegram web: tombol lampiran (PDF/DOCX/XLSX/gambar/teks); file di-upload, diekstrak untuk agent, disimpan ke workspace, dan dikirim ke Telegram.

Tests

  • web-sync.test.ts — format body notifikasi sync web→Telegram.

0.4.25

Features

  • Optima Curated API (STG): CLI optima-curated.mjs + client optima/curated.ts; broker hint agar agent query data Optima lewat curated (capability-gated), bukan SQL mentah.
  • Codespace browse URL: /codespace list/status/new + broker hint menampilkan URL vibe-proxy prototype.
  • Telegram HTML tags: perluas sanitize/parse (blockquote, tg-spoiler, tg-emoji, span) untuk progress live + bubble web.

Tests

  • run-progress.test.ts, code-vibe-browse.test.ts, perluasan format.test.ts.

0.4.24

Fixes

  • Codespace mobile: parent shell pakai flex-col di layar sempit (sebelumnya flex-row — nav dan IDE berjejer, layout berantakan).
  • Strip nav IDE fixed height ~2.75rem di atas; admin links disembunyikan di strip mobile; IDE isi h-full.

0.4.23

Codespace IDE mobile

  • Layout tab Files / Editor / Agent di layar sempit
  • Shell IDE: nav strip ikon + tanpa footer/padding di detail codespace
  • Agent panel full-width di mode mobile

0.4.22

Improvements

  • Sangga Live UX (staging): chatbox lebih lebar & responsive; render markdown via renderChatHtml; mic continuous ala Jarwo (silence submit); TTS browser + tombol henti / auto-stop 45 dtk.

0.4.19

Fixes

  • Chat transcript HTML: parse tag Telegram (b/i/code/a/…) di live thinking + bubble Chat Telegram/Workspace; escape tag asing.
  • Codespace browse URL: /codespace list/status/new menampilkan URL vibe-proxy; broker hint prototype URL.

0.4.18

Features

  • Codespace Web IDE (staging): panel Agent (column2) bisa di-resize drag; preview Markdown show/hide saat edit .md/.mdx.

0.4.17

Features

  • Codespace Web IDE — Fase D (staging): diff pasca-agent (snapshot → daftar file A/M/D + unified diff) dan drag-drop upload ke file tree (maks 5 MB/file).

0.4.16

Features

  • Codespace Web IDE — panel agent (staging): kirim instruksi vibe dari side panel; job masuk antrean yang sama dengan Telegram; poll status di web.

0.4.15

Features

  • Codespace Web IDE (staging): menu /codespaces, file tree, CodeMirror 6, save/autosave, Quick Open, FS jail.

0.4.14

  • ProdOps: steward bootstrap + steward-add; whitelist TTL default 7 hari; gate broker + /prod-ops
  • Shared allowlist DB: /data/vibe-code/.sangga-shared/prod-ops.db (prod & STG)

0.4.12

  • Fase 4a/P0: mode unified — inject Workspace + Codespace bersamaan; /assistant bukan saklar mode lagi

0.4.11

  • Sembunyikan thread Chat Telegram dari history workspace; deep-link ?conv= redirect ke /chat-telegram

0.4.10

  • Chat Telegram: tombol menu perintah bot (daftar BotFather) di input, mirip apps Telegram

0.4.9

  • Chat Telegram sebagai menu sidebar + laman sendiri (/chat-telegram), bukan hanya thread di dalam workspace

0.4.8

  • External API: GET /conversations + /conversations/:id/messages (pull history Telegram/Optima)

Changelog

Format mengikuti Keep a Changelog. Versi mengikuti Semantic Versioning.

[Unreleased]

[0.4.11] - 2026-08-05

Changed

  • Thread Chat Telegram tidak lagi muncul di history chat workspace (akses lewat menu )
  • Deep-link redirect ke

[0.4.10] - 2026-08-05

Added

  • Laman /chat-telegram: tombol menu perintah bot (list BotFather) di samping input, seperti menu command di apps Telegram
  • Modul telegram-bot-commands.ts sebagai sumber daftar perintah

[0.4.9] - 2026-08-05

Added

  • Menu sidebar Chat Telegram dan laman /chat-telegram (thread sync Telegram↔web sebagai fitur top-level)
  • Helper ensureChatTelegramThread di chat-context

[0.4.8] - 2026-08-05

Added

  • External API: GET /conversations + /conversations/:id/messages (pull history Telegram/Optima)

[0.4.7] - 2026-08-05

Added

  • External API sync ke Telegram/web: body opsional sync pada POST /api/v1/external/chat
  • Persist turn ke workspace bernama (default Optima) tanpa mengubah pointer DM Telegram
  • Notify DM bot (satu bubble final) bila telegram_links approved
  • Response job done menyertakan conversationId + telegramNotified

Changed

  • Client tanpa sync tetap perilaku lama (backward compatible)

[0.4.6] - 2026-07-22

Fixed

  • Overlap konten halaman (mis. Settings/Profil) dengan footer versi: wrapper konten tidak lagi min-h-0, sehingga scroll di <main> dan footer tidak tertimpa.

[0.4.5] - 2026-07-22

Fixed

  • Timestamp workspace di list web yang tampil jauh ke masa depan (nilai ms legacy dinormalisasi ke detik untuk Drizzle mode: 'timestamp').

Added

  • OnlyOffice multi-tipe: edit DOCX / XLSX / PPTX (documentType word/cell/slide).
  • Menu New document (Word / Excel / PowerPoint) + upload OOXML ke Documents.
  • Kolom workspace_docs.file_type; upload Files .docx/.xlsx/.pptx juga jadi dokumen editable.

Changed

  • Plugin Workassist AI hanya untuk DOCX (cell/slide tanpa plugin AI).

[0.4.4] - 2026-07-21

Changed

  • /codespace share|unshare wajib sebutkan <slug> — share per project saja (bukan semua Codespace).
  • Tolak keyword all / semua / * pada share/unshare.

[0.4.3] - 2026-07-21

Added

  • Sharing Codespace antar user Telegram (ACL Editor): /codespace share|unshare|members.
  • Kolom active_code_project_id + tabel telegram_code_project_members; agent/editor memakai path folder owner.

Changed

  • /codespace list menampilkan owned ∪ shared (label ◀ shared · owner@…).
  • Upload .zip/.html dan resolve workspace agent mengikuti Codespace aktif (termasuk shared).

[0.4.2] - 2026-07-20

Fixed

  • Telegram foto + caption perintah kembali diproses (regresi sejak skill system): message.photo tidak lagi diabaikan diam-diam.
  • Dokumen PDF/DOCX/XLSX/gambar ke agent via ekstraksi teks + caption (bukan hanya key/code upload).
  • Grup: media + caption/caption_entities atau reply ke bot ikut diarahkan ke agent.

[0.4.1] - 2026-07-19

Fixed

  • Cursor NDJSON terakhir tetap diproses walau tidak diakhiri newline.
  • Respons Cursor kosong tidak lagi disimpan sebagai (no response): Sangga mengambil ringkasan hasil sekali, lalu menandai job gagal bila tetap kosong.
  • Diagnostik respons kosong mencatat exit code, jumlah event, session ID, dan potongan stderr.

[0.4.0] - 2026-07-19

Added

  • Telegram dapat membuat Workspace web melalui /workspace new <nama> atau permintaan natural seperti “buat workspace baru bernama …”.

Changed

  • Pembuatan Workspace web dan API web memakai helper yang sama; permintaan “code workspace” tetap diarahkan ke Codespace.

[0.3.1] - 2026-07-19

Added

  • Tombol inline pada /codespace dan /codespace list untuk berpindah Codespace langsung dari Telegram.

Fixed

  • URL staging dipatok ke dev-sangga.cartenz.co.id agar tidak mewarisi URL production dari environment Docker Compose.

[0.3.0] - 2026-07-19

Added

  • Tiga job agent paralel dengan child process, runtime Cursor/MCP, dan identitas sudo per job.
  • Istilah dan perintah /codespace untuk proyek vibe code; /code tetap menjadi alias.
  • Codespace production/staging bersama dan adopsi otomatis proyek lama dari filesystem.
  • Manual Workspace/Codespace di docs/user-manual-workspace-codespace.md.

Changed

  • Snapshot progress Telegram private maupun grup dibatasi satu update per 10 detik.
  • Telegram 429 mengikuti retry_after; kegagalan delivery tidak menahan status terminal job.
  • Workspace berarti ruang dokumen/KB/OnlyOffice; Codespace berarti ruang source code.

Fixed

  • Migrasi execution_duration_ms dan update terminal job atomik.
  • Lock Codespace mencegah dua job paralel menulis direktori yang sama.
  • Key snippet proxy memakai kombinasi direktori email dan slug.

[0.2.22] - 2026-07-17

Added

  • Triple-track agent queue: hingga 3 job paralel via AGENT_MAX_CONCURRENT (default 1, staging=3)
  • claimNextJobs() — claim multi-slot FIFO dengan skip workspace bentrok
  • Cancel job per jobId — killActiveAgentChild(jobId) tidak menghentikan job lain
  • /status menampilkan N queued | M running (max K)

[0.2.21] - 2026-07-16

Fixed

  • Workspace code (serve.mjs): perbaiki find depth di start-vibe-code-servers.sh agar user/project/start.sh terdeteksi — auto-start saat boot/deploy tidak lagi skip semua proyek
  • ensure-vibe-code-proxy.sh: nginx snippet ke 127.0.0.1:312x (bukan IP container) + hot-deploy panggil ulang setelah restart

[0.2.20] - 2026-07-16

Added

  • Telegram: terima source .zip / .html di mode /code — ekstrak ke proyek vibe code aktif (workspace code)
  • Bantuan /help dan status /code menyebut unggah ZIP/HTML

[0.2.19] - 2026-07-16

Added

  • Sync chat Telegram ↔ web: workspace default + thread bersama (conversations), pointer activeConversationId
  • Perintah /workspace, /thread, /new (Telegram & slash di web chat) memakai konteks yang sama
  • Migrasi sekali riwayat telegram_chat_messages → thread Chat Telegram
  • API /api/chat-context (GET/PATCH) untuk pointer aktif
  • Home = daftar workspace; /workspaces redirect ke / (nav Workspaces dihapus)

Fixed

  • Telegram ATTACH: laporkan nama file yang disebut tapi tidak ketemu (dari hotpatch 0.2.18)
  • Prompt sistem file Telegram dikembalikan ke process-job

[0.2.18] - 2026-07-14

Fixed

  • Telegram ATTACH: laporkan unresolved + telegramFileSystemPrompt di process-job (hotpatch production)

[0.2.17] - 2026-07-14

Fixed

  • Telegram: wiring ulang ATTACH: di process-job (parseOutboundAttachments + sendDocument/sendPhoto) — sebelumnya outbound.ts ada tapi tidak dipanggil, jadi file PDF/dokumen tidak terkirim ke chat/grup

[0.2.16] - 2026-07-12

Added

  • Telegram: terima dan simpan file VPN .ovpn / .vpn / .wg (selain .pem / .ppk) per user untuk perintah berikutnya

[0.2.15] - 2026-07-12

Added

  • Telegram: terima dan simpan file kunci .pem / .ppk per user (untuk perintah berikutnya)
  • Perintah /key (alias /keys, /kunci) — daftar / hapus file kunci tersimpan

[0.2.13] - 2026-07-08

Changed

  • Grup Telegram: progress blob di-update maksimal tiap 10 detik (anti flood limit)
  • Grup Telegram: balasan final di-edit ke pesan status yang sama (bukan kirim banyak pesan baru)
  • DM tetap update progress tiap 2 detik seperti sebelumnya

[0.2.12] - 2026-07-08

Added

  • Perintah dan instruksi agent di grup Telegram (mention bot) — user approved bisa /status, /antrian, instruksi coding, dll. langsung di grup

Changed

  • User belum aktivasi yang mention bot di grup tetap diarahkan registrasi lewat DM
  • Sambutan join grup diperbarui

[0.2.11] - 2026-07-08

Changed

  • Bot Telegram tetap di grup/supergroup (hanya keluar dari channel)
  • Sambutan otomatis saat bot ditambahkan ke grup

[0.2.10] - 2026-07-08

Fixed

  • Voice note Telegram: kirim Authorization: Bearer ke Whisper (WHISPER_API_KEY)
  • Script sync-whisper-api-key.sh — salin token dari container whisper ke env prod/staging

[0.2.9] - 2026-07-08

Added

  • Perintah Telegram /antrianglobal (alias /globalqueue, /antrian global) — lihat antrian job semua user dengan pemilik, channel, dan mode

[0.2.7] - 2026-07-08

Fixed

  • Timestamp agent_jobs konsisten (detik) — timeout & urutan antrean benar
  • Progress Telegram: fallback plain text, log error, ticker waktu sementara 5 detik, flush final

[0.2.6] - 2026-07-08

Added

  • scripts/host-deploy.sh — deploy staging/production dari host (background), aman dipanggil agent via sudo
  • scripts/ensure-staging-up.sh + ensure-compose-app.sh — watchdog & health-check post-deploy
  • Requeue otomatis job running saat container restart + notifikasi Telegram

Changed

  • Progress Telegram: waktu eksekusi sementara di setiap update pesan progress
  • Agent diinstruksikan pakai host-deploy.sh, bukan docker compose down/stop

[0.2.5] - 2026-07-08

Changed

  • Permintaan hubung Telegram dikirim ke semua user Administrator (role admin) yang sudah terhubung ke bot — bukan hanya TELEGRAM_APPROVER_IDS.
  • Approver Telegram: user dengan role Administrator + link Telegram approved, plus fallback env TELEGRAM_APPROVER_IDS.
  • Halaman Admin → Telegram (/admin/telegram) untuk setujui/tolak permintaan dari web.

[0.2.4] - 2026-07-07

Added

  • Agent skills system (playbook procedural memory, /skill, auto-draft setelah task kompleks)
  • Footer waktu eksekusi di setiap balasan agent Telegram

Changed

  • Audit log untuk perintah SSH via host

[0.2.3] - 2026-07-07

Added

  • PDF workflow: pdf-workflow.ts, scripts/render_pdf.py, render_diagram.py, fix_mermaid_svg.py
  • Dokumentasi docs/PDF-WORKFLOW.md + pinned @mermaid-js/mermaid-cli di root package.json

Changed

  • Telegram outbound prompt: dukungan SVG, instruksi pipeline PDF/Mermaid, tanpa branding default

[0.2.2] - 2026-07-07

Added

  • Vibe-proxy: reverse-proxy subpath vibe apps lewat Sangga (/muhammad_fajar_cartenz_co_id/...)
  • Env VIBE_PROXY_ROUTES untuk override upstream (prefix=origin, comma-separated)

[0.2.1] - 2026-07-07

Added

  • Telegram: terima file PDF, DOCX, XLSX, gambar (+ caption) — ekstrak teks otomatis
  • Telegram: kirim balik file via ATTACH: nama.ext (sendDocument / sendPhoto)
  • Ekstrak konten spreadsheet XLSX (SheetJS)

Changed

  • Help /help dan prompt agent menyertakan instruksi file Telegram

[0.2.0] - 2026-07-06

Added

  • Telegram /antrian — lihat antrian job agent tanpa cursor-agent
  • Sudo gate Telegram + progress live saat agent jalan
  • Notifikasi user saat agent job timeout

Changed

  • Parse output agent markdown → Telegram HTML (bold, code, link, tabel)
  • Timeout agent job dinaikkan ke 15 menit (prod & staging)

Fixed

  • Agent job macet dengan timeout & stale recovery
  • Bootstrap DB staging yang tidak lengkap
  • version.ts aman di bundle browser

[0.1.0] - 2026-06-29

Added

  • Label versi di footer web (semua halaman) + sidebar navigasi
  • Telegram: /version, pertanyaan natural ("versi berapa?"), dan baris versi di /status
  • Build metadata: commit git + tanggal build (via VITE_APP_GIT_SHA saat deploy)

Changed

  • Versi aplikasi naik ke 0.1.0 (sinkron package.json)

[0.0.1] - 2026-06-26

Rilis awal WorkAssist yang ditandai untuk production & staging.

Added

  • Real-time streaming chat workspace (SSE) dengan UI mirip Cursor
  • Agent tools: KB search, baca PDF/DOCX, buat/edit dokumen
  • OnlyOffice editor + plugin AI sidebar
  • Admin: pengguna, role, API clients, penyimpanan, AI provider global
  • Google OAuth (@cartenz.co.id), external API v1
  • Sidebar collapsible, changelog & label versi di navigasi

Changed

  • Staging memakai production build (bukan Vite dev) agar perilaku UI sama dengan production
  • AI provider dikelola global di Admin (bukan per-user)

Fixed

  • blocks is not iterable saat bot membuat dokumen dari ringkasan PDF
  • FOUC / loncatan font di staging
  • OnlyOffice JWT secret selaras antara app dan container
  • Navigasi admin & hydration layout