3.4 KiB
3.4 KiB
id, title, status, wave, depends_on, plan, spec
| id | title | status | wave | depends_on | plan | spec |
|---|---|---|---|---|---|---|
| 01-disable-same-version-approval | Disable same-version approval | done | 1 | plan.md | ../../specs/agents/runtime-updates.md |
Task 01: Disable same-version approval
Acceptance
- A resolved preview with identical non-empty current and target versions shows the version once with Up to date, omits the arrow transition, keeps Approve update disabled, and sends no update POST.
- Differing-version approval and failed-job retry remain enabled.
- Desktop and mobile use the same predicate, and the public Agents guide explains the unavailable approval state.
- A stale preview cannot invoke a package command after the backend resolves that the runtime is already up to date.
TDD sequence
- Add the equal-version desktop and mobile Playwright scenarios and run each focused test to confirm it fails because the UI shows an arrow transition and the confirmation button is enabled.
- Render one version plus Up to date, then tighten
canApproveUpdatewith the minimal target-presence and inequality checks. - Run both runtime-update spec files to prove the new regression and existing enabled paths.
- Update and validate the public documentation.
- Revalidate the current runtime version in the backend before executing a package command and cover the no-op job path with a Go unit test.
Verification
- From
apps/in a fresh worktree, install dependencies:pnpm install --frozen-lockfile - Desktop E2E:
pnpm --filter @kandev/web e2e:run --host tests/settings/agent-runtime-update.spec.ts - Mobile E2E:
pnpm --filter @kandev/web e2e:run --host tests/settings/mobile-agent-runtime-update.spec.ts -- --project=mobile-chrome - Frontend typecheck:
pnpm --filter @kandev/web run typecheck - Frontend unit tests:
pnpm --filter @kandev/web test -- --run lib/agent-runtime-update.test.ts - Backend unit test:
cd ../apps/backend && go test -run TestAgentUpdateJobSkipsCommandWhenRuntimeIsAlreadyUpToDate ./internal/agent/settings/controller - Public docs:
node --test scripts/validate-public-docs.test.mjs && node scripts/validate-public-docs.mjs
Files likely touched
apps/web/components/settings/agent-runtime-update-control.tsxapps/web/e2e/tests/settings/agent-runtime-update.spec.tsapps/web/e2e/tests/settings/mobile-agent-runtime-update.spec.tsapps/web/lib/agent-runtime-update.tsapps/web/lib/agent-runtime-update.test.tsapps/backend/internal/agent/settings/controller/agent_update_job.goapps/backend/internal/agent/settings/controller/agent_update_test.godocs/public/agents-and-profiles.md
Dependencies
None.
Parallelism
Sequential. The E2E scenarios depend on the same shared component change and the task is one focused behavior slice.
Inputs
- Equal-version behavior in
docs/specs/agents/runtime-updates.md - Shared body presentation and footer state in
apps/web/components/settings/agent-runtime-update-control.tsx - Existing desktop and mobile runtime-update fixtures and scenarios
- Mobile parity contract in
plan.md
Risks
- Preserve failed-job retries when preview versions differ.
- Do not disable the card's update icon before a fresh preview has resolved.
Output contract
Report RED/GREEN evidence, changed files, desktop/mobile results, docs
validation, any blockers or risks, and update this task plus plan.md status in
the same conversation.