style(FR-2977): reframe revision-source action wording and source icon#7724
Conversation
Coverage Report for react-coverage (./react)
File Coverage
|
||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Pull request overview
Polishes the “revision-source” action wording to better communicate that it creates a new linear revision based on an existing revision’s configuration (not a copy/fork), and updates the UI iconography to match that mental model in the deployment revision history UI.
Changes:
- Updated
deployment.AddNewRevisionFromThiscopy across all 21 locales to a “new revision based on this” framing. - Replaced the action icon from
CopyOutlinedtoImportOutlinedin both entry points withinDeploymentRevisionHistoryTab(row menu + drawer overflow).
Reviewed changes
Copilot reviewed 22 out of 22 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| resources/i18n/de.json | Updates German label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/el.json | Updates Greek label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/en.json | Updates English label to “New revision based on this”. |
| resources/i18n/es.json | Updates Spanish label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/fi.json | Updates Finnish label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/fr.json | Updates French label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/id.json | Updates Indonesian label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/it.json | Updates Italian label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/ja.json | Updates Japanese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/ko.json | Updates Korean label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/mn.json | Updates Mongolian label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/ms.json | Updates Malay label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/pl.json | Updates Polish label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/pt-BR.json | Updates Brazilian Portuguese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/pt.json | Updates Portuguese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/ru.json | Updates Russian label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/th.json | Updates Thai label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/tr.json | Updates Turkish label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/vi.json | Updates Vietnamese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/zh-CN.json | Updates Simplified Chinese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| resources/i18n/zh-TW.json | Updates Traditional Chinese label for deployment.AddNewRevisionFromThis to “based on this” phrasing. |
| react/src/components/DeploymentRevisionHistoryTab.tsx | Swaps action icon from CopyOutlined to ImportOutlined for the “new revision based on this” menu items (row menu + drawer overflow). |
bfccf54 to
6f0148e
Compare
How to use the Graphite Merge QueueAdd either label to this PR to merge it via the merge queue:
You must have a Graphite account in order to use the merge queue. Sign up using this link. An organization admin has required the Graphite Merge Queue in this repository. Please do not merge from GitHub as this will restart CI on PRs being processed by the merge queue. This stack of pull requests is managed by Graphite. Learn more about stacking. |
6f0148e to
ac52c1f
Compare
Merge activity
|
e331587 to
5cd4f87
Compare
ac52c1f to
46daf57
Compare
#7724) Resolves #7601 (FR-2977) > **Stacked on #7671 (FR-2977).** That PR adds the "Add new revision from this" entry in the revision history row menu and the revision-detail drawer. This PR is a wording + icon polish on that same entry. ## Summary The revision-source action seeds a **new linear revision** pre-filled from an existing revision's configuration — it does **not** fork or duplicate the history (see #7671 / #7561, which deliberately avoided a branching icon). The previous copy ("Add new revision from this" / KO "이 리비전으로 추가") leaned on a "duplicate" framing that misreads the actual behavior and read inconsistently next to the in-modal **"Load current revision"** alert, whose own copy already frames loading a revision's settings as the *starting point* for a new revision. This PR aligns the entry with that "based on this / starting point" mental model: - **Reframe the action label** (`deployment.AddNewRevisionFromThis`) across all 21 locales: - EN: `Add new revision from this` → **`New revision based on this`** - KO: `이 리비전으로 추가` → **`이 리비전 기반으로 리비전 생성`** (noun-ending menu style, matching `리비전 보기` / `배포 삭제`; makes "creates a revision" explicit) - The other 19 locales are updated to the same "new revision based on this" framing, keeping each locale's established term for *revision* (es de-accented to `Revision` and ja switched to Latin-script `Revision` to match each locale's existing deployment strings). - **Switch the action icon** to lucide **`CopyPlus`** (`<CopyPlusIcon size={14} />`) in `DeploymentRevisionHistoryTab.tsx` — both entry points (the row overflow menu item and the drawer **More (⋯)** dropdown). It reads as "create a new revision from this one's settings" (copy **+** create new), distinct from the plain `Plus` used by the generic *Add Revision* button, without the fork/branch metaphor. ## Scope - Out of scope by design: the in-modal alert keys (`deployment.LoadCurrentRevision`, `deployment.CurrentRevisionAvailableDescription`, `deployment.CurrentRevisionConfigurationLoaded`) are **unchanged** — the alert already uses the correct "Load / starting point" vocabulary, and the new action label now reads coherently alongside it. - Pure copy + icon change. No behavioral or data-flow change. ## Test plan - [x] Revision History row ⋯ menu shows the new label with the CopyPlus icon, opens the Add Revision modal prefilled from that revision. - [x] Revision-detail drawer **More (⋯)** dropdown shows the same label + icon, same prefill behavior. - [x] In-modal "Load current revision" alert copy/behavior unchanged. - [x] `bash scripts/verify.sh` — Relay, Lint, Format, TypeScript all PASS.
46daf57 to
901c606
Compare
…7743) Resolves #7601 (FR-2977) > **Stacked on #7724 (FR-2977).** Addresses Seungwon Lee's review feedback on the FR-2977 / FR-2957 revision stack ([devops Teams thread](https://teams.microsoft.com/l/message/19:acd1be4236b94664b814f4d4e5c84da6@thread.skype/1780626400941)). ## Problem Opening the **Add Revision** modal from the revision-history entry points (row overflow menu / drawer **More ⋯**) showed a `<Modal loading />` shell first, then **swapped** it for the real modal once the modal's lazy chunks resolved — the modal visibly went down and a new one came up, inconsistent with the rest of the app. ## Why the boundary is load-bearing (and the fallback was the only problem) `DeploymentAddRevisionModal` **does** suspend on mount: its preset / model-folder / runtime-variant selects (`BAIAvailablePresetSelect`, `BAIVFolderSelect`, `BAIRuntimeVariantSelect`) each run their own `useLazyLoadQuery` and are rendered directly in the form body (not behind the modal's inner `<Suspense>` sections). So the local `<Suspense>` boundary around the mount is **load-bearing** — it keeps that suspend from bubbling up to the page-level boundary and blanking the page. The boundary must stay; only its **fallback** was wrong. ## Change `DeploymentRevisionHistoryTab` — change the modal-mount Suspense `fallback` from a `<Modal loading />` shell to **`null`**, so the modal simply appears once ready instead of a loading-modal-then-real-modal swap. This matches how the same kind of lazily-mounted modal is handled elsewhere: - `DeploymentDetailPage` → `<Suspense fallback={null}><BAIUnmountAfterClose><DeploymentAddRevisionModal/></BAIUnmountAfterClose></Suspense>` - `VFolderNodesV2` → identical `<Suspense fallback={null}>` wrapper around `VFolderDeployModal` Removes the now-unused `Modal` import. One-file, behavior-only change — no data-flow, query, or schema change. ## Test plan - [x] Revision History row **⋯ → New revision based on this** opens the real modal directly (no loading-modal-then-real-modal swap), prefilled from that revision. - [x] Revision-detail drawer **More ⋯ → New revision based on this** — same: drawer closes and the real modal opens directly. - [x] The modal's lazy selects still show their own field-level skeletons while loading; the page never blanks (local Suspense boundary retained). - [x] `bash scripts/verify.sh` — Relay, Lint, Format, TypeScript all PASS. 🤖 Generated with [Claude Code](https://claude.com/claude-code)

