fix(stagecraft): long work-item keys no longer break the studio Board, and the key is not repeated (swamp-club #2963) #442

Merged
seth merged 2 commits from cue/2963-stagecraft-studio-long into main 2026-10-02 17:01:18 +00:00
Owner

Fixes swamp-club #2963: on the studio Board, long work-item keys broke the card layout, and on the built-in tracker the card showed the key twice.

What was wrong

A card's tracker ref (flex: none, no wrapping) is the key itself on the built-in tracker. A 50 to 64 character key pushed the ref past the card's edge and squeezed the key to one or two characters per line. The cards list measured 458px wide in a 258px column. Even a 29-character key broke the layout. The work-item page (PR 441) showed the key twice in its Tracker tab.

What changed

Board card

  • The title leads each card.
  • The key follows on one line, cut off with an ellipsis. It shows in full on hover and on keyboard focus.
  • The key's full text stays in the card, so screen readers read it. There's no aria-label, which would hide the card's badges from screen readers.
  • A tracker ref is shown only when it differs from the key. Linear's ABC-12 shows; a built-in ticket id doesn't. Two work items on one Linear issue are told apart by their keys (abc-12, abc-12-2).
  • Every text element in a card can shrink and wrap, and a column keeps its 260px width whatever its cards hold.

Work-item page

  • The heading and header key wrap.
  • The Tracker tab leaves out refs that equal the key, says when the ticket's id is the key, and names a built-in ticket by its title (or its id if the title is empty).
  • Tracker values and related items wrap.
  • The run's frame label and a copied scenario's description lead with the title. The scenario's name stays <key>-run.

Other

  • REFERENCE.md is updated and the studio bundle rebuilt.
  • Simulate needed no change. Measured with a 68-character scenario name, nothing overflows.
  • The long-key handling stays as a backstop after #2966 shortens keys, for hand-chosen keys and older records.

Testing

  • Unit tests for the card's key line (cardHead, refOtherThanKey) and the Tracker tab refs (ticketRefs), using a 64-character key, blog-12, ABC-12, and two items on one Linear issue.
  • Unit tests that the frame label and the copied scenario's description lead with the title.
  • A new studio_css_test.ts that checks the layout rules are in studio.css. The studio's tests have no DOM.
  • Measured in headless Chromium, serving this branch against a 64-character key and a 29-character key:
    • every card is 242px in its 260px column, and the cards list is 258/258;
    • the long key is clipped to one line, and no built-in ref is shown;
    • keyboard focus shows the full key;
    • moving the mouse down a column doesn't make cards flicker;
    • the work-item page doesn't overflow at 1400, 900 or 500px wide.
  • Still to do: Seth checks his blog board.

Verification attestation is posted for ec712e155. Both agent reviews passed; their low findings are noted on the issue.

🤖 Generated with Claude Code

Fixes swamp-club #2963: on the studio Board, long work-item keys broke the card layout, and on the built-in tracker the card showed the key twice. ## What was wrong A card's tracker ref (`flex: none`, no wrapping) is the key itself on the built-in tracker. A 50 to 64 character key pushed the ref past the card's edge and squeezed the key to one or two characters per line. The cards list measured 458px wide in a 258px column. Even a 29-character key broke the layout. The work-item page (PR 441) showed the key twice in its Tracker tab. ## What changed **Board card** - The title leads each card. - The key follows on one line, cut off with an ellipsis. It shows in full on hover and on keyboard focus. - The key's full text stays in the card, so screen readers read it. There's no `aria-label`, which would hide the card's badges from screen readers. - A tracker ref is shown only when it differs from the key. Linear's `ABC-12` shows; a built-in ticket id doesn't. Two work items on one Linear issue are told apart by their keys (`abc-12`, `abc-12-2`). - Every text element in a card can shrink and wrap, and a column keeps its 260px width whatever its cards hold. **Work-item page** - The heading and header key wrap. - The Tracker tab leaves out refs that equal the key, says when the ticket's id is the key, and names a built-in ticket by its title (or its id if the title is empty). - Tracker values and related items wrap. - The run's frame label and a copied scenario's description lead with the title. The scenario's name stays `<key>-run`. **Other** - `REFERENCE.md` is updated and the studio bundle rebuilt. - Simulate needed no change. Measured with a 68-character scenario name, nothing overflows. - The long-key handling stays as a backstop after #2966 shortens keys, for hand-chosen keys and older records. ## Testing - Unit tests for the card's key line (`cardHead`, `refOtherThanKey`) and the Tracker tab refs (`ticketRefs`), using a 64-character key, `blog-12`, `ABC-12`, and two items on one Linear issue. - Unit tests that the frame label and the copied scenario's description lead with the title. - A new `studio_css_test.ts` that checks the layout rules are in `studio.css`. The studio's tests have no DOM. - **Measured in headless Chromium**, serving this branch against a 64-character key and a 29-character key: - every card is 242px in its 260px column, and the cards list is 258/258; - the long key is clipped to one line, and no built-in ref is shown; - keyboard focus shows the full key; - moving the mouse down a column doesn't make cards flicker; - the work-item page doesn't overflow at 1400, 900 or 500px wide. - Still to do: Seth checks his `blog` board. Verification attestation is posted for `ec712e155`. Both agent reviews passed; their low findings are noted on the issue. 🤖 Generated with [Claude Code](https://claude.com/claude-code)
A built-in card's tracker ref is its key, and the ref could not shrink, so a
50 to 64 character key squeezed the card's key to a character or two a line
and the cards list overflowed its column. On the Board, the title now leads
each card; the key follows on one line, cut off, in full on hover and on
keyboard focus, and its full text stays in the card for screen readers. A
tracker ref is shown only when it differs from the key (Linear's ABC-12 is;
the built-in ticket id is not), so two work items on one Linear issue are
told apart by their keys. Every card text element may shrink and wrap, and
a column keeps its width whatever its cards hold.

The work-item page wraps its header key and heading, its Tracker tab leaves
out refs that are the key and names a built-in ticket by its title, and its
values and relations wrap. The page's frame label and a copied scenario's
description lead with the title. Simulate needed no change: measured with a
68-character scenario name, nothing overflows.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
fix(stagecraft): a built-in ticket with no title is still named by its id (swamp-club #2963)
All checks were successful
CI / Review Integrity (pull_request) Successful in 1m5s
CI / Validate Attestation (pull_request) Successful in 59s
ec712e155b
When the ticket's id is the key, the Tracker tab names the ticket by its
title; a tracker that records an empty title left only the arrow. Fall back
to the display id.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
seth merged commit 27b2fe16ef into main 2026-10-02 17:01:18 +00:00
seth deleted branch cue/2963-stagecraft-studio-long 2026-10-02 17:01:18 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
swamp-club/swamp-extensions!442
No description provided.