Skip to content

feat(webv2): restore the What's New notes and point docs at the v7 site - #9644

Merged
joshistoast merged 7 commits into
invoke-ai:mainfrom
lstein:feat/whats-new
Oct 2, 2026
Merged

joshistoast merged 7 commits into
invoke-ai:mainfrom
lstein:feat/whats-new

Conversation

@lstein

@lstein lstein commented Oct 2, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

This brings back the "What's New" notes from 6.14.2 and earlier in the v7 (webv2) UI, redesigned around the v7 highlights, and makes the UI show the real release version instead of a hard-coded 7.0.

  • What's New dialog. A larger dialog led by the v7 logo, the title and a server-version badge. Headline features show as icon cards (whatsNew.highlights: redesigned interface, projects, rebuilt Canvas, expanded model support), with the remaining notes listed under "Also in this release" (whatsNew.items). Read the Docs and Read Release Notes (releases/tag/v<server version>) are footer buttons. The <StrongComponent> emphasis from 6.14 is gone; card titles carry that emphasis now.
  • Automatic first-run showing. The dialog opens on its own once per server version for each account. It waits until the account's workbench preferences have loaded and the alpha notice has been dismissed, so the two never stack. Dismissing it stores whatsNewSeenVersion in the account's preferences.
  • Lightbulb button. A lightbulb sits in the app menu footer, between Settings and Documentation. It uses the same Phosphor LightbulbFilament (bold) glyph as 6.14.2, vendored into VendoredIcon.tsx because webv2 doesn't depend on react-icons.
  • Launchpad entry. The launchpad has no app menu, so its sidebar footer gets a "What's New in Invoke" action with the same lightbulb, between Preferences and Help and resources.
  • Home in the Invoke menu. The editor's Invoke menu gains a Home item, with the launchpad's house icon, above the Manage group.
  • App version. APP_VERSION was hard-coded to '7.0' and went stale (the server is 7.0.0-rc1). Vite now reads __version__ from invokeai/version/invokeai_version.py, the same file the release workflow checks against the tag. The splash screen, app menu, Help menu, .invk export manifest, and diagnostics and log exports all show the real version. The release process still bumps only that one file.
  • Docs link. The app-menu Documentation icon and the launchpad Help → Documentation entry now point to https://invoke-ai.github.io/InvokeAI-7/.

Implementation notes

  • Where the server version lives. The server version is kept in whatsNewStore, not in the TanStack query cache. The gate mounts above the router, and account transitions call queryClient.clear() without remounting it. A query-backed version therefore never arrived in the real app, even though the unit tests passed. The version is loaded from the authenticated route's beforeLoad, and opening the dialog from the menu retries it.
  • Closing before the version loads. A manual close sets a dismissed flag for the rest of the page load. Without it, a version that arrived late would reopen notes the user had just closed.
  • Initial focus. Focus starts on the dialog panel. An automatic open has no click behind it, so focusing the first link would have drawn a keyboard focus ring on it.
  • Highlights catalog. Each card's icon is paired with its whatsNew.highlights.<key> entry in WhatsNewDialog.tsx, so adding a headline feature means adding both. The browser test fails if a catalog highlight has no card.
  • Build-time version. The version is injected as import.meta.env.APP_VERSION, not as a global __APP_VERSION__ define: Vitest browser mode re-encodes string globals, so they arrive wrapped in an extra pair of quotes. The build fails if the version file is missing or its __version__ line can't be parsed; there is no fallback.
  • Startup bundle. appMetadata, whatsNewStore and useWhatsNew join ROUTE_SHARED_MODULES, so startup request counts stay at the baseline. The build and browser baselines are re-recorded for those three modules entering the startup graph (measured cost under QA Instructions). The baseline's image-byte drop comes from main's assets changing since the 2026-09-29 capture. The 113 KB logo loads only when the dialog opens.
  • Translation-key test. translationKeys.test.ts now treats an array's own path as a key, because arrays are read whole with returnObjects.
  • Test fixtures. The mock backend seeds whatsNewSeenVersion so journeys don't open on the dialog, and the topbar-menu accessibility journey includes the new footer item in its keyboard order.

Related Issues / Discussions

Follows #9613 (InvokeAI 7 alpha); the highlights are drawn from its release notes.