Resolves #7601 (FR-2977)
Summary
The revision-source action seeds a new linear revision pre-filled from an existing revision's configuration — it does not fork or duplicate the history (see #7671 / #7561, which deliberately avoided a branching icon). The previous copy ("Add new revision from this" / KO "이 리비전으로 추가") leaned on a "duplicate" framing that misreads the actual behavior and read inconsistently next to the in-modal "Load current revision" alert, whose own copy already frames loading a revision's settings as the starting point for a new revision.
This PR aligns the entry with that "based on this / starting point" mental model:
deployment.AddNewRevisionFromThis) across all 21 locales:Add new revision from this→New revision based on this이 리비전으로 추가→이 리비전 기반으로 리비전 생성(noun-ending menu style, matching리비전 보기/배포 삭제; makes "creates a revision" explicit)Revisionand ja switched to Latin-scriptRevisionto match each locale's existing deployment strings).CopyPlus(<CopyPlusIcon size={14} />) inDeploymentRevisionHistoryTab.tsx— both entry points (the row overflow menu item and the drawer More (⋯) dropdown). It reads as "create a new revision from this one's settings" (copy + create new), distinct from the plainPlusused by the generic Add Revision button, without the fork/branch metaphor.Scope
deployment.LoadCurrentRevision,deployment.CurrentRevisionAvailableDescription,deployment.CurrentRevisionConfigurationLoaded) are unchanged — the alert already uses the correct "Load / starting point" vocabulary, and the new action label now reads coherently alongside it.Test plan
bash scripts/verify.sh— Relay, Lint, Format, TypeScript all PASS.