Repository navigation
Labels
area: accessibilityAccessibility and assistive-technology supportAccessibility and assistive-technology supportarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: dependenciesDependency or lockfile maintenanceDependency or lockfile maintenancearea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionmaintenancepriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: blockedBlocked by conflict, dependency, or required prerequisiteBlocked by conflict, dependency, or required prerequisitetype: featureNew or expanded product capabilityNew or expanded product capability
Description
User outcome
Keyboard and assistive-technology users can submit project and connection creation from the focused input with Enter, while search forms prevent navigation without changing live filtering.
Supersedes
PR #696 contains the correct interaction direction but its current branch carries a full-file formatting rewrite, unrelated sanitizeCssClass hardening, direct undici, dependency downgrades, and a regenerated lockfile. Rebuild from the latest main; do not merge the aggregate diff.
Bounded implementation
- Wrap the editor project input/action pair in a semantic
form. - Wrap the connection name/DSN/action group in a semantic
form. - Wrap the project-list inline creator in a semantic
form. - Give each creation action
type="submit"; remove duplicate click dispatch. - Use one shared submit path per action and preserve existing async re-entry guards.
- Wrap diagram and canvas search controls in
role="search"forms whose submit handler only prevents navigation. - Preserve native validation, current labels, password handling, live filtering, security boundaries, and visual layout.
- Do not change status-class sanitization, polling, DSN policy, exports, dependencies, package manager, or unrelated formatting.
Regression contract
- whitespace-only project names do not submit;
- valid editor and project-list names submit exactly once on Enter;
- invalid DSNs remain rejected and never call the API;
- a valid connection submits exactly once on Enter and clears the secret field through the existing handler;
- repeated submission while an async request is active remains blocked;
- diagram and canvas search Enter events prevent navigation and preserve the current filtered results;
- button click remains a single submission path;
- full typecheck, production statement/branch coverage 100%, build, CI, Security Scan, Semgrep, CodeRabbit, OpenCode, and independent current-head approval.
Documentation
Update CHANGELOG.md and add a focused doctoring entry describing native form submission, async re-entry protection, and search-form behavior. Keep APA 7th references to the WHATWG HTML form submission model and WCAG 2.2 keyboard operability guidance.
Metadata
Metadata
Assignees
Labels
area: accessibilityAccessibility and assistive-technology supportAccessibility and assistive-technology supportarea: ci-cdCI, GitHub Actions, checks, release, or supply chainCI, GitHub Actions, checks, release, or supply chainarea: dependenciesDependency or lockfile maintenanceDependency or lockfile maintenancearea: securitySecurity boundary, hardening, or vulnerability preventionSecurity boundary, hardening, or vulnerability preventionmaintenancepriority: mediumNormal-priority or P2 workNormal-priority or P2 workstatus: blockedBlocked by conflict, dependency, or required prerequisiteBlocked by conflict, dependency, or required prerequisitetype: featureNew or expanded product capabilityNew or expanded product capability
Activity
chore: Drop changes in favor of #756