Skip to content

fix(channels): edit only label and skill name - #3647

Merged
AbigailDeng merged 2 commits into
feat/2026-08-04_workflow-activity-vnextfrom
fix/2026-09-16_channel-edit-names
Sep 16, 2026
Merged

AbigailDeng merged 2 commits into
feat/2026-08-04_workflow-activity-vnextfrom
fix/2026-09-16_channel-edit-names

Conversation

@AbigailDeng

@AbigailDeng AbigailDeng commented Sep 16, 2026

Copy link
Copy Markdown
Contributor

Problem and behavior

The Edit Telegram page currently exposes Skill name and Services, while the requested editing scope is Label and Skill name. This change adds real Label editing and removes the Services picker and its inventory request from the editor. The form keeps the existing centered Aevatar layout and Cancel / Save changes actions.

  • Resolve the exact owned registration's NyxID bot ID and load its real label. Label-only edits PATCH /api/v1/channel-bots/{botId} with only label; the response must confirm the exact bot identity and new label.
  • Skill edits retain the existing runtime fields and service selectors. The runtime-config POST omits authorization_mode and service_ids, so the backend preserves its current authorization instead of overwriting it with a stale form snapshot.
  • When both fields change, save Label first, then Skill name. If the second operation fails, show a partial-save message and retry only the unsaved changes. Preserve the existing single-readback flow after an accepted runtime update, duplicate-submit protection, dirty navigation, and unmount guards.
  • Creation still offers service selection; details still show authorized services. Update English/Chinese copy and the channel editor documentation.

Related to #3617. The status N+1 follow-up in #3643 is separate from this change.

Contract evidence

  • Aevatar feature/integrate at 6c929a00db3d7636c91bc719478043a5fd331f7c: ChannelCallbackEndpoints.cs retains CurrentServiceSelection(registration) when the update omits service selection.
  • NyxID at afdb3ef06a4e14a86d810a14982de3be01252090: backend/src/handlers/channel_bots.rs supports label-only PATCH, validates 1–128 UTF-8 bytes after trimming, and returns the updated bot. No backend changes are needed.
  • Label and runtime config use separate APIs; this does not claim atomic updates. Live bot data was not mutated for testing; request and recovery behavior was verified at the authenticated fetch boundary.

Local verification

All frontend commands below ran from apps/aevatar-console-web unless stated otherwise.

Dependency selection preflight selected exactly 7 related suites:

pnpm exec jest --findRelatedTests src/pages/workflow-activity-vnext/channels/ChannelEditPage.tsx src/shared/api/channelBotsApi.ts src/shared/api/channelRuntimeConfigApi.ts --listTests --runInBand

Executed those suites explicitly, including every changed test file: 7 suites, 178 tests passed.

pnpm exec jest --runTestsByPath src/pages/workflow-activity-vnext/index.test.tsx src/pages/workflow-activity-vnext/channels/TelegramConnectionPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelsPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx src/pages/workflow-activity-vnext/channels/ChannelAuthorizedServices.test.tsx src/shared/api/channelBotsApi.test.ts src/shared/api/channelRuntimeConfigApi.test.ts --runInBand

Targeted locale checks: 2 suites, 14 tests passed.

pnpm exec jest --runTestsByPath src/locales/catalog.test.ts src/locales/hardcodedCopyAudit.test.ts --runInBand

Changed-file static checks: 8 files passed.

pnpm exec biome check src/locales/channelMessages.en-US.ts src/locales/channelMessages.zh-CN.ts src/pages/workflow-activity-vnext/channels/ChannelEditPage.tsx src/pages/workflow-activity-vnext/channels/ChannelEditPage.test.tsx src/shared/api/channelBotsApi.ts src/shared/api/channelBotsApi.test.ts src/shared/api/channelRuntimeConfigApi.ts src/shared/api/channelRuntimeConfigApi.test.ts

Additional checks passed:

# Repository root
python3 /Users/abigaildeng/.codex/skills/frontend-incremental-pr/scripts/frontend_change_scope.py --repo . --base origin/feat/2026-08-04_workflow-activity-vnext
bash tools/ci/test_stability_guards.sh
git diff --check
# apps/aevatar-console-web
python3 docs/design-baselines/workflow-activity-vnext/verify-baseline.py

Full frontend suite, full lint, typecheck, and production build are delegated to GitHub CI under the personal incremental-validation policy. No reliable repository-native affected typecheck target is available, so local typecheck was skipped.

CI regression fix

CI run 35052548490 failed one test in shard 4: AevatarTooltipImportGuard.test.ts reported that ChannelDetailsPage.tsx imported Ant Design's Tooltip directly. The other three test shards passed; the aggregate console-web check failed because shard 4 failed.

Commit d09c8a042 replaces that direct Tooltip with the existing shared AevatarTooltip for the channel-name retry button. It keeps the existing retry action and accessible label while using the shared hover/focus behavior and styles. No test assertion or guard is weakened.

The same failure was reproduced locally before the fix. After the fix, the guard and the owning Channels page tests passed: 2 suites, 17 tests.

# Repository root: isolate this follow-up from the PR's already-verified changes
python3 /Users/abigaildeng/.codex/skills/frontend-incremental-pr/scripts/frontend_change_scope.py --repo . --base HEAD

pnpm --dir apps/aevatar-console-web exec jest --listTests --runInBand --findRelatedTests src/pages/workflow-activity-vnext/channels/ChannelDetailsPage.tsx
pnpm --dir apps/aevatar-console-web exec jest --runInBand --runTestsByPath src/shared/ui/AevatarTooltipImportGuard.test.ts src/pages/workflow-activity-vnext/channels/ChannelsPage.test.tsx
pnpm --dir apps/aevatar-console-web exec biome check src/pages/workflow-activity-vnext/channels/ChannelDetailsPage.tsx
git diff --check
git diff --cached --check

Dependency preflight selected five suites through the route imports. The owning Channels suite exercises the affected details page, including channel-name reload; the unrelated route-import fanout was excluded. Existing coverage already reproduces the regression, so no duplicate test was added. Static checking passed for the one changed file. Full frontend testing, typecheck, and build remain delegated to GitHub CI.

Design baseline

  • Primary: apps/aevatar-console-web/docs/design-baselines/workflow-activity-vnext/aevatar-workflow-activity-vnext.excalidraw
  • SHA-256: 30e74d7b410ae72c4c91432355436679033679c54c10b1702908435b001577de
  • Contract: docs/superpowers/specs/2026-08-04-workflow-activity-vnext-design.md
  • User paths: docs/superpowers/specs/2026-08-04-workflow-activity-vnext-user-paths.md
  • Existing auth, callback, session, returnTo, and Umi localization are reused. Production data comes only from real APIs; fixtures remain test-only.
  • Existing Channel edit styling is retained with the requested two-field layout. Baseline assets are unchanged; integrity verification passed.

@AbigailDeng
AbigailDeng merged commit 3dfb85f into feat/2026-08-04_workflow-activity-vnext Sep 16, 2026
17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant