Let the tab icon follow a simple-logo change instead of pinning the one captured at mount
TabAttention badges the browser tab, and it read the favicon ONCE in a mount effect. That effect runs before DynamicMetaLoader's config.json fetch has resolved,...
Give the generated favicons the same revalidation requirement as every other theme asset
Replacing an org's simple logo updated every surface that reads img/logo.svg and left the browser tab on the old mark. Generation was never the problem: provisi...
Enter the new organization here, not on a domain with no DNS
Creating an organization handed the creator a button pointing at `https://internal.<the domain they typed>/`. That host does not resolve: the domain is one they...
The scan's colours, the colour window, and the stacked slots
Five reports from the brand section, and the first two turn out to be the same bug wearing two faces. **Colours were never adopted.** The rule latched a `color...
Say in the class contract that the gate can fall open
The header promised "a blocked app's endpoints all 403" without qualification, which is now true only while the entitlement tables can be read. The exception is...
A transient database fault must not 500 the request
The lead Communications tab reported "We couldn't load this lead's communications" for org 1168485648209608710 on 2026-08-28. The endpoint returned 500 five tim...
Carry the per-member-type home-screen defaults
Read on POST/PUT /security-models and PUT /master-model, and emitted from /applied-model's settings so the shell can decide where a member lands on "/". A sepa...
A security model says where each member type lands on "/"
Three columns on ChildOrgSecurityModel — DEFAULT_MEMBER_HOME_SCREEN, **************** DEFAULT_ORG_OWNER_HOME_SCREEN. Each holds HOME_SCREEN_DEFAULT or REQUIRES_...
The three per-member-type home-screen columns on a security model
CHILD_ORG_SECURITY_MODELS gains DEFAULT_MEMBER_HOME_SCREEN, DEFAULT_TEAM_MEMBER_HOME_SCREEN and DEFAULT_ORG_OWNER_HOME_SCREEN. Each holds HOME_SCREEN_DEFAULT (t...
One list of what the scan found, beside what you are using
The brand section of /network/create becomes three bands with the same shape: what your website has on the left, what your organization is using on the right. ...
A per-member-type default home screen
A security model now says where each of its three member types lands when they open "/". Two values: HOME_SCREEN_DEFAULT is the launchpad everybody has always h...
Correct the note on the removed Create My Free Org rights
ab740dd3 claimed CREATE_FREE_ORG_WIDGET and its four policy children "never existed in RoleRightType.java at all". That is wrong. They were ids 288-292, and I r...
Remove the CREATE_FREE_ORG_WIDGET block with its widget
The Create My Free Org launchpad widget was removed (kamo-internal ab740dd3), so its five rights go with it: CREATE_FREE_ORG_WIDGET (288) and the four policy ch...
Remove the Create My Free Org widget
Removed on request, including its rights. /network/create is untouched and remains the way an organization is created. Gone: the widget and its three step comp...
The document must not scroll behind the workspace
The authed shell is a full-viewport layout — nav fixed, content absolutely positioned to exactly 100vh — with one scroller inside it (.kamo-page-scroll). <body>...
Fill the content box exactly, scroll inside it
The pages grew to their content and pushed past the box the chrome gives them, so the document scrolled behind the shell and left dead background below the form...
Withhold the Create My Free Org widget for now
Taken off the launchpad on request. A false registry gate rather than deleting the entry: `available` in useHomeWidgets is the single source for BOTH the launch...
Stop the form column stretching to the grid row height
The two-column layout gave the form column no align-self, so it stretched to the row height — and the row is as tall as the TALLER column. Once the form flows i...
Create My Free Org becomes a three-step widget
The widget embedded the whole of CreateOrgForm — five sections, the brand preview, the readiness meter — which is roughly 1,400px inside a pane of about 756px. ...
One scrollbar, and actually use the full content width
AuthedChrome already owns the ONE scroll container for a page (.kamo-page-scroll, overflow:auto; height:100%), and PageWrapper exists specifically to stop a pag...
Next/link for Back to home, not a raw anchor
check-client-navigation fails the image build on a raw <a> to an internal route: a hard navigation tears down every open tool popup window and any unsent email ...
Whole-branch review fixes — provisioning, reachability, label data loss, a11y, dead code, org-context race, hex case
Seven findings from the final whole-branch review of the org-launch and Getting Started wizard feature, fixed together since several interact: - B1: **********...
Resolve the shared "skip" string against its full key
Six step components called t("skip") against an unscoped useTranslations(), which requests a top-level "skip" key that doesn't exist — next-intl then renders th...
Getting Started card on the Settings landing page
Adds an essential-group card linking to /settings/wizard, matching the makeCard idiom used by its siblings. Dictionary keys already pushed ****************
Close the wizard Save-without-validation hole (review round 1)
Four findings from spec/code review, addressed: 1. CRITICAL - nothing gated the shell's Save button on step validity, so a member could blank the organizati...
A SEND TO AI switch on the report form
Right-aligned on the "What are you reporting?" row, off every time the window opens — it starts a session on a machine holding cluster credentials, and a switch...
Send To AI straight off the report form
A holder of MANAGE_SYSTEM_BUGS gets a SEND TO AI switch on the Report Bug window, and submitting with it on hands the report to a session without the triage dia...
Getting Started Configuration Wizard at /settings/wizard
Turns the nine moved wizard steps into an editor over the organization the member is already signed into. Each step now seeds its value from live org data (useO...
Rename Copilot Mobile App to KamoMobile
The mobile app is KamoMobile now. This renames every reference to it in this repo — the strings members read, the route, the i18n namespace, the components, the...
The /copilot hero and both scan codes carry the chameleon mark too
were the last two sites, and neither could just take the new src unchanged, because the artwork is a transparent 127x102 silhouette where the raster was an opaq...
Swap the mobile-app mark for the chameleon SVG in the rail and on home
raster. Both now draw the KamoMobileApp artwork as vector. Checked in as SVG because that is what the mark is: a single white silhouette with transparent knock...
Create My Free Org widget
Ships the same CreateOrgForm the /network/create page renders, in its widget layout, as a home-launchpad widget (org.create) gated on CREATE_FREE_ORG_WIDGET. Re...
Inert, not aria-hidden + pointer-events-none, for gated sections
CreateOrgForm's section() helper hid the four sections gated on "no branch type chosen yet" with aria-hidden plus a pointer-events-none className. aria-hidden o...
Open Send To AI in a VS Code session tab, not a Konsole window
A dispatch now starts a BACKGROUND session and hands VS Code its session id, instead of running the CLI in a terminal window: Passing the prompt to the URI in...
Design and implementation plan for the org launch and Getting Started wizard
Restores two commits dropped by a concurrent 'git reset --mixed origin/main' in this shared checkout; the files themselves survived in the working tree.
Dropping a gathered honeycomb in the goal removes every head in it
Jiggling mid-drag fires the gather gesture, which pulls every same-size head into the dragged head's cluster and anchors the honeycomb on the head under the poi...
/network/create is one page; the twelve steps move to /settings/wizard
CreateOrgForm.tsx is one component with two layouts (page/widget), built from Task 7/8's CreateOrgFields model, field groups and OrgBrandPreview. page.tsx is no...
Reusable field groups and the live brand preview
Extracts the inputs from BranchTypeStep, BasicsStep, LogoStep, ColorsStep, AppsStep and AgeRestrictionsStep into five controlled field components (OrgTypePicker...
Getting Started Configuration Wizard button with an attention border
Adds the launchpad's entry point into the setup wizard: an owner-only, rights-gated pill that reads "Getting Started Configuration Wizard (x/9 steps complete)",...
Require an open god-mode window, not eligibility alone, for CONFIGURE_SYSTEM
hasRight was granting the bypass on the raw GD session flag, which SessionPlatformFacts's own javadoc names as the exact anti-pattern it exists to prevent: GD i...
Gate the web-alias path on parent context, not model alone
withBranchType previously turned useWebAlias on whenever the SELECTED MODEL allowed ROOT or a custom alias, ignoring the three parent-org preconditions BasicsSt...
Getting Started wizard step model and client
Adds the client-side step model (app/lib/orgSetupWizard.ts), a thin API client for GET/PUT/DELETE /api/security/org-setup-wizard (app/lib/orgSetupWizardApi.ts),...
Add progress service and endpoints behind the Getting Started wizard
Org-scoped GET/PUT/DELETE under /api/security/org-setup-wizard track which of the nine Getting Started steps an organization has completed. A read never creates...
The maximized pane zooms into the conversation you picked
Switching conversations in the maximized view was an 8px nudge and a 180ms fade — close enough to nothing that the pane looked like it had simply repainted. It ...
Three-column widgets and per-widget minimum sizes
Widens WidgetWidth to 1 | 2 | 3 | 'full' and lets a WidgetDefinition declare minWidth/minHeight. widgetMinSize(definition) converts that into a PaneSize floor (...
Touch up a traced logo by hand, and download the converted file
Four things on the raster-to-vector converter and the simple logo slot. **The scroll bar on the raster options is three times wider.** 4px was a hard target to...
Stop treating an already-transparent background as black, and remove the region not the colour
Two reported faults with one root cause: colour-based removal overwrote the alpha channel outright and never read the incoming one. An HTML canvas stores premu...
One-page field set and the defaults that replace the dropped steps
CreateOrgFields is what the new single-page /network/create form actually asks for: a branch type, name, alias, the app switches, and a handful of optional fiel...
Create My Free Org widget rights and Getting Started wizard progress
Adds RoleRightType 288-292 (CREATE_FREE_ORG_WIDGET and its four ADDED/OPTIONAL/ REQUIRED/MOVABLE policy children), hung off CREATE_CHILD_ORG (131). Adds OrgSetu...
Per-pane minimum size, applied on read as well as on drag
Threads an optional `min?: PaneSize | null` through clampPaneSize, the two resize-delta helpers, and the two preference read/write functions in the pure launchp...
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.