Show TRIAL pending (not-started) distinctly from expired on platform Organizations tab
Trial chip on NavPri (white/red, tooltip=expiry) + homepage chip red; remove NavTop chip
Never return 401 from proxy (was logging users out on enter-as); degrade to empty
Proxy injects X-Member-Id from session (me endpoint 400'd, so trial banner never had data)
Show trial banner on the welcome homepage (app/page.tsx) top-right, not just NavTop
Trial banner shows for any TEAM_MEMBER (system/team/admin), drop god dependency
Gate homepage trial banner to staff (team members/admins/system), hide from plain members
Explicit Apply/Extend Trial buttons on platform Organizations tab (chips weren't discoverable)
Trial status chip + apply/extend-trial action on platform Organizations tab
Persist background reorder via commit endpoint (no data loss)
Save now stages new uploads to incoming, then commits the full desired order (existing-by-srcIndex or new-by-token) so reordered existing images are re-slotted ...
Map missing org (404 or empty body) to a null payload
Pairs with the SecurityService change that now returns 404 for a missing org instead of 200-with-empty-body. Callers already null-check the org, so both the pro...
Stop spurious errors flooding the console
- org/[id] proxy: backend returns 200 with an empty body for null orgs; response.json() threw 'Unexpected end of JSON input' -> spurious 500. Parse defensiv...
Resolve org tab title in generateMetadata to stop title flip
Static metadata.title rendered 'Kamo' server-side; Next re-asserted it after hydration, overriding DynamicMetaLoader's client update and flipping the tab back f...
Withhold rows until Myself member id resolves
ag-grid renders rowData beneath the loading overlay, so gating only the loading prop still flashed all leads while getMemberId() was 0. Blank the rows and stay ...
Default filter to Myself on load, hide market bar for single market, relocate toolbar
- Default agentFilter to __MYSELF__ at init + gate grid on userInfo load so it no longer flashes All Leads - Single market: auto-select it and hide the market-t...
Re-apply live stylesheet after branding save so new colors show without hard reload
DynamicMetaLoader injects the org globals.css only once on mount, so after a color save (which correctly re-provisions globals.css + bumps themeRevision) the pa...
Remove "Publish to World" stage; fix Run All
Generators now write tiles directly to the serving drive, so the worldgen pipeline no longer has a publish/push stage. - worldgenNats.ts + universe/types.ts: d...
Page reflects superseded edt + road-less transport cells honestly
The Services tab read as incomplete for two stages that are actually done: - edt showed an empty 0% bar though EDT4 (hydro) supersedes the EDT2 base and the p...
Universe admin: per-shard hosted-region list + plain-message broadcast
#4 Cold-region visibility: the world beacon now carries regions_list, so each shard card in the Live tab lists the exact region addresses it hosts (not just a c...
Universe admin: live operator actions (Phase 3)
Actions tab gains a Live operations section that drives the live game's existing gRPC admin surface, each behind a confirm dialog and recorded to a capped Redis...
Universe admin: live datastore/gateway health + worldgen run history
Live tab now consumes the new universe.gateway.health and universe.persistence.health beacons alongside universe.world.load: a datastores strip (CockroachDB quo...
Universe admin: add Live tab — real-time game shards, players & regions
New read-only platform-admin view of the running game (not just the offline worldgen pipeline). Subscribes once per process to the universe.world.load beacon ev...
Show per-stage data layers incl. EDT4 ocean mask + TRF2 markings
The worldgen dashboard's stage cards now list the data layers each tile stage bakes, accenting the newly-added ones: the EDT4 ocean (sea-connectivity) mask unde...
Surface tile staleness + targeted "Regenerate N" on the page
The agent snapshot now carries per-recipe staleness (up-to-date / stale / missing); plumb it through the API + SSE to the page: - Services tab shows a freshne...
Show the live heartbeat tile count, not the stale per-pass value
Progress read status.have first, which the initial 'running' event sets to 0 — and `0 ?? count` keeps 0, so the live count never showed (and hydro mis-counted a...
Add Universe to the settings slide-out (NavPri)
The Universe page was registered on the settings landing cards but not in the SettingsStatusWindow slide-out that NavPri actually opens, so it didn't appear und...
Universe world-generation admin page
Adds /settings/platform/universe under Platform Administration — its own platform card + three sub-tabs (Overview, Services, Actions) — to start and monitor the...
Compose/send on behalf of switched member mailbox
- Thread mailbox owner memberId from the switcher through activeMailbox into the compose context (event + URL param). - New Message / reply / forward open com...
Stop gating pages on the *** cookie in proxy middleware
proxy.ts (Next middleware) redirected every page request with no *** cookie to /logout. Since the session id now lives in sessionStorage — which a document requ...
Stop touching cookies; send token explicitly on auth calls
Rip out all the legacy-cookie clearing/migration. The token lives in sessionStorage (key ***) and travels as the X-***-Token header, which the backend already p...
Don't adopt the legacy *** cookie; clear it instead
Right after the sessionStorage switch ships, every browser still has its old *** cookie. The migration adopted that value into sessionStorage (and the server co...
Fall back to my-networks when all-networks 403s
hasPlatformAdminAccess is derived client-side (owner-of-session-org AND host-org-is-top-level). A child-org owner whose session lands on the top-level host is m...
Carry *** in per-tab sessionStorage instead of a shared cookie
The session id lived in a browser cookie shared across all tabs of an origin, so a second tab (impersonation) could not hold its own session. Move the carrier t...
God-mode Impersonate button on member settings header
Adds a top-right 'Impersonate' action on /settings/member/[id], visible only when the signed-in session carries god mode (getIsGod) and the target isn't self/ne...
Simplify kubectl install in deploy job (complex cache-find step was failing the deploy)
Gate KamoUniverse launcher on ACCESS_KAMOWORLD right alone (drop org games flag)
Migrate to k1m1 (dictionary from k1m1, drop k2m1 deploy, pin k1m1 registry image)
KamoUniverse launch card + nav icon (gated ACCESS_KAMOWORLD, OTK redirect to play.*)
Expose API_SIGNATURE (E-Signature API) key scope
Add the E-Signature API scope to the org API-key manager so staff can grant Business orgs programmatic e-sign access. Usage beyond the included monthly allotmen...
Send-for-signature action + envelope status in document editor
Add a 'Send for signature' button to the template editor header that opens a dialog to send the document to recipients and track signing status, calling the new...
Platform product toggle in Organizations tab
Surface the platform-product designation where it belongs — Platform → Organizations. Adds a gated Switch per org (disabled for the top-level org), a confirmati...
Like what you see shipping?
Every one of these updates lands in your workspace automatically. Start free and watch it grow week after week.