This is a scratch verification commit for the release-automation fix in
PR #739 (direct changelog push using RELEASE_PAT as a ruleset bypass
actor). It will be reverted immediately by a follow-up commit.
* feat: Agent Mode - watch AI work in Excel in real-time (#470)
Implement Agent Mode for Excel automation with window management capabilities:
Core Infrastructure:
- Add IWindowCommands interface with 9 actions (show, hide, set-state, set-position, arrange, bring-to-front, get-info, set-status-bar, clear-status-bar)
- Implement WindowCommands with Excel COM interop and Win32 P/Invoke
- Add SessionManager visibility tracking per session
- Wire DispatchWindowAsync in ExcelMcpService with session-scoped operations
Agent Mode UX:
- LLM guidance: ask user with action cards before starting multi-step tasks
- Action cards include tradeoffs (visible = slower rendering; hidden = faster but no visual feedback)
- Add excel_agent_mode.md and window.md shared skill references
- Update behavioral-rules.md, ServerInstructions, and SKILL.md
Documentation:
- Add Agent Mode feature card and example to gh-pages/index.md
- Add Window Management section to gh-pages features
- Update mcpb/README.md with Agent Mode highlights
- Update all READMEs with new operation counts (225 total)
- Update FEATURES.md and CHANGELOG.md
Bug Fix:
- Fix ExcelBatch.Dispose race condition: wait for EXCEL.EXE process to terminate before returning, preventing CO_E_SERVER_EXEC_FAILURE on rapid create/destroy cycles
Scripts:
- Fix all 14 PowerShell scripts for cross-environment compatibility
Tests:
- Add 29 integration tests for Window commands (visibility, state, position, arrange, status bar, info)
* fix: address bug reports from dashboard session
Bug 5 - SetDataLabels seriesIndex=0: treat 0 as null (apply to all
series) since MCP clients may send 0 instead of omitting the parameter.
Improved all series index error messages with 1-based indexing hint.
Bug 6 - CaptureSheet: cap UsedRange to 500 rows x 50 columns to avoid
CopyPicture failures on sheets with formatting extending far beyond data.
Bug 7 - RPC_S_SERVER_UNAVAILABLE (0x800706BA): add handling in resilience
pipeline and WithSessionAsync. Auto-cleanup dead sessions and return
friendly error message instead of cryptic COM exception.
Bug 3 - Documentation: fix incorrect 'range_format set-number-format'
references (should be 'range set-number-format') in 5 skill/template files.
Bug 2/4 - Improve tool descriptions for SetStyle (style_id parameter),
SetDataLabels (seriesIndex=0 semantics), and AddTrendline (type values).
Screenshot stability: add 1s render delay after visibility toggle in
ExportRangeAsImage to prevent CopyPicture crashes. Start screenshot test
batches with show:true since CopyPicture requires a visible window.
Bug 1 - Filed as GitHub issue #472 (session timeout auto-save).
Bug 2/4 - Filed as GitHub issue #473 (parameter naming discoverability).
* fix: auto-save sessions on shutdown and add session creation resilience
- SessionManager.Dispose() auto-saves all live sessions before closing
to prevent silent data loss on MCP client disconnect or process exit
- ServiceBridge.Dispose() + Program.cs finally block ensure cleanup runs
- Added CreateSessionCreationPipeline() in ResiliencePipelines for
transient COM failures (CO_E_SERVER_EXEC_FAILURE, RPC_E_CALL_FAILED)
during Excel process startup under resource constraints
- SessionManager.CreateSession/CreateSessionForNewFile wrapped in retry
- Tests simplified: removed test-level retry, uses per-test unique files
---------
Co-authored-by: Stefan Broenner <stefan.broenner@microsoft.comm>
* fix(cli): connection set-properties now passes connectionString and commandText (#421)
The set-properties action was only passing refreshOnOpen and enableRefresh,
but not connectionString or commandText - making it impossible to update
OLEDB connection queries via CLI.
Added the missing parameters to the args object, matching how the create
action already handles them.
* fix(cli): add missing parameter mappings in args switch statements
Fixes#423
Several CLI commands had Settings properties defined but not passed to daemon:
- ConnectionCommand: Added description, backgroundQuery, savePassword, refreshPeriod
- PowerQueryCommand: Added targetSheet, targetCellAddress for create and load-to
- ChartCommand: Added left, top, width, height for create and move operations
- VbaCommand: Added timeoutSeconds for run action
- TableCommand: Fixed append to properly parse CSV into rows format
Also added pre-commit check (check-cli-settings-usage.ps1) to prevent this issue
in the future by detecting Settings properties that are not used in args.
* docs: add CHANGELOG entry and Rule 27 for CHANGELOG updates before merge
---------
Co-authored-by: Stefan Broenner <stefan.broenner@microsoft.comm>