- 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.