Skip to content

Release Notes ​

What changed in each AMBA release. The app updates itself; you can also download the latest version.

0.5.12 — 2026-10-11 ​

Security (Milestone 96) ​

  • Research and Plan modes can no longer change your files. In these read-only modes the agent could still edit workbooks, decks and Word documents in place or run an Office script, because the guard only knew the older file-writing tools. Every tool now declares whether it reads or writes, and the read-only modes refuse anything that writes, runs commands or calls a connected MCP tool — before asking you for permission. Previewing a deck or Word edit without saving it still works; Plan mode can still save its plan.

Privacy (Milestone 96) ​

  • Scanned files and images are read on your computer, and pictures never go to the AI provider. We checked every path: text in scanned PDFs and images is recognised on the device (Apple Vision on macOS), and only that text can reach the model, where identifier masking applies to it. An unused code path that could have sent page images to a cloud model has been removed, and a test now fails if one is added without a per-project consent gate. The privacy policy (English, Vietnamese, Japanese, Korean) now says that files reach the AI provider as text only, and that on Windows and Linux a scanned page without a text layer is reported as unreadable.

Fixed (Milestone 96) ​

  • macOS no longer asks for keychain access over and over. AMBA read the keychain every time it needed a key, and each key was a separate keychain entry, so one chat could show "AMBA wants to use your confidential information" several times. AMBA now keeps all its keys in a single keychain entry, reads it at most once while it runs, and no longer reads any key at launch; keys saved by earlier versions move into that entry the first time they are used (the old entries are removed only after the move is confirmed). Choose Always Allow to stop the prompt for good. Windows and Linux keep working as before.

Office: decks that fit their slides (Milestone 96) ​

  • New decks no longer run off the slide. When AMBA writes a deck in a dense company template, text that does not fit a slide is shrunk the way PowerPoint's own "shrink text on overflow" does (never below 70 % or 10 pt). It is shrunk only if the template allows it. Otherwise it continues on the next slide with the same layout, titled "(1/2)", "(2/2)". Before, bullets could spill past the bottom edge on most slides of such a template.
  • AMBA checks the layout of every deck and Word document it delivers. It looks for text overflowing its box or the slide, text hidden under another shape or picture, text smaller than 10 pt, and pictures, tables or long unbroken values wider than the Word page. The check runs on your computer and nothing is sent anywhere. Problems are recorded as warnings with the run's deliverables, and a playbook can make them block delivery until fixed. The agent sees the same estimate when it reads a deck or document, so it can fix a slide before handing it over. Only problems the run itself added are reported, never what was already in your file or template.

Office: PowerPoint decks and templates edited in place (Milestone 90) ​

  • AMBA can now edit your own PowerPoint decks and fill your company template instead of rebuilding them. Give it a deck (.pptx) or a template (.potx) and it changes only what you asked: replace text while keeping each word's formatting (even when PowerPoint split it into pieces), add slides from the template's own layouts, duplicate, delete or reorder slides, fill and extend tables, update chart numbers together with the chart's built-in Excel data, turn on chart data labels, add pictures and speaker notes. Masters, layouts, theme and every slide you did not mention stay exactly as they were; a template saved as .pptx becomes a normal presentation. Placeholders left empty on new slides are removed, so no "Click to add text" is left behind.
  • Every deck edit is checked before it is saved. If anything outside the requested change would differ, a chart's numbers would not match its data, or a deleted slide would leave pieces behind, nothing is written and the agent is told why. Overwriting an existing deck keeps the previous version for rollback, and the agent can preview an edit without writing it.
  • New decks are built on a real template — yours if you set one. In project settings (General) you can choose your company's PowerPoint template (.potx or a .pptx used as one); it is kept in the project's input/templates/ folder (a file chosen elsewhere is copied there) and nothing leaves your computer. Every new deck AMBA creates then uses that template's layouts, theme, fonts and footers; without one, AMBA uses its own neutral 16:9 template with proper slide masters and layouts instead of the old hand-made slides. Outlines can now have nested bullets, tables, pictures, code blocks, speaker notes and section slides next to titles, bullets and KPI cards, and Vietnamese, Japanese and Korean text uses suitable fonts. Starting a deck from a customer's sample deck removes its sample slides (or keeps the ones you name) and leaves the original file untouched.

Office: Word documents and templates edited in place (Milestone 90) ​

  • AMBA can now edit your own Word documents and fill your company's Word templates instead of rebuilding them. Give it a contract, report or form (.docx) or a template (.dotx) and it changes only what you asked: fill fields and replace text while keeping each word's formatting (even when Word split it into pieces or it sits next to a link), set the text of bookmarks and content controls, insert paragraphs and lists in the document's own styles (it refuses styles the document does not have), replace one section or the whole body of a template, fill tables and add rows formatted like their neighbours, delete rows, and set headers and footers with page numbers. Styles, numbering, sections, comments and every other paragraph stay exactly as they were; a new table of contents is marked to update when Word opens the file. Vietnamese, Japanese and Korean text are handled like any other.
  • Edits can be tracked changes for review. With tracked changes on, every edit appears in Word as a revision by "AMBA" (deleted text struck through, new text underlined, new and deleted rows and paragraphs, style changes), so your team can accept or reject each one; accepting all gives exactly the requested document. The check before saving also verifies that, and nothing outside the requested change may differ — otherwise nothing is written and the agent is told why. Overwriting an existing document keeps the previous version for rollback.
  • New Word documents are built on a real template — yours if you set one. In project settings (General) you can now also choose your company's Word template (.dotx or a .docx used as one), kept in the project's input/templates/ folder like the deck template. Every new Word file AMBA writes then uses that template's styles, lists, fonts, page setup, headers and footers, without copying its sample text; without one, AMBA uses its own neutral A4 template (proper headings, lists, quotes, code, captions, tables and a page-number footer) instead of the old hand-made file. Documents can now have nested and numbered lists, code blocks, pictures, links, strikethrough and a table of contents that updates when Word opens the file. When filling a template, the yellow highlighting that marks its fields can be removed from the filled-in text.

Office: decks and Word files are checked before the run finishes; better previews (Milestone 90) ​

  • Decks and Word documents with template leftovers are sent back to the agent. A finished deck or Word file is read back before the run completes: leftover template text ("Click to add title", "[Company Name]", "[Fill in …]", "Lorem ipsum"), sample slides kept from the template the deck was built from, empty placeholders on a slide or Word fields still showing their placeholder, styles the document does not have, and broken or left-behind parts make the agent fix the file in place; if it does not, the run fails and names the problem. Problems your own file already had before the run are not blamed on it. A playbook can add its own prompt texts, ignore some, or turn individual checks into warnings.
  • Decks can no longer contradict the workbook. The workbook number check now also reads PowerPoint decks — slide text, KPI cards, tables, speaker notes and the numbers behind native charts — and the tables of Word documents. A deck whose chart says 95,238,095 clicks when the plan has 95,238 is sent back for correction like a Markdown proposal.
  • Slide and Word previews look like the file. The slide preview now fills the preview pane in the slide's real shape (16:9, 4:3, 16:10 …), shows the slide list only when the pane is wide enough, and places text boxes, KPI cards, pictures and tables where the layout puts them (instead of stacking them at default positions), with the layout's and master's background, accent shapes, logos and font sizes. The Word preview no longer shows a grey band above the page, and at 100 % the page fits the pane width; page size, margins, headers and footers come from the document.

Office playbooks: pitch decks, Word briefs and contract fills in your templates (Milestone 90) ​

  • The media pitch is now a PowerPoint deck in your agency's template. The Media Planning & Agency Pitch template builds Media_Pitch_Deck.pptx on the company deck template from project settings (or a client template you name in input/), with native PowerPoint charts and tables whose numbers come from the media plan workbook; the deck is checked against the workbook and for template leftovers. The Markdown proposal is now optional, written only when you ask for it.
  • The executive brief is a Word document in your company Word template. The Executive Chief of Staff template writes Executive_Master_Briefing.docx in your template's own styles, opening with the key figures taken from the financial model, and checks the brief and the strategy deck against the workbook. The Senior Financial Analyst playbook can now write Word briefs too, and the Executive Strategy Consultant can read workbooks so deck charts use their numbers.
  • Fill NDAs, SOWs and service contracts from your own template. The Document Analysis & Contract Review template (and the Lead Business Author playbook) fills only the fields of a contract template — names, addresses, dates, amounts — from your message and the files in input/, asks you for anything it cannot find instead of guessing, never changes a clause, and writes every filled field as a tracked change by "AMBA" so you can accept or reject it in Word. A contract that still has a blank such as [Company Name], [Date], [●] or [Tên công ty] is sent back before the run finishes, and the answer ends with a table of each filled field, its value and where it came from.
  • New manual pages (English, Vietnamese, Japanese, Korean): the pitch deck in your template, the executive brief in your Word template, and contract fill with tracked-changes review in Word.

0.5.11 — 2026-10-10 ​

Deliverable accuracy (Milestone 95) ​

  • Every answer now lists the files it actually wrote. Below the answer, a "Files written" list shows each file the run created or updated (output files first) with its size, an "auto" badge for PDFs made automatically from Markdown, and a note when a file is not mentioned in the answer; click a file to open it. Files the answer mentions but this run did not write are listed too, next to the existing "Not produced" note. The list comes from what is on disk, not from the agent's wording, and stays after reopening the conversation.
  • Key figures above the files. The Inventory Reconciliation and Financial Analyst playbooks now ask the agent for the headline numbers of the result (for example total loss, shrinkage %, items over the threshold); they appear as "Key figures" above the file list. A figure that points at a file is only accepted if that file was written in the run.
  • Reconciliation pairs rows deterministically and can no longer report invented matches. The reconciliation tool now pairs each row with at most one row on the other side — by exact ID, normalized ID (case, separators, leading zeros), an ID found in the other side's reference text, or amount within tolerance and date within a window — and keeps the full result (matched pairs with the rule used, discrepancies, every unmatched row on both sides, unreadable values) instead of a 20-row sample. Amounts are read the way they are written (1.234.000 ₫, 1,234,000, (1,234), VND 12,500); a value that cannot be read is reported, never counted as 0. The Invoice Reconciliation template and the Financial Analyst playbook export these tables into the report, and a report whose "Matched" rows do not exist in the source files, do not carry the source amounts, or do not add up to the engine's count now fails with the exact rows named. Spreadsheet loading no longer turns a decimal comma such as 1,5 into 15.
  • Proposals and briefings must use the workbook's numbers. When a run writes both a workbook and a Markdown/Word narrative, every significant number in the narrative (money, percentages, counts such as clicks or impressions, Vietnamese and English formats like 95.238 lượt click, 1,2 tỷ, 95.2M) is checked against the workbook's calculated values. A number that is off by a factor of 1,000 or more (for example clicks quoted as "95,238,095" when the plan has 95,238) or that contradicts a reported key figure sends the agent back to fix the document, and the run fails if it does not; other numbers not found in the workbook are listed as warnings only. Years, dates, phone numbers, versions and page numbers are ignored. The Media Planning playbook now reads its workbook back before writing the proposal, totals each metric separately, and a total that adds different metrics (impressions + clicks) is rejected.
  • PDFs with emoji stay small and render the same on every computer. A short report with emoji could become an 11 MB PDF because the emoji pulled in the system colour-emoji font. PDFs now use only the fonts bundled with AMBA (Noto Sans regular and bold, plus Fira Mono for code) for Vietnamese and Latin text, and system fonts only for Japanese, Korean, Chinese, Arabic, Thai and Devanagari; colour-emoji fonts are never embedded. Common status emoji become text (✅ → √, ❌ → ×, ⚠️ → (!), 📈 → ↗, 🟢 → ●, 🇻🇳 → VN) and other emoji are left out. Lines in paragraphs, code blocks and table cells no longer overlap or drift apart, bold text is always bold Noto Sans, and Vietnamese characters in code keep their accents. pdf.generate reports the file size and a warning when a short document produces an unexpectedly large PDF.
  • F&B template reports the ratio your brief defines. When the brief defines a labour cost ratio (for example company-wide wages ÷ revenue for the period), the F&B Operations template now computes exactly that ratio, puts it in the workbook and reports it as the headline key figure, with per-store ratios as a breakdown; a run that reports only per-store ratios is asked again. The template no longer applies built-in benchmark ranges (such as "25–35%") that could contradict your own targets, and the labour workbook and operations briefing are now required deliverables. A request that names output/ files is no longer treated as a draft just because it says "draft the memo".

Robustness (Milestone 95) ​

  • Projects whose folder was deleted or moved are marked instead of shown as normal. The project list used to keep every project AMBA ever registered, even after its folder was gone. A project whose folder no longer exists now shows "Folder missing" on its card (and when you open it) with two choices: Locate folder… to point AMBA at the folder you moved (it must contain input/, output/ or workings/), or Remove from list, which asks first and only removes the project from AMBA — no files are deleted.
  • AMBA tells you when it closed unexpectedly. If the app is closed by a crash that leaves no error record (for example inside the system web view on Linux), the next launch says "AMBA closed unexpectedly last time" and, with your crash-report setting on Ask, offers to send a minimal report through the existing consent dialog: app version, operating system and time only. With Always send it is sent automatically; with Never nothing is sent. Running AMBA twice at the same time does not trigger it.
  • Pasting an API key cleans it. Spaces, line breaks and invisible characters in a pasted key are removed in the key field; a key with unusual characters (smart quotes, look-alike letters) shows a warning to copy it again.
  • Linux: typing with Vietnamese or CJK input methods no longer drops characters. Project, agent and file name fields (and the descriptions and rename prompts) no longer lose characters while ibus or fcitx is composing, and Enter that confirms an input-method candidate no longer submits the form. Dropdowns on Linux are drawn by AMBA so the chosen value stays readable, and the model selector in the new-project dialog always shows a real model when the saved default no longer exists.

UI (Milestone 93) ​

  • The whole app speaks your language, with local number and date formats. About 450 labels, buttons, tooltips, placeholders and messages that were still in English (command palette, History, Usage, Memory, Models, Skills, Settings → Models provider cards and messages, Diagnostics self-test, update prompt, spreadsheet pager, slide previews, file menu, permission prompt, data sources) are now translated in English, Vietnamese, Japanese and Korean, and Vietnamese labels use sentence case. Dates and times, counts, costs, file sizes and durations follow your language (for example "6,70 US$" and "1,5 KB" in Vietnamese); costs show two decimals instead of four. Release notes in the update prompt are shown as formatted text. Finished tool steps no longer read "Searching…"/"Đang…", routine runs show "Sent" in your language, a routine proposal shows "(not set)" instead of "?", the Telegram bot name no longer shows "@@", and the data sources overview lists the channels you actually connected.
  • Agent Studio, Tools & MCP and the project studio are translated too. The agent library and editor, the MCP server form, server list, tool registry and tool permissions, the studio status bar ("Ready", files in/out), the file filter, tab and tree tooltips, the drop-files hint and the live run status (waiting for permission or your answer, rate-limit retries, repeated-action recovery) now follow your language. The new-project dialog shows template names, badges and the starting description in your language. Tool policies show as Allow / Confirm / Deny in your language, and agent cards no longer show the instruction length twice.
  • Safer permission prompts. When an agent asks to use a tool that needs your approval, the prompt is now a proper dialog: Esc means Deny, keyboard focus stays inside it, and it appears above any window you have open (for example Settings) and returns you there afterwards. Requests that would delete, move or rename files, overwrite an existing file outside workings/ and output/, or write outside the project folder are marked with a warning and start on Deny; the prompt shows the tool, the file paths and the policy's reason, with a button to copy the details. Several requests at once are shown one after another in order, and prompts from a run that has ended or was cancelled disappear.
  • Command palette (⌘K / Ctrl+K) behaves like the other dialogs. Keyboard focus stays inside it while it is open and returns to where you were when it closes; Esc or a click outside closes it; the highlighted result is clearly marked and stays in view while you move with the arrow keys, and screen readers announce the highlighted result. It no longer opens on top of another open dialog (close that one first), so it cannot hide or interfere with unsaved work there.

0.5.10 — 2026-10-10 — Hotfix: credentials and honest results ​

Upgrade notes ​

  • Please re-enter API keys and connector credentials you saved after updating to 0.5.9. 0.5.9 reported them as saved but did not keep them across restarts. Keys saved in 0.5.8 or earlier are moved into your system keychain automatically on first launch.
  • Linux: saving keys now requires a running system keychain (GNOME Keyring, KWallet ≥ 5.97 or KeePassXC). Without one, AMBA shows a clear error instead of pretending to save. Settings → System Diagnostics shows the keychain status.
  • Includes the UI integrity work from Milestone 93 (consistent dialogs, restored hover states and tints, 12px minimum text, offline icons).

Security / Fixed (Milestone 94) ​

  • API keys and credentials are now actually stored in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service). In 0.5.9, keys saved after updating were lost on restart — please re-enter them. Keys saved before 0.5.9 are migrated automatically.
  • Saving a key now fails with a clear message instead of showing "saved" when the keychain did not keep it. On Linux without a running keyring (GNOME Keyring or KWallet), saving shows "No system keychain is available" — AMBA never falls back to storing keys unencrypted.
  • Pasted keys are trimmed; keys containing line breaks, invisible or non-ASCII characters are rejected with a hint to paste again.
  • Settings → Diagnostics shows which keychain is in use and whether it is available.
  • Runs no longer report files that were not produced. If the agent says it created files that are not on disk and cannot fix it (including when the model service fails during the fix-up attempt), the run now ends as failed and the chat shows "Not produced: …" with the missing files, also after reopening the conversation. Requests that only mention a draft (e.g. "review the draft budget in input/") no longer switch into draft mode, and draft runs say that their files were saved in workings/drafts/.
  • Clearer error when a folder is given instead of a file. Loading data, reading files or inspecting workbooks with a folder (or an empty path) now fails right away with a message listing the files in input/ to choose from, instead of "Unsupported file format".
  • PDFs are refreshed when their Markdown changes. A rewritten Markdown deliverable in output/ now gets a new PDF instead of keeping the outdated one.

Docs, site and packaging (Milestone 94) ​

  • The website and manual now describe how keys are really stored. Every page (4 languages) says keys live only in the OS keychain (macOS Keychain, Windows Credential Manager, Linux Secret Service: GNOME Keyring, KWallet 5.97+ or KeePassXC), that there is no plaintext or database fallback, that Linux without a running keyring cannot save keys (and what to install), and that keys saved after updating to 0.5.9 must be entered again. The old claim of an "encrypted SQLite fallback" is gone.
  • More accurate claims. "Zero Math Hallucinations" became "Computed, Not Guessed": calculations run in deterministic tools and you should still review the numbers. The playbook pages no longer state a wrong number of built-in playbooks (there are seven).
  • New Release Notes page on the website (nav and footer, all languages), generated from this changelog at every site build. /playbooks now redirects to the playbook library, and the old /download/<os> links (which pointed to 0.4.5 files that no longer exist) go to the download section.
  • Linux packages: the .deb now depends on libdbus-1-3 and recommends gnome-keyring | kwalletmanager (the .rpm requires dbus-libs and recommends gnome-keyring), drops a duplicate WebKitGTK entry, and AMBA appears under Office/Productivity in application menus. The install guide uses sudo apt install ./AMBA_*_amd64.deb and no longer lists libssl3.
  • Download page shows only current files. The release manifest no longer keeps installers from older versions (0.4.x installers and a 0.5.4 .rpm were still listed); the new .rpm is mapped correctly.

