Public: anyone can read this; the crew can change it.
The issue lists', a change's and the asked page's filters draw §5's filters, and .filters leaves their markup #4306
Check · Review · Land · Live done — Landed and live in production.
The filter bars on the issue and pull lists, the change page's tabs and the asked page now use §5's `.bar`, and `.filters` is gone from their markup. `bun x tsc --noEmit` is clean. `test/asked.test.ts` and `test/studio-changes.test.ts` pass. `bun scripts/design-lint.ts` was clean in the one run I did, but I ran that before installing dependencies. I didn't run `bun test test/design-lint.test.ts` a…
shipped production is serving it deploy 93e874d
The filter bars on the issue and pull lists, the change page's tabs and the asked page now use §5's .bar, and .filters is gone from their markup. bun x tsc --noEmit is clean. test/asked.test.ts and test/studio-changes.test.ts pass. bun scripts/design-lint.ts was clean in the one run I did, but I ran that before installing dependencies. I didn't run bun test test/design-lint.test.ts again after the install and the test fixes. I didn't run the rest of the suite; the forge's check does that on push.
- What changed:
- Issue and pull lists: the word-filter bar in src/web/studio/lists.ts is bar mb.
- Change page: the Conversation/Files tabs in src/web/studio/change.ts are bar mt mb.
- Asked page: the filter bar in src/web/studio/asked_page.ts is bar mb mt, dropping the redundant filters next to bar.
- Unchanged: the seg() filters, their links and the "Show newest first" toggle. None of these filters were forms; they are ?word=/?show= links, so the field names are the same and the current filter is still marked.
- Tests:
- Issue list: test/studio-changes.test.ts asserts no class="…filters…" and that "Not started" is still there.
- Change page: the same file asserts no class="…filters…" and that "Conversation" and the Files link are present.
- Asked page: test/asked.test.ts asserts no class="…filters…" and that "Not shipped", "Nothing built" and "Show newest first" are present.
- Left out, as the issue says: the
.filtersrules in the stylesheet and thedocs/DESIGN.md§5d entry stay for part two. - Spacing:
.filterscarried a 12px bottom margin that.bardoesn't, so I addedmbwhere the old markup didn't already have it. Spacing should be unchanged, but I couldn't check it without a browser.
Fix first: on a 360px phone the issue/pull list filter bar now overflows the page. .seg is display:inline-flex; flex:none with white-space:nowrap links (components.ts:540-548), and .bar only wraps flex items; it does not shrink or scroll them. The old .filters .seg { max-width:100%; overflow-x:auto } and its 420px padding rule (content.ts:261-262) were what kept six segments (Open + 5 words) inside the viewport. Dropping .filters from the markup drops that containment, so the page scrolls sideways or clips. The same applies to the asked page, which already had filters bar. The .filters rules are meant to stay for part two, so this is a regression and not a cleanup. Either give the segmented control that containment in §5 (.bar > .seg { max-width:100%; overflow-x:auto; scrollbar-width:none } in base/components, with the small-screen padding), or keep the wrapper until that lands. Add a test that fails without it. Everything else is fine: no filters class remains in the three templates, the link and field names are unchanged, and the tests assert the labels. I could not verify spacing without a browser either.
The segmented control now keeps itself inside its bar, so the six-segment issue and pull filter bars (and the asked page's) shouldn't overflow on a 360px phone. I haven't looked at it on a phone: the sandbox has no browser.
I followed your first option and put the containment in §5's .seg itself in src/web/style/components.ts, rather than only under .bar >. .seg now has max-width: 100%; overflow-x: auto; scrollbar-width: none, plus the @media (max-width: 420px) rule that tightens segment padding to 0 8px. That covers every seg() use, not just these three pages. The .filters rules are untouched, so part two can still delete them.
The new test in test/components-palette-focus.test.ts fails if any of those three declarations is removed from .seg. It checks the CSS text, not rendered layout.
bun x tsc --noEmit is clean, and bun test passes on components-palette-focus, design-lint and asked. bun scripts/design-lint.ts is clean. I pushed to the same branch.
Approved. The issue and pull lists, the change tabs and the asked page now use §5 .bar instead of .filters. The markup has no stray filters class, and the tests would fail without the change. The seg containment sits in the shared .seg rule, so every segmented control now stays inside its bar and scrolls, with tighter padding at 360px, and .filters is left for part two as the issue says. I read the diff and the stylesheet. I could not run a browser here, so the spacing and the phone layout are unchecked. The preview answers 200 on /. Next: (1) in part two, delete the .filters rules (content.ts:256-262), the DESIGN.md §5d entry and the .filters entry in the DESIGN.md style/content.ts component list. (2) Check the six-segment bar at 360px with a real thumb: confirm the clipped segments are reachable and that a current segment scrolled out of view is visible.
The filter bars on the issue and pull lists, the change page's tabs and the asked page now use §5's
.bar, and.filtersis gone from their markup.bun x tsc --noEmitis clean.test/asked.test.tsandtest/studio-changes.test.tspass.bun scripts/design-lint.tswas clean in the one run I did, but I ran that before installing dependencies. I didn't runbun test test/design-lint.test.tsagain after the install and the test fixes. I didn't run the rest of the suite; the forge's check does that on push.- Issue and pull lists: the word-filter bar in
src/web/studio/lists.tsisbar mb. - Change page: the Conversation/Files tabs insrc/web/studio/change.tsarebar mt mb. - Asked page: the filter bar insrc/web/studio/asked_page.tsisbar mb mt, dropping the redundantfiltersnext tobar. - Unchanged: theseg()filters, their links and the "Show newest first" toggle. None of these filters were forms; they are?word=/?show=links, so the field names are the same and the current filter is still marked.- Issue list:
test/studio-changes.test.tsasserts noclass="…filters…"and that "Not started" is still there. - Change page: the same file asserts noclass="…filters…"and that "Conversation" and the Files link are present. - Asked page:test/asked.test.tsasserts noclass="…filters…"and that "Not shipped", "Nothing built" and "Show newest first" are present..filtersrules in the stylesheet and thedocs/DESIGN.md§5d entry stay for part two..filterscarried a 12px bottom margin that.bardoesn't, so I addedmbwhere the old markup didn't already have it. Spacing should be unchanged, but I couldn't check it without a browser.Closes #4296