feat(pi-board): keyboard-accessible card moves + integration tests - #3
Merged
Conversation
Addresses two of the remaining follow-ups from #1/#2. Accessibility (ADR-0025 baseline) - The board's only way to move a card between iterations was drag-and-drop (mouse-only). Add a native <select> on each card — fully keyboard-operable and screen-reader labelled — to move it to any iteration (or Unscheduled). Mouse users can still drag; both paths call the same placement mutation. Integration tests (new server/Atlas.Tests/PiBoardAndSettingsTests.cs) - GET /settings redacts secret-valued keys (teams.webhookUrl) while still returning non-secret toggles — regression guard for the #2 leak fix. - PI board placement roundtrip: place → appears in the map; clear (null) → drops out; cross-increment objective → 400 (not 500). - Teams status returns only the masked host, never the raw webhook (asserts the secret path/token never appear in the response). Frontend build, lint and the 72-test suite pass. The .NET tests are compiled and run by the API (build · test) CI job (no SDK in the authoring env). Note: item #2 from the gap list (broadcast from Jira/ADO sync) is N/A — those services write project tasks/sprints, not PI objectives/dependencies/iterations, so they don't change board state. The IterationId migration still needs a dotnet-ef environment. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-ups to #1/#2 — closes two more items from the gap analysis.
♿ Accessibility — keyboard-accessible card moves
The board's only way to move a card between iterations was drag-and-drop, which is mouse-only and fails the ADR-0025 accessibility baseline.
<select>(keyboard-operable, screen-reader labelledMove "<title>" to iteration) to move it to any iteration or back to Unscheduled.🧪 Integration tests —
server/Atlas.Tests/PiBoardAndSettingsTests.csThe endpoints added in #1/#2 had no automated coverage. New tests (on the existing
AtlasApiFactoryin-memory host):GET /settingsomits secret-valued keys (teams.webhookUrl) but still returns non-secret toggles. Regression guard for the fix(security): redact setting secrets + make the PI board live server-side #2 leak fix.null) → drops out; an objective from another increment →400(not500).Verification
build+eslint+ 72 tests pass locally.API (build · test)CI job (no SDK in the authoring env — CI is the gate).Scope notes
PiObjective.IterationIdmigration remains the one item that needs adotnet efenvironment.🤖 Generated with Claude Code
https://claude.ai/code/session_01F1g44VLAeYdf3FAoXsXRu7
Generated by Claude Code