QA Instructions

  • pnpm lint (format, oxlint, tsc, architecture): passes.
  • pnpm test: 9290 passed.
  • pnpm test:browser: all files pass, including WhatsNewDialog tests for:
    • automatic open, persisting the version on dismissal, and alpha-notice gating;
    • every catalog highlight and note rendering;
    • manual open, which writes nothing;
    • a late version after a manual close;
    • a new account seeing the notes again;
    • initial focus.
  • pnpm test:accessibility: all 17 journeys pass.
  • pnpm test:performance:build (check-architecture-performance.mjs): passes.
  • pnpm test:performance:browser: passes after re-recording the browser baseline for the three What's New boot modules. Startup scripts grow by 4.8 KB on the launchpad and 7.5 KB in the editor, and other assets by 1.2 KB (mostly the English catalog), with no new requests. The editor's image bytes drop by 112 KB because the previous capture predates main's asset changes. The 113 KB logo is not loaded at startup.
  • App version: APP_VERSION is 7.0.0-rc1 in Node Vitest, browser Vitest, vite dev and the production bundle. A build in the Docker stage's directory layout succeeds, and fails with a clear error when the version file is missing or malformed.
  • Not run: the Docker image build itself.
  • In a browser against the mock backend (dark and light themes; 1440×900 and 1280×720):
    • the dialog opens automatically for an unseen version and has no focus ring;
    • after dismissing it and reloading, it stays closed;
    • the menu button opens it;
    • Tab reaches the footer links and Esc closes it;
    • at 1280×720 the body scrolls under a fixed header and footer.

Review

No material findings remain. Remaining limitations:

  • Tab with an outdated version. A tab left open since before an upgrade pushes its whole preference document whenever any setting changes. That can roll whatsNewSeenVersion back, so the notes show once more. Every preference already behaves this way.
  • Late version. If the version request is slow, the notes can appear on top of another dialog that is already open.
  • Settings-load fallback. When the backend settings load fails and local settings are used instead, the dialog can close and reopen on navigation.
  • Dev builds. The release-notes link points to a tag that doesn't exist on development builds.
  • Anima models. The "Expanded model support" card mentions larger Anima models, which have not merged yet.

Compatibility / Rollout

  • Docker. The web-builder stage now mirrors the repository layout (/build/invokeai/frontend/webv2 plus /build/invokeai/version/invokeai_version.py), and the final stage copies dist from the new path.
  • Builds outside the repository. A webv2 build without invokeai/version/invokeai_version.py two directories up now fails. The wheel script, CI workflows and Dockerfile all build inside the repository layout.

Checklist

  • The PR has a short but descriptive title, suitable for a changelog
  • Meaningful regression coverage added / updated where needed; obsolete tests/code removed
  • Persisted-state and API changes include required migrations / compatibility validation
  • Relevant performance/efficiency opportunities considered; material claims have evidence
  • Material review findings resolved and relevant checks rerun
  • Documentation added / updated (if applicable)
  • Updated What's New copy (if doing a release after this PR)

🤖 Generated with Claude Code

Add a lightbulb to the app menu footer, between Settings and Documentation,
that opens a small What's New dialog listing the `whatsNew.items` catalog
entries with links to the release notes and the docs. The dialog also opens
once per server version for each account, after preferences load and the
alpha notice is acknowledged; dismissing it records `whatsNewSeenVersion` in
the account's workbench preferences.

The server version is held in the What's New store rather than the query
cache: the gate mounts above the router, and account transitions clear that
cache without remounting it. Initial focus lands on the dialog panel so the
automatic showing does not draw a keyboard focus ring on the first link.

The documentation links now go to https://invoke-ai.github.io/InvokeAI-7/.

Keep the new boot modules in the route-shared chunk so startup requests stay
at baseline, and re-record the build baseline for the three modules the
startup graph now contains.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@github-actions github-actions Bot added the frontend PRs that change frontend files label Oct 2, 2026
@lstein lstein added the 7.0.0 label Oct 2, 2026
…pp menu

The launchpad has no app menu, so its rail footer gets a What's New action
with the same lightbulb, between Preferences and Help. The editor's Invoke
menu gains a Home item, with the launchpad's house icon, above Manage.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@lstein
lstein requested a review from joshistoast October 2, 2026 02:26
Widen the dialog and lead with the v7 logo, title and version badge.
Headline features show as icon cards from `whatsNew.highlights`, with the
remaining notes listed beneath and the docs and release notes as footer buttons.
Replace the hard-coded `7.0` with `__version__` from invokeai_version.py,
injected by Vite; the build fails if the file is missing or unparseable.
The Docker web stage mirrors the repository layout so the file is available.
@github-actions github-actions Bot added docker docs PRs that change docs labels Oct 2, 2026
…modules

appMetadata, whatsNewStore and useWhatsNew now load at startup: startup
scripts grow by 4.8 KB on the launchpad and 7.5 KB in the editor, with no
new requests.
@joshistoast
joshistoast enabled auto-merge October 2, 2026 04:01
@joshistoast
joshistoast merged commit 1ddf586 into invoke-ai:main Oct 2, 2026
14 checks passed
@lstein
lstein deleted the feat/whats-new branch October 2, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

7.0.0 docker docs PRs that change docs frontend PRs that change frontend files

Projects

Status: 7.0 Theme: Tabbed Layout UI

Development

Successfully merging this pull request may close these issues.

2 participants