Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .claude/agents/docs-screenshot-capturer.md
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,27 @@ Open the browser and log in:
- Use `browser_snapshot` to find the correct `ref` for the element you want to capture
- When UI has icon-only buttons, **always verify the button's accessible name** in the snapshot before clicking — e.g., "trash bin" vs download icon can look similar

**Re-capture preflight (when overwriting an existing screenshot):**

The filename of an existing screenshot encodes a contract about what it shows. Silently broadening the scope (e.g., turning a header strip into a full-page capture) breaks documentation that references it. Before overwriting any existing image:

1. Inspect the previous version's dimensions and visual scope:
```bash
git show main:packages/backend.ai-webui-docs/src/en/images/foo.png > /tmp/old.png
file /tmp/old.png # note WIDTH x HEIGHT
```
2. Open `/tmp/old.png` and identify its scope:
- Header strip: very wide, ≤300 px tall (e.g., 2358×222) → use `ref` of `[data-testid="webui-header"]`
- Modal/dialog only: medium, no chrome (e.g., 988×804) → use `ref` of `.ant-modal-wrap .ant-modal` or `[role="dialog"]`
- Sidebar segment: narrow column → use `ref` of `.ant-layout-sider`
- Wizard step / panel: capture the specific panel `ref`, not the layout root
- Full page (~viewport × viewport): `fullPage: true` is acceptable
3. After capture, sanity-check dimensions match the same order of magnitude as the old. If new dimensions differ by more than ~2× in either axis, you broke the framing — recapture with `ref`.

**Anti-pattern observed in PR #6708**: `header.png` was 2358×222 (header strip) on `main`, recaptured as 2880×1800 (full viewport including sidebar + main content). The filename promised "header" but the new image showed everything. Always run the preflight above before overwriting.

If the framing genuinely needs to change, **rename the file** to reflect the new scope (e.g., `header.png` → `top_bar_with_session_timer.png`) and update all markdown references — never silently broaden an existing image.

