Skip to content

Releases: tmustier/pi-for-excel

v0.9.1-pre

15 Mar 23:01
6187542

Choose a tag to compare

v0.9.1-pre Pre-release
Pre-release

v0.9.1-pre release notes

Pre-release. Changes since v0.9.0-pre (2026-02-22). 28 commits, 21 merged PRs.

Highlights

🧠 Model updates — 1M context + xhigh thinking

  • Pi-stack bumped to v0.58.1claude-opus-4-6 and claude-sonnet-4-6 now have 1M context windows (was 200K). supportsXhigh() extended to GPT-5.2/5.3/5.4. (#498)
  • Session restore refreshes model metadata — existing sessions automatically pick up updated context windows, pricing, and other registry changes on restore instead of using stale persisted values. (#502)
  • GPT-5.4 is now the default OpenAI model, with centralized model ordering logic. (#472, #473)

🎨 Rendering reliability overhaul

A recurring pattern of rendering bugs was traced to two root causes: hook-dependent CSS selectors that break when upstream DOM structures change, and duplicate marked instances that bypass our safety patches. Both are now durably fixed.

  • KaTeX math rendering eliminated — all four math extensions ($...$, $$...$$, \(...\), \[...\]) are now disabled across all marked instances via Vite resolve.dedupe + CSS safety net. Formula text no longer renders as serif italic. (#494, #505)
  • Heading scale made resilient — selectors changed from .pi-assistant-body h1 (hook-dependent) to markdown-block h1 (stable custom element tag). Headings are always capped at sidebar scale regardless of hook state. (#503)
  • Diff table text contrast restored — cell references and values in CHANGES tables are now readable. (#494)

📜 Thinking block + streaming scroll fixes

  • Inner auto-scroll decoupled from outer — expanding a thinking block during streaming now auto-follows regardless of outer chat scroll position. (#499)
  • Scroll-up fight fixed — programmatic scroll assignments no longer re-engage detached elements via a per-element pending-scroll WeakSet. (#499)
  • Scroll chaining preventedoverscroll-behavior: contain on thinking blocks stops events propagating to the outer container. (#499)

🛠 Tool & file fixes

  • freeze_at corrected — now matches Excel UI semantics (anchor cell is the first unfrozen cell). A1 unfreezes instead of erroring. (#495)
  • Built-in doc actions work — "Open" replaced with "Copy content" (clipboard), "Download" uses data URIs instead of blob URLs that silently fail in the Office WebView. (#500)
  • Successive tool calls collapse — groups of 3+ consecutive same-tool cards start collapsed behind a summary header ("5 fill operations"). User toggle state is preserved across regrouping. (#501)

💅 UI polish

  • Toast timer race fixed — undo/reopen toasts no longer persist forever. Info toasts skip when an action toast is active; backup safety timer catches edge cases. (#497)
  • File list badge toned downborder-radius: 999px pill replaced with a subtle rounded-rect. (#496)
  • File preview scrollablemax-height increased, overscroll-behavior: contain added, horizontal scroll enabled. (#496)

Platform & infrastructure

  • Added UI gallery for agent-driven visual verification (#493)
  • Extension sandbox RPC isolated with MessageChannel (#474)
  • Blob module imports allowed in CSP for Office.js (#475)
  • Taskpane CSP test coverage split and hardened (#476)
  • Self-authored skills + secure API extension auth (#456)
  • Architecture page and extension docs layout (#455)
  • Windows sideload path clarified (#478)
  • Dependabot pi-stack cadence reduced to weekly (#468)

Validation

npm run check      ✅
npm run build      ✅
npm run test:models   ✅ (19/19)
npm run test:context  ✅ (640/640)
npm run test:security ✅ (45/45)

v0.9.0-pre

22 Feb 16:47
a089f86

Choose a tag to compare

v0.9.0-pre Pre-release
Pre-release

v0.9.0-pre release notes

Pre-release. Changes since v0.8.0-pre.

Snapshot since last release

  • Previous release tag: v0.8.0-pre (ba33117, 2026-02-16)
  • This release includes 75 first-parent commits (72 merged PRs) on main

Highlights

  • Bridge setup UX is now first-class and self-healing

    • Added ## Local Services prompt context with bridge health state at session start (#447)
    • Added inline setup cards for Python/tmux bridge failures in chat (#451)
    • Bridge gate failures now return structured tool results (gateReason, skillHint) instead of throws (#450)
    • Tightened setup guidance and a11y announcements (aria-live) for setup status regions (#452)
  • Connections got safer and more deterministic

    • Added extension connection contract + preflight path, plus /tools → Connections UX (#421, #426)
    • Migrated web-search keys + MCP tokens into connection storage flows (#432, #433)
    • Hardened auth-error redaction and rollback behavior on metadata/token persistence failures (#435, #440)
    • Added proactive setup guidance tests and follow-up hardening for extension connection refresh paths (#430, #437)
  • Context + model behavior became more cache-stable

    • Added prefix-churn observability counters and baseline/runbook docs (#431, #439)
    • Reduced unnecessary runtime/tool refresh churn with no-op skips + revision tracking (#425, #436, #446)
    • Preserved full tool disclosure for prompt-cache continuity (#423)
    • Model-switch behavior now defaults to in-place for active sessions, with fork kept as opt-in (#443)
  • Web search and external integrations improved

    • Added inline setup card UX for web search failures (#416)
    • Added Firecrawl provider and tightened Jina provider behavior (API key required) (#413)
    • Improved proxy-down error guidance for web_search, fetch_page, and MCP paths (#396, #398)
  • Broad UX reliability polish

    • Improved streaming auto-follow behavior and reduced status-tooltip jitter (#397, #401, #403, #408)
    • Improved abort UX and preserved draft recovery (Alt+Up) after aborts (#407, #418)
    • Disabled accidental dollar-delimited math parsing in markdown rendering (#405)
    • Continued UI consistency polish (icons, status/footer structure, copy cleanup) (#402, #404)

Platform, security, and maintainer updates

  • Fixed Office WebView CSP compatibility by stubbing Ajv unsafe-eval paths and follow-up bridge diagnostics hardening (#364, #366)
  • Upgraded lint/tooling baseline to ESLint 10 and aligned Node engine constraints (#385, #386)
  • Refreshed Pi model registry/dependencies to 0.54.0 and added lockstep automation in CI (#387, #388)

Notes

  • This is a minor pre-release bump due breadth of shipped UX/runtime changes since v0.8.0-pre.
  • Recommended validation before broader rollout:
    • npm run check
    • npm run build
    • npm run test:models
    • npm run test:context
    • npm run test:security

v0.8.0-pre

16 Feb 13:43

Choose a tag to compare

v0.8.0-pre Pre-release
Pre-release

v0.8.0-pre release notes

Pre-release. Changes since v0.7.0-pre.

Deploy catch-up snapshot

  • Last successful Vercel deploy on main: b5477bf (2026-02-15, PR #309)
  • This release batches 73 commits since that deploy (14 merged PRs + 1 conflict-resolution merge commit)

Highlights

  • Extensions + settings consolidation

    • Tabbed Settings flow (Logins, Extensions, More)
    • Unified Extensions Hub promoted to primary surface
    • Skills external discovery graduated from experimental mode
  • Default-on integrations and web search improvements

    • External tools now default to enabled
    • Web search now defaults to enabled
    • Jina added as the zero-config default provider, with fallback support and centralized endpoint host policy wiring
  • Files workspace overhaul (phase 1 + phase 2)

    • Redesigned list/detail layout and simplified interaction model
    • Dual-source sections for workbook files and connected folders
    • Tree structure + folder grouping per section
    • Better guards around unsupported folder actions and path-only mutations
  • Local bridge UX and packaging upgrades

    • Added/published pi-for-excel-python-bridge and pi-for-excel-tmux-bridge launcher packages
    • Default localhost bridge URLs and real-mode npx launchers
    • Kept Pyodide fallback available when the default bridge is offline
    • Graduated tmux from experimental gating in the settings flow
  • UI polish + consistency pass

    • Replaced gear/add-ons emoji icons with Lucide SVG icons
    • Improved overlay/copy consistency and settings/disclosure parity
    • Removed window.confirm dependency in favor of overlay confirmations
  • Deploy policy restored and locked with tests

    • Re-enabled normal Vercel auto-deploy behavior for main + PR previews
    • Kept non-PR feature branch deploys skipped
    • Added cross-platform regression coverage for ignoreCommand

Internal quality work

  • Continued large-file extraction/modularization work in UI/recovery/extensions paths.
  • Added/expanded tests in extensions overlay DOM, proxy precedence, UI menu labels, and Vercel deploy policy behavior.

Notes

  • This is a minor pre-release bump due broad feature/delivery scope since v0.7.0-pre.
  • Recommended validation before broader rollout:
    • npm run check
    • npm run build
    • npm run test:models
    • npm run test:context
    • npm run test:security

v0.7.0-pre

15 Feb 13:01

Choose a tag to compare

v0.7.0-pre Pre-release
Pre-release

v0.7.0-pre release notes

Pre-release. Changes since v0.6.1-pre.

Highlights

  • New add-ons and skills management UX

    • Added a top-level Add-ons surface.
    • Added a Skills catalog manager and external-skill install/remove controls.
    • Added per-skill enable/disable controls and stale-cache handling for disabled skills.
  • OAuth improvements

    • Added browser-safe OAuth flow for OpenAI (ChatGPT).
    • Added browser-safe OAuth flows for Google providers.
    • Updated login guidance/docs for manual callback URL pasting where needed.
  • Files workspace improvements

    • Added a folder tree view in the Files dialog.
    • Added stale scratch-file cleanup behavior.
    • Scoped workspace-context refresh to relevant artifacts.

UX, accessibility, and safety

  • Ran a broad sidebar/UI polish pass (focus, motion, semantics, labeling).
  • Fixed context debug pill accessibility semantics:
    • header uses semantic button behavior,
    • now exposes aria-expanded and aria-controls.
  • Added regression coverage to guard context-pill ARIA wiring.
  • Improved confirm-mode safety behavior when window.confirm is unavailable:
    • overlay-based approvals,
    • aborts respected while approvals are pending.

Internal refactors

  • Continued large-file modularization and extraction work in:
    • extension runtime/sandbox helpers,
    • extension API contracts/import helpers,
    • recovery format-state utilities,
    • shared bridge/network helpers.
  • Bumped Pi dependencies to 0.52.12.

Notes

  • This is a feature-heavy pre-release and is versioned as a minor pre-release bump.
  • Recommended validation before broader rollout:
    • npm run check
    • npm run build
    • npm run test:models
    • npm run test:context
    • npm run test:security

v0.6.1-pre (Experimental)

14 Feb 13:33

Choose a tag to compare

Pre-release

v0.6.1-pre (Experimental)

⚠️ Experimental pre-release

Pi for Excel is still experimental. This build is for testing/feedback, not mission-critical production use.

Patch pre-release after v0.6.0-pre, focused on UI correctness and rendering safety.

What’s improved

  • Markdown rendering hardening in tool cards

    • Guarded frontmatter stripping so only valid YAML frontmatter is removed.
    • Prevents accidental content loss/mis-render when tool output starts with --- but is not frontmatter.
    • Added regression coverage for markdown preprocess behavior.
  • Input/empty-state layout fixes

    • Better handling for short-height taskpane layouts.
    • Fixed narrow-width input placeholder overflow.
    • Improves usability in constrained Excel taskpane sizes.

Publish status

  • GitHub prerelease: v0.6.1-pre
  • npx proxy package: no new proxy runtime changes since 0.2.0-pre, so pi-for-excel-proxy publish was not bumped in this patch.

Install

  • Download manifest.prod.xml from this release asset.
  • Follow install docs: docs/install.md

Full changelog: v0.6.0-pre...v0.6.1-pre

v0.6.0-pre (Experimental)

14 Feb 13:19
2cfe008

Choose a tag to compare

Pre-release

v0.6.0-pre (Experimental)

⚠️ Experimental pre-release

Pi for Excel is still experimental. Use this build for evaluation/testing, not mission-critical production workflows.

This pre-release rolls up major progress since v0.5.0-pre, especially around extension capabilities, recovery, install/connect flow reliability, and release hardening.

Highlights

  • Extension bridge expanded + hardened

    • Broader mediated host capabilities (LLM/HTTP/storage/skills/clipboard/download + dynamic tool lifecycle).
    • Follow-up modularization of sandbox/runtime helper layers for maintainability.
  • Conventions system upgrades

    • Format-string based conventions and preset improvements.
    • Better prompt/tooling integration for convention-aware formatting flows.
  • Install/login/connect improvements

    • Landing + docs aligned to one-command proxy setup:
      • npx pi-for-excel-proxy
      • curl -fsSL https://piforexcel.com/proxy | sh
    • Added guard checks to prevent landing/install copy drift.
  • Recovery + safety improvements

    • Manual full-workbook backup command.
    • Recovery UX/test refinements and stronger destructive-action affordances.
  • Data + tooling enhancements

    • In-browser Pyodide fallback path for Python workflows.
    • Multi-provider web search + fetch_page retained and hardened in this cycle.
  • UX consistency sweep

    • Overlay consistency work, safer destructive controls, improved utilities menu discoverability, and polish fixes.
  • Release validation infrastructure

    • Added/expanded release smoke checklist, run logs, host templates, and automated external-tool error-path matrix coverage.

npm / npx

  • Published: pi-for-excel-proxy@0.2.0-pre
  • Dist-tags:
    • latest0.2.0-pre
    • pre0.2.0-pre

Install

  • Download manifest.prod.xml from this release asset.
  • Install instructions: docs/install.md

Full changelog: v0.5.0-pre...v0.6.0-pre

v0.5.0-pre (Experimental)

14 Feb 01:24
7536170

Choose a tag to compare

Pre-release

v0.5.0-pre (Experimental)

This prerelease focuses on onboarding + external data workflows.

Highlights

  • Search overhaul: web_search now supports Serper (default), Tavily, and Brave with clearer /integrations provider setup and inline key validation.
  • New fetch_page tool: pull readable page content (markdown) after search hits for better source-grounded answers.
  • One-command proxy bootstrap: improved local OAuth/CORS setup with npx pi-for-excel-proxy and hosted curl | sh bootstrap path.
  • Landing-page UX polish: mobile responsiveness and connect-section maintainability improvements.
  • Execution controls: introduced safe/YOLO mode toggle for tool execution behavior.

Install / test this prerelease

Experimental note

Still prerelease quality: intended for testing and feedback before stable cuts.


What's Changed

  • feat(recovery): checkpoint supported format_cells mutations by @tmustier in #112
  • feat(extensions): default sandbox runtime for untrusted sources by @tmustier in #116
  • feat(extensions): add experimental Widget API v2 lifecycle slice by @tmustier in #113
  • refactor(integrations): rename runtime skills and add Agent Skills mapping by @tmustier in #117
  • chore(deps-dev): bump qs from 6.14.1 to 6.14.2 by @dependabot[bot] in #118
  • feat(recovery): checkpoint supported modify_structure actions by @tmustier in #119
  • feat(extensions): add widget v2 collapsible headers + size bounds by @tmustier in #120
  • fix(ui): rewrite user-facing copy and move instructions hint above textarea by @tmustier in #115
  • feat(skills): enable runtime loading of bundled Agent Skills by @tmustier in #122
  • fix(extensions): align sandbox rollback semantics for untrusted sources by @tmustier in #123
  • docs(extensions): finish widget API v2 migration guidance by @tmustier in #125
  • feat(skills): slice A session-scoped runtime skill cache by @tmustier in #127
  • feat(recovery): checkpoint format_cells dimension mutations by @tmustier in #126
  • feat(skills): slice B refresh semantics + structured details by @tmustier in #128
  • feat(skills): slice C external discovery + provenance by @tmustier in #130
  • docs(agents): tighten AGENTS.md for high-signal guidance by @tmustier in #131
  • feat(recovery): checkpoint format_cells merge mutations by @tmustier in #129
  • feat(tools): add experimental execute_office_js tool by @tmustier in #132
  • feat(recovery): Backups (Beta) with in-between-saves retention by @tmustier in #133
  • feat(recovery): broaden conditional_format checkpoint rule coverage by @tmustier in #134
  • feat(tools): add capability registry foundation for issue-18 by @tmustier in #135
  • fix(ui): consolidate overlay lifecycle and restore overlay scrolling by @tmustier in #137
  • feat(files): expose built-in assistant docs in shared files workspace by @tmustier in #136
  • refactor(extensions): share overlay lifecycle in extension runtimes by @tmustier in #139
  • refactor(context): centralize disclosure selection for issue-18 by @tmustier in #138
  • refactor(files-ui): quick doc filters + extracted dialog helpers by @tmustier in #140
  • refactor(ui): centralize renderer/humanizer metadata for issue-18 by @tmustier in #142
  • feat(recovery): checkpoint visual conditional-format rules by @tmustier in #141
  • feat(tools): graduate execute_office_js to always-on approval flow by @tmustier in #144
  • feat(recovery): checkpoint additional modify_structure actions by @tmustier in #143
  • refactor(tools): split experimental tool gate implementation by @tmustier in #145
  • feat(recovery): checkpoint safe destructive structure deletes by @tmustier in #146
  • docs(recovery): record full-file snapshot feasibility decision by @tmustier in #148
  • docs(recovery): remove private research-path reference by @tmustier in #149
  • refactor(ui): harden overlay stack and add lifecycle tests by @tmustier in #147
  • refactor(recovery): extract phase-1 recovery foundation modules by @tmustier in #150
  • refactor(tools): split experimental tool gates into focused modules by @tmustier in #151
  • refactor(tools): add mutation M1 helper primitives by @tmustier in #152
  • refactor(recovery): split recovery-log codec and store internals by @tmustier in #153
  • refactor(recovery): extract format-state modules (R1) by @tmustier in #154
  • refactor(recovery): extract structure-state module (R2) by @tmustier in #155
  • refactor(recovery): extract restore strategy from recovery-log by @tmustier in #156
  • refactor(tools): migrate first mutation tools to M1 helpers by @tmustier in #157
  • refactor(recovery): extract conditional/comment state modules (R3) by @tmustier in #158
  • refactor(tools): migrate remaining mutation tools to shared helpers by @tmustier in #159
  • test(recovery): split recovery-log suites for CLOSE1 by @tmustier in #160
  • test(recovery): add reproducible Node v25-safe recovery test command by @tmustier in #162
  • refactor(ui): modularize provider overlay and keyboard shortcut handlers by @tmustier in #163
  • docs(readme): point Pi link to pi.dev by @tmustier in #164
  • docs(landing): add proposed non-technical homepage draft by @tmustier in #165
  • fix(auth): default proxy URL to localhost helper by @tmustier in #166
  • fix(files): rename to Files, fix binary download, remove Recent Activity by @tmustier in #186
  • feat(recovery): preserve data for destructive structure restores by @tmustier in #184
  • feat(proxy): one-command login setup via npx + curl bootstrap by @tmustier in #185
  • fix(ui): improve prompt transparency, toast errors, and welcome/status a11y by @tmustier in #183
  • feat(ui): tab context actions, overflow controls, and dark mode by @tmustier in #187
  • feat(extensions): expand mediated host bridge capabilities by @tmustier in #188
  • feat(workspace): folder conventions + files list path filter by @tmustier in #181
  • fix(website): make landing page mobile responsive by @tmustier in #194
  • fix(ui): keyboard shortcuts overlay — grouped, platform keys, scroll, clearer descriptions by @tmustier in #193
  • refactor(website): clean up connect-section inline styles by @tmustier in #196
  • refactor(ui): split components.css into focused modules by @tmustier in #197
  • refactor(recovery): split structure-state into capture/apply modules by @tmustier in #198
  • fix(landing): make mobile nav responsive and extract landing assets by @tmustier in #200
  • refactor(ui): unify overlay close controls and sizing tiers by @tmustier in #202
  • refactor(ui): extract shared overlay header builder by @tmustier in #205
  • feat(search): multi-provider web search + fetch_page by @tmustier in #203
  • feat(execution): add yolo/safe mode toggle by @tmustier in #204
  • refactor(ui): share overlay dom helper primitives by @tmustier in #206
  • ch...
Read more

v0.4.0-pre (Experimental)

12 Feb 17:01
0946e06

Choose a tag to compare

Pre-release

v0.4.0-pre (Experimental)

This is a large experimental prerelease focused on reliability, recovery, extensions, and onboarding.

Highlights

  • Non-technical install path improved: clearer manifest.prod.xml install flow + OAuth/CORS troubleshooting docs.
  • Explainability upgrades: new explain_formula, dependents tracing mode, collapsible lineage tree, and explain-changes drawer.
  • Recovery + audit expansion: workbook checkpoint history, quick revert, broader mutation coverage, and audit export.
  • Extensions platform growth: extension manager UX, permission-gated capabilities, revoke/review controls, and sandbox hardening.
  • Session/context hardening: workbook-scoped session restore, multi-session runtime improvements, and context compaction/invalidation fixes.
  • Security hardening: stronger CSP/proxy protections, OAuth storage cleanup, and CI security gates.

Install / test this prerelease

Experimental note

This prerelease includes substantial platform changes. It is intended for testing and feedback before a stable cut.


What's Changed

  • refactor: capability registry + tool UI drift fixes by @tmustier in #34
  • fix(security): harden markdown rendering and local proxy by @tmustier in #35
  • refactor: structured tool result details (phase 2) by @tmustier in #36
  • feat: workbook context + per-workbook session restore by @tmustier in #37
  • perf(bundle): slim taskpane bundle by @tmustier in #38
  • docs(agents): codify quality conventions by @tmustier in #39
  • feat: agent infra + humanized tool results by @tmustier in #42
  • build(deps-dev): bump vite from 6.4.1 to 7.3.1 by @dependabot[bot] in #47
  • build(deps-dev): bump eslint from 9.39.2 to 10.0.0 by @dependabot[bot] in #46
  • build(deps): bump actions/setup-node from 4 to 6 by @dependabot[bot] in #43
  • build(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #44
  • feat: implement phase-1 multi-session workbook runtime by @tmustier in #55
  • build(deps): bump the npm-minor-and-patch group with 6 updates by @dependabot[bot] in #45
  • fix(security): stage CSP rollout in report-only mode by @tmustier in #56
  • feat(debug): add payload snapshot history in context pill by @tmustier in #57
  • fix(security): lean P0 hardening (CSP + extension guardrails) by @tmustier in #58
  • feat(context): add deterministic first-turn tool bundles by @tmustier in #59
  • fix(security): close issue #26 with disconnect UX + threat model by @tmustier in #61
  • feat(context): shape older tool results for model context by @tmustier in #60
  • ci(security): add dependency review and pre-push audit guard by @tmustier in #63
  • fix(security): remove legacy OAuth localStorage migration path by @tmustier in #65
  • feat(context): inject workbook blueprint only when invalidated by @tmustier in #64
  • perf(context): tune compaction triggers and harden invalidation tests by @tmustier in #66
  • feat(compaction): preserve archived history after /compact by @tmustier in #67
  • test(taskpane): validate compaction action queue ordering by @tmustier in #68
  • feat(sessions): make restore workbook-scoped by default by @tmustier in #69
  • feat: close issue #21 and #22 (thinking duration + view_settings expansion) by @tmustier in #70
  • build(deps): bump marked from 17.0.1 to 17.0.2 in the npm-minor-and-patch group by @dependabot[bot] in #71
  • chore(dependabot): ignore eslint major updates by @tmustier in #73
  • feat(ui): status popovers for thinking/context + resume UX spec by @tmustier in #74
  • feat(experimental): add tmux bridge token command by @tmustier in #75
  • feat(experimental): add /experimental tmux-status diagnostics by @tmustier in #76
  • feat(extensions): add dynamic extension manager, tool registration, and /extensions UI by @tmustier in #77
  • docs(extensions): add MVP extension authoring guide by @tmustier in #82
  • docs(extensions): draft sandbox + permissions architecture by @tmustier in #84
  • feat(runtime): python/libreoffice bridge tools + extension manager UX by @tmustier in #78
  • feat(ui): add ⋯ utilities menu + liquid glass tab strip by @tmustier in #83
  • fix(security): resolve code scanning alerts and harden local proxy by @tmustier in #85
  • fix(ui): prevent Esc from interrupting agent when overlay is open by @tmustier in #87
  • feat(extensions): add permission-gated capabilities and v2 registry by @tmustier in #86
  • docs(upcoming): sync closed status for #6 and #25 by @tmustier in #88
  • feat(conventions): structured storage + tool for formatting defaults by @tmustier in #89
  • refactor(ui): unify theme tokens and provider/login styling by @tmustier in #91
  • feat(extensions): add permission review/revoke UX for extensions by @tmustier in #92
  • feat(skills,files): add external tools and files workspace by @tmustier in #93
  • chore(ui): remove unused header style stub by @tmustier in #94
  • feat(audit): add workbook mutation diffs and local change log by @tmustier in #95
  • feat(recovery): add workbook checkpoint history and quick revert by @tmustier in #96
  • feat(audit): streamline mutation receipts and previews by @tmustier in #97
  • feat(ui): add recovery history overlay and audit receipt polish by @tmustier in #98
  • feat(audit): extend mutation coverage and add audit export by @tmustier in #99
  • feat(audit): cover remaining workbook-mutating tool paths by @tmustier in #103
  • feat(recovery): surface checkpoint coverage for non-write mutations by @tmustier in #102
  • feat(audit): add optional explain-changes drawer by @tmustier in #105
  • feat(ux): esc blur, overlay close, and keyboard chat navigation by @tmustier in #104
  • feat(trace): add dependents mode and collapsible lineage tree by @tmustier in #108
  • feat(recovery): add checkpoints for conditional format and comments by @tmustier in #106
  • feat(extensions): sandbox runtime hardening + chat-driven extension authoring by @tmustier in #107
  • feat(recovery): surface non-checkpoint status for view_settings by @tmustier in #109
  • feat(explainability): add explain_formula workflow by @tmustier in #110
  • feat(install): improve non-technical install and OAuth proxy guidance by @tmustier in #114

New Contributors

Full Changelog: v0.3.0-pre...v0.4.0-pre

v0.3.0-pre

10 Feb 02:06

Choose a tag to compare

v0.3.0-pre Pre-release
Pre-release

What's new in v0.3.0-pre

Conventions & formatting

  • Composable cell styles: Named styles ("currency", "total-row", "input") compose like CSS classes — style: ["currency", "total-row"] applies currency format + bold + top border. 6 format presets + 5 structural styles built in.
  • Format presets: number, integer, currency, percent, ratio, text — with accounting alignment, parenthetical negatives, and -- zeros. Override with number_format_dp and currency_symbol.
  • Border color: New border_color param on format_cells — applies to all edges in the same call.
  • Humanized tool cards: Tool inputs and outputs show human-readable labels (e.g. "currency ($, 2dp)") instead of raw Excel format strings.

New tool: comments

  • comments — read, add, update, reply, delete, resolve/reopen cell comments and threaded replies.
  • read_range detailed mode now surfaces comments within the range.

UI improvements

  • Markdown rendering in tool cards: Tool outputs containing tables, lists, or headers render as formatted markdown instead of raw text.
  • Clickable cell references: Cell addresses in assistant messages are clickable — navigates to the range with a brief highlight glow.
  • Revised welcome copy: More specific tagline and richer example prompts that expand into well-crafted requests.
  • Queue/layout fixes: Improved tool card spacing, thinking indicator, and user message alignment.
  • Case-insensitive model search in the model selector.

Agent improvements

  • Blueprint invalidation: Workbook structure cache refreshes after modify_structure calls (add/delete sheets, insert rows, etc.).
  • Input style guidance: System prompt now instructs the model to mark assumption cells with the input style.

Housekeeping

  • ESLint CI fix (tests + config included in project).
  • Docs and roadmap updated.

v0.2.0-pre — Tool consolidation + code quality

09 Feb 13:19

Choose a tag to compare

Second pre-release — major tool consolidation, UI polish, and code quality overhaul.

Highlights

🔧 Tool consolidation: 14 → 10

Reduced the agent interface from 14 always-on tools to 10 — one tool per distinct verb, no overlap or ambiguity.

  • read_range now supports three formats: compact (markdown table), csv (values-only), and detailed (with formulas). Absorbs the old get_range_as_csv.
  • get_workbook_overview gains an optional sheet param for sheet-level detail — objects, tables, named ranges, and a data preview. Absorbs get_all_objects and the proposed get_sheet_summary (#8).
  • search_workbook gains context_rows — surrounding rows for each match. Absorbs the proposed find_by_label (#7).
  • read_selection and get_recent_changes removed — auto-context already injects both every turn.

🖥️ New tool: view_settings

Control gridlines, headings, freeze panes, and tab color — the view layer that was previously inaccessible to the agent.

🎨 Tool card UI overhaul

  • Compact collapsed tool cards with bold action verbs ("Read A1:D10", "Write B5")
  • Consecutive same-tool calls grouped with expand/collapse
  • Tool output rendered as markdown
  • Spinner for in-progress tools

🔒 Type-aware linting

Upgraded ESLint from 4 hand-picked rules to the full typescript-eslint/recommendedTypeChecked preset with type-aware analysis. Fixed all 75 issues across 28 source files:

  • Floating/misused promises → void or async wrappers
  • Unsafe any from Office JS API → explicit unknown + narrowing
  • Removed unnecessary type assertions
  • Zero errors, zero warnings

🏗️ Architecture refactors

Major refactor of the monolithic taskpane.ts into focused modules:

  • taskpane/init.ts, bootstrap.ts, sessions.ts, keyboard-shortcuts.ts, context-injection.ts, default-model.ts, queue-display.ts, welcome-login.ts
  • Builtin commands split by domain: clipboard, export, model, overlays, settings
  • ModelSelector patch + Lit class-field-shadowing patch isolated in compat/

🌐 CORS proxy improvements

  • Production CORS proxy + local relay server
  • HTTPS mode for local dev (npm run proxy:https)
  • Routes Codex + Claude calls through configured proxy
  • Strip content-encoding to avoid double-decompression

📦 Distribution

  • Hosted homepage + production manifest download
  • npm run manifest:prod generator
  • Vercel deployment config
  • GitHub Actions CI gate

Breaking changes

None — all tool changes are backward-compatible for the agent. The 4 removed tools were either redundant with auto-context or absorbed into existing tools with new optional parameters.

Stats

  • 67 commits since v0.1.0
  • 10 tools (was 14)
  • 67 source files, ~8,500 LOC
  • 0 lint errors, 0 type errors