Repository navigation
The row separator is where you look for it
v2.37.0 added a configurable rule between rows. It worked, and it was in the Settings dialog alone — while its four neighbours (theme, bars on the same dates, delimiters, weekends) sat in the side panel's Document section. The owner looked where the look settings live, found no fifth, and reported the feature missing:
"Did you add it? Like a separator? If so, where can I set it? I don't see where I can."
A setting you cannot find has not shipped.
What changed
- The side panel carries it, between Delimiters and Weekends. Thickness and Draw between appear only once there is a line to apply them to, as in the dialog. Both take their own label here: unlabelled, the width strip landed in the label gutter and the next heading landed beside the scope buttons, reading as a third scope option.
- The command palette finds it. There was no entry containing the word "separator" anywhere — not a label, not a keyword — so the search that should have rescued this returned nothing. Four commands now set the style directly, as the theme commands do.
- One option list, not two. Each surface had kept its own hand-written constants (two
THEMES, one keyedidand onevalue;DELIMITERSagainstDELIMITER_CHOICES, "Quarter" against "Qtr"). Six of seven settings were duplicated that way, so adding to one could not fail in the other.app/lookChoices.tsis now the single list both read. Labels may still differ by surface — the panel is a 288px column and says "Sections" where the dialog says "Between sections" — but as oneshortfield on one option. - A parity test (SRS-SET-015) holds both surfaces to the same five
aria-labels, so this class of gap fails loudly from now on. It was negative-controlled: renaming the panel's group fails it with "the side panel has no control labelled Row separator".
An audit of both surfaces confirmed those three controls were the only settings reachable from one and not the other.
And a gate that was checking nothing
A duplicate import took the dev server white and timed out every e2e spec. tsc --noEmit reported clean; so did eslint; so did a deliberate type error appended to the same file. The root tsconfig.json is solution-style — "files": [] with project references — so bare tsc --noEmit checks zero files and exits 0. The real check is tsc -b, which only ran inside npm run build. Run properly it caught three real errors in this change at once. There is a typecheck script now, and it fails on the duplicate with TS2300.
Earlier release notes here that said "tsc clean" were reporting a command that checked nothing.
Verification
Four independent reads of PowerRoadmap.html agree — GitHub's reported digest, the downloaded asset, the committed blob at the tag, and the local build: 474,287 bytes, sha256 993a9e76aeef2786…. Downloaded, served and opened: v2.37.1, 33 bars, all five look controls in the panel, dotted between every row drew 38 rules against 6 for sections only, no console errors.
Gates on the changed surface: typecheck clean under tsc -b, eslint 0 errors, 580 unit tests across 73 files with 6 new, 34 e2e passed and 1 skipped across the 5 reachable specs, Web CI green on the released commit. Not run: the tablet and mobile projects, and the specs this change cannot reach.
Download PowerRoadmap.html below. One file, no install; open it in a browser.