Changelog
New features, fixes, and improvements — most recent first.
Comprehensive 9-phase security and quality hardening — XSS prevention, event listener cleanup, error handling standardisation, accessibility, proactive token refresh, CSS design tokens, validation UX, and tsconfig modernisation. IP spoofing fix in rate limiter, WCAG 2.1 AA compliance, Azure SWA CI/CD overhaul migrating the API to a standalone bun project, feature-based module reorganisation, and weekly Dependabot review automation.
api/_shared/utils.js prioritises x-azure-clientip and takes the last IP in X-Forwarded-For to prevent header-spoofing bypass.editor.js, utils.js, chip-context-menu.js — innerHTML replaced with DOM API; markdown link parser validates protocols to reject javascript: URIs.issue-report.js — _parseMarkdown builds anchors via DOM APIs with URL constructor validation before any HTML escaping.dialogs.js — focusTrap() utility applied to all custom modals (Help, Issue Report, Startup Welcome).taskpane.html — ARIA roles (alertdialog, dialog, menu, menuitem) and aria-live="polite" on dynamic regions added.AbortController pattern for modal listeners; listener-registry.js utility for consistent cleanup; duplicate drag/drop listener guard in variables-panel.js.handleError(error, context, level) in utils.js with silent, status (toast), and critical levels.validatePage2() in template.js displays inline errors; variable name warnings added to preview.tsconfig.json modernised — ES5 → ES2022, strict mode enabled, deprecated options removed.core/, features/, ui/, extensions/, __tests__/.express-rate-limit downgraded to 7.5.0 to resolve Azure Functions compatibility.vi.mock paths corrected in suggestion.test.js after module reorganisation.origin and azdevops remotes..npmrc added; workspaces configuration added.ajv pinned to ^8 to fix office-addin-manifest validate breakage.Email attachments support, rich image and link context-menu editing in the TipTap editor, Gitleaks secret scanning in CI, tenant ID security hardening in the token exchange API, and a series of bug fixes for email field persistence and issue reporting.
.github/workflows/gitleaks.yml) and pre-commit hook integration for local scanning.emailConfig columns stored as full arrays instead of single values.debouncedSaveTemplate called after drop.0 visually distinct from O.data-detection.js — regex constants hoisted out of per-row loop, eliminating repeated recompilation at scale.Template auto-save to workbook, co-authoring warning banner, help tab redesign with a new Collaboration section, diagnostic info in issue reports, and a new Known Issues tab to reduce duplicate reporting.
Office.Settings — subject, body, sender config, and table builder state survive workbook close/reopen. Subtle ✓ Saved indicator fades in after each save.localStorage — mappings persist when reopening the workbook on any device.template.js — updateLivePreview keeps appState.template.subject in sync on every input event.