docs(FR-2645): mandate language-specific captures + replace 6 dark-mode WebUI screenshots#6868
Merged
graphite-app[bot] merged 1 commit intomainfrom Apr 22, 2026
Conversation
Contributor
Author
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. |
ac46a6a to
e5d7156
Compare
e5d7156 to
5124687
Compare
5124687 to
9235647
Compare
This was referenced Apr 22, 2026
Merge activity
|
…de WebUI screenshots (#6868) Resolves FR-2645 ## Summary This PR addresses the two findings from the FR-2645 audit of `packages/backend.ai-webui-docs/`: 1. **Policy fix** — Resolves the contradiction in `SCREENSHOT-GUIDELINES.md` (one section said "language-specific captures", another said "always capture in English"). The authoritative rule is now: **screenshots must be captured in the locale that matches the destination directory.** 2. **Dark-mode fix** — Replaces 6 dark-mode WebUI screenshots with light-mode recaptures, captured in the matching UI locale for each language (`en/`, `ko/`, `ja/`, `th/`). ## Changes ### `SCREENSHOT-GUIDELINES.md` - Removed the contradictory line *"Always capture in English regardless of which language directory the screenshot will be saved to"* (added in PR #6631 / commit `a7033c9430`). - Renamed *File Location* section → *File Location and Localization*. - Made the language-specific capture rule a MUST, with explicit per-directory mapping (ko → 한국어, ja → 日本語, th → ภาษาไทย, en → English). - Defined explicit "single-language exception" criteria (no UI text — diagrams, terminal output, third-party tools). - *Capture Standards › Content* now forward-references the localization rules instead of duplicating them. ### Image replacements (6 × 4 languages = 24 PNGs) | Filename | Original framing | New capture | Locale-specific labels | |---|---:|---:|---| | `sessions_page.png` | 2880×1800 (full page) | 1440×900 (full page) | sidebar/breadcrumb/filter/columns | | `data_page.png` | 2880×1800 (full page) | 1440×900 (full page) | sidebar/Active/Trash tabs/filter/columns | | `rename_vfolder.png` | 2592×1590 (folder explorer) | 1296×795 (folder explorer, rename mode) | toolbar buttons/property table headers | | `vfolder_create_modal.png` | 1300×1060 (modal only) | 650×530 (modal only) | field labels/radio options/buttons | | `vfolder_delete_dialog.png` | 1040×692 (modal only) | 520×346 (modal only) | warning text/instructions/buttons | | `move_to_trash.png` | 832×276 (modal only) | 416×138 (modal only) | title/buttons | All new captures match the original framing scope (full page vs. modal-only) per the SCREENSHOT-GUIDELINES preflight checklist. Captures are 1× (non-retina) per guideline preference; total disk footprint reduced by ~70% per file. ## Capture process For each language: 1. Navigate to `/usersettings`, switch UI language to the target locale. 2. Capture each of the 6 screens at 1440×900 viewport (light mode, React Grab toolbar hidden). 3. For modal-only captures, crop the viewport screenshot to the dialog's exact bbox using `sips`. 4. Save to `src/{lang}/images/{filename}.png`. 5. After all 4 languages, reset UI back to English. ## Verification - Re-ran the dark-mode detector after applying changes — 0 Backend.AI WebUI screenshots flagged. Remaining dark candidates (`vscode_connect_finish.png`, `mlflow_first_execution.png`, `bad_permissions.png`) are intentionally dark third-party UIs. - Visually confirmed each of the 24 PNGs renders the correct locale UI text (sidebar menus, button labels, dialog titles). ## Follow-up work (out of scope for this PR) This PR only re-captures the 6 dark-mode files. The broader audit found ~280 additional images per language directory that are still byte-identical to `en/` (English UI). Those should be re-captured in the matching locale per the new guideline; recommend creating section-by-section sub-tasks under FR-2645 (e.g., per documentation chapter: vfolder, sessions, admin_menu, rbac_management, etc.) since the volume (~840 captures) is too large for a single PR. ## Notes for reviewers - **Folder data**: `data_page` shows 1–2 active folders depending on quota state at capture time (5-folder quota was at the limit because trash items count); original showed 3. Framing identical. - **Folder names in dialogs**: dialogs show `e2e-mod-{83xbfn,dt2hqj,rjc9pl}` instead of the original `doc-capture-delete-test`. Dialog UI is identical. - **Empty file list**: Korean `rename_vfolder.png` shows the empty-folder state (newly created folder). Japanese and Thai versions show the populated `e2e-mod-rjc9pl` folder (same data as original: `config 2.toml`, `model-definition.yaml`, `service-definition.toml`, `mock_openai_server.py`). - 5 trash items remain in DELETE-PENDING in the dev environment (3 pre-existing + 2 created during capture). Auto-purges, but can be manually purged if desired. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
9235647 to
25d2656
Compare
5 tasks
graphite-app Bot
pushed a commit
that referenced
this pull request
Apr 27, 2026
…ext rendering (#6891) Stacked on top of #6868. Resolves part of FR-2650. ## Summary First incremental batch of locale screenshot recapture under FR-2650. **1 file** (`dashboard.png`) recaptured in 3 locales using `window.switchLanguage()` (PR #5796 / FR-2230). ## Approach The earlier manifest-based bulk approach (PR #6885, closed) produced too many context-wrong captures (admin vs user view, wrong tabs, modal vs page, drill-down state, etc.). This PR series uses **direct Playwright MCP capture** with per-image context lookup. Progress tracked at `packages/backend.ai-webui-docs/.agent-output/fr-2650-progress.md` (gitignored, 259 entries pending). Next sessions pick up from there incrementally. ## Capture process used 1. Navigate to `/dashboard` in dev WebUI 2. Hide React Grab dev toolbar 3. `window.switchLanguage('ko')` → screenshot → save to `src/ko/images/dashboard.png` 4. `window.switchLanguage('ja')` → screenshot → save to `src/ja/images/dashboard.png` 5. `window.switchLanguage('th')` → screenshot → save to `src/th/images/dashboard.png` Viewport 1440×900 logical, light mode, admin user (`admin@lablup.com`). ## Note for reviewers This PR will be amended/extended as more entries get captured incrementally. Current dashboard layout differs from the prior `en/images/dashboard.png` (different widget arrangement); framing matches the current dev environment which is what the docs render against. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
Open
5 tasks
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.

Resolves FR-2645
Summary
This PR addresses the two findings from the FR-2645 audit of
packages/backend.ai-webui-docs/:SCREENSHOT-GUIDELINES.md(one section said "language-specific captures", another said "always capture in English"). The authoritative rule is now: screenshots must be captured in the locale that matches the destination directory.en/,ko/,ja/,th/).Changes
SCREENSHOT-GUIDELINES.mda7033c9430).Image replacements (6 × 4 languages = 24 PNGs)
sessions_page.pngdata_page.pngrename_vfolder.pngvfolder_create_modal.pngvfolder_delete_dialog.pngmove_to_trash.pngAll new captures match the original framing scope (full page vs. modal-only) per the SCREENSHOT-GUIDELINES preflight checklist. Captures are 1× (non-retina) per guideline preference; total disk footprint reduced by ~70% per file.
Capture process
For each language:
/usersettings, switch UI language to the target locale.sips.src/{lang}/images/{filename}.png.Verification
vscode_connect_finish.png,mlflow_first_execution.png,bad_permissions.png) are intentionally dark third-party UIs.Follow-up work (out of scope for this PR)
This PR only re-captures the 6 dark-mode files. The broader audit found ~280 additional images per language directory that are still byte-identical to
en/(English UI). Those should be re-captured in the matching locale per the new guideline; recommend creating section-by-section sub-tasks under FR-2645 (e.g., per documentation chapter: vfolder, sessions, admin_menu, rbac_management, etc.) since the volume (~840 captures) is too large for a single PR.Notes for reviewers
data_pageshows 1–2 active folders depending on quota state at capture time (5-folder quota was at the limit because trash items count); original showed 3. Framing identical.e2e-mod-{83xbfn,dt2hqj,rjc9pl}instead of the originaldoc-capture-delete-test. Dialog UI is identical.rename_vfolder.pngshows the empty-folder state (newly created folder). Japanese and Thai versions show the populatede2e-mod-rjc9plfolder (same data as original:config 2.toml,model-definition.yaml,service-definition.toml,mock_openai_server.py).🤖 Generated with Claude Code