Un-skip the parity guards, and pin without blocking the page

Fixkamo-internal
Shipped
September 2, 2026 at 10:52 PM UTC
Author
Kamo
Commit
797868a

TWO PARITY TESTS HAVE NEVER RUN. Both resolved RoleRightType.java through **************** — that is ~/Java/kamo-shared-library, while the checkout is **************** existsSync was false, every assertion comparing the mirror against Java skipped, and both suites reported green. A guard that silently does not run is worse than no guard: it is also a claim that the thing it checks has been checked. Turning them on found what they were built to find: * 35 serviceType drifts in the TS mirror. The SUBSCRIPTION block (84-103), the SERVICE block (268-272) and MANAGE_BILLING_PROVIDER said POS; the nine CALC_ rights said null. All corrected from Java. * FOUR MISSING HIERARCHY EDGES — the Report Studio's. EXPORT_REPORTS, SHARE_REPORTS and SCHEDULE_REPORTS hang off VIEW_REPORTS in Java, and MANAGE_REPORT_SCHEDULES off SCHEDULE_REPORTS; none was mirrored when Reports shipped on 2026-09-01. Without them an administrator could grant scheduling without the ability to read a report, so a member could keep emailing an organization's figures out on a schedule after their access to look at them had been revoked. Exactly the class of bug the test exists for, and it sat undetected because the test could not see the file. The path is now a search with a KAMO_SHARED_LIB override (sharedLibPath.ts). Skipping is still right when shared-lib genuinely is not on disk — this repo's image builds without it — but only because the file is absent, not because we looked in the wrong place. PINNING NO LONGER BLOCKS THE PAGE. Keeping the backdrop made a pinned panel a dialog that would not close: the member could see the script and not touch the lead it was about, which is the one thing pinning is for. Pinned now drops the backdrop, the scroll lock, aria-modal and the focus trap, and reserves the panel's width on <body> so content reflows beside it rather than hiding under it. Escape still does not dismiss. Those five consequences moved out of scattered JSX ternaries into interactionCenterModality(), because half-modal is the worst state available — a panel with no backdrop that still freezes the scroll, or one you can click past that still traps focus — and five separate ternaries is how you get there. One of the tests asserts precisely that they move together. Width is the only consequence that is not simply "not modal": on a narrow viewport the panel already covers nearly everything, so reserving it would leave a sliver.

All changes

Like what you see shipping?

Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.

Start Free ForeverView Pricing