Skip to content

Commit 5fa6f81

Browse files
committed
Merge branch 'main' into 26.7
2 parents 2306325 + 6e1410f commit 5fa6f81

120 files changed

Lines changed: 5347 additions & 1564 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/docs-archive-orphan-branch.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,37 @@ jobs:
218218
# docs corrections that should land in the archive.
219219
git push --force origin "$BRANCH"
220220
221+
# The live site renders every archive at Amplify build time, but
222+
# Amplify only builds on pushes to `main`. Without this step, a
223+
# docs-only push to a release branch refreshes the archive branch
224+
# yet the deployed /<minor>/ pages stay stale until an unrelated
225+
# `main` merge happens to land (FR-3275). POSTing the Amplify
226+
# incoming webhook starts a rebuild of the main-HEAD pipeline so
227+
# the refreshed archive is re-rendered immediately. The release
228+
# path already rebuilds via the auto-opened pdfTag PR merge
229+
# (FR-3246); this covers the push/dispatch paths. Skips with a
230+
# warning when the secret is not configured, preserving the
231+
# previous behavior.
232+
- name: Trigger Amplify docs rebuild
233+
if: ${{ steps.resolve.outputs.dry_run != 'true' }}
234+
env:
235+
WEBHOOK: ${{ secrets.AMPLIFY_DOCS_WEBHOOK_URL }}
236+
run: |
237+
if [ -z "$WEBHOOK" ]; then
238+
echo "::warning::AMPLIFY_DOCS_WEBHOOK_URL secret not set — docs-archive branch was updated, but the live site stays stale until the next main build. Create an Amplify incoming webhook (docs app → Build settings → Incoming webhooks) and store its URL in this secret."
239+
exit 0
240+
fi
241+
# The archive force-push above already succeeded, so a flaky
242+
# webhook must not fail the workflow. Bound the request (timeout
243+
# + retries) and downgrade any failure to a warning — the live
244+
# site will still refresh on the next main build.
245+
if curl -fsS --max-time 30 --retry 3 --retry-delay 5 --retry-all-errors \
246+
-X POST "$WEBHOOK" -H 'Content-Type: application/json' -d '{}'; then
247+
echo "Amplify rebuild triggered."
248+
else
249+
echo "::warning::Amplify webhook POST failed after retries — the docs-archive branch is already updated, so the live site will refresh on the next main build. Re-run this workflow (or POST the webhook manually) to force it sooner."
250+
fi
251+
221252
- name: Dry-run summary
222253
if: ${{ steps.resolve.outputs.dry_run == 'true' }}
223254
env:

.github/workflows/docs-checks.yml

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
# Deterministic checks for the user-manual package (FR-3276).
2+
#
3+
# Runs the docs package's script-based lints on any PR that touches the
4+
# manual. These previously existed only as local npm scripts with no CI
5+
# teeth:
6+
# - check:terminology-md — TERMINOLOGY.md is in sync with terminology.json
7+
# - check:nav-titles — sidebar nav labels relate to their page H1s
8+
# (guards against "Sessions All"-style label/title drift; see
9+
# packages/backend.ai-webui-docs/scripts/check-nav-titles.mjs)
10+
name: docs-checks
11+
12+
on:
13+
pull_request:
14+
paths:
15+
- "packages/backend.ai-webui-docs/**"
16+
- ".github/workflows/docs-checks.yml"
17+
18+
permissions:
19+
contents: read
20+
21+
jobs:
22+
docs-checks:
23+
runs-on: ubuntu-latest
24+
steps:
25+
- uses: actions/checkout@v4
26+
27+
# pnpm must be installed before setup-node so that node's
28+
# package-manager cache resolution (`pnpm store path`) works.
29+
- uses: pnpm/action-setup@v5
30+
31+
- uses: actions/setup-node@v5
32+
with:
33+
node-version-file: ".nvmrc"
34+
cache: "pnpm"
35+
36+
- name: Install docs package dependencies
37+
run: pnpm install --filter backend.ai-webui-docs --frozen-lockfile
38+
39+
- name: Terminology table in sync
40+
run: pnpm --filter backend.ai-webui-docs run check:terminology-md
41+
42+
- name: Nav labels relate to page H1s
43+
run: pnpm --filter backend.ai-webui-docs run check:nav-titles

