Skip to content

docs(FR-3455): update Storage Folders chapter for 26.8 - #8564

Merged
ironAiken2 merged 5 commits into
mainfrom
docs/FR-3455-vfolder
Aug 4, 2026
Merged

docs(FR-3455): update Storage Folders chapter for 26.8#8564
ironAiken2 merged 5 commits into
mainfrom
docs/FR-3455-vfolder

Conversation

@yomybaby

@yomybaby yomybaby commented Aug 3, 2026

Copy link
Copy Markdown
Member

Resolves #8548 (FR-3455)

⚠️ Both screenshots were captured with mocked folder data

Why: the capture server holds zero storage folders — verified via /data, /admin/data (superadmin, system-wide) and backendaiclient.vfolder.list() returning []. It was reset 2026-08-03 12:05Z. An empty folder table would have contradicted the prose directly above the image ("folder name and ID, the storage host name, folder access rights"), and no mixed deletable/non-deletable selection could exist at all.

What was mocked: exactly one GraphQL operation, VFolderNodeListPageQuery, via the project's setupGraphQLMocks (client-side page.route; read-only). Every other operation and all REST traffic passed through untouched. The response shape was built from the generated normalization AST in react/src/__generated__/VFolderNodeListPageQuery.graphql.ts, not guessed.

Eight fictional folders, three of them deliberately without delete_vfolder permission so the exclusion alert has something to list:
training-data, shared-models, notebooks, imagenet-subset, team-datasets, llm-checkpoints, experiment-logs, .local-cache ( = no delete permission). Owner shows admin@lablup.com / project default, matching the logged-in demo admin already visible in the header — no real end-user emails, no production-looking IDs.

Nothing was created or deleted. The delete modal was closed via the X (onRequestClose(false)); onOk — the only path calling vfolder.delete_by_id — was never reached, and the OK button was never clicked in any locale. A dedicated guard test then logged in fresh with no mocks and asserted the real list still reports 0 - 0 of 0 items and that none of the eight mock names exist. That run passed.

Summary

Updates the Storage Folders chapter for 26.8 in all four languages (en/ko/ja/th), with both screenshots captured.