```
.playwright-mcp/packages/backend.ai-webui-docs/src/en/images/{filename}.png ← captured with English UI
.playwright-mcp/packages/backend.ai-webui-docs/src/ko/images/{filename}.png ← captured with Korean UI
Expand Down
4 changes: 4 additions & 0 deletions backend.ai-webui.code-workspace
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,9 @@
},
"inputs": [],
},
"i18n-ally.localesPaths": [
"resources/i18n",
"packages/backend.ai-ui/src/locale",
],
},
}
31 changes: 31 additions & 0 deletions packages/backend.ai-webui-docs/SCREENSHOT-GUIDELINES.md
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,37 @@ Standards for capturing, naming, and maintaining screenshots in the Backend.AI W
- Full-page captures are appropriate for page overview screenshots, but for feature-specific documentation, crop to the relevant area so users can clearly identify what is being described
- Include just enough surrounding context for users to orient themselves

### Match the Existing Screenshot's Framing (for re-captures)

When **replacing an existing screenshot** (same filename), the new image MUST match the previous image's framing scope. The filename encodes a contract about what the image shows.

**Before recapturing**, run the following preflight on the file you intend to replace:

```bash
# 1. Inspect the previous version's dimensions and visual scope
git show main:path/to/images/foo.png > /tmp/old.png
file /tmp/old.png # note WIDTH x HEIGHT
# 2. Open /tmp/old.png and identify:
# - Is it a header strip? (very wide, very short — e.g., 2358x222)
# - Is it a modal/dialog only? (medium, no chrome — e.g., 988x804)
# - Is it a sidebar segment? (narrow column — e.g., 1500x1098)
# - Is it a full page? (~viewport width × viewport height — e.g., 2880x1800)
```

Then capture the new screenshot at the **same scope**:

| Old image scope | Capture method |
|---|---|
| Header strip (e.g., `header.png`) | `ref` of `header`/top-bar element only — never `fullPage: true` |
| Modal/dialog only | `ref` of `.ant-modal-wrap .ant-modal` or `[role="dialog"]` |
| Sidebar segment | `ref` of the sidebar element |
| Page region (e.g., a step in a wizard) | `ref` of the specific panel, not the whole layout |
| Full page overview | `fullPage: true` is acceptable |

**Anti-pattern observed in PR #6708**: `header.png` was 2358×222 (header strip only) on `main`, recaptured as 2880×1800 (full viewport including sidebar + main content + breadcrumbs). The filename promises "header" but the new image shows everything. **Always run the preflight above before re-capturing.**

If the framing genuinely needs to change (e.g., the feature now spans more of the page), update the filename to reflect the new scope (e.g., `header.png` → `top_bar_with_session_timer.png`) rather than silently broadening an existing image.

### Cleanup After Capture

- **Always delete any resources created during screenshot capture** (folders, files, sessions, etc.)
Expand Down
5 changes: 2 additions & 3 deletions packages/backend.ai-webui-docs/src/en/header/header.md
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ Each item has the following meaning. Enter the desired value and click the

- **Full Name**: User's name (up to 64 characters).
- **Original password**: Your current password. This field is shown only when
the server does not support the V2 user update API, and you must enter it
connecting to a server prior to Backend.AI 26.4.0, and you must enter it
when setting a new password on such servers.
- **New password**: New password (8 characters or more containing at least 1
alphabet, number, and symbol). Click the eye icon to reveal the input.
Expand All @@ -126,8 +126,7 @@ Each item has the following meaning. Enter the desired value and click the
you must enter an OTP code at login.

:::note
The **Allowed client IPs** field is available when the server supports the V2
user update API.
The **Allowed client IPs** field is available from Backend.AI 26.4.0 and later.
:::

:::note
Expand Down
Binary file modified packages/backend.ai-webui-docs/src/en/images/data_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/en/images/header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/en/images/menu_collapse.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/en/images/rename_vfolder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion packages/backend.ai-webui-docs/src/en/overview/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -189,4 +189,5 @@ achieves more intuitive use.
| Configurations* | X | O |
| Maintenance* | X | O |
| Information* | X | O |
| RBAC Management* | X | O (superadmin) |
| RBAC Management* | X | O (superadmin) |
| Project* | X | O |
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ refer to the following:
are created. If there are not enough resources available, requests to create
sessions that cannot be created are put on the waiting queue.

![](../images/launce_session_resource_2.png)
![](../images/launch_session_resource_2.png)
Comment thread
nowgnuesLee marked this conversation as resolved.

* Select Agent: Select the agent to be assigned. By default, the agent is automatically selected
by the scheduler. The agent selector displays the actual amount of available resources for each agent.
Expand Down
12 changes: 5 additions & 7 deletions packages/backend.ai-webui-docs/src/en/vfolder/vfolder.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,7 +64,7 @@ The meaning of each field in the creation dialog is as follows.
- **Folder name**: The name of the folder (up to 64 characters).
- **Location**: Select the NFS host where the folder will be created. If there are multiple hosts, choose one. An indicator will show if there is enough available space.
- **Type**: Determines the type of folder to be created. It can be set as User or Project. The User folder is a folder that users can create and use alone and the Project folder is a folder created by admin and shared by users in the project.
- **Project**: Shown only when you select project type. Designates the project to which the folder belongs when creating a new project folder. Project folders must belong to a project. However, it does not play any role when creating a user folder.
- **Project**: Shown only when you select project type. Designates the project to which the folder belongs when creating a new project folder. Project folders must belong to a project. For project folders, the project currently selected in the top bar is automatically selected as the target project. However, it does not play any role when creating a user folder.
- **Permission**: Set permission of a project folder for project members. If this is set to "Read only", project members cannot write to this folder inside their compute session.
- **Cloneable**: Shown only when you select usage mode to "Model". Select whether the vfolder you are creating should be cloneable.

Expand Down Expand Up @@ -121,14 +121,15 @@ The text file editor opens in a modal with a code editor interface. The editor a
The editor supports both light and dark themes matching your UI preferences. You can edit the file content, then click 'Save' to upload the modified file, or 'Cancel' to discard changes.

:::note
The Edit File button is only available when you have write_content permission on the storage folder. If the file fails to load, an error message will be displayed.
The Edit File button is only available when your access to this storage folder includes the `write_content` permission (granted via folder sharing permission or your role on the folder). Storage-host level settings in the control panel do not affect this. If the file fails to load, an error message will be displayed.
:::

## Rename Folder


If you have permission to rename the storage folder, you can rename it by
clicking the edit button.
If you have permission to rename the storage folder, open the folder's detail
drawer and click the edit button next to the folder name. Renaming is performed
inside the detail drawer.

![](../images/rename_vfolder.png)

Expand Down Expand Up @@ -334,9 +335,6 @@ want to connect via SSH to your container. Please refer to
[managing user's SSH keypair](#user-ssh-keypair-management).
:::

## Folder Categories


## Pipeline Folders

This tab shows the list of folders that are automatically created when executing a
Expand Down
9 changes: 4 additions & 5 deletions packages/backend.ai-webui-docs/src/ja/header/header.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,9 +92,9 @@
ユーザー情報を更新します。

- **フルネーム**: ユーザーの名前(最大64文字)。
- **元のパスワード**: 現在のパスワードです。このフィールドはサーバーがV2ユーザー
更新APIをサポートしない場合にのみ表示され、そのようなサーバーで新しいパスワードを
設定する際に入力が必要です
- **元のパスワード**: 現在のパスワードです。このフィールドはBackend.AI 26.4.0 より前の
バージョンのサーバーに接続している場合にのみ表示され、そのようなサーバーで新しい
パスワードを設定する際に入力が必要です
- **新しいパスワード**: 新しいパスワード(英字、数字、記号をそれぞれ1つ以上含む
8文字以上)。目のアイコンをクリックすると入力内容を確認できます。
- **新しいパスワードを再入力)**: 確認のため、新しいパスワードを再度入力します。
Expand All @@ -107,8 +107,7 @@
ログイン時にOTPコードの入力が必要になります。

:::note
**許可されたクライアントIP**フィールドは、サーバーがV2ユーザー更新APIをサポート
している場合に利用できます。
**許可されたクライアントIP**フィールドは、Backend.AI 26.4.0 以降で利用できます。
:::

:::note
Expand Down
Binary file modified packages/backend.ai-webui-docs/src/ja/images/data_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ja/images/header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ja/images/menu_collapse.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ja/images/rename_vfolder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 2 additions & 1 deletion packages/backend.ai-webui-docs/src/ja/overview/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -122,4 +122,5 @@ GUIクライアントパッケージは、Backend.AIサーバーがサポート
| 構成* | X | O |
| メンテナンス* | X | O |
| 情報* | X | O |
| RBAC管理* | X | O (スーパー管理者) |
| RBAC管理* | X | O (スーパー管理者) |
| プロジェクト* | X | O |
Original file line number Diff line number Diff line change
Expand Up @@ -151,7 +151,7 @@ refer to the following:
are created. If there are not enough resources available, requests to create
sessions that cannot be created are put on the waiting queue.

![](../images/launce_session_resource_2.png)
![](../images/launch_session_resource_2.png)
Comment thread
nowgnuesLee marked this conversation as resolved.

* Select Agent: Select the agent to be assigned. By default, the agent is automatically selected
by the scheduler. The agent selector displays the actual amount of available resources for each agent.
Expand Down
9 changes: 3 additions & 6 deletions packages/backend.ai-webui-docs/src/ja/vfolder/vfolder.md
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ The meaning of each field in the creation dialog is as follows.
- **Folder name**: The name of the folder (up to 64 characters).
- **Location**: Select the NFS host where the folder will be created. If there are multiple hosts, choose one. An indicator will show if there is enough available space.
- **種類**: 作成するフォルダーの種類を決定します。ユーザーまたはプロジェクトとして設定できます。ユーザーフォルダーは、ユーザーが自身で作成して使用できるフォルダーであり、プロジェクトフォルダーは管理者によって作成され、プロジェクト内のユーザーと共有されるフォルダーです。
- **プロジェクト**:プロジェクトタイプを選択したときにのみ表示されます。新しいプロジェクトフォルダを作成するときに、フォルダが属するプロジェクトを指定します。プロジェクトフォルダは、プロジェクトに属する必要があります。ただし、ユーザーフォルダを作成する際には、役割を果たしません。
- **プロジェクト**:プロジェクトタイプを選択したときにのみ表示されます。新しいプロジェクトフォルダを作成するときに、フォルダが属するプロジェクトを指定します。プロジェクトフォルダは、プロジェクトに属する必要があり、プロジェクトフォルダの場合、トップバーで現在選択されているプロジェクトが対象プロジェクトとして自動的に選択されます。ただし、ユーザーフォルダを作成する際には、役割を果たしません。
- **アクセス権限**: プロジェクトフォルダのプロジェクトメンバーに対するアクセス権限を設定します。「読み取り専用」に設定されている場合、プロジェクトメンバーはコンピュートセッション内でこのフォルダに書き込みを行うことができません。
- **Cloneable**: Shown only when you select usage mode to "Model". Select whether the vfolder you are creating should be cloneable.

Expand Down Expand Up @@ -109,13 +109,13 @@ in the directory.
エディタはUIの設定に合わせてライトテーマとダークテーマの両方をサポートしています。ファイルの内容を編集した後、「保存」をクリックして変更されたファイルをアップロードするか、「キャンセル」をクリックして変更を破棄できます。

:::note
ファイルを編集ボタンは、ストレージフォルダに対するwrite_contentパーミッションがある場合にのみ使用できます。ファイルの読み込みに失敗した場合、エラーメッセージが表示されます。
ファイルを編集ボタンは、対象のストレージフォルダに対するユーザーのアクセス権限に `write_content` 権限が含まれている場合にのみ使用できます(フォルダの共有権限、またはフォルダに付与されたロールを通じて付与されます)。コントロールパネルのストレージホストレベルの設定は、この動作には影響しません。ファイルの読み込みに失敗した場合、エラーメッセージが表示されます。
:::

## フォルダー名を変更


ストレージフォルダの名前を変更する権限がある場合、編集ボタンをクリックして名前を変更できます
ストレージフォルダの名前を変更する権限がある場合、フォルダの詳細ドロワーを開き、フォルダ名の横にある編集ボタンをクリックして名前を変更します。名前変更は詳細ドロワー内でのみ行います

![](../images/rename_vfolder.png)

Expand Down Expand Up @@ -298,9 +298,6 @@ want to connect via SSH to your container. Please refer to
[managing user's SSH keypair](#user-ssh-keypair-management).
:::

## Folder Categories


## Pipeline folders

This tab shows the list of folders that are automatically created when executing a
Expand Down
7 changes: 3 additions & 4 deletions packages/backend.ai-webui-docs/src/ko/header/header.md
Original file line number Diff line number Diff line change
Expand Up @@ -91,8 +91,8 @@
사용자 정보가 변경됩니다.

- **사용자 이름**: 사용자의 이름 (최대 64자).
- **기존 비밀번호**: 현재 비밀번호입니다. 이 필드는 서버가 V2 사용자 업데이트 API를
지원하지 않는 경우에만 표시되며, 해당 서버에서 새 비밀번호를 설정할 때 반드시
- **기존 비밀번호**: 현재 비밀번호입니다. 이 필드는 Backend.AI 26.4.0 이전 버전의
서버에 연결된 경우에만 표시되며, 해당 서버에서 새 비밀번호를 설정할 때 반드시
입력해야 합니다.
- **새 비밀번호**: 새로운 비밀번호 (영문자, 숫자, 기호가 1개 이상 포함된 8글자 이상).
눈 아이콘을 클릭하면 입력 내용을 확인할 수 있습니다.
Expand All @@ -105,8 +105,7 @@
로그인 시 OTP 코드를 입력해야 합니다.

:::note
**허용된 클라이언트 IP** 필드는 서버가 V2 사용자 업데이트 API를 지원하는 경우에
사용할 수 있습니다.
**허용된 클라이언트 IP** 필드는 Backend.AI 26.4.0 이상에서 사용할 수 있습니다.
:::

:::note
Expand Down
Binary file modified packages/backend.ai-webui-docs/src/ko/images/data_page.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ko/images/header.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ko/images/menu_collapse.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified packages/backend.ai-webui-docs/src/ko/images/rename_vfolder.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions packages/backend.ai-webui-docs/src/ko/overview/overview.md
Original file line number Diff line number Diff line change
Expand Up @@ -176,3 +176,4 @@ GUI 클라이언트입니다. Backend.AI 서버에 접속하여 연산 자원을
| 관리* | X | O |
| 정보* | X | O |
| RBAC 관리* | X | O (슈퍼관리자) |
| 프로젝트* | X | O |
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@ Backend.AI WebUI 에서 가장 많이 방문하게 될 페이지는 세션 페
* AI 가속기: AI 가속기 (GPU 및 NPU)는 기계 학습과 관련된 행렬 / 벡터 계산에 적합합니다. AI 가속기는 훈련 및 인퍼런스 알고리즘을 몇 배나 가속화하여 기계 학습 워크로드의 실행 시간을 몇 주에서 며칠로 줄입니다.
* 세션: 세션은 지정된 환경과 자원에 따라 생성되는 계산 환경 단위입니다. 이 값을 1보다 큰 값으로 설정하면 위의 자원 설정을 이용한 여러 세션이 지정한 값만큼 동시에 생성됩니다. 세션 시작 요청 시 사용 가능한 자원이 충분하지 않은 경우, 생성하지 못한 세션 시작 요청들은 생성 대기열에 추가됩니다.

![](../images/launce_session_resource_2.png)
![](../images/launch_session_resource_2.png)
Comment thread
nowgnuesLee marked this conversation as resolved.

* 에이전트 선택: 사용자는 할당할 에이전트를 직접 선택할 수 있습니다. 기본적으로는 스케줄러가 에이전트를 자동으로 선택합니다. 에이전트 선택기에서는 각 에이전트의 실제 사용 가능한 자원 양을 확인할 수 있습니다. 현재 이 기능은 단일 노드, 단일 컨테이너 환경에서만 지원됩니다.
* 클러스터 모드: 클러스터 모드를 사용하면 여러 연산 세션을 한 번에 생성할 수 있습니다. 자세한 내용은 [Backend.AI 클러스터 연산 세션 개요](#backendai-cluster-compute-session)를 참고하세요.
Expand Down
Loading
Loading