Repository navigation
PT-4578: Zoom in / out / reset in the tab menu, Power and Simple - #2819
Closed
rolfheij-sil wants to merge 6 commits into
Closed
rolfheij-sil wants to merge 6 commits into
rolfheij-sil wants to merge 6 commits into
Conversation
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… of a cast Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
rolfheij-sil
requested review from
irahopkinson,
jolierabideau,
lyonsil and
tjcouch-sil
as code owners
September 15, 2026 09:17
…talog, notes and ADR for the Simple tab menu Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…der note Also carries a formatting-only rewrap of an unrelated TSDoc paragraph, a side effect of the dts-bundle-generator rebuild. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Contributor
Author
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Work item 3 of the per-pane content-zoom epic (PT-4575): Zoom in / Zoom out / Reset zoom to default in the web-view tab's right-click menu, in Power mode and in Simple mode.
platform.tabZoomgroup (order 50, not extensible,isExperimental) with three items bound to the owner-routed commands from PT-4576: Platform core for per-pane content zoom #2803, ahead of the existing window group. The tab-menu handler already passes the tab id, which is the web-view id, so each item acts on exactly that tab. en/es strings added.platform.tabZoomin Simple mode before conversion (the converter flattens groups, so the filter has to happen on the raw contributed menu). It renders nothing until the interface mode is known, so a Power user is never shown the Simple menu during startup. The drag-ignore marker is passed onto the menu trigger so Simple mode's fixed layout stays fixed; the keyboard path (Shift+F10 / Menu key) now works wherever a menu exists.PT-3171 (View menu on tabs) is fulfilled by this item; the closure note belongs with PT-4585.
Why review this
Part of the current epic (PT-4575). It is the discoverable entry point for content zoom (NN-7) and the first UI Simple mode offers on a tab (NN-9).
Decisions worth a look
dock-layout-wrapper.simple-mode.scss: pointer events off, opacity 0), so there is no editor tab to right-click. Decision (Epic Lead via Rolf, 2026-09-15): Simple mode needs editor zoom too, and the entry point is the Scripture editor's own hamburger menu (Options column), visible in both modes; that lands with PT-4581 alongside the editor's zoom areas. Recorded in the new ADRadr-simple-mode-tab-menu-offers-zoom-only. The Home column (model text) has no menu of any kind and keeps only the chords; a separate UX question.isExperimentalon the group only. The menu-item schema has no such property and rejects unknown ones (unevaluatedProperties: false), so an item-level marker would fail startup validation; the existingplatform.tabWindowgroup carries it the same way.WebViewMenu.tabMenu's TSDoc told extensions the platform occupies order 100; it now says 50 and 100, in the source and in the regeneratedplatform-bible-utils/dist(that rebuild also carries a formatting-only rewrap of one unrelated TSDoc paragraph).getWebViewMenuread per tab at mount (six tabs in the fixed layout), where it paid none; a single read per tab, not a subscription.menu-data.service-host.test.tsxhard-coded the full list of shipped tab-menu commands and now expects the three zoom commands ahead of the window ones.Testing
menu.data.test.ts(group shape and order, item commands and orders pinned toCONTENT_ZOOM_COMMANDS, labels, no item-levelisExperimental, shipped document still validates).tab-menu.util.test.ts:filterTabMenuToGroup(happy path, absent group, cross-group items dropped, input not mutated, cross-check against the shipped JSON) and the no-web-view availability rule.platform-tab-title.zoom-menu.test.tsx(11 cases: Power-mode order, Simple-mode contents, dispatch with the tab id in both modes, mode-not-known gate, Simple mode reads the menu once and never reads the window list, no-web-view tab in both modes, drag-ignore on title and trigger, nothing before the read lands, keyboard forwarding in Simple mode). Two existing tab-title test files gained the interface-mode mock and one rewritten expectation.ReferencedItemparameter type)./review-paratext(four analyzer passes) and an OpenCodeReview delegate pass ran on the branch. No Critical. Fixed here: one interface-mode subscription per tab title instead of two; the keyboard-shortcuts catalog entry for the tab menu now covers both modes; translator notes say the items act on the pane last used in the tab, not the whole tab; backward-facing comments reworded;CONTENT_ZOOM_TAB_MENU_GROUPmoved to the shared content-zoom model with the JSON pin test next to the menu data; anact()warning and a redundant test removed; Spanish reset label takes the article. Items stay inert on a view with no zoom area (the "has areas" signal is asynchronous, so disabling would show disabled items that work); the three tab-title test files still each carry their own mock harness.Risk Level
Medium. Changes the tab title component every tab renders, in both modes; the Simple-mode behaviour is new.
AI-assisted — Claude Code (Fable 5.1 coordinating; Opus design pass; per-task Sonnet agents under TDD; Sonnet verification pass).
🤖 Generated with Claude Code
This change is