Part of the 26.8 user manual refresh (epic #8538 / FR-3445).

Attribution

Section Driven by Author
Delete-folder modal lists affected folders in an alert FR-3257 #8162 @nowgnuesLee
Auto-refresh interval dropdown on the folder list FR-3147 #7928 @agatha197
Label accuracy pass (Controls / Delete forever) FR-3331 #8303 @ironAiken2

Reviewers are the driving authors minus the PR author (@yomybaby opened this PR).

Two triaged rows did not apply

Verified against source, and no prose was invented for either:

  • FR-3011 — this chapter describes exactly one filter interaction, the Audit Log tab's, which is ScopedAuditLog.tsx with triggeredBy still type: 'string' free text. The Data page's own host filter is also still free text. FR-3011's typed-picker consumers are ModelStoreListPageV2, AdminModelCardListPage and the storage-host drawer panels — all admin_menu.md territory, updated there in FR-3446.
  • FR-3331 — mostly non-applicable. No row action here is labelled "Edit"; folder rename uses antd inline editing, which FR-3331 explicitly left alone, and the file editor's Save/Cancel was excluded from that FR. It reduced to the label fixes below.

A spec-vs-reality correction

The issue describes the FR-3257 alert as collapsible. It is not. DeleteVFolderModal.tsx renders BAIListAlert — a bulleted list that scrolls past maxHeight: 165. And the folders it lists are the excluded ones (no delete_vfolder permission), not the ones being deleted; the confirmation sentence separately counts only the deletable remainder. The prose follows the code, not the issue wording — and the screenshot shows exactly that: 5 selected, 2 listed as excluded, 3 counted for deletion.

Screenshots

Image Scope Status
data_page.png full page ✅ recaptured, mocked list
vfolder_bulk_move_to_trash.png dialog element ✅ new, mocked list

Framing preflight: data_page.png was 2880x1800 full-page and remains 2880x1800 — identical scope, differing only in content (8 folders, and the refresh control is now the split button with the Auto Refresh chevron). Output was byte-reproducible across three runs, a decent signal there was no render race.

Each locale booted from scratch rather than in-place switchLanguage(), with the English strings asserted to have count 0 per non-en locale.

Two residual English fragments are the app's own untranslated i18n, not capture staleness: the READY status tag (an enum shown verbatim in every locale) and ja's 1 - 8 of 8アイテム pagination string.

A maintainability caveat worth knowing

The mocked images depict folders that exist on no real system, and the mock data lived only in the capture spec, which was deleted after the run — so these images cannot be regenerated by simply re-running against the server later. The full folder table is preserved in the capture commit message. This applies to every mocked capture in this refresh; see the note in the epic (#8538) about whether the capture specs should be committed under e2e/ for reproducibility.

Verification

All three docs-checks.yml steps green: check:terminology-md, check:nav-titles (112 entries), check-terminology-i18n.mjs --strict (0 blocking / 0 warn).

Label drift fixed

  • en: "Control column" → Controls (comp:FileExplorer.Controls)
  • en: Delete ForeverDelete forever (data.folders.DeleteForever)
  • ja: 完全に削除 → 永久に削除 (ko 영구 삭제 and th ลบถาวร already matched)

Noted, not fixed

The delete section says the restore button is in the "Control column", but the row actions actually live in the Name cell (BAINameActionCell). Pre-existing drift, outside this update's rows.

🤖 Generated with Claude Code

Copy revision (2026-08-04, review round)

Reviewed the ko chapter with 홍성철 and applied the confirmed edits:

  • Refresh section (all 4 langs): simplified to two sentences (refresh button + auto-refresh interval via the dropdown arrow); dropped the interval enumeration, check-mark note, and the countdown/persistence paragraphs. "Chevron" wording removed.
  • Audit log tab (all 4 langs): removed the paragraph re-describing the auto-refresh button.
  • Bulk move-to-trash (all 4 langs): reworded the exclusion-alert paragraph ("check the list before proceeding with the deletion"; the count reflects folders actually moved) and dropped the scroll-behavior sentence. The quoted alert title stays byte-identical to each locale's ExcludedFolders i18n label.
  • ko only: full-chapter prose pass removing translationese (overused "~할 수 있습니다" endings, heavy pre-modifiers, commas after connective endings, "권한을 가지고 있는 경우" → "권한이 있으면", repeated "~를 통해"). Structure, UI labels, quotes, anchors, and technical values verified unchanged; en/ja/th intentionally left as-is for this pass.

yomybaby and others added 3 commits August 3, 2026 13:11
- FR-3257: document the excluded-folders alert in the "Move to trash bin"
  modal when a multi-folder selection mixes deletable and non-deletable
  folders; split "Delete folder" into bulk-delete and restore/permanent-delete
  subsections.
- FR-3300 / FR-3147: new "Refresh the folder list" section covering the
  refresh button's Auto Refresh interval menu (Off / 5s / 10s / 15s / 30s /
  1m), the Off-by-default policy for folder lists, per-list persistence, the
  countdown border, and the pause-while-hidden behavior; cross-referenced from
  the Audit Log tab, which has its own independently remembered interval.
- Label accuracy: "Control column" -> "Controls column" (en),
  "Delete Forever" -> "Delete forever" (en), 完全に削除 -> 永久に削除 (ja).
- Screenshot TODO markers only; no images captured.

FR-3011 is not applicable to this chapter: the typed host/user filter inputs
land in UserFolderPermissionPanelV2 / ProjectFolderPermissionPanel (Storage
Host Detail Drawer, admin_menu.md). The Data page's own `host` filter is still
a plain string property, so no prose was written for it here.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Capture `vfolder_auto_refresh_menu.png` in all four UI locales (en/ko/ja/th),
each booted from scratch with the persisted language so no `<Trans>` string is
left stale, and drop the discharged TODO marker from every language file.

The image shows the folder-list split refresh control with the Auto Refresh
dropdown open (Off / 5s / 10s / 15s / 30s / 1m), 10s active so the check mark
and the countdown border are both visible.

`data_page.png` and `vfolder_bulk_move_to_trash.png` are left undischarged: the
capture server currently holds zero storage folders (`/admin/data` reports
0 of 0 system-wide), so the page overview would be an empty table and the mixed
deletable/non-deletable selection cannot be assembled from existing folders.
Capture is strictly read-only, so no folder was created or deleted.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The capture server holds zero storage folders (reset 2026-08-03 12:05Z),
so no mixed deletable/non-deletable selection exists to open the bulk
Move-to-trash dialog with. The bare reference would render as a broken
image in the site and PDF, so it is commented out with the TODO marker
kept, matching the precedent in #8521.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
yomybaby and others added 2 commits August 4, 2026 00:22
…data

Re-capture `data_page.png` with a populated folder list and add the new
`vfolder_bulk_move_to_trash.png`, both in all four UI locales (en/ko/ja/th).

The capture server holds no storage folders at all — the real Data page reports
`0 - 0 of 0 items` — so neither an overview matching the prose above it ("folder
name and ID, the storage host name, folder access rights") nor a bulk selection
mixing deletable and non-deletable folders could be produced from live data. The
folder list was therefore mocked: only the read-only `VFolderNodeListPageQuery`
was intercepted and answered with eight fictional folders (`training-data`,
`shared-models`, `notebooks`, `imagenet-subset`, `team-datasets`,
`llm-checkpoints`, `experiment-logs`, `.local-cache`) across two storage hosts,
five of them carrying `delete_vfolder`.

`data_page.png` keeps its previous 2880x1800 full-page framing and now shows the
split refresh control with the Auto Refresh chevron (FR-3147).
`vfolder_bulk_move_to_trash.png` is an element crop of the Move to trash bin
dialog opened from a five-folder selection, so the excluded-folders alert lists
the two folders without delete permission while the confirmation sentence counts
only the remaining three. The dialog was cancelled, never confirmed; no mutation
was issued and a post-capture check confirmed the server still lists zero
folders. Each locale was booted from scratch with the language persisted, so no
string is left stale.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
- Simplify the folder-list refresh section to two sentences (refresh
  button + auto-refresh interval dropdown) and drop the interval list,
  check-mark note, and countdown/persistence paragraphs in all 4 langs
- Remove the duplicated auto-refresh paragraph from the audit log tab
- Rewrite the bulk move-to-trash exclusion paragraph (check the list
  before proceeding with the deletion; count reflects folders actually
  moved) and drop the scroll-behavior sentence
- ko only: full-chapter prose pass fixing translationese (overused
  "~할 수 있습니다" endings, heavy pre-modifiers, commas after
  connective endings, "권한을 가지고 있는 경우" → "권한이 있으면",
  repeated "~를 통해"); UI labels, quotes, anchors, and structure
  unchanged

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Copilot AI balanced review requested due to automatic review settings August 4, 2026 05:50

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

Updates the Storage Folders manual for Backend.AI 26.8 across four languages.

Changes:

  • Documents auto-refresh controls and bulk folder deletion.
  • Updates UI labels and screenshots.
  • Improves Korean prose.

Reviewed changes

Copilot reviewed 4 out of 16 changed files in this pull request and generated 1 comment.

File Description
src/en/vfolder/vfolder.md Adds 26.8 behavior and label updates.
src/ko/vfolder/vfolder.md Adds features and revises Korean prose.
src/ja/vfolder/vfolder.md Adds features and corrects labels.
src/th/vfolder/vfolder.md Adds auto-refresh and bulk deletion guidance.

Comment thread packages/backend.ai-webui-docs/src/en/vfolder/vfolder.md

@ironAiken2 ironAiken2 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

@ironAiken2
ironAiken2 merged commit c9c2e62 into main Aug 4, 2026
11 checks passed
@ironAiken2
ironAiken2 deleted the docs/FR-3455-vfolder branch August 4, 2026 05:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L 100~500 LoC

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Update the Storage Folders chapter for 26.8

3 participants