Releases: tmustier/pi-for-excel
v0.9.1-pre
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.1 —
claude-opus-4-6andclaude-sonnet-4-6now 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 allmarkedinstances via Viteresolve.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) tomarkdown-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 prevented —
overscroll-behavior: containon thinking blocks stops events propagating to the outer container. (#499)
🛠 Tool & file fixes
freeze_atcorrected — now matches Excel UI semantics (anchor cell is the first unfrozen cell).A1unfreezes 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 down —
border-radius: 999pxpill replaced with a subtle rounded-rect. (#496) - File preview scrollable —
max-heightincreased,overscroll-behavior: containadded, 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
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 Servicesprompt 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)
- Added
-
Connections got safer and more deterministic
- Added extension connection contract + preflight path, plus
/tools → ConnectionsUX (#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)
- Added extension connection contract + preflight path, plus
-
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
-
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.0and 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 checknpm run buildnpm run test:modelsnpm run test:contextnpm run test:security
v0.8.0-pre
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
- Tabbed Settings flow (
-
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-bridgeandpi-for-excel-tmux-bridgelauncher 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
- Added/published
-
UI polish + consistency pass
- Replaced gear/add-ons emoji icons with Lucide SVG icons
- Improved overlay/copy consistency and settings/disclosure parity
- Removed
window.confirmdependency 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
- Re-enabled normal Vercel auto-deploy behavior for
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 checknpm run buildnpm run test:modelsnpm run test:contextnpm run test:security
v0.7.0-pre
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-expandedandaria-controls.
- Added regression coverage to guard context-pill ARIA wiring.
- Improved confirm-mode safety behavior when
window.confirmis 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 checknpm run buildnpm run test:modelsnpm run test:contextnpm run test:security
v0.6.1-pre (Experimental)
v0.6.1-pre (Experimental)
⚠️ Experimental pre-releasePi 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, sopi-for-excel-proxypublish was not bumped in this patch.
Install
- Download
manifest.prod.xmlfrom this release asset. - Follow install docs:
docs/install.md
Full changelog: v0.6.0-pre...v0.6.1-pre
v0.6.0-pre (Experimental)
v0.6.0-pre (Experimental)
⚠️ Experimental pre-releasePi 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-proxycurl -fsSL https://piforexcel.com/proxy | sh
- Added guard checks to prevent landing/install copy drift.
- Landing + docs aligned to one-command proxy setup:
-
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_pageretained 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:
latest→0.2.0-prepre→0.2.0-pre
Install
- Download
manifest.prod.xmlfrom this release asset. - Install instructions:
docs/install.md
Full changelog: v0.5.0-pre...v0.6.0-pre
v0.5.0-pre (Experimental)
v0.5.0-pre (Experimental)
This prerelease focuses on onboarding + external data workflows.
Highlights
- Search overhaul:
web_searchnow supports Serper (default), Tavily, and Brave with clearer/integrationsprovider setup and inline key validation. - New
fetch_pagetool: 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-proxyand hostedcurl | shbootstrap 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
- Download
manifest.prod.xmlfrom this release’s assets. - Follow install docs: https://github.com/tmustier/pi-for-excel/blob/main/docs/install.md
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...
v0.4.0-pre (Experimental)
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.xmlinstall 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
- Download
manifest.prod.xmlfrom this release’s assets. - Follow install docs: https://github.com/tmustier/pi-for-excel/blob/main/docs/install.md
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
- @tmustier made their first contribution in #34
- @dependabot[bot] made their first contribution in #47
Full Changelog: v0.3.0-pre...v0.4.0-pre
v0.3.0-pre
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 withnumber_format_dpandcurrency_symbol. - Border color: New
border_colorparam onformat_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_rangedetailed 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_structurecalls (add/delete sheets, insert rows, etc.). - Input style guidance: System prompt now instructs the model to mark assumption cells with the
inputstyle.
Housekeeping
- ESLint CI fix (tests + config included in project).
- Docs and roadmap updated.
v0.2.0-pre — Tool consolidation + code quality
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_rangenow supports three formats: compact (markdown table), csv (values-only), and detailed (with formulas). Absorbs the oldget_range_as_csv.get_workbook_overviewgains an optionalsheetparam for sheet-level detail — objects, tables, named ranges, and a data preview. Absorbsget_all_objectsand the proposedget_sheet_summary(#8).search_workbookgainscontext_rows— surrounding rows for each match. Absorbs the proposedfind_by_label(#7).read_selectionandget_recent_changesremoved — 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 →
voidor async wrappers - Unsafe
anyfrom Office JS API → explicitunknown+ 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:prodgenerator- 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