Skip to content

style(FR-2977): reframe revision-source action wording and source icon#7724

Merged
graphite-app[bot] merged 1 commit into
mainfrom
07-01-style_fr-2977_revision-source-action-wording
Jun 5, 2026
Merged

style(FR-2977): reframe revision-source action wording and source icon#7724
graphite-app[bot] merged 1 commit into
mainfrom
07-01-style_fr-2977_revision-source-action-wording

Conversation

@yomybaby

@yomybaby yomybaby commented Jun 4, 2026

Copy link
Copy Markdown
Member

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 thisNew 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

  • Revision History row ⋯ menu shows the new label with the CopyPlus icon, opens the Add Revision modal prefilled from that revision.
  • Revision-detail drawer More (⋯) dropdown shows the same label + icon, same prefill behavior.
  • In-modal "Load current revision" alert copy/behavior unchanged.
  • bash scripts/verify.sh — Relay, Lint, Format, TypeScript all PASS.

@github-actions github-actions Bot added area:ux UI / UX issue. area:i18n Localization size:M 30~100 LoC labels Jun 4, 2026
@yomybaby yomybaby marked this pull request as ready for review June 4, 2026 09:45
Copilot AI review requested due to automatic review settings June 4, 2026 09:45
@github-actions

github-actions Bot commented Jun 4, 2026

Copy link
Copy Markdown
Contributor

Coverage Report for react-coverage (./react)

Status Category Percentage Covered / Total
🔵 Lines 6.45% 1798 / 27851
🔵 Statements 5.24% 1994 / 38001
🔵 Functions 5.34% 300 / 5609
🔵 Branches 3.67% 1305 / 35532
File Coverage
File Stmts Branches Functions Lines Uncovered Lines
Changed Files
react/src/components/DeploymentRevisionHistoryTab.tsx 0% 0% 0% 0% 80-773
Generated in workflow #1503 for commit 901c606 by the Vitest Coverage Report Action

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.AddNewRevisionFromThis copy across all 21 locales to a “new revision based on this” framing.
  • Replaced the action icon from CopyOutlined to ImportOutlined in both entry points within DeploymentRevisionHistoryTab (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).

@yomybaby yomybaby force-pushed the 07-01-style_fr-2977_revision-source-action-wording branch 3 times, most recently from bfccf54 to 6f0148e Compare June 4, 2026 10:19
@yomybaby yomybaby changed the title style(FR-2977): reframe revision-source action wording and switch to import icon style(FR-2977): reframe revision-source action wording and source icon Jun 4, 2026

yomybaby commented Jun 4, 2026

Copy link
Copy Markdown
Member Author

How to use the Graphite Merge Queue

Add either label to this PR to merge it via the merge queue:

  • flow:merge-queue - adds this PR to the back of the merge queue
  • flow:hotfix - for urgent changes, fast-track this PR to the front of 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.

Comment thread react/src/components/DeploymentRevisionHistoryTab.tsx Outdated
@agatha197 agatha197 changed the base branch from 06-01-fix_fr-2977_move_applying-revision_alert_inside_current_revision_tab to graphite-base/7724 June 4, 2026 12:18
@yomybaby yomybaby force-pushed the 07-01-style_fr-2977_revision-source-action-wording branch from 6f0148e to ac52c1f Compare June 4, 2026 14:45
@yomybaby yomybaby requested a review from agatha197 June 4, 2026 14:46

@agatha197 agatha197 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

@graphite-app

graphite-app Bot commented Jun 5, 2026

Copy link
Copy Markdown

Merge activity

@agatha197 agatha197 force-pushed the graphite-base/7724 branch from e331587 to 5cd4f87 Compare June 5, 2026 06:13
@agatha197 agatha197 force-pushed the 07-01-style_fr-2977_revision-source-action-wording branch from ac52c1f to 46daf57 Compare June 5, 2026 06:13
@agatha197 agatha197 changed the base branch from graphite-base/7724 to main June 5, 2026 06:13
#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.
@graphite-app graphite-app Bot force-pushed the 07-01-style_fr-2977_revision-source-action-wording branch from 46daf57 to 901c606 Compare June 5, 2026 06:16
graphite-app Bot pushed a commit that referenced this pull request Jun 5, 2026
…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)
@graphite-app graphite-app Bot merged commit 901c606 into main Jun 5, 2026
13 checks passed
@graphite-app graphite-app Bot deleted the 07-01-style_fr-2977_revision-source-action-wording branch June 5, 2026 06:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:i18n Localization area:ux UI / UX issue. size:M 30~100 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Refactor DeploymentAddRevisionModal to id-based revision source

3 participants