.github/workflows/storybook-coverage-checker.lock.yml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/workflows/storybook-coverage-checker.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ You are a Storybook coverage analyzer. When a PR is ready for review, analyze ch
4444

4545
### Step 1: Find the PR
4646

47-
Use the GitHub MCP server tools (configured via `tools.github.toolsets: [pull_requests, repos]`) to find the pull request for the current branch. Query open pull requests whose head ref matches the current branch name and select the most recent one.
47+
Use the GitHub MCP server tools (configured via `tools.github.toolsets: [pull_requests, repos]`) to find the pull request for the current branch. Query open pull requests whose head ref matches the current branch name and select the most recent one. **Remember this PR number** — because this workflow runs via `workflow_dispatch` (no triggering PR context), you must pass it explicitly as `item_number` when you call `add_comment` (see Important Notes below).
4848

4949
### Step 2: Get Changed Component Files
5050

@@ -139,7 +139,7 @@ loading: {
139139
- `-propName`: Removed prop (in story, not in component)
140140
- `~propName`: Changed prop (type mismatch)
141141
4. **BAI-specific props**: Focus on props defined in the component's own interface, not inherited from Ant Design
142-
5. **Use `add_comment`**: This safe-output tool will automatically comment on the relevant pull request when configured with `target: "*"`, so `item_number` is not required
142+
5. **Use `add_comment`**: Because `safe-outputs.add-comment` is configured with `target: "*"` (this workflow is dispatched, so it has no triggering PR), you **must** set `item_number` in the `add_comment` output to the pull request number you identified in Step 1. Omitting it makes the safe-output handler fail with "no specific item number was provided".
143143

144144
## Example Analysis
145145

amplify.yml

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -156,14 +156,27 @@ applications:
156156
# `<projectRoot>/.docs-archive/<sanitized-ref>`. With the
157157
# appRoot set to this package, `<projectRoot>` IS the cwd,
158158
# so the worktree path is simply
159-
# `.docs-archive/<sanitized-ref>`. The list is hardcoded
160-
# to `26.4` for v1; future archived minors must be added
161-
# here in lockstep with the `versions:` config until a
162-
# toolkit helper does it dynamically.
159+
# `.docs-archive/<sanitized-ref>`.
160+
#
161+
# ARCHIVE_REFS is derived DIRECTLY from the config's
162+
# `versions:` block (FR-3255) — every `ref: docs-archive/X.Y`
163+
# line — so adding a minor to `docs-toolkit.config.yaml`
164+
# (which the `docs-version-pdftag-pr.yml` release automation
165+
# now does automatically) is picked up here with ZERO
166+
# lockstep edits. The `^\s*ref:` anchor matches only real
167+
# archive-branch refs, never the `docs-archive/…` mentions
168+
# in the surrounding config comments. The
169+
# `${ARR[@]+"${ARR[@]}"}` expansion is empty-array-safe under
170+
# `set -u` (older bash errors on a bare `"${ARR[@]}"`).
163171
- |
164172
set -euo pipefail
165-
ARCHIVE_REFS=(docs-archive/26.4)
166-
for ref in "${ARCHIVE_REFS[@]}"; do
173+
mapfile -t ARCHIVE_REFS < <(
174+
grep -oE '^[[:space:]]*ref:[[:space:]]*docs-archive/[0-9]+\.[0-9]+[[:space:]]*$' \
175+
docs-toolkit.config.yaml \
176+
| grep -oE 'docs-archive/[0-9]+\.[0-9]+' | sort -u
177+
)
178+
echo "Archive refs from config: ${ARCHIVE_REFS[*]:-(none)}"
179+
for ref in ${ARCHIVE_REFS[@]+"${ARCHIVE_REFS[@]}"}; do
167180
sanitized="${ref//\//__}"
168181
worktree=".docs-archive/${sanitized}"
169182
# Idempotency check: a plain `[ -d "${worktree}" ]` is

data/schema.graphql

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -956,6 +956,15 @@ input AppConfigAllowListFilter
956956

957957
"""Filter by last update datetime."""
958958
updatedAt: DateTimeFilter = null
959+
960+
"""Added in 26.7.0. Match all of the given sub-filters."""
961+
AND: [AppConfigAllowListFilter!] = null
962+
963+
"""Added in 26.7.0. Match any of the given sub-filters."""
964+
OR: [AppConfigAllowListFilter!] = null
965+
966+
"""Added in 26.7.0. Negate the given sub-filters."""
967+
NOT: [AppConfigAllowListFilter!] = null
959968
}
960969

