dashboard: delete orphaned code from the retired setup wizard (53)
Kenneth Courtney
endeavor-type: one canonical option list (53) — colocated with the union
Kenneth Courtney
branding: one canonical font catalog (53) — kill the drift
Kenneth Courtney
docs+chore: AGENTS.md node-bootstrap runbook + CSP/build-skip refinements
Kenneth Courtney
dashboard: retire the Enterprise Setup wizard, collapse the setup surfaces
Kenneth Courtney
images: allowlist r2.dev for Next/Image — storefront images resolve post-R2
Kenneth Courtney
vision: feed image BYTES to the model, not a rate-limited r2.dev URL
Kenneth Courtney
media: device direct-upload endpoints — large clips past the 4.5MB wall
Kenneth Courtney
deps: resync pnpm-lock for storage-s3 pin — unblocks the R2 build
Kenneth Courtney
media: flip to Cloudflare R2 — cutover
Kenneth Courtney
media: R2 storage wiring (dormant) — direct-upload + zero-egress, ready to flip
Kenneth Courtney
media: allow small video clips (Phase 1) — size-guarded direct upload
Kenneth Courtney
cards: page-published directive — the first real auto-trigger
Kenneth Courtney
auth: passwordless email-OTP login (request + verify)
Kenneth Courtney
cards: directive cards — Core pushes a home-screen card to the device
Kenneth Courtney
vercel: skip prod builds for docs-only pushes (ignoreCommand)
Kenneth Courtney
provision: channel create sends a NUMERIC space id — the real empty-Community-space cause
Kenneth Courtney
diag: probe can run the onboarding preamble first to reproduce the poisoned context
Kenneth Courtney
diag: temp probe-channel-create endpoint — find which create strategy survives prod
Kenneth Courtney
provision: run community-channel writes as super_admin — the real empty-space cause
Kenneth Courtney
provision: community-space channels created reliably — thread req + surface errors
Kenneth Courtney
Merlin deploy truths — vmc-only runner, zombie-restart fix, dynamic tunnel live
Kenneth Courtney
rbac: channels + messages opt out of the multi-tenant access-AND
Kenneth Courtney
afternoon additions — DM unification executed, Merlin auto-deploy verified, named tunnel retired
Kenneth Courtney
channels: repoint merged DM messages BY ID — bulk update ignores relationship where
Kenneth Courtney
channels: one DM thread per conversation — global lookup + unify-dms op (fold phase 3)
Kenneth Courtney
fold verified in prod + dupe-general/stray-DM-space cleanup executed (260713 ~1240)
Kenneth Courtney
260713 midday handoff — DM fold executed, Merlin tunnel pending deploy
Kenneth Courtney
channels: fold DMs into the AI Bus — channel-grained DM privacy (phase 2)
Kenneth Courtney
merlin: media links resolve through Core + cache-first listing (dynamic-tunnel-safe)
Kenneth Courtney
leo: reference-image (image-to-image) generation — put the subject in the scene
Kenneth Courtney
leo: scripture tools survive tool-subsetting for devotional phrasing
Kenneth Courtney
spaces: universal Community space — the town square (public RBAC tier)
Kenneth Courtney
guardian: self-heal under-seeded angels on every claim (empty-channels)
Kenneth Courtney
checkout: local-pickup fulfillment path (fire-sale UX)
Kenneth Courtney
260712 handoff + Card Stage spec
Kenneth Courtney
admin: scope the command center to the current portal (was global)
Kenneth Courtney
dashboard: non-super-admins can switch to their own portals (chooser was empty)
Kenneth Courtney
auth: ?switch=1 forces Google account chooser (Nimue account switching)
Kenneth Courtney
auth: move guardian-angel auto-provision to the shared Google identity resolver
Kenneth Courtney
portals: group guardian-angel vs endeavor portals in the choosers
Kenneth Courtney
auth: auto-provision the user's guardian angel on federated (Nimue) login
Kenneth Courtney
leo-vision: inline image bytes instead of handing the model a URL
Kenneth Courtney
chat: tolerate not-yet-committed media on attach (Nimue image race)
Kenneth Courtney
dashboard: filter the tenant/portal chooser (match brochure PortalSwitcher)
Kenneth Courtney
gallery: click-to-open lightbox on the Gallery block
Kenneth Courtney
dashboard: invitations "Total Sent" tile is filter-independent
Kenneth Courtney
dashboard: invitations list — shared ListControls search/filter + Pager
Kenneth Courtney
admin: consistent list search/columns across all collections
Kenneth Courtney
product: "Contact seller" lead capture + "Buy now" on product pages
Kenneth Courtney
decommission: preserve Vercel Blob objects by default (shared-blob safety)
Kenneth Courtney
teleport: migrate referenced global forms + create drafts as draft
Kenneth Courtney
teleport: content-only write path — recreate tenant + media rows + remapped content
Kenneth Courtney
teleport: media resolvability probe — GET Range at target host, not HEAD at apex
Kenneth Courtney
teleport: cross-instance tenant move — dry-run + node-to-node export
Kenneth Courtney
cart: populate slug/title/gallery/meta so cart items render (not "no longer available")
Kenneth Courtney
admin: backups control panel — list/run/restore via Merlin
Kenneth Courtney
pin Nimue DM-parity root cause in channel-model handoff
Kenneth Courtney
channel & DM model focused-pass handoff (260711)
Kenneth Courtney
leo: system-log every AI CRUD/action tool call
Kenneth Courtney
scripture: load verses from CDN library, not a bundled import
Kenneth Courtney
circles: reuse chooser tenant resolution — show all my circles
Kenneth Courtney
leo: save_contact tool — remember a person for autocomplete + invite
Kenneth Courtney
address-book: /all endpoint — my people across all my tenants
Kenneth Courtney
circles: My Circles — the Life360++ people-first view
Kenneth Courtney
state of play 260711 — consolidation decision + hanging chads
Kenneth Courtney
config: feature flags — federation + endeavors browser off by default
Kenneth Courtney
federation: emit CORS allow-origin from holons endpoint
Kenneth Courtney
dashboard: cross-federation Endeavors browser (Nimue-style)
Kenneth Courtney
chat: reuse-from-channel media picker in Core composer
Kenneth Courtney
dashboard: unified list controls — search + server pager + 30 default
Kenneth Courtney
leo: open_passage — navigate the reader to a Bible passage + verse
Kenneth Courtney
vision: media-analysis URL 404 — the self-writing-from-photos pipeline
Kenneth Courtney
leo: route personal vs business — guardian portal vs commission an endeavor
Kenneth Courtney
search: self-hosted SearXNG as LEO's owned web-retrieval backbone
Kenneth Courtney
leo: act on explicit "do it" for reversible actions, confirm only for irreversible
Kenneth Courtney
leo: context tool subsetting for Gemini — ~30k tokens/turn → ~8k
Kenneth Courtney
leo-vision: send the 1440w variant, not the full-res original, to the vision model
Kenneth Courtney
space-invite: let the portal owner (tenant_admin) invite to their own spaces
Kenneth Courtney
works: unpublish "The Rainmaker" — remove from the soul registry
Kenneth Courtney
provision: personal portals get their own channel set, sorted separate from endeavors
Kenneth Courtney
leo: commission_endeavor — talk to LEO/Nimue, get a minted site + link
Kenneth Courtney
solvency: daily briefing via the generic escalation layer (not Gotify-specific)
Kenneth Courtney
solvency: one number to keep positive — platform revenue kept vs infra cost
Kenneth Courtney
session handoff — the guardian minted, the nervous system quieted
Kenneth Courtney
repair the error-nervous-system test drift — 30 files → 5
Kenneth Courtney
leo-health: pendingOrders queried a nonexistent 'pending' order status
Kenneth Courtney
mock logError in donation-create-intent — 500-path test hung 30s booting Payload
Kenneth Courtney
e2e globalTeardown sweeps timestamped residue users + donationRouting unit coverage
Kenneth Courtney
cors: allow Nimue browser-dev origins (localhost:3002/:3097)
Kenneth Courtney
donations: drop awkward possessive in destination breakdown line
Kenneth Courtney
donations: live transparency breakdown — the form states where THIS portal's gifts actually go
Kenneth Courtney
provision: survive PgBouncer idle-in-transaction kills + ponytail sweep
Kenneth Courtney
meta: tenant-branded unfurls — og tags from page meta on every portal
Kenneth Courtney
guardian: restore Tenants.isGuardianAngel — column confirmed on ALL prod DBs
Kenneth Courtney
session handoff — the organism is alive (first dollar, three-tier channels, monetization)
Kenneth Courtney
book: render service images on the booking page (like products)
Kenneth Courtney
learn: One Mind, Three Bodies network map on the /learn Overview
Kenneth Courtney
ai: the Hydra — intent-aware provider pipes + sensitive privacy guard
Kenneth Courtney
ai: use the real NVIDIA free model — nemotron-3-ultra-550b-a55b
Kenneth Courtney
ai: store the NVIDIA key in config (AI settings tab), not just .env
Kenneth Courtney
ai: NVIDIA NIM as a free gateway provider (build.nvidia.com)
Kenneth Courtney
organism: log consolidation cron — learn to forget (hippocampus slice B)
Kenneth Courtney
organism: LEO senses its own unresolved errors (hippocampus slice A)
Kenneth Courtney
readme: lead with the mission, One-Mind-Three-Bodies, and the July 2026 arc
Kenneth Courtney
handbook: fold in the One-Mind-Three-Bodies lore (satellite/lander/away-team)
Kenneth Courtney
docs+auth: rewrite handbook for the Nimue-first mission + Google-only sign-in
Kenneth Courtney
works: deep-link Daily Bread by ref, not order
Kenneth Courtney
reader: Book->Chapter nav + read-aloud in Core's web BookReader
Kenneth Courtney
leo: count() the health metrics instead of fetching every row
Kenneth Courtney
db: contain idle-client pool errors + surface the real pg error in LEO health
Kenneth Courtney
leo: coerce stringified JSON tool params + log tool errors to the nervous system
Kenneth Courtney
admin: tenant chooser follows the portal to its own domain
Kenneth Courtney
works: Daily Bread — 3-verses-a-day plan + render verse text for thin clients
Kenneth Courtney
deploy: stop tracing the whole repo into every payload function
Kenneth Courtney
untrack docs/marketing + docs/images (302MB) from the app repo
Kenneth Courtney
build: remove throwaway scripts/repro-385 that broke next build
Kenneth Courtney
upload: restore req.file for single-file uploads (patch regression)
Kenneth Courtney
reliability: activate dead defenses + harden the error intake (Batch 2)
Kenneth Courtney
docs+misc: reliability audit + guardian-witness docs, chat UI tweaks, scripts
Kenneth Courtney
leo: clone_portal + check_node_health tools, node dispatch, fixed escalation tools
Kenneth Courtney
reliability: route endpoint, webhook, OAuth & hook errors to the system error log
Kenneth Courtney
untrack docs/marketing + docs/images (302MB) from the app repo
Kenneth Courtney
build: remove throwaway scripts/repro-385 that broke next build
Kenneth Courtney
upload: restore req.file for single-file uploads (patch regression)
Kenneth Courtney
reliability: activate dead defenses + harden the error intake (Batch 2)
Kenneth Courtney
docs+misc: reliability audit + guardian-witness docs, chat UI tweaks, scripts
Kenneth Courtney
leo: clone_portal + check_node_health tools, node dispatch, fixed escalation tools
Kenneth Courtney
reliability: route endpoint, webhook, OAuth & hook errors to the system error log
Kenneth Courtney
ui: MerlinControl side nav → nested node tabs
Kenneth Courtney
Star Fleet Manifest — the network that guides the Soul Fleet convoy
Kenneth Courtney
ui: MerlinControl side nav → nested node tabs
Kenneth Courtney
Star Fleet Manifest — the network that guides the Soul Fleet convoy
Kenneth Courtney
works: import Bible as books->chapters without timeout; fix lightbox
Kenneth Courtney
works: book import works on Vercel + read all chapters
Kenneth Courtney
chat: show date on message timestamps
Kenneth Courtney
chat: center lightbox images for multi-image messages
Kenneth Courtney
chat: reliable media upload on Core + sequential multi-file
Kenneth Courtney
csp: allow Vercel Toolbar domains in report-only CSP
Kenneth Courtney
works: import Bible as books->chapters without timeout; fix lightbox
Kenneth Courtney
works: book import works on Vercel + read all chapters
Kenneth Courtney
chat: show date on message timestamps
Kenneth Courtney
chat: center lightbox images for multi-image messages
Kenneth Courtney
chat: reliable media upload on Core + sequential multi-file
Kenneth Courtney
csp: allow Vercel Toolbar domains in report-only CSP
Kenneth Courtney
cost-ledger: materialize cost_events + node usage ingestion (compute-commons meter)
Kenneth Courtney
federation: Merlin directory browser + intelligence broker + membership self-heal
Kenneth Courtney
cost-ledger: materialize cost_events + node usage ingestion (compute-commons meter)
Kenneth Courtney
federation: Merlin directory browser + intelligence broker + membership self-heal
Kenneth Courtney
run `payload migrate` on deploy (retire hand-DDL ensure-endpoints)
Kenneth Courtney
Gallery block on Pages + prod-table provisioning (lane/gallery-on-pages)
Kenneth Courtney
pages: register Gallery block + provision its prod tables
Kenneth Courtney
Revert "Merge pull request #133 from The-Angel-OS/lane/dep-bump-payload385"
Kenneth Courtney
align next/react/typescript to Payload 3.85.1 template (clear Next16 warning)
kendevco
bump Payload family 3.77 -> 3.85.1 (fix prod-build publish-500)
kendevco
L0.1 typed bus envelope spine (c5d95bd)
Kenneth Courtney
planning: Payload 3.77 → 3.85.1 dep-bump runbook (for IONOS)
Kenneth Courtney
bus: typed envelope SDK — enforce the {space,channel,message} contract (L0.1)
Kenneth Courtney
planning: parallel-lanes fan-out execution guide (260623)
Kenneth Courtney
merlin-control: Screenshots tab — a node's submitted snaps
Kenneth Courtney
STATE_OF_ANGEL_OS_260623 standing report + check in loose session docs
Kenneth Courtney
node-ops: file bridge — POST /api/node-ops/media (node → endeavor Media)
Kenneth Courtney
merlin-control: collapsible node selector + focus mode (just the chat)
Kenneth Courtney
ui: fill mode for Panel/TabbedPanel — MerlinControl fits the window
Kenneth Courtney
merlin-console: live online status from the poll, not a stale render prop
Kenneth Courtney
ui: universal <Panel> + <TabbedPanel> controls (53 Prototype)
Kenneth Courtney
merlin-control: console message duplication — replace transcript, dedup by id
Kenneth Courtney
merlin-control: CPU sparkline in the Stats tab
Kenneth Courtney
node-bus: wrap message content as {text} for the required JSON field
Kenneth Courtney
node-bus: lowercase node-user email so re-register doesn't dup-create
Kenneth Courtney
merlin-control: Merlin Console — talk to a node's local brain from Core
Kenneth Courtney
leo: get_node_stats tool — conversational node telemetry
Kenneth Courtney
node-bus: coerce AI Bus space id to number for relationship fields
Kenneth Courtney
node-bus: surface bus-identity provisioning error in register response
Kenneth Courtney
node-bus: fail-soft bus-identity provisioning on register
Kenneth Courtney
run `payload migrate` on deploy (retire hand-DDL ensure-endpoints)
Kenneth Courtney
Gallery block on Pages + prod-table provisioning (lane/gallery-on-pages)
Kenneth Courtney
pages: register Gallery block + provision its prod tables
Kenneth Courtney
Revert "Merge pull request #133 from The-Angel-OS/lane/dep-bump-payload385"
Kenneth Courtney
align next/react/typescript to Payload 3.85.1 template (clear Next16 warning)
kendevco
bump Payload family 3.77 -> 3.85.1 (fix prod-build publish-500)
kendevco
L0.1 typed bus envelope spine (c5d95bd)
Kenneth Courtney
planning: Payload 3.77 → 3.85.1 dep-bump runbook (for IONOS)
Kenneth Courtney
bus: typed envelope SDK — enforce the {space,channel,message} contract (L0.1)
Kenneth Courtney
planning: parallel-lanes fan-out execution guide (260623)
Kenneth Courtney
merlin-control: Screenshots tab — a node's submitted snaps
Kenneth Courtney
STATE_OF_ANGEL_OS_260623 standing report + check in loose session docs
Kenneth Courtney
node-ops: file bridge — POST /api/node-ops/media (node → endeavor Media)
Kenneth Courtney
merlin-control: collapsible node selector + focus mode (just the chat)
Kenneth Courtney
ui: fill mode for Panel/TabbedPanel — MerlinControl fits the window
Kenneth Courtney
merlin-console: live online status from the poll, not a stale render prop
Kenneth Courtney
ui: universal <Panel> + <TabbedPanel> controls (53 Prototype)
Kenneth Courtney
merlin-control: console message duplication — replace transcript, dedup by id
Kenneth Courtney
merlin-control: CPU sparkline in the Stats tab
Kenneth Courtney
node-bus: wrap message content as {text} for the required JSON field
Kenneth Courtney
node-bus: lowercase node-user email so re-register doesn't dup-create
Kenneth Courtney
merlin-control: Merlin Console — talk to a node's local brain from Core
Kenneth Courtney
leo: get_node_stats tool — conversational node telemetry
Kenneth Courtney
node-bus: coerce AI Bus space id to number for relationship fields
Kenneth Courtney
node-bus: surface bus-identity provisioning error in register response
Kenneth Courtney
node-bus: fail-soft bus-identity provisioning on register
Kenneth Courtney
node-bus: LEO→Merlin comms over the message bus (Core side)
Kenneth Courtney
leo: stop double-counting the current turn in LEO's context ("PlasmaPlasma")
Kenneth Courtney
db: raise serverless pg pool max 2→10 — stop admin-save self-starvation
Kenneth Courtney
node-bus: LEO→Merlin comms over the message bus (Core side)
Kenneth Courtney
leo: stop double-counting the current turn in LEO's context ("PlasmaPlasma")
Kenneth Courtney
db: raise serverless pg pool max 2→10 — stop admin-save self-starvation
Kenneth Courtney
admin: disable document locking on Pages/Posts/Messages — unblock admin saves on the angels node
Kenneth Courtney
portal-switcher: ignore .local seed domains — stop linking portals to dead *.angelos.local
Kenneth Courtney
works: cross-node replication pull — seed subscriber nodes from the hosting peer
Kenneth Courtney
planning: resolve attachment file-type decisions + document RAG retrieval mechanism
Kenneth Courtney
planning: chat-attachments file-type roadmap (all common types)
Kenneth Courtney
lightbox: reInit Embla after Dialog open animation — stop per-slide centering drift
Kenneth Courtney
chat: two-phase write — create message then link media separately (stop image-message vanish)
Kenneth Courtney
chat: instrument chat-send attachment count (recv/data/saved) to pinpoint where attachments drop
Kenneth Courtney
chat: depth:0 on message create — stop attachment populate from rolling back the save
Kenneth Courtney
scripts: SSL always on — no auto-detect
Kenneth Courtney
scripts: orphaned-media finder — identify vanished-attachment artifacts
Kenneth Courtney
the req rule — nested Payload ops inside a request must pass req
Kenneth Courtney
chat: pass req in chat/send message create — stop attachment-message vanish
Kenneth Courtney
media: resolve tenant from x-tenant-id header when client omits it
Kenneth Courtney
leo: pass req in setTenantFromSpace + explicit tenant in leo-chat — kill vanish at the hook level
Kenneth Courtney
leo: persist replies with explicit tenant — stop vanish-on-refresh
Kenneth Courtney
portal: switch via tenant.domain — kill the doubled kendev.kendev.co host
Kenneth Courtney
chat: honor /dashboard/spaces/<spaceId>/<channelId> deep links (no bounce to default)
Kenneth Courtney
leo: surface + log empty AI responses (no more silent no-reply)
Kenneth Courtney
chat: pass req to nested moderation update — resolves message-send deadlock
Kenneth Courtney
chat: overrideLock on moderation metadata write — unhangs message send
Kenneth Courtney
debug: surface port/ssl/pooled/pingMs + instrument chat-send hang
Kenneth Courtney
chat: resolve deep-link channel ID to slug (messages vanishing / LEO stuck)
Kenneth Courtney
footer: show per-release build tag (version + commit sha)
Kenneth Courtney
db: env-gated SSL for pooler cutover (#132)
Ken
pages: membership gating P1 — per-page access level + nav filter + join gate
Kenneth Courtney
merlin: infer endeavor from the page's own endeavor (slug no longer required)
Kenneth Courtney
db: self-heal payload_locked_documents_rels drift (breaks all admin saves)
Kenneth Courtney
merlin: register Merlin Control block in Pages layout (Deploy B)
Kenneth Courtney
db: shrink serverless pool footprint to stop shared-PG connection exhaustion
Kenneth Courtney
merlin: ensure-merlin-block-tables endpoint (additive, pre-registration)
Kenneth Courtney
works: sync all 7 Works to every portal (availableGlobally + publish all)
Kenneth Courtney
session handoff 260620 — three-body state (Core/Nimue/Merlin)
Kenneth Courtney
dashboard: surface digest + best-effort log on dashboard errors
Kenneth Courtney
admin: disable document locking on Pages/Posts/Messages — unblock admin saves on the angels node
Kenneth Courtney
portal-switcher: ignore .local seed domains — stop linking portals to dead *.angelos.local
Kenneth Courtney
works: cross-node replication pull — seed subscriber nodes from the hosting peer
Kenneth Courtney
planning: resolve attachment file-type decisions + document RAG retrieval mechanism
Kenneth Courtney
planning: chat-attachments file-type roadmap (all common types)
Kenneth Courtney
lightbox: reInit Embla after Dialog open animation — stop per-slide centering drift
Kenneth Courtney
chat: two-phase write — create message then link media separately (stop image-message vanish)
Kenneth Courtney
chat: instrument chat-send attachment count (recv/data/saved) to pinpoint where attachments drop
Kenneth Courtney
chat: depth:0 on message create — stop attachment populate from rolling back the save
Kenneth Courtney
scripts: SSL always on — no auto-detect
Kenneth Courtney
scripts: orphaned-media finder — identify vanished-attachment artifacts
Kenneth Courtney
the req rule — nested Payload ops inside a request must pass req
Kenneth Courtney
chat: pass req in chat/send message create — stop attachment-message vanish
Kenneth Courtney
media: resolve tenant from x-tenant-id header when client omits it
Kenneth Courtney
leo: pass req in setTenantFromSpace + explicit tenant in leo-chat — kill vanish at the hook level
Kenneth Courtney
leo: persist replies with explicit tenant — stop vanish-on-refresh
Kenneth Courtney
portal: switch via tenant.domain — kill the doubled kendev.kendev.co host
Kenneth Courtney
chat: honor /dashboard/spaces/<spaceId>/<channelId> deep links (no bounce to default)
Kenneth Courtney
leo: surface + log empty AI responses (no more silent no-reply)
Kenneth Courtney
chat: pass req to nested moderation update — resolves message-send deadlock
Kenneth Courtney
chat: overrideLock on moderation metadata write — unhangs message send
Kenneth Courtney
debug: surface port/ssl/pooled/pingMs + instrument chat-send hang
Kenneth Courtney
chat: resolve deep-link channel ID to slug (messages vanishing / LEO stuck)
Kenneth Courtney
footer: show per-release build tag (version + commit sha)
Kenneth Courtney
db: env-gated SSL for pooler cutover (#132)
Ken
pages: membership gating P1 — per-page access level + nav filter + join gate
Kenneth Courtney
merlin: infer endeavor from the page's own endeavor (slug no longer required)
Kenneth Courtney
db: self-heal payload_locked_documents_rels drift (breaks all admin saves)
Kenneth Courtney
merlin: register Merlin Control block in Pages layout (Deploy B)
Kenneth Courtney
db: shrink serverless pool footprint to stop shared-PG connection exhaustion
Kenneth Courtney
merlin: ensure-merlin-block-tables endpoint (additive, pre-registration)
Kenneth Courtney
works: sync all 7 Works to every portal (availableGlobally + publish all)
Kenneth Courtney
session handoff 260620 — three-body state (Core/Nimue/Merlin)
Kenneth Courtney
dashboard: surface digest + best-effort log on dashboard errors
Kenneth Courtney
works: publish-state gate — Works are version-controlled working copies
Kenneth Courtney
works: converge Work syndication to ONE source of truth (Pony Tail)
Kenneth Courtney
leo: lookup_scripture tool — the conversational scripture door
Kenneth Courtney
bible: syndicate the Holy Bible to Clearwater Cruisin
Kenneth Courtney
footer: lead "Powered by" with The Angel OS → org repo
Kenneth Courtney
bible: full 66-book ingest — the complete Holy Bible Work
Kenneth Courtney
bible: Stage 1 → Ronald's book/language-file format
Kenneth Courtney
account: system-routed account deletion requests (no hardcoded email)
Kenneth Courtney
policy: federation-aware Delete Account & Data page
Kenneth Courtney
moderation: user-facing message reporting — POST /api/moderation/report
Kenneth Courtney
moderation: LEO reflex screening on every message + auto-escalation
Kenneth Courtney
endeavor: scope media picker to active tenant — stop cross-portal leak
Kenneth Courtney
endeavor: media-library picker + fix alt-required upload error
Kenneth Courtney
tenancy: canonical outbound URL honors a bound client domain
Kenneth Courtney
presence: ensure-presence-table endpoint — repair missing prod table
Kenneth Courtney
pages: un-register Gallery + MerlinControl blocks — missing prod tables broke queryPageBySlug
Kenneth Courtney