UI (Milestone 93) ​

  • Readable, theme-consistent text and colours everywhere. No text is smaller than 12px any more (badges, counters, footers and helper text were 9–11px in places). Status colours (success, warning, error, info) now come from the app theme, so they read well in both light and dark mode instead of fixed colours that were too faint on white or too bright on dark; filled badges and buttons with white text have enough contrast. Code blocks, diagrams and document viewers that ignored the light theme now follow it. Leftover styles from an older UI kit were removed, so buttons, badges and form fields look like the rest of the app.
  • Hover states, selected states and soft tints are back. Many buttons, list rows, badges, cards and dividers were designed with semi-transparent theme colours that never took effect, so hover feedback was missing, selected items were not highlighted, and some dividers showed as bright lines in the dark theme. They now render as designed in both light and dark themes. The file filter box in the project explorer is no longer white in the dark theme.
  • Consistent dialogs and in-app confirmations. Project Configuration, Delete project, New project, the welcome sandbox, Help & Guide, Clean up session and the trial-limit dialog now behave like every other dialog: Esc closes them (or goes Back), keyboard focus stays inside, and only one dialog is shown at a time — Delete project has a Back button to Project Configuration. Every "Are you sure?" question, error message and the new-file name prompt is now an in-app dialog in your language and theme instead of a plain system pop-up; deleting asks with a red button and starts on Cancel. Backup and restore in Settings use the normal save/open file pickers instead of asking you to type a path. The Settings row in the sidebar and the collapsed-sidebar expand button work with the keyboard and screen readers; the crash-report dialog shows a readable time and starts on Send; the routine run history keeps its filters on one row; the data-flow table fits inside Project Configuration.
  • Quick setup is reachable with the sidebar collapsed. The collapsed sidebar (narrow windows, or after collapsing it) now has a Setup Wizard icon next to Help and Feedback, so the setup wizard no longer requires expanding the sidebar first.

0.5.9 — 2026-10-09 — Milestones 76–92 ​

First release since 0.5.6 (0.5.7 was tagged but never distributed).

Upgrade notes ​

  • Keychain prompt on first launch (macOS): API keys and connector credentials previously stored as plaintext in the local database are moved into the OS keychain and removed from the database; macOS may ask once for keychain access. Correction (0.5.10): this did not work in 0.5.9 — keys saved after updating to 0.5.9 were lost on restart and older keys stayed in the database. Fixed in 0.5.10; see its notes.
  • Backups no longer contain credentials: restoring a backup on another machine requires re-entering keys.
  • Routines: existing routines are migrated automatically and keep their permissions; "weekdays" schedules no longer fire on weekends; new or edited routines need a successful dry run before activation.
  • Overwrites: agents now ask before overwriting existing files outside workings/ and output/; unattended routines are denied such overwrites unless the path is allowed in the routine policy.
  • HTML previews render statically (scripts disabled); open externally for interactive pages.
  • Crash reports are sent only with your consent (Settings → Security).
  • Installer is ~10 MB larger (bundled offline Office sandbox and icons).

UI (Milestone 93) ​

  • Fixed: icons are visible again in the installed app, and they work offline. Icons were downloaded from a third-party icon server each time the app started; the app's security policy blocks that, so the installed app showed no icons. All icons now ship inside the app and nothing is fetched from a third-party server to draw the interface.

Chat (Milestone 88) ​

  • File mentions in chat now only ever point inside the project folder. When you write @file or @folder/, the app (not the chat window) finds the matching project files, and a mention that resolves outside the project folder or to a missing file is ignored. Project instructions, automatic mode selection (TypeSafe AI Jev) and the large-document conversion check also moved into the app runtime; how chat looks and behaves is otherwise unchanged. One visible difference: after a reload, a message sent after converting a document also shows the "converted to Markdown" note.
  • Stop now works while the agent is waiting for you. Stopping a run while it is asking for permission or asking you a question now ends the run right away. Before, the run stayed open until the prompt was answered, or kept working on the remaining steps of that turn.
  • Agents remember earlier conversations again. Memories saved after a run are now found in later runs. Before, a project that uses a catalog agent saved its memories under that agent but searched under the default assistant, so it never found them. New chats started inside a project are now also linked to that project from their first message, so project search, project-scoped memory and the project file refresh after a run work in the first conversation too.
  • Repeated questions get a fresh answer. A run no longer replays an AI reply that was saved from an earlier run with identical wording (this could happen with low-creativity model profiles such as "Coding & Architecture").
  • More reliable deliverable retries. When the app asks the agent to redo a missing deliverable, the files it reads or writes in that retry now show in the timeline and in the changed-files list. A second retry also no longer fails at the AI provider because of an unanswered tool step.
  • Chat follows running agents live instead of checking every few seconds. Sending a prompt returns immediately and the answer, tool steps, errors and Stop all update from the agent's own progress messages. Reopening a chat or switching back to an agent while it is still working picks the run up where it is, and a run that finished while you were away is shown as finished instead of "working". The final answer now keeps its saved message id right away, so "Save to project knowledge" works on it without reloading the chat.
  • Agents now only use the tools you gave them. Every agent can still read the files in your project (open, search and list files, read PDFs and spreadsheets), ask you a question and read the clock. Writing files, creating Office documents, accounting, web search and system tools now need the matching capability pack or an explicit tool on the agent. Before, almost every agent got all of these whatever its configuration. Example: an agent built only with "Executive Presentations" reads your project files and builds decks, but cannot write other files until you add "Document Authoring". Project settings still apply on top (internet, MCP, shell). Connected MCP tools stay available to every agent in projects that allow MCP. Older agents with no tools or packs configured keep access to every tool. Changing an agent's packs in Agent Studio no longer removes tools it had outside those packs.

Routines (Milestone 91) ​

  • Routines are now stored in the app database and run one at a time. Existing routines (and the old hidden daily project schedule) are moved over automatically on first launch and keep their schedule, Telegram/Google Drive inbound and outbound settings. "Weekdays" routines now really skip Saturday and Sunday. If a routine is triggered while it is already running, one extra run waits and starts right after; further triggers join that waiting run instead of running in parallel. Pressing Run Now no longer cancels that day's scheduled run. A scheduled run that is still missing required files is recorded as skipped. After three failed scheduled runs in a row a routine stops (error state) until you resume it.
  • Routines can now start when files or messages arrive, and catch up after the app was closed. A routine can watch a project folder (for example input/, with a filter such as *.xlsx): once new or changed files stop arriving for 30 seconds (adjustable), it runs once for the whole batch and works on exactly those files; a minimum number of files can be required. Files the routine writes itself never start it again, and files dropped while the app was closed are picked up on the next launch. A routine can also start when a matching Telegram message or file arrives in a chosen chat (filter by sender, text, attachment or file name), or when a new file appears in a Google Drive folder: the files are saved to input/ first, then the run starts. If the app was closed when a scheduled routine should have run, it runs once when you reopen the app within 24 hours; older missed runs are listed as skipped ("missed while app closed"). Schedules can use a time zone (UTC, an offset such as +07:00, or zones such as Asia/Ho_Chi_Minh); the default is the computer's time zone. The run block shows what started the run (schedule, file names, message). Zalo cannot start routines yet (the app explains this when saving).
  • Routines now stay inside the limits you set when nobody is watching. Each routine has a policy of what it may do on its own: which folders it may read and write, whether it may replace existing files (or only specific ones, such as output/media_plan.xlsx), whether it may use the web or specific MCP tools, and where it may send results. The app enforces it on every run and lists anything it refused in the run's result; anything that would normally ask for your confirmation is refused. Before an existing Office file is replaced, a revision is kept so it can be rolled back. A new routine must pass a dry run before it can be switched on: the dry run works on your real current files but writes only into workings/.dry-run/, sends nothing, and shows what it would have sent (destination, size, a preview). Editing a running routine keeps the current version running until you run the new version dry and confirm it. Existing routines keep working as before (they may read the whole project, replace files in their output folders and use the web and MCP tools when the project allows them) and need no dry run. Routine deliveries, Telegram/Google Drive checks for new messages (grouped per hour) and routine model calls now also appear in "Data leaving this device", linked to the routine run; describing a routine in your own words is masked like any chat when the project masks identifiers.
  • Describe a routine in your own words and get a proposal to check, test and switch on. Ask the agent in chat for something that should happen on its own ("every Monday at 8…", "whenever the accountant drops a bank statement into input/bank…", "khi có file mới…", "毎朝…") and it shows a routine proposal card instead of doing the work right away: the name, what it does, when it runs, where it sends results and what it may do while you are away, all in plain language. Anything the app cannot know for sure is asked, never guessed — for example which of several matching folders, which Telegram chat (picked from the chats your bot knows), which file it may update, or to connect Telegram first. Answer and click "Answer & refine"; then "Run dry run" tests it on your real files without sending anything, and "Activate" becomes available once that dry run of exactly this version succeeds. "Edit in editor" opens the routine editor prefilled. The old "schedule proposal" card in chat is replaced by this card.
  • New routine panel, editor and run history — routines now live only with their agent. The routine panel beside each agent's chat lists that agent's routines with their state (draft, active, paused, error, edit waiting for confirmation), when they run next or how the last run went, and buttons to Run now, Pause/Resume, Dry run and edit; with no routine yet it offers to describe one in chat or create it. The editor shows what the routine does, a trigger builder (schedule with time zone, files arriving in a project folder, a Telegram or Google Drive message, or only Run now — up to three), what it may do while you are away with a plain-language summary that updates as you edit, up to three places to send results, and its versions; mistakes are shown next to the field they concern. "Describe in plain language" in the editor fills the form from your own words (the same proposal as in chat). Save draft → Dry run (result shown inline: files written in the sandbox, what would be sent, anything refused) → Activate; editing an active routine keeps the running version until you confirm the edit after its dry run, or discard it. Run history shows every run of the agent's routines with filters (routine, status including skipped and cancelled, dry runs), what started each run, and a link to the run in the conversation. Run now is not available for drafts (use Dry run). The old schedule section of the agent settings and the old routine editor with its "AI assistant" are removed; all of this updates live without refreshing.
  • Send a routine's result only when it matters. Each destination of a routine has a "Send only when…" field: give it a flag name (for example over_threshold) and say in the routine's instruction when it applies ("…set over_threshold when an item loses more than 5 %"). The routine then sends to that destination only when the run raised the flag; other destinations and error alerts are sent as before. The dry run shows "would skip: flag … not set to true" or that the flag was raised, and run history lists such deliveries as skipped (condition not met).
  • Start a routine from your agent's playbook. Agents installed from a playbook that ships routine templates (such as the Inventory Reconciliation & Shrinkage Controller) offer them as "Start from template" in the routine proposal card and in the routine editor, and use them when you describe a similar routine in chat. A template becomes a normal proposal: folders and thresholds come from the playbook, anything it cannot know (such as your Telegram chat) is asked, and it still needs a dry run before you switch it on. The inventory template now sends its summary only when something is over the threshold, and the opening-stock template adds rows for new items instead of only listing them.

Privacy (Milestone 92) ​

  • See every time project data left your computer. Project Configuration → Permissions & Security now has a "Data leaving this device" panel listing each outbound request — AI model calls (including the provider's region for Bedrock and Vertex), web searches and page fetches, remote MCP servers, deliveries to Telegram or Google Drive, feedback, crash reports and update checks — with destination, size, status and what was masked before sending. Only this metadata is recorded, never the content. "Export evidence" writes a CSV and a short summary into the project's output/compliance/ folder for audits. Entries are kept on your device for 365 days.
  • Mask client identifiers before they reach the AI model. In Project Configuration → Permissions & Security you can turn on masking for a project: e-mails, phone numbers, bank accounts, card/IBAN numbers, API keys, plus national ID, tax and business numbers for the markets you pick (Vietnam, Japan, Korea, Singapore, Thailand) and any terms you list, such as client names, are replaced with placeholders like ⟦CLIENT_1⟧ before a request is sent. The answer you see and the files the agent writes contain the real values again, restored on your computer. "Strict" uses every market and also masks any number with 9 or more digits. The "Data leaving this device" panel shows how many items of each kind were masked per model call (never the values). Off by default; masking can reduce answer quality for tasks that need the exact values, and local models (Ollama) are never masked because nothing leaves the device.
  • Fixed: the "Data leaving this device" panel and data source setup can be opened again. Both lived in a window that no button opened any more. The data-flow panel is now in Project Configuration → Permissions & Security, next to identifier masking. Connecting Google Drive folders, local folders and Telegram chats to Source Documents (with recent sync activity) opens from the Source Documents pane menu → "Data Sources & Sync".
  • Fixed: "Manage Inbound Sources" opens properly from Data Sources & Sync. The inbound source setup (Google Drive folder, local folder, Telegram chat) used to open underneath the Data Sources & Sync window and could not be used. It now replaces that window, with a Back button (or Esc) to return to it. Both windows were also tidied up: consistent spacing, headers and buttons, readable text in light and dark themes, only the middle part scrolls, and localized sync status labels. The update prompt now also stays usable when it appears while another window is open.

Excel (Milestone 89) ​

  • Excel files created by agents can now include charts, conditional formatting, Excel tables and drop-down lists. When an agent builds a new workbook it can add native charts (column, bar, line, area, pie, doughnut, scatter, stacked, and combined column + line charts with a second value axis, including charts that read data from another sheet), conditional formatting (highlight rules, formula rules, colour scales, data bars, icon sets), Excel tables with a style, a totals row and calculated columns ([@Qty]*[@[Unit Price]]), drop-down lists and number limits for input cells, sparklines, frozen panes per sheet, column widths, merged and two-row headers. Number formats can follow the market: VND, JPY, KRW, SGD, THB or USD currency and the local date order (e.g. dd/mm/yyyy in Vietnam, yyyy/mm/dd in Japan); ISO dates such as 2026-01-31 become real Excel dates in date columns. Invalid chart, table or validation settings are now reported to the agent with the exact problem instead of producing a broken file.
  • Agents can now edit your own Excel workbooks in place without breaking anything else. Asked to update figures, add a month column, insert a transaction, rename a sheet or add a summary sheet with a chart, an agent now changes exactly those cells and objects in your existing file: formats, charts, pictures, notes, Excel tables, pivot tables, macros and every sheet it does not touch stay exactly as they were. Inserting or deleting rows and columns, renaming or deleting sheets moves every formula, name, chart range, table, pivot source, merged range and conditional format that refers to them, like Excel does; changes that would break formulas (#REF!) are refused unless you ask for them. Before saving, the app checks the result opens and that nothing outside the requested change differs — if anything else changed, nothing is written. Replacing a file in your project asks for confirmation as before, and the previous version is kept so the change can be rolled back. Agents can also start a new workbook from your template (the template is copied and filled, not rebuilt), and the agent can first look at a workbook's structure (sheets, tables, names, charts, formulas). Large files work: correcting values at the end of a 50,000-row sheet takes about a second.
  • Fixed: Excel generation no longer hangs on cross-sheet formulas. Creating a workbook with a formula such as =SUM(Ledger!D2:D3) used to freeze the agent run. Formulas that point to another sheet (Ledger!D2, 'P&L'!B3, Ledger!$D$2:$D$9, whole columns like Ledger!D:D) are now calculated correctly, so the saved file shows their values right away. Opening customer spreadsheets with very large ranges or merged areas is also protected: such formulas are left for Excel to calculate instead of blocking the app.
  • New agent template: Inventory Reconciliation & Shrinkage Controller (draft). For teams that keep stock in Excel: it builds tomorrow's opening stock from today's count in a copy of your stock file, reconciles the count in place (variance value and shrinkage % columns, a totals row, red highlights below your thresholds — default −5 %), adds a sheet comparing the loss with the day's revenue from your accounting report, and a weekly sheet with the trend per item. Your fonts, colours, filters and notes stay as they are; notes typed next to the table are moved, not overwritten. It finds columns by their headers, so branches with different layouts work, and it asks for figures that your report only shows as screenshots instead of guessing. The template includes two routine drafts to review before use: reconcile when a new count file arrives (with a short Telegram summary) and build the opening stock every morning.
  • Fixed: totals on a summary sheet no longer show 0 before Excel recalculates. After an in-place edit, a total such as SUM() over formulas that read another sheet could be saved with a wrong value (0 or a partial sum) until the workbook was opened in Excel; it now waits for those values.
  • Agents can add new rows to a list that has a totals row, and the totals grow with it. When a new item shows up (for example an item counted today that is not in yesterday's stock file), the agent adds its row right above the TOTAL row with the same formats and formulas as the row above; every sum, filter, highlight rule, drop-down, name and chart that covered the list now also covers the new row. It finds the totals row by its formulas, so it works whatever the row is called.
  • Sheet names with a stray space are found. A sheet named NL ĂN (with a trailing space) is now found when the agent writes NL ĂN, as long as only one sheet matches; formulas the agent writes point to the exact sheet name. If two sheets match, the agent is told both names instead of picking one.
  • Fixed: numbers with many decimals are written exactly. Values such as 111.50000000000003 (typical for weighed quantities) could be stored one digit off in the last place, so totals differed from the source file in the 15th decimal.

Office sandbox (Milestone 89) ​

  • Agents can now build decks from your own template and handle complex Word documents with Python, offline. A new tool, office_script, lets an agent write a short Python script (openpyxl, python-docx, python-pptx, XlsxWriter) that runs inside a sandbox in the AMBA window: no internet, no access to your disk, no access to the app — it only receives the files the agent names and returns new file contents. AMBA checks every result before saving: the file must open and be valid, and when an existing file is edited, nothing outside the parts the agent declared may change (for existing Excel workbooks, any lost chart, shape or formatting rejects the edit and the agent is told to use the in-place spreadsheet editor instead). All results are saved together or not at all, and every overwrite can be rolled back. Overwriting your own files still asks for confirmation, and routines follow their file rules. The sandbox starts on first use (about 2 seconds) and needs the AMBA window to be open; Settings → Diagnostics has a self-test. Nothing leaves your device. The app download grows by about 10 MB.

Security (Milestone 85) ​

  • API keys and connector/account credentials are now stored only in the OS keychain. Previously a plaintext copy was also written to the local database. On first launch, existing plaintext copies are moved into the keychain and deleted; database backups no longer contain any credentials. If the system keychain refuses to save a key, AMBA now shows an error instead of silently saving it in plaintext.
  • Hardened the app window against malicious content. A strict Content Security Policy is now enforced, and all AI replies, code blocks, diagrams and slide text are sanitized before display, so text from an AI model or an opened file can no longer run scripts inside AMBA. Diagrams use Mermaid's strict mode. HTML file previews are now shown as static pages (scripts inside the previewed file do not run; open the file externally for interactive pages), and remote images are not loaded inside chat content.
  • Agents can no longer read or write files outside the project folder through a second path or a shortcut link. Every file path a tool receives (not just the first one) is now checked against the project folder, after resolving shortcuts/symlinks, so e.g. converting a project file into a location outside the project is blocked. File tools called without a path are refused. Writing new files anywhere in the project and updating files in workings/ and output/ work as before; overwriting an existing file elsewhere (for example in input/) now asks for your confirmation, and in scheduled routines such an overwrite is refused because nobody is there to confirm.
  • Abuse protection for AMBA's online services. The free trial service now also limits usage per network (in addition to per device), caps request and reply sizes, and only uses approved AI models; feedback submissions are rate-limited per network; update checks reject malformed requests. Networks are identified only by a one-way hash — IP addresses are never stored. If the trial limit for your network is reached, AMBA asks you to add your own API key, as it already does when your device's free runs are used up.
  • Secrets no longer end up in the local run history, and feedback/crash reports hide more personal data. API keys, tokens, passwords and private keys that appear in tool inputs or results are now masked before a run's steps are saved, and very large tool inputs/results are shortened when saved (the live view while a run is working is unchanged; after a reload such rows show [REDACTED_SECRET] or a "truncated" note). File paths and your document content stay visible in the history. Feedback and automatic crash reports now also hide email addresses, phone numbers (international and Vietnamese formats) and Vietnamese citizen ID (CCCD) numbers, in addition to user folder paths and API keys.
  • Privacy policy rewritten to match what the app actually sends (English, Vietnamese, Japanese, Korean). The old "zero telemetry / no servers" wording is gone; the policy now lists every network flow — AI requests with your own key, the free trial relayed to Google Gemini, feedback, automatic crash reports, update checks and the template catalog — with what is sent, where it goes and how long it is kept, plus how to request deletion. The website's FAQ, footer, security diagram and terms were corrected where they contradicted this (including the outdated Linux "encrypted SQLite fallback" for API keys).

Privacy (Milestone 85) ​

  • Crash reports are now sent only with your consent. After an unexpected close, AMBA shows exactly what the report contains (error, code location, stack trace, app version, OS) and asks: Send, Don't send or Always send. A new Crash reports setting in Settings → Vault & Security lets you choose Ask (default) / Always send / Never. The local crash file is deleted once you send or decline it.
  • Your feedback contact address is no longer copied into the report text. It is sent as a separate field, stored only in AMBA's feedback database, and never appears in the public GitHub issue or team chat alerts.
  • Real feedback reference IDs. After sending feedback you now see the reference ID issued by AMBA's server (e.g. AMBA-FB-3F2A9C1B) instead of a random number that was never recorded. If the server cannot be reached, the dialog says the feedback was only saved on your device instead of showing an ID.
  • Automatic data retention on AMBA's servers. Feedback and crash reports are deleted 180 days after the issue is resolved or closed (and at most 365 days after submission); free-trial device records are deleted after 90 days without use. The privacy policy (4 languages) was updated to match.

Release pipeline (Milestone 86) ​

  • Releases can no longer look successful without actually being distributed. Pushing a version tag now runs the full release automatically. Each release job uploads to the download server, checks that every file can be downloaded, registers the version with the update service, and only then publishes the update manifest. A final check confirms that the update service offers the new version and that each offered download works. Missing credentials, an unreachable file or a failed registration now fail the release instead of being skipped silently, which is how v0.5.7 ended up tagged but never distributed. Registration also no longer re-registers older installers from the merged manifest. That had made the Intel-Mac updater offer v0.4.0 instead of the newest Intel build.
  • The app version is now defined in one place. The version shown in Help and in the feedback form now always matches the installed build, and the Linux installation guide no longer names a specific (possibly outdated) installer file. Release preparation is one command (pnpm run release:bump X.Y.Z), and the quality gate fails if any version copy disagrees.
  • Website: no more pages for things the app doesn't ship. The Business Playbooks section now lists the six agent playbooks that ship in the built-in catalog (several of them were missing from the menu). It also lists six walkthroughs, each built on a project template the app really has, with a note that their figures and run times are examples. A duplicate reconciliation page was removed, and the Vietnamese reconciliation guide no longer points to the removed Pipelines tab (it now describes Routines). Button names in the Connected Accounts guide now match the app in all four languages. The site also publishes a sitemap, and the build fails if any link points to a missing page.

Agent Chat Timeline Rework & Routine Self-Work Streaming (Milestone 84) ​

  • Routines now appear as the agent working on its own — no more fake "user message" for a scheduled routine. Pressing Run now shows the routine block immediately and streams its progress live (checking sources → working → delivering), instead of a spinner on a button followed by everything appearing at once.
  • Redesigned agent turns, coding-agent style: a collapsible "Working · 00:42 → Worked for 1m 12s · 5 tool calls" group with per-tool rows (status, duration, start time, expandable details), thoughts folded to one line, and the answer streaming live below.
  • Clear timing: every turn shows its start time (hover for the full timestamp), recent turns show "2m ago", and days are separated in the timeline. Scroll/elapsed timers now follow the real run start.
  • Fixed cross-talk: a run in one agent can no longer leak into another agent's window; routines run in (and report to) the agent that owns them.
  • Older routine history is displayed in the new format automatically (no data migration).
  • Routine block shows status (Running → Completed / Failed), execution mode, trigger (manual or scheduled), and a collapsed "Task instruction" — deterministic routines show live steps too.
  • Polish & accessibility: readable 12px minimum text in the chat, subtle date-separator rules that now render in both themes, a neutral "Stopped" state for cancelled runs (no endless spinners), full keyboard navigation with visible focus rings (message copy/edit actions also appear on keyboard focus), screen-reader-friendly timestamps, and "Reduce motion" support.
  • Remaining English strings in the chat (edit-prompt hint, token tooltip, "Saved locally") are now translated in Vietnamese, Japanese and Korean.

Bug Fixes (Milestone 83 follow-up) ​

  • Agent list is visible again above the file tree in Project Studio (finished the "bot"→"agent" rename that had hidden it).
  • Switching agents restores each agent's chat scroll position reliably instead of jumping.
  • Routines run in their own conversation (never in whichever conversation was opened last), and finishing a routine no longer pulls you away from the agent you are viewing.
  • Deleting an agent also deletes its routines, so orphaned routines no longer keep running.

Routine Identity Unification + "bot"→"agent" Rename (Milestone 82) ​

  • Routines now belong to each agent conversation (not a shared template), so switching between agent tabs instantly shows that agent's own routines with its own open/close state, and two agents built from the same template no longer share routines. Fixes the "sidebar stays put / don't know whose routines" behavior.
  • Fixed a mount-time race and project-switch inconsistency in the agent chat state.
  • Removed leftover dead "executive roster" modal code.
  • Terminology: "bot" → "agent" throughout the app (UI text, identifiers, API, and settings). Persisted agent configurations are migrated automatically on launch (no data loss). Telegram's own "bot" terms (e.g. BotFather, bot token) are unchanged since they refer to Telegram bots.

Per-Agent Routine State Isolation (Milestone 81) ​

  • Switching agents now cleanly swaps the routine sidebar to that agent's own routines — the sidebar remounts per agent, so no state leaks between agents, and the header shows which agent you're configuring.
  • Switching projects resets the chat + routine state cleanly (no stale agent carried over from the previous project).
  • The routine sidebar is now a config-only surface — the execution history list was removed from it; run history lives in the agent's chat timeline, with the "View logs" button opening the detailed run monitor on demand.

Agent Routine Rework (Milestone 78) ​

  • Run Now reliably pulls Telegram files, or tells you why not. A routine with inbound collection enabled now requires an account + channel (validated on save), so it can no longer silently pull nothing. The Telegram fetch persists a per-account offset so a prior sync no longer empties the backlog.
  • Execution logs are reachable. A new "View logs" button in the Routine sidebar (per routine and for all) opens the run history. Deterministic (default-mode) runs now record step events (inbound fetch, file counts, errors), so every run is observable — not just agent-mode runs.
  • New Telegram routines default to inbound ON with the account pre-selected, so "Add new → pick channel → Run Now" works out of the box.
  • Legacy cleanup. Removed the redundant per-agent "Schedule" settings tab (routines are configured from the sidebar — the single source of truth), deleted the orphaned Pipelines tab, retired the dead background poller loop, and stopped the migration that kept resurrecting a deleted accounting task.

Multi-Cloud Provider Adapters + OpenAI Responses API (Milestones 76 & 77) ​

Added ​

  • Bring-Your-Own-Key for enterprise clouds (Milestone 76): configure AWS Bedrock, Azure OpenAI, and GCP Vertex AI directly from the Cloud Provider Hub, reaching their full model catalogs (not just OpenAI-compatible gateways).
    • AWS Bedrock (full catalog): native Converse API adapter reaching Claude, Llama, Titan, Mistral and more, with live model discovery via ListFoundationModels. Two auth modes, chosen with a toggle in the Bedrock form:
      • Bedrock API key (recommended) — paste a single Amazon Bedrock API key (Bearer); the simplest setup for end users.
      • IAM Access Key + Secret — SigV4 signed per request (session token supported for temporary credentials); signing happens per request, eliminating the "Signature expired" errors seen with cached credentials.
      • Inference-profile-aware discovery — model discovery lists invocable cross-Region inference profiles (e.g. Claude Sonnet 4.5) alongside on-demand foundation models, and hides bare IDs that return "on-demand throughput isn't supported".
      • Reactive inference-param recovery — when a model rejects an inferenceConfig field (e.g. OpenAI models on Bedrock that don't accept temperature), AMBA removes the offending field named in the error and retries automatically. Model-agnostic, so new restrictions are handled without code changes.
    • Azure OpenAI: deployment-routed chat completions with api-key auth and configurable api-version. Shares OpenAI's reactive 400-recovery, so Azure deployments of restricted models (e.g. gpt-6-astra) self-heal — when reasoning_effort: 'none' is rejected, AMBA switches to a supported value the error lists (low/medium/high/xhigh) instead of failing.
    • Reasoning models + function tools on OpenAI/Azure via the Responses API (Milestone 77): reasoning models (gpt-6-astra, terra, o-series) are automatically routed to the /v1/responses API, where function tools are supported — so agent sessions on OpenAI and Azure now work with these models. Non-reasoning models and OpenAI-compatible gateways keep using /v1/chat/completions unchanged. (If a reasoning model is ever reached over a chat/completions-only gateway, AMBA still returns a clear error suggesting an AWS Bedrock profile.)
    • GCP Vertex AI: Gemini generateContent with service-account OAuth2 (short-lived tokens minted and cached per session).
    • Per-provider credential forms: dedicated secure input fields per cloud (AWS keys + region, Azure endpoint + version, Vertex service-account JSON + project/location), stored in the OS keychain. Existing API keys continue to work unchanged.
    • 1-click presets: AWS Bedrock, Azure OpenAI, and GCP Vertex added alongside the existing DeepSeek/OpenRouter/Groq/Together presets.

0.5.7 — 2026-09-30 ​

> Tagged only — never distributed (updater, R2 and download portal stayed on 0.5.6); superseded by the next release.

Added ​

  • High-Fidelity In-Tree Excel Formula Engine & Auto-Evaluation (Milestone 55):
    • Rust In-Tree Formula Evaluator: Pure Rust recursive descent formula engine (evaluator.rs) supporting arithmetic operations, parenthesized expressions, and standard business functions (SUM, AVERAGE/AVG, COUNT, MAX, MIN, ROUND, ABS, IF).
    • Zero-Zero Invariant Guarantee: Evaluates formulas at generation time and writes computed results via worksheet.set_formula_result(), ensuring Excel displays authentic values immediately without showing <v>0</v>.
    • Auto-Recalculation on Read: Automatically evaluates formulas when reading .xlsx spreadsheets where cached values are 0 or empty, keeping spreadsheet previews accurate and responsive.
    • Resilient Cell Parsing: Supports formula strings missing leading =, object cells ({"formula": "...", "value": ...}), and auto-evaluates formulas embedded inside Markdown tables and CSV files.
  • Conversational Flow, Turn-Scoped Deliverables & Surgical Core Tools (Milestone 54):
    • Turn-Scoped Deliverables: Cleanly isolates draft deliverable cards per conversational turn in ProjectChat.vue, eliminating ghost file cards from previous turns.
    • Surgical Tool replace_file_content: Native Rust tool for exact string replacement with line-range constraints (start_line, end_line), occurrence counting, and allow_multiple guards.
    • Structural Tool directory_tree: Fast ASCII hierarchy generator for file tree exploration with depth limiting and noise filtering (.git, node_modules, target, etc.).
    • OpenAI gpt-5.6-terra Auto-Recovery: Intercepts reasoning model 400 errors and automatically adjusts reasoning_effort: "none" for /v1/chat/completions function-calling compatibility.
  • Google Gemini 429 Self-Healing & Context Token Blast Cap (Milestone 53):
    • Exponential Backoff with Header Parsing: Automatically extracts Retry-After delay directives from Gemini 429 rate limit responses with a safe 35-second ceiling.
    • Anti-Context Blast Cap: Protects users against sudden API cost spikes by bounding context injection to budget limits.
  • Real-Time Token Telemetry & ReAct Loop Metrics (Milestone 52):
    • Step-Level Token Badges: Real-time display of input/output token usage in thought steps, activity trays, and assistant message action bars (⚡ 1.5k tok (↓1.2k ↑350)).
  • Offline Document Conversion Engine & Anti-Token-Blast Guard (Milestone 51):
    • Local Document Conversion (document_convert): Zero-token offline conversion of Office formats (.docx, .xlsx, .pptx) to clean Markdown representations.
    • Anti-Token-Blast Guard: Automatically intercepts massive documents in filesystem_read and offers 1-click conversion to protect the model's context budget.
  • Local Workspace Indexer & Hybrid Retrieval Engine (Milestone 50):
    • SQLite FTS5 Full-Text Indexer: Embedded full-text search with incremental chunking and unicode61 diacritics removal.
    • Hybrid Search Tool (workspace_search): Combines BM25 lexical precision with semantic vector search via Reciprocal Rank Fusion (RRF).
    • Surgical Line Slicing: Added start_line, end_line, and show_line_numbers to filesystem_read to reduce token consumption by > 90%.
  • Large Document Streaming Parser & Token-Budgeted Grounding (Milestone 49):
    • Resilient Streaming DOCX Parser: Non-blocking chunked XML streaming with pure-text fallback recovery for corrupted documents.
    • Anti-Binary Guard Invariant: Strictly prevents Office document formats from falling through to raw binary byte checks.
    • Query-Grounded Filtering & TOC Outlines: Extracts structured Table of Contents maps and semantic paragraph excerpts with context windows.

0.5.6 — 2026-09-25 ​

Added ​

  • Unified Modal Design System & Pro-Desktop Dialog Experience (Milestone 48):
    • Streamlined 3-Tab Project Settings: Reduced project configuration from 5 tabs down to 3 (general, security, danger), eliminating horizontal tab scrolling and dialog jumping.
    • Non-Technical Permissions & Security Matrix: Intuitive Allow/Deny segmented controls for Filesystem Sandbox, Web Search, Terminal Commands (blocked by default), and MCP Plugins.
    • Authoritative Modal Standards: Standardized dialog geometry (max-w-[720px], rounded-2xl, standard Tailwind padding) across AccountSetupModal, FeedbackModal, ProjectCreateModal, ProjectDeleteModal, ResetSessionModal, and ProjectOperationsModal.
  • Two-Layer Executive Agent Architecture & Agent Studio (Milestone 44):
    • Agent Studio Marketplace: Dynamic catalog synced directly from Cloudflare R2 (https://r2.ambadesk.com/alpha/catalog/agents.json) with duplicate-safe installation and 1-click cloud sync.
    • 6 Canonical Specialist Personas: Pre-trained personas compiled from Single Source of Truth playbooks (catalog/playbooks/): Financial Analyst, Business Writer, Strategy Consultant, Market Researcher, Data Analyst, and Chief of Staff.
    • AI Co-Creation Wizard: Interactive 🪄 Co-create with AI flow for structuring custom specialist agents from natural dialogue.
    • Multi-Agent Project Roster: Visual sidebar agent grid, 0ms instant tab switching with preserved chat history, open file preview, and scroll position.
  • TypeSafe AI (Jev — System 1 Decision Engine) (Milestone 43):
    • Sub-second intent classification and automatic cognitive mode routing (Research, Plan, Agent) with real-time latency badges (Jev · 68ms).
    • Integrated into Step 3 of Model Settings alongside OpenRouter.
  • Cross-Lingual Reasoning Boundary (ADR-020):
    • Internal chain-of-thought and calculation reasoning inside <thought> blocks strictly conducted in Technical English to eliminate arithmetic and parameter hallucinations.
    • Deliverables and UI communications compiled natively in active project locale (en, vi, ja, ko).
  • Documentation & Homesite Parity:
    • Replaced ASCII architecture diagrams with responsive, theme-aware <ExecutivePersonasFlow /> component.
    • Full multilingual parity across all concept docs, getting-started guides, and playbooks.

0.5.5 — 2026-09-18 ​

Added ​

  • Frictionless Onboarding, Zero-Typing Sandboxes & Managed Trial Gateway (Milestone 37):
    • Zero-Typing Interactive C-Suite Demo Sandboxes: Added interactive sandbox picker modal (WelcomeSandboxModal.vue) pre-seeding realistic business projects for Chief of Staff, Accounting & Finance, and Operations with zero API keys required.
    • Cloudflare Edge Trial Gateway: Deployed edge trial gateway with anonymous client token enforcement, rate limiting, and device quota protection.
    • Desktop Runtime AmbaCloudProvider: Implemented managed trial provider fallback with transparent BYOK handoff dialog when quota expires.
    • Deep File Mention & Categorized Playbook Suites: Enhanced chat dock with quick @file mentions and domain-categorized prompt libraries.
  • Office Presentation Fidelity & Virtual Artboard Projection (Milestone 30/37):
    • 16:9 Vector Slide Artboard Engine: Introduced fixed virtual artboard presentation viewer (PresentationViewer.vue) with CSS percentage coordinates, auto-scaling typography, and vector shape rendering.
    • Rich PPTX Formatting: Added full support for rich text runs (bold, italic, colors), bullet dots, multi-level indentations, and theme background reference resolution (bgRef).
  • Two-Stage Plan Execution & Chronological Blueprints (Milestones 35 & 36):
    • Chronological Plan Blueprints: Structured agent plans into plans/YYYYMMDD_<slug>.md with organized deliverable outputs under deliverables/.
    • Lean Triad Cognitive Modes: Streamlined execution into three high-signal modes: explore, plan, and execute.
    • Pro Markdown Editor: Integrated direct raw source editing with line numbers, word-wrap toggles, and instant disk synchronization.
  • Multilingual UI & Documentation Consistency:
    • Standardized English as primary language across homesite manuals with zero Vietnamese residual text.
    • Replaced Mermaid diagram with Unicode box-drawing raw text block on documentation site.
    • Canonical language selector ordering (en, ja, ko, vi) without hardcoded bias.
    • Added full localization for desktop sidebar navigation ("Show more" / "Show less" and collapse toggles).

Distribution ​

  • Version Alignment: Aligned release version strings to 0.5.5 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.5.4 — 2026-09-17 ​

Added ​

  • Version-Partitioned Object Storage & Cloudflare R2 Distribution Architecture:
    • Implemented version-partitioned binary storage under alpha/vX.Y.Z/ across all release workflows (release-windows.yml, release-macos-arm.yml, release-macos-intel.yml, release-linux.yml, and release-all.yml).
    • Added dedicated snapshot manifest generation (alpha/vX.Y.Z/latest.json) preserving historical release states.
    • Maintained top-level alpha/latest.json pointer manifest with no-cache header for zero-lag live OTA updater detection and homesite download resolution.
  • Windows Release Pipeline Hardening:
    • Eliminated silent continue-on-error masking on Windows runner deployment.
    • Added automated CLI environment provisioning for gh and aws tools on Windows self-hosted and cloud runners.
    • Fixed cross-platform directory separator traversal in bundle collection.

Distribution ​

  • Version Alignment: Aligned release version strings to 0.5.4 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.5.3 — 2026-09-17 ​

Added ​

  • Flexible Runner Environment for macOS Intel CI/CD:
    • Added runner environment selection (self-hosted vs github-hosted macos-13) to .github/workflows/release-macos-intel.yml and unified multi-platform release .github/workflows/release-all.yml.
    • Enables zero-quota local execution on dedicated Mac Pro runners while preserving cloud fallback elasticity on GitHub Actions.

Distribution ​

  • Version Alignment: Aligned release version strings to 0.5.3 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.5.2 — 2026-09-17 ​

Added ​

  • Dual-Destination Edge Distribution & D1 Catalog Sync (ADR-043, Milestone 32):
    • Deployed release_artifacts edge metadata catalog on Cloudflare D1 with secure management token verification (X-Release-Secret).
    • Added CLI synchronization tool (scripts/register-release-artifacts.mjs, pnpm run release:sync-d1) supporting atomic dual-sync from Cloudflare R2 to D1.
    • Extended Cloudflare Worker with authenticated ingestion POST /v1/releases/artifacts and public distribution endpoints (/v1/releases/latest, /v1/releases/download/:platform).
    • Codified R2 bucket storage hygiene and automated D1 registration across all GitHub Actions release workflows (release-*.yml).

Distribution ​

  • Version Alignment: Aligned release version strings to 0.5.2 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.5.1 — 2026-09-17 ​

Fixed ​

  • Hybrid Scanned PDF OCR Adapter Hardening: Enhanced explicit memory buffer typing and bounds safety in scanned PDF text extraction adapter (src-tauri/src/context/adapters/pdf.rs).

Distribution ​

  • Version Alignment: Aligned release version strings to 0.5.1 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.5.0 — 2026-09-16 ​

Added ​

  • Modern Pro-Desktop UI Core & Tailwind CSS Migration: Complete transformation of the UI system to Tailwind CSS with semantic tokens, full dark/light theme support, and shadcn-vue primitives (AppShell, ProjectStudio, Tabs, Dialog, DropdownMenu).
  • Studio Resizable Panes & Workspace Ergonomics: Integrated draggable splitters (ResizablePanelGroup) across File Tree, Chat, and Deliverable Viewers with persistence and zero flicker.
  • Headless Document Core & Doc-Ops Mutation Engine (ADR-041): Rust canonical document mutations with atomic checkpoint snapshots (.revisions/), instant rollbacks, and visual diff reviews (DiffReviewBar).
  • Interactive Spreadsheet Viewport & Co-Editing: Viewport windowing IPC streaming for massive spreadsheets with inline editing intent emission, formula bar (fx), multi-sheet tabs, and cell diff highlighting.
  • High-Fidelity Document Viewers Suite: Native rendered and raw source toggle projections for Markdown, Word (.docx), PowerPoint (.pptx), HTML, and Vector PDF documents with clean unified Pro-Desktop header bars.
  • Office Fidelity, Editable Source & Native Context Menu: Direct file inspection, desktop OS app launching, clipboard copying, and native context menu suppression in Tauri desktop runtime.
  • Hybrid Scanned Document Ingestion & Multimodal Vision Engine (ADR-042): Scanned PDF OCR extraction via Apple Vision / Rust heuristics with automatic fallback and grounded reasoning guardrails.
  • Delivery Channels & Local Folder Connector: Bi-directional file dispatching with Local Folder Inbound connector, Telegram outbound file routing, and resilient MIME resolution.
  • Fully Responsive Feedback & Support Modal: Roomy responsive grid, sentiment rating strip with multiline truncation safeguards, and compact touch-friendly mobile layouts.
  • Complete Four-Locale Localization: Harmonized translation coverage across English, Vietnamese, Japanese, and Korean across all panels, settings, and documentation.
  • Closed-Loop Resolution: Formally resolves and closes GitHub issues #8 and #9 delivered in the v0.5.0 milestone (closes #8, closes #9).

Quality ​

  • 465 Vitest unit tests passing across 73 suites (100%).
  • 309 Rust unit and integration tests passing (100%).
  • 0 TypeScript compiler errors (vue-tsc --noEmit).
  • Clean VitePress documentation build (pnpm site:build).

0.4.23 — 2026-09-13 ​

Added ​

  • Google Drive Native Docs Export Engine (TASK-111): Google Sheets (application/vnd.google-apps.spreadsheet) are automatically exported to .xlsx (OOXML) format via the Drive export API; Google Docs (application/vnd.google-apps.document) are automatically exported to .pdf. Eliminates HTTP 403 Forbidden errors that previously blocked native Workspace file downloads.
  • Checksum Deduplication for Exported Files (TASK-111): Exported files lack Drive MD5/size metadata; deduplication now compares local file modification time against remote modifiedTime to prevent redundant re-downloads.
  • Auto-ingest Exported Spreadsheets (TASK-111): Exported .xlsx files are automatically loaded into the project's .analytics.db via load_spreadsheet_into_table for immediate analysis.
  • Storage Reactivity & Instant File Tree Updates (TASK-111): sync_pipeline_binding and sync_account_pipelines now re-index the project_files SQLite table via resync_files_in_storage and emit project:files-updated immediately after sync — files appear in the SOURCE DOCUMENTS pane without requiring an app reload.
  • On-Demand Google Drive Sync Badges (TASK-112): CloudImportModal now displays an ⚡ On-Demand Sync & 08:00 Schedule badge and informational description explaining the governed on-demand fetch model across all 4 locales (en/vi/ja/ko).
  • Transparent Sync Progress & Feedback (TASK-112): The "Save & Sync Folder Rule" button now shows a mdi:loading spinner with the cloud_saving_and_syncing label while syncing. On success, a toast displays the exact number of files fetched and bytes transferred. On failure, a clear warning toast shows the actionable error message — replacing the previous silent catch {}.
  • Quick Sync All-Sources Button (TASK-112): SOURCE DOCUMENTS pane header now shows a dedicated quick-sync button with dossier_quick_sync_tooltip ("Sync all data sources (Google Drive & Telegram)") that triggers synchronous fan-out across all active Google Drive and Telegram pipeline bindings.
  • Hermetic Export Test (TASK-111): test_google_drive_export_spreadsheet_to_xlsx added to services::connectors::tests with an in-process mock HTTP export server validating the full Sheets → .xlsx export and deduplication flow.

Quality ​

  • 359 Rust unit + integration tests passing (100%).
  • 300 Vitest tests passing across 46 suites (100%).
  • 0 TypeScript errors (vue-tsc --noEmit).
  • Clean VitePress documentation build (pnpm site:build).

0.4.17 — 2026-09-10 ​

Added ​

  • Milestone 14: Telegram Multi-Group Operations & Rule-Based Workspace Organizer (ADR-033)
  • Telegram Bot Long Polling Engine: Zero-port local sync directly inside Tauri Rust runtime (TASK-79)
  • Multi-Group Rule Router: Deterministic mapping of Telegram departmental chats to project zones (e.g. Accounting to data/accounting, Operations to workings/operations) with automated SQLite table loading and vector memory chunking (TASK-79)
  • Interactive Chat Discovery: One-click "Scan Active Chats" probe resolving numerical Telegram Chat IDs into group names (TASK-79, TASK-80)
  • Multi-Group Configuration UI: Group-to-Folder mapping table, presets, auto-ingestion toggles in ConnectorSetupModal and ProjectConnectorsTab (TASK-80)
  • Two-Tier Connector Architecture: Promoted Telegram & Google Drive to Core Global Connectors; demoted Zalo OA to Regional Extensions (Vietnam) (TASK-81)
  • Hermetic Telegram Mock Integration Suite: End-to-end multi-group sync, deduplication, and sandbox traversal test harness (TASK-82)

0.4.16 — 2026-09-10 ​

  • External Connectors & Sandboxed Sync Pipeline (TASK-73, TASK-74, ADR-032, closes #6):
    • Introduced local-first external connector runtime architecture supporting Google Drive and Zalo Official Account (OA).
    • Stored sensitive OAuth tokens, client secrets, and refresh tokens strictly in OS Keychain (connector:<id>), ensuring zero token leakage in SQLite or plaintext configuration.
    • Implemented Google Drive Connector with automatic token refresh, folder-scoped querying, stream downloading into <project_root>/connectors/google_drive/, path traversal defense guards, and MD5/SHA-256 checksum deduplication skipping unchanged files with 0 bytes transferred.
    • Implemented Zalo OA Connector with OpenAPI OAuth refresh, transactional message attachment querying, download streaming into <project_root>/connectors/zalo/, and size/hash deduplication.
    • Recorded detailed audit trails for all sync operations in connector_sync_logs table (status, files fetched, bytes transferred, duration, per-file actions).
  • Rule-Based Auto-Ingestion Router & Persistent Knowledge UI State (TASK-75, ADR-032):
    • Implemented automated rule-based file ingestion router dispatching synced files from connectors/ into designated project zones:
      • Spreadsheets (.xlsx, .xls, .csv, .tsv) $\rightarrow$ data/<filename> and automatically parsed and loaded into analytical SQLite tables in workings/.analytics.db.
      • Documents (.pdf, .docx, .md, .txt) $\rightarrow$ context/<filename> and chunked into semantic_memories for grounded semantic retrieval.
      • Images (.png, .jpg, .jpeg) $\rightarrow$ workings/receipts/<filename>.
    • Audited and persisted all ingested sources into SQLite project_ingested_sources table.
    • Fixed Knowledge UI Button Reset Bug: persisted source_id into project_ingested_sources across project switches in ProjectChat.vue, permanently restoring green "Ingested" (Đã lưu) state.
    • Added real-time Tauri IPC notification event project:file_ingested.
  • Scheduled Daily Executive Dispatch Engine (TASK-76, ADR-032):
    • Built lightweight in-tree scheduler running inside single-process tauri::async_runtime::spawn with zero cron daemons or node sidecars.
    • Implemented 5-step automated executive dispatch sequence: (1) sync all active connectors, (2) auto-ingest pending files into project zones, (3) execute agent reasoning in AgentMode::Exec, (4) promote draft deliverables from workings/drafts/ to output/ with companion vector .pdf auto-compilation, (5) trigger desktop notification event project:scheduled_run_completed.
    • Implemented run-once-per-day idempotency tracking via project_schedule_last_run:<project_id> with 24-hour HH:MM time matching.
    • Added Tauri IPC commands: get_project_schedule, set_project_schedule, and trigger_scheduled_run_now.
  • Connector Management & Sync Status UI (TASK-77, ADR-032):
    • Built ConnectorSetupModal.vue with tabbed selector for Google Drive and Zalo OA, credential reveal/hide toggles, diagnostic "Test Connection" button, and OS Keychain persistence.
    • Built ProjectConnectorsTab.vue featuring connector cards (status pills, folder/OA ID, filters, last synced time, "Sync Now" with spinning state, "Configure", "Delete"), Daily Schedule Card (enable toggle, time picker 24h, playbook selector dropdown, custom dispatch prompt, "Save Schedule" and "Run Now" triggers), and Recent Sync Activity table.
    • Integrated ProjectConnectorsTab.vue directly into ProjectStudio.vue workspace tab bar.
    • Added complete localization strings across English, Vietnamese, Japanese, and Korean.
  • E2E Connector QA Suite & Integration Verification (TASK-78, Milestone 13 Complete):
    • Created comprehensive hermetic integration test suite src-tauri/tests/connector_tests.rs:
      • test_google_drive_e2e_sync_and_deduplication: Verified mock Google Drive sync, landing in connectors/google_drive/, audit logging, and secondary sync skipped_unchanged assertion with 0 bytes transferred.
      • test_zalo_oa_attachment_ingest: Verified mock Zalo OA transaction attachment fetch, local receipt storage, and hash deduplication.
      • test_rule_based_auto_ingestion_routing: Verified automatic routing of .xlsx into data/ and table loading in .analytics.db, .pdf into context/ with semantic chunks, and .png into workings/receipts/.
      • test_scheduled_dispatch_execution_flow: Verified daily time validation, run-once-per-day idempotency, mock execution in AgentMode::Exec, and deliverable promotion to output/ with companion .pdf.
    • Verified 100% test pass rate across 313 Rust tests (296 lib + 17 integration tests), 254 Vitest tests (36 suites), 0 TypeScript errors, and clean VitePress build.
  • Version Alignment:
    • Synchronized version 0.4.16 across the authoritative 16-file release checklist.

0.4.15 — 2026-09-10 ​

  • Bidirectional Office Fidelity & Visual Mirroring (TASK-70, ADR-031):
    • Upgraded excel_writer with professional C-Suite design presets: Corporate Navy header fills (#1F4E79), bold white typography, subtle borders, freeze panes (row 1 pinned), auto-fitted column widths clamped between 12 and 45 characters, and visible gridlines.
    • Enhanced number formatting engine with native support for accounting currency ($#,##0, $#,##0.00) and percentages (0.0%, 0.00%).
    • Upgraded pptx_writer with 16:9 widescreen layout (12192000 x 6858000 EMUs) and executive KPI callout cards featuring light slate container accents (#F8FAFC), subtle borders (#CBD5E1), 36pt bold figure typography, and color-coded delta indicators (Emerald Green #16A34A for positive gains and Crimson Red #DC2626 for negative deltas).
  • In-App Formula Bar (fx) & Cell Inspector UI (TASK-68, ADR-031):
    • Added pinned In-App Formula Bar (fx) in SpreadsheetViewer.vue with active cell coordinate box (A1, C10), stylized italic bold fx badge, and formula/value inspection input.
    • Added active cell selection state highlighting clicked cells with high-visibility primary outline.
    • Added "Show Formulas" view mode toggle and global shortcut (Ctrl + ~ / Cmd + ~), revealing raw formula strings and subtle tinted styling across all formula cells.
    • Localized formula inspection controls across English, Vietnamese, Japanese, and Korean.
  • Formula Graph Engine & Grounded Agent Reasoning (TASK-67, TASK-69, ADR-031):
    • Enhanced OpenXML streaming parser (xlsx_zip.rs) to extract <f>...</f> formula tags into structured SpreadsheetCell models without discarding formula logic.
    • Implemented formula-aware Markdown table rendering (render_sheet_markdown) enriching cells with [fx: <formula>] annotations and generating automatic ### 📐 Formula Dependency Graph sections.
    • Codified Section 16 ("Spreadsheet Formula Integrity & Dependency Graph Reasoning") into agent planning instructions across all cognitive modes (Auto, Exec, Ask, Study).
  • Golden Benchmark Suite & Office Turing Test QA (TASK-71, Milestone 12 Complete):
    • Created comprehensive hermetic integration test suite src-tauri/tests/office_roundtrip_tests.rs:
      • test_excel_roundtrip_formula_ast_preservation_and_styling: Verifies mathematical and formula AST invariance across 3-sheet corporate financial models, ensuring 100% of formulas are preserved with leading =, values match, and freeze panes, column widths, and styles remain intact.
      • test_powerpoint_roundtrip_widescreen_and_kpi_cards: Verifies OpenXML slide containers, 16:9 widescreen layout dimensions, KPI card shapes, and semantic extraction via PptxAdapter.
    • Verified 100% pass across 285 Rust tests, 223 Vitest tests, 0 TypeScript errors, and clean VitePress build.
  • Version Alignment:
    • Synchronized version 0.4.15 across the authoritative 16-file release checklist.

0.4.14 — 2026-09-10 ​

  • Dynamic Edge Updater Protocol & Architecture (TASK-62, TASK-63, ADR-030):
    • Deployed dynamic Tauri v2 auto-updater edge route GET /v1/update/:target/:current_version on Cloudflare Workers backed by D1 (release_artifacts), returning HTTP 200 with JSON payload when updates exist or clean HTTP 204 No Content when up-to-date.
    • Implemented atomic CI artifact registration endpoint POST /v1/releases/artifact with cryptographic Bearer auth, upserting multi-platform binaries without file locks or race conditions.
    • Preserved backward-compatible monolithic manifest GET /v1/releases/latest.json dynamically aggregated across active platform builds.
    • Hardened desktop client updater (commands/updater.rs) to gracefully intercept missing platform fallback errors and 204 responses, eliminating false-positive error modals.
  • Two-Stage Deliverable Lifecycle & Draft Finalization (TASK-64, closes #5 Part 1):
    • Enforced two-stage deliverable progression: exploratory and preliminary drafts ("nháp", "tính thử", "draft", "sơ bộ") are routed exclusively to workings/drafts/<filename>.
    • Added strict path guard preventing unauthorized preliminary writes directly into client-facing output/.
    • Added Executive Draft Review Card in ProjectChat.vue with branded document icons, live preview, and one-click "Chốt & Xuất Bản Chính Thức" action promoting approved drafts into output/ with companion vector .pdf compilation.
    • Added draft artifact tracking in RunCheckpoint preserving draft state across multi-step execution interruptions.
  • C-Suite Analytical Depth Engine for Excel & PowerPoint (TASK-65, closes #5 Part 2):
    • Codified Anti-Skeleton Protocol in agent planning instructions and system prompts: mandated interconnected 3-sheet architecture for financial workbooks (Assumptions & Drivers, Financial Model P&L with 15-20+ granular rows, and Cash Flow & Sensitivity).
    • Mandated 5-slide C-suite narrative architecture for presentations (1: Strategic Thesis, 2: Problem & Context, 3: Unit Economics & KPI Cards, 4: Operational Matrix, 5: Governance & Milestones).
    • Added runtime density heuristics in ExcelWriteTool and PptxWriteTool warning against skeletal single-sheet tables or under-developed slide decks.
  • CI Modernization & Version Alignment:
    • Modernized all 5 platform release workflows with automated edge artifact registration.
    • Synchronized version 0.4.14 across the authoritative 16-file release manifest.

0.4.13 — 2026-09-09 ​

  • The Virtual Cabinet 3-Stream Orchestrator & Run Checkpoint Engine (TASK-60, TASK-61):
    • Implemented run state checkpointing and automatic resumption engine, allowing interrupted multi-step agent executions to resume deterministically without data loss (closes #2).
    • Engineered "The Virtual Cabinet" 3-stream orchestrator managing lifecycle transitions across Source Documents, Assistant's Workbench, and Final Deliverables (closes TASK-60).
    • Hardened guardrail tool invocations with auto-spool fallback and secure asynchronous telemetry dispatch (closes #1, closes #4).
    • Added end-to-end integration test suite verifying checkpoint resume, panic recovery, and virtual cabinet stream integrity (closes TASK-61).
  • Version Alignment:
    • Aligned release version strings to 0.4.13 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.12 — 2026-09-09 ​

  • Release Governance Standard Operating Procedure & 16-File Protocol:
    • Codified the authoritative Release Governance SOP mandating atomic synchronization across all 16 configuration, manual, and runtime files for every release cycle.
    • Embedded the Mandatory Release Protocol and 16-File Checklist into the root developer contract (AGENTS.md) and documentation index (docs/INDEX.md).
  • Version Alignment:
    • Aligned release version strings to 0.4.12 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.11 — 2026-09-09 ​

  • Native Crash Resilience & Panic Tombstone Recovery (ADR-028, Milestone 9):
    • Implemented zero-allocation synchronous panic hook in Rust (security/panic.rs) writing structured, privacy-scrubbed crash tombstones (last_crash.json) during fatal process aborts.
    • Added startup crash recovery service (services/crash_recovery.rs) to detect prior abnormal exits, dispatch redacted telemetry to the edge buffer, and purge tombstones from disk.
    • Sanitized panic backtraces and messages using linear regex masking to guarantee zero credential or user path leakage in crash logs.
    • Added comprehensive integration test suite (tests/crash_recovery_tests.rs) covering panic hook capture, mock server telemetry dispatch, corrupted tombstone purge, and crash payload fidelity.
  • Version Alignment:
    • Aligned release version strings to 0.4.11 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.10 — 2026-09-09 ​

  • Windows CI/CD Hygiene & Self-Hosted Artifact Isolation:
    • Added aggressive cleanup of previous bundle artifacts (win-artifacts and src-tauri/target/.../bundle) in .github/workflows/release-windows.yml to prevent artifact contamination across self-hosted runner cycles.
  • Updater Sanitization & Infinite Loop Prevention:
    • Enhanced scripts/update-latest-json-r2-local.mjs to verify platform versions against root json.version.
    • Automatically purges platform entries from updater manifest when platform version does not match root version, preventing infinite update download loops.
  • Version Alignment:
    • Aligned release version strings to 0.4.10 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.9 — 2026-09-09 ​

  • Automated Feedback & Closed-Loop Issue Triage (ADR-027, Milestone 8):
    • Added 1-click incident reporting button in ProjectChat.vue with automated context capture (active playbook, failed tool, error classification, redacted log excerpts).
    • Implemented client-side privacy redactor in Rust (services/telemetry_redaction.rs) that scrubs IPv4/IPv6, email addresses, JWTs, bearer tokens, and local file system paths (/Users/..., C:\...) before transmission.
    • Implemented offline SQLite spooling queue (user_feedback table) to guarantee zero report loss during network dropouts.
    • Deployed Cloudflare Edge Buffer Worker and D1 Database (amba-feedback-db) at https://api.ambadesk.com/v1/feedback.
    • Added SHA-256 defect fingerprinting and multi-client deduplication with zero Git thrashing.
    • Added maintainer autonomous triage endpoint GET /v1/triage and CLI triage tool (scripts/triage-telemetry.mjs) to generate daily decision dossiers for maintainers.
    • Published Maintainer Telemetry API reference (docs/API/FEEDBACK_TELEMETRY_API.md) and Issue Triage SOP (docs/DEVOPS/ISSUE_TRIAGE_AND_INCIDENT_SOP.md).
  • Repository Governance & Cleanliness:
    • Removed legacy sprint documentation (docs/SPRINTS/) in favor of .agent/PLAN/ milestone governance.
    • Synchronized Master Timeline Index and Kanban strict protocol across all agent guidelines.

0.4.8 — 2026-09-09 ​

  • Site Core Concepts refresh & native Mermaid diagrams:
    • VitePress now renders Mermaid fences as interactive diagrams (light/dark theme, zoom, copy source) instead of Shiki code blocks.
    • Cognitive Modes documentation covers the 5-mode lifecycle (Auto, Ask, Study, Plan, Exec), the in-tree artifact factory, and 1+1 deliverable packs across English, Vietnamese, Japanese, and Korean.
    • Security architecture diagrams are localized in all four languages, including Linux Secret Service and encrypted SQLite keychain fallback.
    • Mermaid diagrams keep native readable type, expand clipped foreignObject labels, and use compact vertical flowcharts so the last node is fully visible.
  • Homepage app-icon parity:
    • Navbar, favicon, hero, and footer now use the desktop 3D “A” icon (src-tauri/icons/icon.png) instead of the legacy gold-star SVG.
  • Executive Dossier commercial rebrand (ADR-026):
    • Homepage, playbook showcase, and user-manual concept pages now present the 3-chamber Executive Dossier (Source Documents, Assistant's Workbench, Final Deliverables) across English, Vietnamese, Japanese, and Korean.

0.4.7 — 2026-09-08 ​

  • Business Deliverable Pack & Rigorous Verification Gate (ADR-025):
    • Enforced mandatory 1+1 Deliverable Pack (Structured Model + Strategic Narrative) across autonomous playbooks.
    • Implemented OpenXML sheet count verification gate in runtime runner to ensure generated workbooks meet declared structural depth.
    • Added automatic companion vector PDF generation (auto_compile_pdf_sibling) alongside Markdown briefings in output/.
    • Hardened deliverable extraction to filter out hypothetical recommendations or example file references.
  • Brand Asset Refresh:
    • Refreshed high-resolution application icons (.icns, .ico, .png, and mobile icon suites).
  • Version Alignment:
    • Aligned release version strings to 0.4.7 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.6 — 2026-09-07 ​

  • Homepage & Site Component Overhaul:
    • Refactored HomeFooter.vue with streamlined layout and improved visual hierarchy.
    • Enhanced PlaybookShowcase.vue with richer content and improved interactivity.
    • Added ReleaseDownloads.vue component for structured release asset presentation.
    • Expanded custom.css with additional responsive styles and visual polish.
    • Updated hero content in all locale index pages (en, vi, ja, ko).
  • Version Alignment:
    • Aligned release version strings to 0.4.6 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.5 — 2026-09-07 ​

  • In-Tree Artifact Factory Industrialization & Roundtrip Harness (ADR-024):
    • Added bi-directional roundtrip test suite (tests/factory_roundtrip_tests.rs) verifying content invariance for native DOCX, PPTX, and Excel workbooks.
    • Implemented parameter tolerance across all factory tools: gracefully parses stringified JSON, 1D flat arrays, key-value rows, and loose LLM payload formats.
    • Enhanced phantom-write guardrail: automatically intercepts script generation and guides the agent to invoke native artifact writers directly.
  • In-App Factory Self-Test & Diagnostic Telemetry:
    • Upgraded native diagnostic command run_diagnostic_selftest in diagnostics.rs to execute live end-to-end generation and integrity verification for .xlsx, .docx, and .pptx files.
    • Added frontend diagnostics API (runFactorySelftest) and verified with unit tests.
  • Runtime Sandboxing & Relative Path Normalization:
    • Automatically resolves relative paths against scope.root_directory for deliverable generation across all execution modes.
  • Version Alignment:
    • Aligned release version strings to 0.4.5 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.4 — 2026-09-07 ​

  • Commercial Footer Architecture & Feedback Bridge (ambadesk.com):
    • Overhauled HomeFooter.vue with Architecture & Feedback column linking directly to Project Harness (3-zone sandbox), Cognitive Modes, Live Release Manifest, and direct mail feedback bridge.
    • Purged all remaining third-party repository links from Privacy Policy (privacy.md) and Terms of Service (terms.md), standardizing contact on ambadesk.com and [email protected].
    • Documented Cloudflare Pages deployment configuration in site/DEPLOYMENT.md.
  • Version Alignment:
    • Aligned release version strings to 0.4.4 across core runtime, UI clients, manuals, and Cloudflare R2 distribution manifests.

0.4.3 — 2026-09-07 ​

  • In-Tree Artifact Factory & Autonomous Autopilot Suite (ADR-021, ADR-023):
    • Native DOCX compiler (docx_writer.rs) for corporate documents, contracts, and administrative briefs with zero Python or LibreOffice dependencies.
    • Native PPTX compiler (pptx_writer.rs) for executive slide decks with zero external runtime dependencies.
    • Dual-World filesystem bridge (workings/ working directory vs. output/ user-facing deliverables) with auto-compilation and deliverable honesty guardrail.
  • Hermetic SQLite-Vec Hybrid Engine & Dense Vector Retrieval (ADR-022):
    • Embedded native sqlite-vec extension (V009__sqlite_vec_memory.sql) enabling C-speed SIMD vector cosine distance and KNN search directly inside SQLite.
    • Hybrid RRF (Reciprocal Rank Fusion) combining keyword search with dense vector embeddings in hybrid_engine.rs.
  • Interactive Code Block & Mermaid Diagram Viewers:
    • Added CodeBlockViewer.vue and CodeDocumentViewer.vue with syntax highlighting, line numbers gutter, and 1-click copy.
    • Added client-side MermaidDiagram.vue with SVG vector rendering, error boundary, and raw source switcher.
  • Homepage & Documentation Parity (ambadesk.com):
    • Upgraded commercial landing page hero, feature showcase, and localized footer (HomeFooter.vue).
    • Added Privacy Policy (privacy.md) and Terms of Service (terms.md) across all 4 locales (en, vi, ja, ko).
    • Fixed CI/CD release updater pipeline across macOS, Windows, and Linux.

0.4.2 — 2026-09-06 ​

  • Built-In Fixture Diagnostic Self-Test (TASK-23):
    • Added native Rust diagnostic command run_diagnostic_selftest in src-tauri/src/commands/diagnostics.rs running a hermetic end-to-end reconciliation fixture locally (SQLite table ingestion, $50 discrepancy detection, .xlsx spreadsheet writing, vector .pdf compilation, and sandbox path traversal guardrail).
    • Verifies host OS compatibility with zero external LLM API keys and 0 cloud token spend.
    • Added interactive System Health Self-Test card in Settings (SettingsPanel.vue) with 4-point live status checkmarks, execution duration (ms), and OS telemetry across all 4 locales (en, vi, ja, ko).
  • Tool Display Localization & Translation Badges:
    • Implemented internationalized display names, descriptions, and argument summaries for built-in tools across English, Vietnamese, Japanese, and Korean.
    • Added LocaleTranslateBadge.vue to indicate localized system tools cleanly in the UI.
  • Linux Installation Documentation & Secret Service Parity (TASK-24):
    • Added dedicated Linux installation guides (.deb, standalone .AppImage) to site/manual/getting-started/installation.md across all 4 locales (en, vi, ja, ko).
    • Documented Linux system requirements (libwebkit2gtk-4.1-0, libssl3) and FreeDesktop D-Bus Secret Service integration with automatic fallback to local encrypted SQLite storage for minimal window managers (i3, sway, bspwm).
    • Aligned release version strings across client UI (FeedbackModal.vue), locales, and site/package.json to 0.4.2.

0.4.1 — 2026-09-05 ​

  • Dedicated Multi-Platform CI/CD Pipeline & Architecture Independence:
    • Separated release workflows into 4 independent pipelines: macOS Intel (release-macos-intel.yml), macOS Apple Silicon (release-macos-arm.yml), Windows (release-windows.yml), Linux (release-linux.yml), and a unified All-in-1 orchestrator (release-all.yml).
    • Solved cross-compilation resource starvation on memory-constrained Intel runners by decoupling Apple Silicon builds to native ARM cloud environments.
    • Eliminated interactive Keychain authorization and cache prompts on self-hosted macOS runners with automated headless keychain lifecycle and restored default keychain.
    • Core framework production hardening and performance optimizations.

0.3.9 — 2026-09-04 ​

  • Smart Multi-Platform Manifest Merge & Accurate Portal Download Links:
    • Upgraded scripts/update-latest-json-r2-local.mjs to fetch and merge existing remote platforms from Cloudflare R2, ensuring independent self-hosted builds never overwrite or wipe out other OS platform binaries.
    • Fixed portal download matrix (ReleaseDownloads.vue) to resolve exact live versions per platform, preventing 404 errors for platforms pending independent build.

0.3.8 — 2026-09-04 ​

  • Dedicated Multi-OS Self-Hosted Pipelines (macOS, Linux, Windows):
    • Added dedicated macOS Self-Hosted release workflow (release-macos-self-hosted.yml) running on [self-hosted, macOS, X64] with Intel x64 and cross-compiled Apple Silicon aarch64 support, Apple code signing, and notarization.
    • Added dedicated Linux / Ubuntu Self-Hosted release workflow (release-linux-self-hosted.yml) running on [self-hosted, Linux, X64] with .deb and .AppImage distribution.
    • Decoupled self-hosted flows independently: all 3 OS platforms can now build on private self-hosted infrastructure with 0 GitHub Actions quota minutes consumed and automated Cloudflare R2 artifact synchronization.

0.3.7 — 2026-09-04 ​

  • Full 4-Language Localization Parity (EN, VI, JA, KO):
    • Added full Japanese (ja — 日本語) and Korean (ko — 한국어) localized dictionaries, matching the commercial portal and user manual documentation (ambadesk.com).
    • Modularized locale dictionaries into src/locales/{en,vi,ja,ko}.ts and exported SUPPORTED_LANGUAGES.
    • Upgraded AppShell.vue quick language segmented switcher (EN, VI, JA, KO) and SettingsPanel.vue appearance language cards.
    • Expanded unit test coverage in useI18n.spec.ts to verify all 4 languages, dynamic parameter substitutions, and reactive locale switching.
  • History vs Usage Navigation Decoupling & Execution Runs Pagination:
    • Separated token analytics and cost tracking into a dedicated Usage (/usage) view (UsagePanel.vue), while dedicating History (/history) to execution traces and event inspections (HistoryPanel.vue).
    • Added full pagination (10/25/50 items per page), status and project filtering, and query search for execution history.
  • Capital & Debt Financing Executive Suite:
    • Added capital-debt-financing project template and runtime system directives for capital structure modeling, debt repayment schedules, and investor pitch deck preparation.
  • Modal Reactivity & Global UI Spacing Standardization:
    • Restored teleportation and tab switching reactivity across project configuration modals.
    • Standardized fractional padding classes in main.scss (p-3.5, gap-2.5, etc.) across all screens.

0.3.6 — 2026-09-03 ​

  • Portal Download Grid & Unified Action Button Styling:
    • Re-designed download table with full grid borders and centralized action buttons.
    • Standardized transparent ghost download buttons with hover effects and localized platform-specific labels.

0.3.5 — 2026-09-03 ​

  • Portal Download Section UI & Table Formatting Polish:
    • Re-architected download matrix table with fixed layout, clean status badges, platform icons, and distinct primary/secondary download button styling.
    • Enhanced responsive mobile view and typography across all 4 localized portals.

0.3.4 — 2026-09-03 ​

  • Full Multi-OS Download Matrix & Edge Proxy Resolution:
    • Upgraded ReleaseDownloads.vue matrix to directly support all 6 OS binary formats (macOS Apple Silicon, macOS Intel, Windows EXE, Windows MSI, Linux AppImage, Linux DEB).
    • Added Cloudflare Pages edge proxy /api/latest.json to eliminate CORS issues and optimize client-side release manifest caching.

0.3.3 — 2026-09-03 ​

  • CI Runner Disk Space & Cache Optimization:
    • Added pre-build disk freeing step on Ubuntu runners (ci.yml & release.yml) to prevent runner storage exhaustion.
    • Standardized on swatinem/rust-cache@v2 across all workflows.

0.3.2 — 2026-09-03 ​

  • Commercial Portal & Dynamic Cloudflare R2 Downloads Integration:
    • Integrated dynamic ReleaseDownloads.vue component querying live https://r2.ambadesk.com/alpha/latest.json for automatic real-time download resolution.
    • Complete 4-language VitePress site (site/) with zero external GitHub references, enterprise business-first positioning, and 9 comprehensive user manual guides.
    • Added pilot distribution and deployment documentation (docs/STRATEGY/ and docs/DEVOPS/).

0.3.1 — 2026-09-03 ​

  • Commercial Homepage & Manual Overhaul (Business-First, Zero-GitHub, Full i18n):
    • Zero-GitHub Clean Surface: Purged all GitHub repository links, social icons, and release pointers across the entire commercial portal, replacing them with official direct desktop application downloads on ambadesk.com.
    • Enterprise Business Target Alignment: Completely re-architected landing page value propositions and FAQ for non-technical enterprise users (CEOs, CFOs, Controllers, Media Agency Leads), focusing on 100% local privacy, zero-hallucination deterministic math, and ready-to-use business playbooks.
    • 4-Language Multi-Lingual Architecture: Full VitePress internationalization for English, Vietnamese (/vi/), Japanese (/ja/), and Korean (/ko/), translating the landing page and all 9 user manual guides and executive playbooks.
  • Template Naming & Plan Review UX Refinements:
    • Refined domain template labels and Vietnamese localization strings.
    • Formatted Rust codebase according to standard rustfmt guidelines.
    • Enhanced document viewer and plan referral card styling.

0.3.0 — 2026-09-03 ​

  • Milestone 2 — B2B Enterprise & Deterministic Accounting MCP Architecture:
    • Deterministic SQLite Analytical Engine: Built native accounting calculation tools (accounting_load_file, accounting_sql_query, accounting_reconcile_sheets) enabling 100% deterministic arithmetic aggregation, zero-mental-arithmetic guardrails, and automated invoice/bank reconciliation.
    • Persistent MCP Server Lifecycle Management: Configured SQLite storage (V008__mcp_servers.sql), auto-reconnection on application launch, and complete ToolsPanel management controls.
    • Unified "Job & Brain" Paradigm Across Full Lifecycle: Replaced legacy "Assigned Agent" dropdowns with domain project templates (executive-command-center, invoice-reconciliation, pnl-analysis, payroll-audit, media-planning-pitch) and hot-swappable cognitive brain models.
    • Cursor-Style Physical Plan Generation (workings/plans/): Auto-exports structured plans to plan_{slug}_{hash}.md, displays compact PlanReferralCard in chat, and provides dedicated ⚡ Build / Execute Plan action in the file viewer.
    • Streamlined Cognitive Modes & Zero Thought-Dumping Clutter: Mode-gated auto-export strictly to Plan mode, eliminating scratchpad clutter in Ask and Study modes.
    • Calculation Audit Trail: Real-time verified badges, SQL code copying, and returned row counts in the Activity Tray.

0.2.18 — 2026-09-03 ​

  • Context Prefetching & Heuristic Knowledge Distillation Hardening:
    • Enhanced context prefetch error handling and adapter robustness in Rust runtime.
    • Refined heuristic distillation tag generation and whitespace cleanup across multi-language prompts.
    • Fixed unused warning imports in updater and memory IPC commands.

0.2.17 — 2026-08-31 ​

  • Automated Cloudflare R2 Deployment Pipeline (deploy-r2):
    • Added automated deploy-r2 job in release workflows to sync release bundles, .sig signatures, and rewritten latest.json directly to Cloudflare R2 (https://r2.ambadesk.com/alpha/).
    • Optimized cache-control policies (no-cache for latest.json, 1-year immutable cache for binaries).
    • Added scripts/update-latest-json-r2-local.mjs for local asset URL rewriting.

0.2.16 — 2026-08-31 ​

  • Automated Cloudflare R2 Download URL Rewriting in latest.json:
    • Implemented scripts/rewrite-latest-json-r2.mjs to automatically rewrite asset download URLs in latest.json from GitHub releases to https://r2.ambadesk.com/alpha/<filename>.
    • Integrated into both release-windows-self-hosted.yml and release.yml workflows.

0.2.15 — 2026-08-31 ​

  • In-App Auto-Update Verification Release:
    • Incremented version for end-to-end testing of OTA in-app updater download, signature check, and SQLite WAL-safe restart workflow.

0.2.14 — 2026-08-31 ​

  • Dedicated R2 Alpha Updater Endpoint Integration:
    • Updated in-app auto-updater endpoint to https://r2.ambadesk.com/alpha/latest.json for high-availability CDN-accelerated OTA updates.

0.2.13 — 2026-08-30 ​

  • In-App Auto-Update Packaging Artifacts & Minisign Key Hardening:
    • Configured bundle.createUpdaterArtifacts: true in tauri.conf.json to generate compressed OTA update bundles (.tar.gz and .sig signatures).
    • Hardened private key password handling (TAURI_SIGNING_PRIVATE_KEY_PASSWORD) in release workflows.
    • Added .gitignore rule for public/private key pairs (*.key.pub).

0.2.12 — 2026-08-30 ​

  • Manual Deploy Workflow Dispatch Control:
    • Temporarily commented out automatic tag push triggers across release workflows.
    • Releases are dispatched manually on-demand from GitHub Actions UI to prevent unwanted quota consumption.

0.2.11 — 2026-08-30 ​

  • Windows Self-Hosted Toolchain & Git Bash Hardening:
    • Automatically locates and adds Git Bash (bash.exe) into GITHUB_PATH on on-premise Windows runners.
    • Standardized on actions-rust-lang/setup-rust-toolchain@v1 with explicit stable-x86_64-pc-windows-msvc target enforcement for Windows self-hosted builds.

0.2.10 — 2026-08-30 ​

  • Dedicated Standalone Self-Hosted Windows Release Workflow:
    • Separated self-hosted Windows packaging into a standalone workflow (.github/workflows/release-windows-self-hosted.yml) that bypasses GitHub-hosted runner quota limitations completely.
    • Runs directly on on-premise Windows runners (['self-hosted', 'Windows', 'X64']) with 0 GitHub Actions quota minutes consumed.

0.2.9 — 2026-08-30 ​

  • Self-Hosted Windows Runner Pipeline Integration:
    • Added support for dedicated self-hosted Windows runners (['self-hosted', 'Windows', 'X64']) alongside standard GitHub-hosted windows-latest runners.
    • Interactive platform selection allows dispatching dedicated builds directly to local/on-premise Windows runners while maintaining GitHub Actions standard runners as default for automated releases.

0.2.8 — 2026-08-30 ​

  • In-App Auto-Update & Over-The-Air (OTA) Release Architecture (ADR-019):

    • Self-Updating Without Reinstallation: Desktop app can now check, download, and install updates in-place without requiring the user to re-download .dmg, .exe, or installer packages manually.
    • Cryptographic Minisign Verification: Every update payload is cryptographically validated using Ed25519 signatures before execution, safeguarding against unauthorized or tampered binaries.
    • Safe Database Restart: Implemented atomic SQLite WAL checkpoint flushing (PRAGMA wal_checkpoint(TRUNCATE);) before app relaunch to ensure 0 database corruption. User projects (~/AMBA/Projects), local databases, and keychain credentials are 100% preserved across updates.
    • Interactive Update Modal (UpdateModal.vue): Displays version change badges, release notes preview, and real-time streaming download progress bar with byte counts and percentage.
    • Settings Integration: Added manual "Check for Updates" button, last checked timestamp, and auto-check toggle on startup under Settings > Advanced.
    • Complete Bilingual Localization: Fully translated in English and Vietnamese.
    • 100% Verification: 144 Rust unit tests passing and 94 Vitest tests passing with 0 clippy warnings.
  • High-Fidelity Excel & Multi-Sheet Preview Engine Hardening:

    • Shared OpenXML Relationship Resolution: Unified read_project_spreadsheet, read_project_docx, and read_project_presentation in commands/projects/readers.rs to reuse the battle-tested shared context adapter engine (parse_xlsx_workbook_from_zip, parse_legacy_spreadsheet_file).
    • Fixed Sheet Mismatch in Preview: Resolved the critical issue where workbook.xml.rels relationship IDs (r:id) were ignored by the preview command, which previously led to sheets being displayed out-of-order and mapped to incorrect worksheet XML files.
    • Accurate Cell Coordinates & Blank Gap Handling: Replaced split-based cell parsing with exact r="A1" coordinate positioning, eliminating column left-shifts and alignment corruption.
    • Support for Multi-Format Spreadsheets: Extended in-app preview support to .xlsx, .xlsm, .xltx, .xls, .xlsb, .ods, .tsv, and .csv.
    • 100% Verification: All 136 Rust tests and 84 Vitest tests passing with 0 clippy warnings.
  • Master Release Plan Execution & Modular Architecture Hardening (Sprint 37):

    • Comprehensive Rust Runtime Modularization (Wave 1):

      • Split runtime/execution.rs (3478 lines) into runtime/execution/ (runner.rs, planning.rs, modes.rs, tools.rs, callbacks.rs, streaming.rs, tests.rs).
      • Split storage/db.rs (2492 lines) into storage/db/ (mod.rs, migrations.rs, agents.rs, models.rs, conversations.rs, runs.rs, projects.rs, memory.rs, policy.rs, tests.rs).
      • Split context/adapters/shared.rs into context/adapters/shared/ (tables.rs, xlsx_zip.rs, docx_zip.rs, pptx_zip.rs, tests.rs).
      • Split tools/pdf_compiler.rs into tools/pdf_compiler/ (parser.rs, fonts.rs, rendering.rs, tests.rs).
      • Split commands/projects.rs into commands/projects/ (crud.rs, files.rs, readers.rs, watchers.rs, export.rs, tests.rs).
    • Ask Mode Knowledge Ingestion & Web Search Enhancement:

      • Enabled web.search, web.fetch, and knowledge.search in Ask mode for general information retrieval.
      • Added interactive "📖 Study & Ingest Knowledge" button on assistant messages in ProjectChat.vue to easily transition insightful chat responses into the project's permanent knowledge base.
    • Release Governance & Open Source Standards (Wave 2 & Wave 3):

      • Fixed duplicate ADR numbering by renumbering workspace default directory ADR to ADR-018.
      • Added CONTRIBUTING.md and CODE_OF_CONDUCT.md at repository root.
      • Created GitHub issue templates (bug_report.md, feature_request.md, security.md) and standard pull request template PULL_REQUEST_TEMPLATE.md.
      • Created root SECURITY.md and completed full audit report in docs/SECURITY-AUDIT.md.
    • Full Test Suite & Quality Verification: All 135 Rust unit tests and 84 Vitest tests passing with 0 warnings on cargo clippy --all-targets -- -D warnings.

    • Replaced 3-Mode System: Upgraded the previous Analyze / Draft / Finalize system into 4 distinct cognitive modes tailored to professional knowledge workflows:

      • 🗣️ Ask Mode (ask): Conversational Q&A, brainstorming, concept explanation. Zero filesystem side effects; file writes, web tools, and knowledge storage are strictly blocked.
      • 📖 Study Mode (study): Deep research, reasoning, document inspection, and knowledge discovery from all available sources. Autonomously calls knowledge.store to ingest facts and domain concepts into the project's long-term memory. Allows writing notes and summaries to workings/.
      • 📋 Plan Mode (plan): Analyzes requirements and produces structured <plan> blocks with numbered steps and deliverable definitions. Writes plan artefacts to workings/plan.md. Direct writes to output/ and PDF compilation are blocked.
      • ⚡ Exec Mode (exec): Follows the approved plan, reads source files (input/) and working papers (workings/), produces intermediate artifacts, and writes final approved deliverables into output/. Full write access, PDF generation, and policy-gated shell enabled.
    • Strict Rust Runtime Permission Matrix (runtime/execution.rs): Hard engine-level guards block disallowed tool calls per mode before execution, with explanatory violation messages guiding the model to the appropriate workflow.

    • Backward-Compatible Migration: Automatic deserialization and localStorage migration for legacy mode strings ("analyze" → Ask, "draft" → Plan, "finalize" → Exec).

    • Initial Mode Selection Wizard (ProjectCreateModal.vue): Users choose their preferred initial agent mode when creating a new project, with persistent last-used mode per project thereafter.

    • Execute Plan UI Banner & 4-Button Toolbar (ProjectChat.vue): Replaced the 3-button segmented controller with 4 mode buttons and updated the confirmation banner to "Execute Plan" when structured plans or workings files are ready.

    • Full Bilingual Localization & ADR-012 Update: Added comprehensive English and Vietnamese translations and updated ADR-012. All 134 Rust tests and 84 Vitest tests passing.

  • Session Clean Up & Semantic Memory Reset Architecture (Sprint 35):

    • Granular Session & Memory Management: Added a dedicated Clean Up Session & Memory modal (ResetSessionModal.vue) across Project Studio and Agent Studio for clean, isolated prompt re-testing.
    • Customizable Reset Granularity: Users and developers can choose between:
      • 💬 Clear Chat Messages: Wipes conversational message history and tool activity in the active session.
      • 🧠 Wipe Project Semantic Memory: Erases all auto-stored RAG semantic memories attached to the project (with live entry count preview) to prevent the agent from recalling stale prior context or old instructions.
      • ➕ Start New Clean Session: Creates and switches to a fresh new session in one click.
    • Memory Panel Clean Up Tools: Added 1-click Clear All Memories in MemoryPanel.vue to wipe long-term knowledge across all agents/projects.
    • Backend Storage & IPC Commands: Implemented clear_project_memories, clear_agent_memories, clear_all_memories, count_project_memories, and reset_session with atomic SQLite execution and 100% test coverage.
    • Full Bilingual Localization: Added complete English and Vietnamese translations for all reset actions, modals, and notifications.
  • Interactive Agent Clarification & Direction Confirmation (ask_user Feature — Sprint 34):

    • Cursor / Antigravity Style Clarification: AI agents can now pause and ask the user structured multiple-choice questions with recommended directions and custom write-ins whenever requirements have multiple paths, ambiguous parameters, or high-impact decisions.
    • Non-Blocking Runtime Suspension: Execution loop non-blockingly suspends on ask_user / ask_question, transitions RunStatus to awaiting_input, and emits run:question IPC event over an async tokio::sync::oneshot channel without occupying background execution threads.
    • Inline Interactive Question Card (InteractiveQuestionCard.vue):
      • Displays bold question prompt and background context block.
      • Multiple-choice option cards with ⭐ Recommended badges, radio/checkbox selectors, and detailed option descriptions.
      • Custom write-in input field for freeform guidance.
      • "Confirm & Continue" button to resolve question and seamlessly resume the agent's ReAct execution loop.
      • Post-submission freeze state showing a neat confirmation checkmark and user note summary.
    • Comprehensive Multi-Language & Test Coverage: Added English and Vietnamese localizations, 3 new Rust unit tests (129 total), 5 new Vitest unit tests (74 total), and strict TypeScript typechecking.
  • Comprehensive Office Document & Data Parsing Architecture (Sprint 33):

    • Zero-Copy Streaming SAX XML Engine: Replaced fragile string splitting across all OpenXML parsers with high-performance quick-xml event loops.
    • High-Accuracy Spreadsheet Engine (.xlsx, .xlsm, .xltx, .xls, .xlsb, .ods):
      • Full xl/sharedStrings.xml parser supporting rich text <r><t> and standard <si><t>.
      • Merged cell rectangular expansion (<mergeCells>) propagating top-left cell values across merge ranges.
      • Number format resolution (xl/styles.xml + standard & custom <numFmts>) for currency ($#,##0.00, ₫, €), percentages (0.0%, 0.00%), dates, times, comma integers, and decimals.
      • Multi-sheet discovery and table extraction with configurable row limits.
      • Pure-Rust legacy spreadsheet parsing (.xls BIFF8/OLE2, .ods, .xlsb) via calamine.
    • Structured Word Document Engine (.docx, .docm, .dotx, .doc):
      • Semantic structure extraction with Markdown headings (#, ##, ###), nested bullet/numbered lists (-), bold (**), and italics (*).
      • Table matrix extraction and Markdown table formatting with pipe escaping.
      • Ancillary text stream recovery: headers (word/header*.xml), footers (word/footer*.xml), and footnotes (word/footnotes.xml).
      • Legacy Word 97-2003 binary stream parsing (.doc) via cfb OLE2 reader.
    • Presentation Engine (.pptx, .pptm, .potx, .ppt):
      • Slide sequencing and structure extraction (ppt/presentation.xml, ppt/slides/slide*.xml).
      • Slide titles, body paragraphs, bullet points, and embedded table matrices.
      • Speaker notes extraction (ppt/notesSlides/notesSlide*.xml).
      • Legacy PowerPoint binary stream parsing (.ppt) via cfb.
    • Enhanced RFC-4180 CSV / TSV Engine (.csv, .tsv, .tab):
      • Multi-line quoted string support with escaped quotes ("").
      • Automatic delimiter detection (,, ;, \t).
    • Enhanced PDF Context Ingestion (.pdf):
      • Tabular line alignment detection heuristics with Markdown table formatting.
      • Page boundary annotations (--- Page N ---) and scanned image detection fallback.
    • Unified Agent Tools & UI Previews:
      • filesystem_read tool routes all office formats to appropriate structured context adapters.
      • UI preview commands (read_project_spreadsheet, read_project_docx, read_project_pptx) deduplicated to use shared parsing engine.
    • 126 Passing Rust Unit Tests & 69 Passing Vitest Tests: 100% clean test passes with 0 compiler warnings.
  • Live Loop Streaming & Expandable Activity/Reasoning Tray (Cursor/Antigravity Style):

    • Real-Time Step Activity Stream: Upgraded execution loop to stream intermediate model thoughts (<thought>...</thought>) and live tool invocations (filesystem_read, filesystem_write, web_search, mcp, etc.) into an interactive timeline instead of wiping stream buffers.
    • Expandable Activity Tray (AgentActivityTray.vue): Built a sleek, collapsible activity tray inside the assistant chat bubble:
      • Live pulsing spinner and step counter during execution (Step 2/8: Reading source files...).
      • Collapsed summary badge upon completion (⚡ 3 actions executed • 4 steps • Thought for 4.2s).
      • Expandable timeline of steps with full thought inspection, tool action cards with status badges (Success, Running, Error), and 1-click syntax-highlighted JSON payload viewer.
      • 1-Click Copy full execution activity log.
    • Clean Deliverable Isolation: Main chat bubble renders only final clean Markdown deliverables without leaking raw XML tags or intermediate tool dumps.
    • Historical Activity Persistence: Preserved structured step activities in SQLite messages.metadata["steps"], ensuring past conversations reload the full activity timeline across app restarts.
    • ADR-017: Documented architecture and design decisions in docs/DECISIONS/ADR-017-live-loop-streaming-and-expandable-activity-tray.md.
  • Token & Context Management Architecture (Sprint 32):

    • Database Migration V007: Added runs.project_id, model_pricing seed table with 11 default frontier models across OpenAI, Anthropic, and Google, and project budget threshold columns (token_budget_warning_threshold, cost_budget_usd_threshold).
    • Dynamic Real-Time Pricing Engine: Rust runtime computes accurate USD costs per run and per project dynamically from the model_pricing database table.
    • Per-Project Token Isolation & Analytics: Added get_project_token_analytics, list_model_pricing, update_model_pricing, and set_project_budget_thresholds Tauri IPC commands.
    • Context Budget Breakdown: Added calculate_context_breakdown and get_context_breakdown calculating real-time token saturation across System instructions, User prompt, Project files, Conversation history, and RAG semantic memory.
    • Interactive In-Studio Context Meter: Added ContextMeter.vue to ProjectHeader.vue displaying live context window utilization and project cumulative cost badges.
    • Context Inspector Modal: Built ContextInspectorModal.vue featuring a multi-segment progress bar and token usage breakdown by layer with available headroom metrics.
    • Activity Panel Project Scoping & Quota Alerts: Enhanced ActivityPanel.vue with a Project Filter dropdown and warning alert banners when project token or cost thresholds are exceeded.
    • 116 Passing Rust Tests & 62 Vitest Tests: Verified full test suite with 100% clean passes.
  • Harness Architecture Hardening & Quality Audit (Sprint 31):

    • Comprehensive Multi-Layer Audit: Verified 100% architectural conformance across Rust ReAct execution engine, 3-zone harness file management (input/, workings/, output/), stagnation detection, autonomous nudging, and sandboxing.
    • Unified Mode Routing Guard: Extended Rust runtime routing intercept to enforce strict output/ write blocking on pdf_generate in Draft mode alongside filesystem_write.
    • Standalone Execution Scope: Added projectId to StartRunRequest allowing project sandbox scoping for direct API/CLI execution without pre-existing conversations.
    • Type & Navigation Fixes: Fixed HistoryView.vue routing to display ActivityPanel.vue, and added projectId to Conversation domain model.
    • 114 Passing Rust Tests: Added new test fixture for pdf_generate draft mode output routing.
  • OpenAI Reasoning & Modern Models Compatibility (max_completion_tokens):

    • Replaced legacy max_tokens with standard max_completion_tokens across all OpenAI Chat Completions requests.
    • Added native support for OpenAI reasoning models (o1, o3-mini, o1-mini, o1-preview):
      • System prompts automatically mapped to the developer role.
      • Omitted custom temperature parameters for reasoning models to eliminate 400 Bad Request unsupported_parameter errors.
  • Dynamic Provider Model Discovery & Custom Model Creation:

    • Added live GET https://api.anthropic.com/v1/models fetching in fetch_provider_models.
    • Added custom model ID creation input in Settings for all providers.

0.2.7 — 2026-08-24 ​

  • Apple Developer ID Code Signing & Automatic Notarization Pipeline:

    • Integrated full Apple Developer ID code signing into GitHub Actions workflow (.github/workflows/release.yml) for macOS Apple Silicon (aarch64) and Intel (x86_64).
    • Automated Apple Notary Service (notarytool) submission and ticket stapling, eliminating Gatekeeper quarantine blocks and "damaged app" warnings on modern macOS (Sequoia, Sonoma, Ventura).
    • Configured secure keychain management in CI for .p12 certificates and Apple Team credentials.
  • Linux Packaging Dependency Fix & CI Speed Boost:

    • Updated Debian packaging dependencies in tauri.conf.json to use modern libayatana-appindicator3-1.
    • Integrated swatinem/rust-cache@v2 into .github/workflows/release.yml with per-target workspace caching, reducing Rust compilation times on CI by ~70-80%.
    • Added pnpm store caching (cache: 'pnpm') in GitHub Actions to accelerate Node.js dependency installations.
    • Standardized NSIS Windows installer languages (English, Vietnamese).
  • Standardized Universal snake_case Tool Naming Architecture:

    • Replaced dot-notation tool names with standard snake_case (filesystem_read, filesystem_write, filesystem_glob, pdf_read, pdf_generate, shell_execute, web_search, web_fetch, math_calculate, system_time, system_info, knowledge_store, knowledge_search).

    • 100% universal compatibility across all LLM providers (Anthropic Claude ^[a-zA-Z0-9_-]{1,128}$, Google Gemini ^[a-zA-Z0-9_]+$, OpenAI, Ollama, DeepSeek).

    • Built-in bidirectional alias fallback in ToolRegistry and PolicyEngine ensuring seamless backward compatibility for legacy packages and prompts.

    • Updated package validator, agent manifests (packages/examples/), and system prompt planning instructions.

    • Hard 20MB Safety Guard:

      • Hard preview limits (MAX_IN_APP_PREVIEW_SIZE_BYTES = 20MB) enforced in all Rust commands and frontend router to protect system memory and prevent UI freezes when users encounter multi-hundred-megabyte or gigabyte files.
      • Large files display a dedicated 1-click fallback card to launch in the OS default desktop application or show containing folder.
    • Word Document Viewer (WordDocumentViewer.vue):

      • Formatted document viewer for .docx and .doc files extracting paragraphs, headings (H1-H3), and tables from OpenXML word/document.xml.
      • Document statistics (word count, paragraph count, reading time) with 1-click copy and open in Microsoft Word.
    • PowerPoint Presentation Viewer (PresentationViewer.vue):

      • Multi-slide deck viewer for .pptx and .ppt with slide thumbnails sidebar, 16:9 canvas layout, slide navigation controls, and full outline export.
    • Interactive Spreadsheet Viewer (SpreadsheetViewer.vue):

      • Multi-sheet workbook navigation (.xlsx, .xls, .csv, .tsv), real-time keyword filtering, column sorting, pagination, and copy as Markdown table / CSV.

0.2.3 — 2026-08-22 ​

  • Smart Multi-Platform Matrix Dispatch & Selective Re-run (.github/workflows/release.yml)

    • Added interactive workflow_dispatch platform selector: 1-click build all 4 targets simultaneously (all) or trigger individual OS rebuilds (windows, macos-apple-silicon, macos-intel, linux) on demand.
    • Zero-second skip optimization: skipped platforms exit immediately in 0 seconds without consuming GitHub Actions runner minutes.
    • Native fail-fast: false resilience: successful OS installer artifacts remain preserved and uploaded to GitHub Draft Releases even if one platform encounters a transient failure.
  • WebView Print PDF Export (ADR-016)

    • User-facing PDF export now uses the browser's native print pipeline via an isolated print window, guaranteeing visual fidelity with the Markdown preview. Preview and PDF share the same parser (MarkdownMessage.vue), CSS, fonts, and layout engine.
    • Typed PdfOptions model: page size (A4, A5, Letter, Legal), orientation (portrait/landscape), configurable margins, scale, print backgrounds, headers/footers.
    • Print CSS with standard @page rules, page-break control for headings/code/tables, and proper print typography.
    • Comprehensive regression test fixture suite: 18 Markdown fixtures covering basic, headings, lists, tables, code, blockquotes, links, long documents, images, math, edge cases, and internationalization (Vietnamese, Japanese, Chinese, Korean, Arabic, emoji).
    • Rust PdfExporter types with platform abstraction (pdf_export.rs): structured errors, cross-platform capability info, serde-compatible options.
    • 15 new Rust tests (fixture validation + PDF compilation) and 11 new Vitest tests.
    • The Rust printpdf + cosmic-text compiler remains available for the agent API (pdf.generate), where no WebView is available.
    • Cross-platform: macOS uses native WKWebView.printOperation on the isolated print window (window.print() is a no-op in WKWebView); Windows uses WebView2 window.print() ("Microsoft Print to PDF"); Linux uses WebKitGTK window.print() ("Print to File"). PDFs are not pixel-identical across platforms because the underlying WebView engines differ.
    • The print window is a scrollable preview with Print / Save PDF and Close. It does not auto-print. Payload is delivered via Tauri events (print-ready / print-document), not sessionStorage.
    • Known limitations: page numbering not supported via CSS (relies on the browser's native print header/footer); the print dialog requires user interaction.
  • Multi-Platform OS Support & Automated Release Pipeline (ADR-015)

    • Windows 10/11 Packaging: Configured user-friendly NSIS installer (.exe) with multi-language setup (English & Vietnamese) and enterprise WiX (.msi) deployment target.
    • Cross-Platform Release Automation (.github/workflows/release.yml): Automated 4-way CI/CD build matrix bundling native binaries for Windows x64, macOS (Apple Silicon & Intel), and Linux (.AppImage, .deb).
    • Platform Architecture Guide (docs/ARCHITECTURE/platforms.md): Comprehensive specifications covering runtime path normalization, Credential Vault integration across OSes, and local build instructions.
  • Native vector PDF compiler (ADR-014)

    • Export PDF and pdf.generate compile markdown to a real vector PDF: selectable Unicode text, embedded subset fonts, tables, code, lists, quotes, links, bookmarks, and local images.
    • WKWebView print-to-PDF was withdrawn after it hung the app and wrote huge broken files. html2canvas snapshots are no longer on the export path.
    • Vietnamese, Japanese, and other OS-available scripts use bundled Noto Sans plus system fonts. CJK megafonts are still not bundled (ADR-009).
    • If the compiler fails, export falls back to the cosmic-text JPEG rasterizer.
    • Community in-process crates were measured and not adopted: markdown2pdf dropped Japanese (macOS .ttc fonts); Typst passed Unicode but added ~39 MB to a stripped release binary.
  • Interactive HTML Webpage & Native PDF In-App Document Previews (ADR-013)

    • Interactive HTML Viewer (HtmlDocumentViewer.vue):
      • Embedded sandboxed webpage rendering for .html and .htm deliverables.
      • Responsive Viewport Toggles: Desktop (100%), Tablet (768px), and Mobile (375px) device preview frames.
      • Dual View Modes: Segmented toggle between Webpage View (Rendered iframe) and Source Code (Raw HTML with syntax styling).
      • Interactive Controls: Reload frame, 1-click Copy HTML, Open in Default Browser, and Maximize/Fullscreen mode.
    • Native Lightweight PDF Viewer (PdfDocumentViewer.vue):
      • Directly embeds PDF deliverables into Project Studio via native webview blob rendering with zero external library overhead.
      • Full native PDF feature support: zoom, in-document search, page navigation, print, and download.
    • Binary File Preview API (commands/projects.rs, services/api/projects.ts):
      • Added read_project_file_base64 Tauri IPC command for fast binary streaming of PDF and document assets.
  • Unicode PDF export for markdown deliverables

    • Historical note: preview capture previously used html2canvas + per-script system fonts; agent pdf.generate previously rasterized via cosmic-text. Both are superseded as the primary path by the vector compiler (ADR-014). The rasterizer remains a fallback.
    • Known limitation: machines without CJK (or Arabic/Thai) system fonts may still show missing glyphs for those scripts; AMBA does not bundle CJK megafonts (ADR-009).
  • Project-Scoped Semantic Memory Isolation & Cascade Deletion

    • Two-Tier Scoped Memory Engine (runtime/memory.rs, runtime/rag.rs, runtime/execution.rs):
      • Project-Scoped Memory (project:{project_id}:*): Interaction history and RAG memories generated within a project are tagged with projectId. RAG retrieval within a project only queries the active project's memories plus global user knowledge, strictly isolating projects and preventing cross-project context bleeding.
      • Global Memory (global:*): Non-project conversations only retrieve global knowledge, preventing project scratchpad data from polluting general workspace chats.
    • Automatic Memory Cascade Deletion (storage/db.rs, commands/projects.rs):
      • Deleting a project automatically purges all semantic memory entries, embeddings, and interaction logs belonging to that project (DELETE FROM semantic_memory WHERE key LIKE 'project:' || ?1 || ':%' OR json_extract(value_json, '$.projectId') = ?1).
  • Native In-App Markdown Document Viewer & Reader Mode (ADR-013)

    • Document-Grade Markdown Viewer (MarkdownDocumentViewer.vue):
      • High-quality document typography for reading agent-generated reports, meeting notes, and analysis documents directly inside Project Studio.
      • Formats headings (H1-H4), tables, task lists, blockquotes, and code blocks with 1-click copy.
      • Reading Controls: Toggle between Document View and Raw Source, dynamic Table of Contents (TOC) navigation, word count & reading time calculation, 1-click Copy Document, and Maximize/Fullscreen mode.
    • Inline Deliverable Integration (DeliverablePreview.vue):
      • Automatically detects .md, .markdown, and .txt files in input/, workings/, and output/ and renders the rich viewer inline instead of requiring external OS software.
    • Backend Safe File Content API (commands/projects.rs):
      • Added read_project_file_content Tauri command with canonical path traversal validation and 10MB memory safety limits.
  • Dual-Option Project Deletion Modal & Physical Disk Removal

    • Dedicated Project Deletion Dialog (ProjectDeleteModal.vue):
      • Replaced browser confirm() with a custom modal asking the user to choose their deletion method.
      • Option 1 (App-Only / Safe): Removes the project tracking from AMBA while preserving all physical files on disk.
      • Option 2 (Full Physical Deletion / Danger): Completely deletes the project from AMBA and permanently removes the project folder and all contained files on disk.
    • Backend Disk Cleanup Guard (commands/projects.rs):
      • delete_project(project_id, delete_files: bool) safely resolves the directory path and performs std::fs::remove_dir_all with guard checks against deleting system roots or user home directory.
  • Strict Agent Execution Modes & Two-Stage Output Finalization Gate (ADR-012)

    • Three-Stage Agent Workflow Modes (AgentMode):
      • analyze (Analyze Only): Pure chat exploration & Q&A. Writing files is forbidden at runtime.
      • draft (Draft & Workings — Default): Agent prepares intermediate spreadsheets, calculations, and drafts in workings/. Writing directly to output/ is blocked with hard runtime enforcement.
      • finalize (Approve & Finalize): Agent inspects working drafts, automatically receives all workings/ files as context, and generates polished final deliverables in output/.
    • Project Studio Mode Controller & 1-Click Finalization (ProjectChat.vue):
      • Mode segmented button group above chat input with project-level persistence.
      • Automatic "Working Drafts Ready for Review" banner with 1-click "Approve & Finalize" action button when files are discovered in workings/.
    • Hard Enforcement at Rust Runtime (runtime/execution.rs):
      • Intercepts filesystem.write tool requests before dispatch and returns actionable mode-routing error feedback to guide the LLM.
  • Central Default Workspace Directory & 1-Click Project Scaffolding (ADR-018)

    • Default Workspace Root (~/AMBA/Projects / ~/Documents/AMBA Projects):
      • Centralized project root managed in SQLite and configurable via Settings (SettingsPanel.vue).
      • Added Tauri commands get_default_workspace_dir and set_default_workspace_dir.
    • Dual-Mode Project Creation Wizard (ProjectCreateModal.vue):
      • Mode 1 (Auto Workspace — Default): Automatically derives sanitized folder names from project title (<WorkspaceRoot>/<Project-Name>) with live path preview and creates directories automatically on submit.
      • Mode 2 (Custom Location): Power-users can link existing Git repositories, external hard drives, or custom folders on disk.
    • Workspace Settings in Advanced Tab (SettingsPanel.vue):
      • Displays current workspace directory with 1-click "Change Location…" dialog and "Open Folder" OS launcher.
  • Project File Management & Real-time Auto-Sync with VS Code-Grade Drag-and-Drop

    • Real-time Project File Watcher (notify = "6.1", runtime/watcher.rs):
      • Automatic non-polling filesystem watcher detects file creation, modification, deletion, and renaming across all project directories (input/, workings/, output/).
      • Debounces bursts (300ms window), synchronizes SQLite records, and broadcasts project:files-updated Tauri events to all active windows.
      • Added live "LIVE" sync indicator badge in the Harness Explorer header.
    • VS Code-Grade Hierarchical File Explorer (FileTreeItem.vue, buildFileTree):
      • Replaced flat lists with deep nested folder trees supporting arbitrary subdirectories.
      • Expandable/collapsible directories with icon states and indentation guidelines.
      • Quick action toolbars on hover: + New File, + New Folder, Rename, Delete, Open in OS.
    • Full Drag & Drop Capabilities:
      • External OS Drop: Drag files and folders directly from Finder / File Explorer / Desktop into specific zones or nested directory nodes.
      • Internal Reorganization: Drag files/folders between zones or into subfolders to move them on disk (move_project_path).
      • Drag-to-Chat Context Injection: Drag any file node from the explorer tree directly into the Chat prompt area to automatically insert context @<relative_path> tags.
    • Comprehensive File Operations API:
      • Added Tauri commands create_project_file, create_project_folder, rename_project_path, delete_project_path, move_project_path, and import_project_files with strict path traversal validation.
  • Security & Permission Matrix — Granular Capability Scopes (ADR-010)

    • Orthogonal Permission Matrix: Deprecated linear hierarchical scope levels in favor of 4 independent capability dimensions:
      • Filesystem Access Scope: Project Sandbox Only (strictly restricted to input/, workings/, output/) vs. Full Local Disk.
      • Network & Web Search (allow_internet: bool): Independent toggle allowing the Agent to safely search the web and fetch online documentation from within the sandbox without requiring full OS privileges.
      • Terminal / Shell Execution (allow_shell: bool): Independent toggle gating shell.execute commands (default disabled with security alerts).
      • External MCP Plugins (allow_mcp: bool): Independent toggle gating external Model Context Protocol tool invocations.
    • Interactive Security UI (ProjectHeader.vue & ProjectCreateModal.vue): Added quick security capability badge chips in the Project Studio header and an on-the-fly Security & Capabilities modal for toggling individual permissions during active sessions.
  • Phase 8: Production Polish & Performance Scale — Sprint 29: Advanced Desktop UI & Keyboard Navigation

    • Command Palette (CommandPalette.vue): Power-user universal search triggered by Cmd+K / Ctrl+K. Instant fuzzy search across project harnesses, pages, quick actions (switch theme, collapse sidebar, create project, export), and direct keyboard navigation with Arrow keys and Enter.
    • Global Keyboard Shortcuts (useKeyboardShortcuts.ts): Fast desktop shortcuts for Cmd+K (Search & Command Palette), Cmd+/ (Toggle Sidebar), Cmd+N (New Project/Session), and Esc (Modal dismiss).
    • Drag-and-Drop File Context Injection (ProjectChat.vue): Dragging external files over the Project Studio Chat triggers a visual drop zone overlay, automatically injecting the attached files into the prompt query.
    • Native Desktop Notifications (services/notification.ts): Dispatches system desktop notifications when long-running agent workflows or file parsing tasks finish in the background.
  • Phase 8: Production Polish & Performance Scale — Sprint 28: Extension & MCP Skill Hub (1-Click Install)

    • Curated MCP Extension Marketplace (ToolsPanel.vue, tools/marketplace.rs): 1-click catalog featuring certified extensions (Python Data Engine, GitHub MCP, PostgreSQL Explorer, Puppeteer Web Browser, SQLite Inspector).
    • Category Filtering & Search: Instant filtering across Data & Analytics, Developer Tools, Databases, and Web Automation.
    • Pre-Configured Transports: Auto-fills command executable, CLI args, default endpoints, and provides secure secret inputs for API tokens.
  • Phase 8: Production Polish & Performance Scale — Sprint 27: Export, Import & Database Backup

    • 1-Click Conversation Export (ProjectChat.vue, commands/backup.rs): Export complete conversation histories, tool invocation records, and system context into structured GitHub Flavored Markdown (.md) or schema-compliant .json.
    • Full Workspace SQLite Database Online Backup & Restore (commands/backup.rs, SettingsPanel.vue): Atomic live database backups using rusqlite::backup without stopping the runtime, with validation safeguards during restore.
    • ChatGPT Conversation Import (commands/backup.rs, SettingsPanel.vue): Seamlessly import conversations.json from ChatGPT data archives into AMBA workspace sessions.
  • Phase 8: Production Polish & Performance Scale — Sprint 26: Performance & Caching

    • SQLite WAL Mode & High-Throughput Pragmas (storage/db.rs, V004__caches.sql): Enabled PRAGMA journal_mode = WAL, synchronous = NORMAL, and busy_timeout = 5000 providing 5x–10x concurrent read/write throughput and eliminating database locking during intensive streaming.
    • Document Parsing Hash Cache (context/engine.rs): High-performance Sha256-based document caching (document_cache table) ensures that unchanged PDFs, spreadsheets, and Word documents load instantly (<1ms) without repeated parsing and decompression overhead.
    • Deterministic Model Response Caching (runtime/cache.rs): Automatic prompt-hash response cache (response_cache table) for low-temperature runs (<= 0.1), eliminating redundant API requests and token expenditures for repetitive tasks.
    • Frontend Chat Virtualization & DOM Containment: Applied content-visibility: auto and contain-intrinsic-size to chat messages in ProjectChat.vue and AgentWorkspace.vue for silky-smooth 60fps scrolling across 1000+ turn conversation histories.
  • Phase 8: Production Polish & Performance Scale — Sprint 25: Robust Error Handling & Retry Engine

    • Provider Exponential Backoff & Jitter (providers/retry.rs): Automatic retry loop with configurable exponential backoff (base_delay * 2^attempt + jitter) for handling HTTP 429 rate limits and transient network disconnects without user interruption.
    • Granular Error Classification (classify_error): Accurately differentiates between retryable transient errors (429, 500/502/503/504, connection timeouts) and fatal client/auth issues (401, 403) to prevent wasteful retries.
    • Automatic Secondary Model Fallback: When an upstream provider suffers a persistent outage or quota limit, the execution engine seamlessly degrades to the agent's secondary preferred model (e.g. falling back from GPT-4o to Claude 3.5 Sonnet or Gemini 2.0 Flash) from agent.model_preferences.
    • Live UI Diagnostics & Retry Telemetry:
      • Emits real-time RunEventType::RetryAttempt and RunEventType::ModelFallback events.
      • Added retry countdown badge ("Rate limit detected. Retrying in 2s (Attempt 1/3)...") and prominent Model Fallback notification banners in ProjectChat.vue and AgentWorkspace.vue.
  • Phase 7: Autonomous Reasoning & Extended Memory — Sprint 24: Planning & ReAct Reasoning Loop

    • Dynamic Plan Inspector UI (PlanInspector.vue): Embedded plan tracker widget rendered in ProjectChat.vue. Displays current goal, progress percentage bar, dynamic step status checklist (pending, in_progress with spinner, completed, failed), and expandable Thought reasoning drawers.
    • ReAct Reasoning Protocol (runtime/agent.rs & runtime/execution.rs): Integrated step-by-step planning instructions into system prompt. The agent decomposes complex tasks into <plan> blocks with granular <step> items and <thought> reflections.
    • Live Plan Telemetry (RunEventType::PlanUpdate): Execution engine automatically parses XML plan structures from model responses and emits real-time plan_update events for live UI progress updates.
    • Self-Correction on Tool Errors: Agents observe tool failure observations and update their plans to test alternative approaches or self-correct parameters.
  • Phase 7: Autonomous Reasoning & Extended Memory — Sprint 23.5: Project Harness Paradigm & 3-Column Studio UI (ADR-008)

    • Project Harness Paradigm: Transitioned AMBA from session-centric chat into a project-based local harness. Every project encapsulates a dedicated local directory with three standard subdirectories:
      • input/ (Read-only data context: attendance sheets, spreadsheets, raw PDFs, invoices).
      • workings/ (Working Papers & Drafts: calculations, versioned spreadsheets, drafts, intermediate data; backwards-compatible with legacy temp/).
      • output/ (Deliverables: finalized payroll spreadsheets, generated summary reports, export archives).
    • 3-Column Project Studio UI (ProjectStudio.vue):
      • Harness File Explorer (Left Column): Real-time tree view of input/, workings/, and output/ directories, file size metrics, file type icons (Excel, Word, PDF, CSV, JSON), and 1-click OS open.
      • Project Chat & Execution (Middle Column): Project-scoped conversation history, auto-injected input files context, live tool execution telemetry, and goal/plan banners.
      • Deliverable Preview (Right Column): Dedicated inspector for previewing generated files, quick overview of project deliverables, and 1-click launch in default OS apps.
    • Projects Dashboard & Creation Wizard (ProjectListView.vue, ProjectCreateModal.vue):
      • Filterable projects grid by template (Payroll, Financial Analysis, Document Analysis, Custom).
      • 3-step project setup wizard (Template & Metadata → Assigned Agent & Model → Local Directory Picker with auto-scaffolding).
    • Tauri IPC Endpoints & Database (commands/projects.rs, storage/migrations/V002__projects.sql): 11 new commands for project lifecycle, directory scaffolding, filesystem sync, and project-scoped sessions.
  • Phase 7: Autonomous Reasoning & Extended Memory — Sprint 23: Explicit Memory Tools & Memory Inspector UI

    • Memory Inspector UI (/memory / MemoryPanel.vue): Full-featured dedicated interface for browsing, inspecting, editing, creating, and deleting long-term semantic memories. Includes live semantic similarity vector search with threshold filtering, similarity match score badges, metadata tagging, and raw JSON/Markdown preview.
    • Explicit Agent Memory Tools (tools/knowledge.rs):
      • knowledge.store: Native tool allowing autonomous agents to self-record important facts, preferences, guidelines, and entity details into long-term vector storage.
      • knowledge.search: Native tool enabling agents to actively query their semantic knowledge base by natural language query with custom score thresholds.
    • Memory Management IPC Endpoints (commands/memory.rs): list_memories, upsert_memory, delete_memory, search_memories.
    • Domain Model & Seeding (models/mod.rs, storage/seed.rs): Added MemoryEntry, ScoredMemoryEntry, UpsertMemoryRequest, and registered knowledge tools & permissions for assistant-agent and research-agent.
  • Phase 7: Autonomous Reasoning & Extended Memory — Sprint 22: RAG Memory Auto-Injection & Semantic Recall

    • RAG Pre-Prompt Memory Injection (runtime/rag.rs & runtime/execution.rs): Automatic cosine-similarity search against SQLite semantic memory before model request. Top memories exceeding similarity threshold (0.35) are formatted and injected as authoritative background context in system prompt.
    • Interaction Auto-Storage (auto_store_interaction): Automatically captures and embeds meaningful User prompt + Assistant response pairs upon run completion, ensuring continuous long-term recall across sessions.
    • Live Runtime Memory Telemetry: Emits RunEventType::ContextBuild events containing memory count and keys to provide frontend visibility into what the agent recalled.
    • Scored Semantic Search API (search_scored): Extended SemanticMemoryStore trait and SqliteSemanticMemory with threshold-gated, score-ranked retrieval.
  • Streamlined Provider & Model Management in Settings (SettingsPanel.vue):

    • Inline Expandable Model Selection: Merged model selection into Step 1 as an expandable, interactive checkbox accordion directly under each connected provider.
    • Single Step 2 for Default Model: Step 2 is now dedicated to selecting the Default Model, strictly listing the inner join of enabled models from connected providers (+ Offline Demo).
    • Quick Reset Actions: Added 1-click Reset Flagships (resets to curated flagship profiles) and Reset All Selected (clears model selections).
    • Removed Clutter: Removed Manifest Editor JSON modal and Custom Model form for a cleaner, intuitive end-user experience.
  • Phase 6: Advanced Tool Ecosystem & MCP Expansion (Sprints 19–21)

    • Remote MCP over SSE/HTTP (tools/mcp.rs): Implemented SseMcpClient allowing AMBA to connect to remote MCP endpoints over Server-Sent Events with Bearer token authentication.
    • MCP Resources Support: Added resources/list and resources/read methods to inspect live data from MCP servers.
    • Builtin Utility Tools (tools/utility.rs):
      • system.time: Real-time clock, timezone offset, weekday, and Unix timestamps.
      • math.calculate: Deterministic, safe mathematical expression evaluator (+, -, *, /, %, ^, sqrt, abs, ceil, floor, round, sin, cos, tan, log, exp, pi, e).
      • filesystem.glob: Pattern search across workspace directories.
      • system.info: OS, CPU architecture, platform metadata.
    • Tools UI Updates (ToolsPanel.vue): Added Stdio / Remote SSE transport switcher with Bearer token inputs and presets.
  • Sprint 18: Structured Output & Rich Rendering

    • Rich Markdown Engine (MarkdownMessage.vue): Replaced raw text message rendering with a modular Markdown parser.
    • Fenced Code Blocks & 1-Click Copy: Renders code blocks with dark theme styling, language badge tags, and an interactive copy button with visual confirmation.
    • Markdown Tables & Blockquotes: Formats tables with clean bordered responsive layouts, callout quotes, bold/italic, inline code, and clickable external links.
    • Structured JSON Support: Added response_format to ModelRequest with OpenAI & Google provider integration for deterministic JSON output.
  • Sprint 17: Smart Token-Aware Context Window Management & Auto-Summarization

    • Token Estimation & Budgeting (runtime/context_budget.rs): Replaced naive message-count sliding window with token-aware budgeting using weighted character/word BPE approximation.
    • Automatic Session Summarization: When conversation turns exceed the token budget threshold (>6,000 tokens or >8,000 token history), earlier turns are summarized into a concise structured digest ([Summary of Earlier Turns in this Session]) and prepended as a system note.
    • Tool-Call Pair Preservation: Smart split algorithm protects assistant tool_calls and corresponding tool result pairs from being broken across pruning boundaries.
    • Runtime Event Notification: Emits RunEventType::ContextBuild with auto-summarized metadata to notify frontend trace inspector.
  • Sprint 16.4: Interactive 3-Step Model Discovery, Multi-Select Curation & Default Picker

    • Step 1 — Connect AI Providers: Input API keys for Google Gemini, OpenAI, and Anthropic. Direct live model discovery fetches all upstream models straight from provider APIs.
    • Step 2 — Pick Models to Enable (Multi-Select Curation):
      • Provider Tabs (All Connected, Google Gemini, OpenAI, Anthropic).
      • Real-time search filter and quick action buttons (✨ Select Flagships, Select All, Deselect All).
      • Interactive checkbox selection of discovered models with Flagship badges, context window size tags, and descriptions.
      • Saves user-curated model choices directly into SQLite via sync_selected_model_profiles.
    • Step 3 — Select Default Model (Single Pick):
      • Displays only the inner join of enabled models from connected providers (+ Offline Mock).
      • 1-click default model selection for agent workspaces.
    • Step 4 — Web Search & Internet Tools (Optional): Tavily / Brave Search integration with live status indicator.
  • Sprint 16.3: Configurable Model Manifest Architecture & Live Editor

    • Dynamic Model Registry (~/.amba/models.manifest.json): Replaced hardcoded model configurations with a decoupled, declarative JSON manifest schema (ModelManifestItem / ModelManifest).
    • Live Manifest Editor Modal: Added an interactive in-app JSON editor in Settings allowing power-users and developers to update model IDs, modify temperatures, adjust context window sizes, add new flagship models, or reset to template defaults without recompiling.
    • Manifest-Driven Seeding & Persistence: seed_profiles and backend storage load directly from the active manifest; changes applied in Settings immediately refresh the database and workspace dropdowns.
    • Tauri IPC Manifest Endpoints: get_model_manifest, save_model_manifest, and reset_model_manifest_defaults.
  • Sprint 16.2: Clean Flagship Model Curation, Noise Filtering & Provider Grouping

    • Smart API Model Curation (fetch_provider_models): Replaced raw, noisy API dump (30–50 experimental/dated checkpoints) with an intelligent whitelist filter keeping only canonical flagship aliases (Gemini 2.0 Flash, Gemini 2.5 Flash, Gemini 1.5 Pro, GPT-4o Mini, GPT-4o, o3-mini, o1, Claude 3.7 Sonnet, Claude 3.5 Sonnet, Claude 3.5 Haiku).
    • Obsolete Model Pruning & Reset: Added prune_profiles_by_provider and reset_curated_model_profiles Tauri command to cleanly remove clutter/deprecated snapshots and reset to pristine flagship models with 1 click.
    • Provider-Grouped Model Dropdown: AgentWorkspace.vue now organizes model options into intuitive <optgroup> categories (Google Gemini, OpenAI, Anthropic Claude, Offline / Testing) with status indicators.
    • Settings UI Enhancement: Added 1-click "Reset to Curated Models" button in Settings with clear feedback alerts.
  • Sprint 16.1: End-User Onboarding Wizard, Help & Guide Center, and In-App Feedback System

    • Interactive Setup Wizard (/onboarding): 3-step setup guide for non-technical users to connect AI Providers (Google Gemini Free Tier, OpenAI, Claude, or Offline Demo), configure Web Search (Tavily), and jumpstart with 1-click sample prompts.
    • Help & Guide Center Modal (HelpGuideModal.vue): Comprehensive, non-technical guide with Quickstart steps, AI Provider comparison, Security & Local-First overview, and FAQ solving common questions (e.g. why agent needs search keys, local data safety).
    • Built-in Feedback Center (FeedbackModal.vue): In-app feedback dialog with emoji/star ratings (1–5), category chips (Idea, Bug, Question, General), contact info, 1-click copy formatted feedback, and SQLite persistence.
    • Backend Feedback Engine: SQLite user_feedback table with insert_feedback and list_feedback storage APIs, registered submit_feedback and list_feedback Tauri IPC commands.
    • Sidebar Access: Added 1-click "📖 Hướng dẫn sử dụng", "💬 Góp ý & Báo lỗi", and "🚀 Setup Wizard" buttons in sidebar footer.
    • Workspace Quick-Start: AgentWorkspace.vue auto-fills query prompt from onboarding into input box for instant execution.
    • 45 Rust unit tests + 3 Vitest tests passing cleanly.
  • Sprint 16: Web Search & Fetch Tools (Internet Querying & SSRF Protection)

    • WebSearchTool (web.search): query the live web via Tavily (AI-native search API) or Brave Search with title, URL, snippet, and relevance scoring.
    • WebFetchTool (web.fetch): bounded webpage retrieval (32KB cap) with fast HTML-to-text conversion, tag stripping, script/style pruning, entity decoding, and text formatting.
    • SSRF Protection (assert_url_safe): strict validation blocking localhost, .local, link-local, loopback, private IPv4/IPv6 ranges (RFC 1918, RFC 6598 CGNAT, RFC 5736), and non-HTTP protocols.
    • Policy Engine defaults: web.search and web.fetch default to Confirm policy for explicit user permission.
    • Search Provider Credentials: OS keychain + SQLite fallback storage via set_search_credential, delete_search_credential, search_credential_status IPC commands.
    • Settings UI: Added Step 3 "Web Search & Internet Tools" card with Tavily & Brave Search key management, status indicators, and direct API link buttons.
    • Tool Status formatting in Workspace: human-readable real-time indicators for 🔍 Searching web, 🌐 Fetching, 📄 Reading file, ✏️ Writing file, ⚡ Executing shell.
    • 44 Rust unit tests + 3 Vitest tests passing cleanly.
  • Sprint 15: Multi-turn Conversation History Engine & Model Optimization

    • Multi-turn context loading: ExecutionEngine now automatically creates sessions and loads previous conversation turns into WorkingMemory for multi-turn LLM memory.
    • Context sliding window: limits conversation history to a 20-message token budget preventing context window overflow.
    • Dynamic model parameters: StartRunRequest supports temperature, max_tokens, and system_prompt_override.
    • SQLite Conversation CRUD: added get_conversation, list_conversations_by_agent, delete_conversation, rename_conversation, clear_conversation_messages with cascade deletion.
    • Workspace Sessions & Tuning: collapsible Sessions sidebar (New Chat, switch, rename, delete), Model & Context Tuning drawer (temperature slider, max tokens, custom instructions), copy message button, latency & model telemetry indicators.
    • Upgraded Conversation History View: real-time search, filter by agent, "Resume Chat" in Workspace, full conversation markdown export, clear & delete controls.
    • 35 Rust unit tests + 3 Vitest tests all passing cleanly.
  • Sprint 14: Real LLM Providers & Concrete Model Selection

    • Concrete Model Profiles seeded for OpenAI (GPT-4o Mini, GPT-4o), Anthropic (Claude 3.5 Sonnet, Claude 3.5 Haiku), and Google (Gemini 2.0 Flash, Gemini 1.5 Pro).
    • Production Anthropic model IDs updated to official snapshots (claude-3-5-sonnet-20241022, claude-3-5-haiku-20241022).
    • Settings persistence for default_model_profile_id via SQLite settings table and IPC commands.
    • Auto-detection of configured provider credentials and smart model dropdown selection in Workspace and Settings.
  • Sprint 13: Token Usage & Analytics Dashboard

    • Backend Analytics API: added get_token_analytics query on SqliteStorage to aggregate run token usage (input_tokens, output_tokens) and calculate estimated USD cost across LLM models.
    • Registered get_token_analytics Tauri IPC command in src-tauri/src/commands/runs.rs and lib.rs.
    • Frontend Analytics UI (ActivityPanel.vue): added KPI summary cards (Total Tokens, Input/Output Split, Estimated USD Cost, Executed Runs) and per-model usage breakdown table.
    • Added unit test for token analytics aggregation in db.rs (33 Rust unit tests total, all passing).
  • Sprint 12: MCP Server Management UI & Security Policy Manager

    • Frontend API wrappers (src/services/api/tools.ts): connectMcpServer, disconnectMcpServer, listPermissions, setPermission.
    • Tabbed Tools Panel UI (src/features/tools/ToolsPanel.vue):
      • Tool Registry tab: Live view of registered Native & MCP tools and JSON schemas.
      • MCP Servers Manager tab: Connect form (server_name, command, args), quick presets (filesystem, git, memory), list of connected servers, disconnect button.
      • Security & Permissions Manager tab: Real-time policy decision toggles (Allow, Confirm, Deny) for all registered tools.
  • Sprint 11: Document Context Adapters (PDF, DOCX, XLSX, CSV)

    • CsvAdapter: parses CSV files and formats records into clean Markdown tables.
    • DocxAdapter: parses Microsoft Word .docx ZIP archives and extracts paragraph text from word/document.xml.
    • XlsxAdapter: parses Microsoft Excel .xlsx archives, resolves shared strings (xl/sharedStrings.xml), and formats sheet cell grids into Markdown tables.
    • PdfAdapter: parses .pdf text streams (BT...ET) into readable text content.
    • Registered all 4 document adapters in ContextEngine default adapters.
    • Added unit tests for CSV, DOCX, XLSX, and PDF parsing (32 Rust unit tests total, all passing).
  • Sprint 10: Semantic Memory

    • SQLite table migration semantic_memory for storing key, JSON values, vector embeddings, and timestamps.
    • LocalEmbeddingGenerator: fast offline feature-hashing & n-gram normalized vector generator.
    • Cosine similarity vector search ranking (cosine_similarity).
    • SqliteSemanticMemory: implements SemanticMemoryStore trait (upsert, get, search).
    • 3 new unit tests for embeddings, cosine similarity, and SQLite semantic memory roundtrip (28 Rust unit tests total, all passing).
  • Sprint 9: Write Tools + Policy-Gated Shell

    • filesystem.write: full implementation with path security (sanitize_path), automatic parent directory creation, content append support, and unit tests.
    • shell.execute: process execution via tokio::process::Command, CWD path security, timeout enforcement (default 30s, max 120s), and unit tests.
    • Policy & Permissions IPC: added list_permissions and set_permission Tauri commands registered in lib.rs.
    • 3 new unit tests for filesystem.write and shell.execute (25 Rust unit tests total, all passing).
  • Sprint 8: Streaming Tool-Call Assembly

    • OpenAI provider streaming: chunk assembly for tool_calls deltas, include_usage SSE options, token usage extraction, and Done event generation.
    • Anthropic provider streaming: full SSE event parsing (message_start, content_block_start, content_block_delta, content_block_stop, message_delta, message_stop), tool_use JSON buffer accumulation, token usage tracking.
    • Google provider streaming: streamGenerateContent SSE parser for text deltas, functionCall parts, usageMetadata, and Done event.
    • Execution Engine (stream_or_chat): proper ModelStreamEvent::Usage collection and token usage propagation without extra non-streaming chat() fallback calls.
  • Sprint 7: Real MCP Client (stdio JSON-RPC 2.0)

    • StdioMcpClient: spawns MCP server process, handles initialize handshake, tools/list, tools/call with 5 s / 10 s / 30 s timeouts
    • Background stdin writer + stdout reader tasks; graceful drain on server exit
    • McpToolAdapter: wraps MCP tools as native Tool so they live in ToolRegistry
    • Tool names prefixed mcp.<server_name>.<tool_name>
    • connect_mcp_server / disconnect_mcp_server Tauri commands
    • StubMcpClient retained for tests and fallback
    • 7 new unit tests (JSON-RPC parsing, adapter delegation, error propagation)
    • 19 Rust tests total, all passing
  • GitHub Actions CI pipeline (.github/workflows/ci.yml)

  • Phase 2 roadmap: Sprint 7–10 planning in ROADMAP.md


0.1.0 — 2026-08-10 ​

Added ​

  • Local-first Tauri 2 desktop app with Vue 3 presentation layer
  • Single-process Rust Agent Runtime (execution, tools, policy, providers, context, memory, packages)
  • Governance documentation (AGENTS.md, architecture, ADRs, sprint docs, .agent/*)
  • Navigation: Agents, Skills, Tools, Models, Memory, Activity, Settings
  • Agent workspace with streaming, tool status, execution trace, permission prompts
  • SQLite persistence with migrations (agents, skills, tools, conversations, runs, events, policies)
  • Model providers: OpenAI, Anthropic, Google + offline Mock profile
  • Secure API key storage via OS keychain
  • filesystem.read tool with path traversal protection
  • Permission engine (allow / confirm / deny)
  • Local agent/skill package install from folder
  • Builtin Assistant Agent + example packages under packages/examples/
  • Activity page for past runs
  • Unit tests (Rust domain/policy/execution; Vitest API wrappers)