961970
"""Added in 26.7.0. Specifies ordering for app config allow-list results."""
@@ -1040,6 +1049,15 @@ input AppConfigDefinitionFilter
10401049

10411050
"""Filter by last update datetime."""
10421051
updatedAt: DateTimeFilter = null
1052+
1053+
"""Added in 26.7.0. Match all of the given sub-filters."""
1054+
AND: [AppConfigDefinitionFilter!] = null
1055+
1056+
"""Added in 26.7.0. Match any of the given sub-filters."""
1057+
OR: [AppConfigDefinitionFilter!] = null
1058+
1059+
"""Added in 26.7.0. Negate the given sub-filters."""
1060+
NOT: [AppConfigDefinitionFilter!] = null
10431061
}
10441062

10451063
"""Added in 26.7.0. Specifies ordering for app config definition results."""
@@ -2692,6 +2710,15 @@ input CategoryFilter
26922710
{
26932711
"""Filter by name."""
26942712
name: StringFilter = null
2713+
2714+
"""Added in 26.7.0. Match all of the given sub-filters."""
2715+
AND: [CategoryFilter!] = null
2716+
2717+
"""Added in 26.7.0. Match any of the given sub-filters."""
2718+
OR: [CategoryFilter!] = null
2719+
2720+
"""Added in 26.7.0. Negate the given sub-filters."""
2721+
NOT: [CategoryFilter!] = null
26952722
}
26962723

26972724
"""Added in 26.3.0. Specifies ordering for query preset category results."""
@@ -3331,6 +3358,15 @@ input ContainerRegistryV2Filter
33313358
registryName: StringFilter = null
33323359
type: ContainerRegistryTypeFilter = null
33333360
isGlobal: Boolean = null
3361+
3362+
"""Added in 26.7.0. Match all of the given sub-filters."""
3363+
AND: [ContainerRegistryV2Filter!] = null
3364+
3365+
"""Added in 26.7.0. Match any of the given sub-filters."""
3366+
OR: [ContainerRegistryV2Filter!] = null
3367+
3368+
"""Added in 26.7.0. Negate the given sub-filters."""
3369+
NOT: [ContainerRegistryV2Filter!] = null
33343370
}
33353371

33363372
"""Added in 26.4.2. Ordering specification for container registries."""
@@ -5816,6 +5852,15 @@ input DeploymentRevisionPresetFilter
58165852

58175853
"""Variant ID filter."""
58185854
runtimeVariantId: UUIDFilter = null
5855+
5856+
"""Added in 26.7.0. Match all of the given sub-filters."""
5857+
AND: [DeploymentRevisionPresetFilter!] = null
5858+
5859+
"""Added in 26.7.0. Match any of the given sub-filters."""
5860+
OR: [DeploymentRevisionPresetFilter!] = null
5861+
5862+
"""Added in 26.7.0. Negate the given sub-filters."""
5863+
NOT: [DeploymentRevisionPresetFilter!] = null
58195864
}
58205865

