Skip to content

Tier rail 2/4: render the standalone tier rail (event-driven, accessible) #157

Closed

Description

@cchacs

Part of #131 (remediation steps 2, 3, 4 and 5). Depends on Tier rail 1/4 (the v3 contract).

Replace the standalone canvas glass HUD (screen.js ~2370-2522) with a compact segmented tier rail.

Scope

  • Lit segments show currentTier; a distinct notch/outline marks topTier. Do not encode difficulty by changing the component's physical size.
  • Readable detail on hover, focus and via an accessible label, e.g. Tier 2 of 4 · full detail at 3. The current canvas is pointer-inert and has no accessible name, so this likely means moving off a bare canvas or adding an accessible layer; decide and state which.
  • Make it event-driven: update on song load, phrase transition, mastery change and settings change, not every requestAnimationFrame frame (the current HUD redraws every frame although its inputs change rarely).
  • Use FeedBack tokens and the same tier semantics and current/upcoming treatment that Section Map will use.
  • Keep per-instance state isolated for Split Screen / player-context instances (see PLAYER_CONTEXT.md).

Acceptance criteria

  • A first-time user can identify the current tier and the full-detail threshold without documentation.
  • Missing phrase data shows no rail rather than a zero-tier value.
  • Keyboard and screen-reader users can inspect current and upcoming values.
  • No difficulty-guide work runs continuously at 60 fps (verify with a test or a profiling note).
  • The glass HUD can stay available behind the old setting until sub-issue 4 removes it, so this can ship incrementally.

Out of scope

The setting rename (sub-issue 3), Section Map rendering (sectionmap#14), removing glass code (sub-issue 4).

Activity

  1. pullfrog commented on Oct 2, 2026

    @pullfrog
    Contributor
  2. cchacs commented on Oct 7, 2026

    @cchacs
    CollaboratorAuthor

    Status: Triage
    Track: UI/Contract
    Milestone: M3 Generation Parity & Guide
    Blocked by: M1+M2 seam stability (sequencing plan)
    Agent/session: unclaimed

    Builds on the closed v3 contract #156.

    Sequenced per the repository's issue-sequencing plan (milestones M1-M6, ordered; this comment is the Status/Track/Blocked-by coordination line while the board is milestones-only). Update this comment when claiming, blocking, or handing off - claim protocol: one agent per issue; comment Claimed in <branch> (<milestone>); branch naming m<M>-<issue>-<slug>; set Status to In Progress/In Review/Done here as work proceeds. Never take this issue as a work item if Track is meta.

  3. cchacs commented on Oct 9, 2026

    @cchacs
    CollaboratorAuthor

    Claimed in m3-157-tier-rail (M3).

  4. added 2 commits that reference this issue on Oct 12, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Track: UI/Contractuser-facing surfaces and cross-plugin contractsenhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions