Whole-branch review fixes — provisioning, reachability, label data loss, a11y, dead code, org-context race, hex case

Fixkamo-internal
Shipped
28 Agosti 2026, 07:16 UTC
Author
Kamo
Commit
6d15491

Seven findings from the final whole-branch review of the org-launch and Getting Started wizard feature, fixed together since several interact: - B1: **************** now call POST .../provision-theme (fullProvision:false) and dispatch KAMO_THEME_REAPPLY after their own write succeeds, matching LabelManager.tsx's own requestThemeProvisionUpdate. A provisioning failure surfaces as a non-fatal warning (STEP_SAVERS now resolve to `string | null`) rather than failing a save that already landed. - B2: the wizard's "done" state is now a banner above a live, fully-usable rail and step body instead of replacing them, so the nine editors stay reachable after completion (Task 14's Settings card pointed at a dead end otherwise). Added a Change affordance wired to the previously-uncalled `uncomplete`/DELETE .../step/{key}. The launchpad button's own isWizardFinished gate is untouched. - S1: the settings Labels step now saves through its own buildBranchTitlesPatch instead of buildCustomLabels — PATCH .../branch-titles has no partial-patch semantics (Jackson gives a plain record no way to tell an omitted key from an explicit null), so the create flow's "omit when untouched" builder was silently erasing or re-labelling columns the member never touched this session. The new builder diffs against the organization's original row and echoes an untouched label back byte-for-byte. - S2: the **************** anti-pattern, escalated and fixed once in CreateOrgForm.section(), was still present one level down in all five network/create field-group components; replaced with `inert`. ColorSwatch and ToggleSwitch gained a real `disabled` prop (matching DropZone) and are now wired at every call site. - S3: deleted the dead Stepper.tsx/stepIcons.tsx (no importers since StepRail replaced them) and the StepConfig type they were the only user of. - S4: LogosStep/ColorsStep now key their brand-source/colour seed effects on org.id instead of a one-time `[]`, matching AppsStep — PublicProvider can render the platform org first and correct to the tenant a moment later, and a `[]`-effect could seed (and on save, write) the platform's brand onto the tenant during that window. - S5: rgbToHex now uppercases, matching Java ColorVariants' %02X so a saved palette is not mixed-case. Verified: npx tsc --noEmit clean; npx vitest run 310 files / 3992 passed; grep for as-any/as-never/ ts-expect-error in scope shows one pre-existing, unrelated EyeDropper cast.

All changes

Je, unaona nini kuhusu usafiri?

Kila moja ya hizi updates ardhi katika nafasi yako ya kazi moja kwa moja. Kuanza bure na kuangalia kukua wiki baada ya wiki.

Kuwa Huru MileleMtazamo wa bei