58215866
"""Added in 26.4.2. Order specification for deployment revision presets."""
@@ -8841,6 +8886,15 @@ input KeypairResourcePolicyV2Filter
88418886
Added in 26.4.4. Filter policies by their assigned keypairs. A policy matches if at least one of its keypairs satisfies the conditions.
88428887
"""
88438888
keypair: KeypairResourcePolicyKeypairNestedFilter = null
8889+
8890+
"""Added in 26.7.0. Match all of the given sub-filters."""
8891+
AND: [KeypairResourcePolicyV2Filter!] = null
8892+
8893+
"""Added in 26.7.0. Match any of the given sub-filters."""
8894+
OR: [KeypairResourcePolicyV2Filter!] = null
8895+
8896+
"""Added in 26.7.0. Negate the given sub-filters."""
8897+
NOT: [KeypairResourcePolicyV2Filter!] = null
88448898
}
88458899

88468900
"""Added in 26.4.2. Ordering specification for keypair resource policies."""
@@ -9125,6 +9179,15 @@ input LoginClientTypeFilter
91259179

91269180
"""Filter by last modification datetime."""
91279181
modifiedAt: DateTimeFilter = null
9182+
9183+
"""Added in 26.7.0. Match all of the given sub-filters."""
9184+
AND: [LoginClientTypeFilter!] = null
9185+
9186+
"""Added in 26.7.0. Match any of the given sub-filters."""
9187+
OR: [LoginClientTypeFilter!] = null
9188+
9189+
"""Added in 26.7.0. Negate the given sub-filters."""
9190+
NOT: [LoginClientTypeFilter!] = null
91289191
}
91299192

91309193
"""Added in 26.4.2. Specifies ordering for login client type results."""
@@ -13340,6 +13403,15 @@ input ProjectResourcePolicyV2Filter
1334013403
maxVfolderCount: IntFilter = null
1334113404
maxQuotaScopeSize: IntFilter = null
1334213405
maxNetworkCount: IntFilter = null
13406+
13407+
"""Added in 26.7.0. Match all of the given sub-filters."""
13408+
AND: [ProjectResourcePolicyV2Filter!] = null
13409+
13410+
"""Added in 26.7.0. Match any of the given sub-filters."""
13411+
OR: [ProjectResourcePolicyV2Filter!] = null
13412+
13413+
"""Added in 26.7.0. Negate the given sub-filters."""
13414+
NOT: [ProjectResourcePolicyV2Filter!] = null
1334313415
}
1334413416

1334513417
"""Added in 26.4.2. Ordering specification for project resource policies."""
@@ -17335,6 +17407,15 @@ input RuntimeVariantFilter
1733517407
{
1733617408
"""Name filter."""
1733717409
name: StringFilter = null
17410+
17411+
"""Added in 26.7.0. Match all of the given sub-filters."""
17412+
AND: [RuntimeVariantFilter!] = null
17413+
17414+
"""Added in 26.7.0. Match any of the given sub-filters."""
17415+
OR: [RuntimeVariantFilter!] = null
17416+
17417+
"""Added in 26.7.0. Negate the given sub-filters."""
17418+
NOT: [RuntimeVariantFilter!] = null
1733817419
}
1733917420

1734017421
"""Added in 24.03.5."""
@@ -17450,6 +17531,15 @@ input RuntimeVariantPresetFilter
1745017531

1745117532
"""Variant ID filter."""
1745217533
runtimeVariantId: UUIDFilter = null
17534+
17535+
"""Added in 26.7.0. Match all of the given sub-filters."""
17536+
AND: [RuntimeVariantPresetFilter!] = null
17537+
17538+
"""Added in 26.7.0. Match any of the given sub-filters."""
17539+
OR: [RuntimeVariantPresetFilter!] = null
17540+
17541+
"""Added in 26.7.0. Negate the given sub-filters."""
17542+
NOT: [RuntimeVariantPresetFilter!] = null
1745317543
}
1745417544

1745517545
"""Added in 26.4.2. Order specification."""
@@ -20628,6 +20718,15 @@ input UserResourcePolicyV2Filter
2062820718
maxQuotaScopeSize: IntFilter = null
2062920719
maxSessionCountPerModelSession: IntFilter = null
2063020720
maxCustomizedImageCount: IntFilter = null
20721+
20722+
"""Added in 26.7.0. Match all of the given sub-filters."""
20723+
AND: [UserResourcePolicyV2Filter!] = null
20724+
20725+
"""Added in 26.7.0. Match any of the given sub-filters."""
20726+
OR: [UserResourcePolicyV2Filter!] = null
20727+
20728+
"""Added in 26.7.0. Negate the given sub-filters."""
20729+
NOT: [UserResourcePolicyV2Filter!] = null
2063120730
}
2063220731

2063320732
"""Added in 26.4.2. Ordering specification for user resource policies."""

0 commit comments

Comments
 (0)