{
  "generatedAt": "2026-10-09T02:01:19.400Z",
  "note": "Experience OS developer activity — real git commits + planning decisions, auto-generated on every commit and apex deploy.",
  "entries": [
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "034607727",
      "title": "chore(version): bump to 0.30.90",
      "summary": "chore(version): bump to 0.30.90"
    },
    {
      "date": "2026-10-08",
      "kind": "fix",
      "sha": "3ac6a874c",
      "title": "Skyden: remove Photos section, feature-flag-gated context menus, in-page site editor, dow…",
      "summary": "Skyden: remove Photos section, feature-flag-gated context menus, in-page site editor, download-tab fix, craft shortcuts"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "301465bd3",
      "title": "experienceos.ai: arc-style landing + enhanced downloads + restored /api on Vercel",
      "summary": "experienceos.ai: arc-style landing + enhanced downloads + restored /api on Vercel"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "75ba4caca",
      "title": "chore(version): bump to 0.30.89",
      "summary": "chore(version): bump to 0.30.89"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "6e38b765e",
      "title": "Storytold fan-out: 11 craft apps integrated into Skyden (owned egui/wasm forks)",
      "summary": "Storytold fan-out: 11 craft apps integrated into Skyden (owned egui/wasm forks)"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "a7782fcdc",
      "title": "experienceos.ai/downloads: storytold releases, dynamically linked (LIVE)",
      "summary": "experienceos.ai/downloads: storytold releases, dynamically linked (LIVE)"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "87b7225a6",
      "title": "chore(version): bump to 0.30.88",
      "summary": "chore(version): bump to 0.30.88"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "1224f44c5",
      "title": "PhotoCraft pilot: full in-Skyden flow PROVEN (right-click → open → media loads)",
      "summary": "PhotoCraft pilot: full in-Skyden flow PROVEN (right-click → open → media loads)"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "f8654f83a",
      "title": "chore(version): bump to 0.30.87",
      "summary": "chore(version): bump to 0.30.87"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "b34cc19f6",
      "title": "Storytold pilot: PhotoCraft — owned egui/wasm fork mounted in Skyden (PROVEN)",
      "summary": "Storytold pilot: PhotoCraft — owned egui/wasm fork mounted in Skyden (PROVEN)"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "96d27a0bc",
      "title": "Storytold→Skyden integration runbook (AUDIT) — synthesized from 3 parallel agents",
      "summary": "Storytold→Skyden integration runbook (AUDIT) — synthesized from 3 parallel agents"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "0a16931bc",
      "title": "Plan: storytold clean-room apps into Skyden (mechanism + phase + tasks)",
      "summary": "Plan: storytold clean-room apps into Skyden (mechanism + phase + tasks)"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "63d41c45e",
      "title": "Infra truth refresh: living infrastructure graph + Vercel-only registry + API topology",
      "summary": "Infra truth refresh: living infrastructure graph + Vercel-only registry + API topology"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "de881ad80",
      "title": "chore(version): bump to 0.30.86",
      "summary": "chore(version): bump to 0.30.86"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "440932946",
      "title": "experienceos-api deploy: create .next/lock after next build exits",
      "summary": "experienceos-api deploy: create .next/lock after next build exits"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "e1cc46561",
      "title": "chore(version): bump to 0.30.85",
      "summary": "chore(version): bump to 0.30.85"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "16a8ea520",
      "title": "experienceos-api deploy: shim .next/lock for Next 16 webpack build",
      "summary": "experienceos-api deploy: shim .next/lock for Next 16 webpack build"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "7a3e7d49b",
      "title": "chore(version): bump to 0.30.84",
      "summary": "chore(version): bump to 0.30.84"
    },
    {
      "date": "2026-10-08",
      "kind": "fix",
      "sha": "936d63d77",
      "title": "Fix experienceos-api Vercel deploy: build with webpack, not Turbopack",
      "summary": "Fix experienceos-api Vercel deploy: build with webpack, not Turbopack"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "9114dd3f9",
      "title": "chore(version): bump to 0.30.83",
      "summary": "chore(version): bump to 0.30.83"
    },
    {
      "date": "2026-10-08",
      "kind": "fix",
      "sha": "782a7ce60",
      "title": "Build the api with Turbopack (next build), not --webpack — fixes the Vercel deploy",
      "summary": "Build the api with Turbopack (next build), not --webpack — fixes the Vercel deploy"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "eef23ac6c",
      "title": "Audit: experienceos-api handler split — lean web API is ~88 of 290 handlers",
      "summary": "Audit: experienceos-api handler split — lean web API is ~88 of 290 handlers"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "f79a8f85a",
      "title": "chore(version): bump to 0.30.82",
      "summary": "chore(version): bump to 0.30.82"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "9391b3d67",
      "title": "Deploy source: register experienceos-api (Vercel) + warn on decommissioned records",
      "summary": "Deploy source: register experienceos-api (Vercel) + warn on decommissioned records"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "929be99e1",
      "title": "chore(version): bump to 0.30.81",
      "summary": "chore(version): bump to 0.30.81"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "b1d374cfd",
      "title": "Retire all dead-box deploy scripts → point to xp deploy (Vercel)",
      "summary": "Retire all dead-box deploy scripts → point to xp deploy (Vercel)"
    },
    {
      "date": "2026-10-08",
      "kind": "fix",
      "sha": "27596f13f",
      "title": "Fix deploy-platform.sh filter: @gad/experienceos-api -> @experience/experienceos-api",
      "summary": "Fix deploy-platform.sh filter: @gad/experienceos-api -> @experience/experienceos-api"
    },
    {
      "date": "2026-10-08",
      "kind": "feature",
      "sha": "506ace699",
      "title": "chore(version): bump to 0.30.80",
      "summary": "chore(version): bump to 0.30.80"
    },
    {
      "date": "2026-10-08",
      "kind": "fix",
      "sha": "fc95e69b5",
      "title": "Fix the experienceos-api build (● Error for weeks → green)",
      "summary": "Fix the experienceos-api build (● Error for weeks → green)"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1936",
      "title": "Instatic workspace key: verify moves to cloud API, secret Supabase-held (refines GLOBAL-D-1935)",
      "summary": "Refinement of GLOBAL-D-1935 after operator's model (Skyden = host only; the workspace account signs/verifies). CHANGED from 'inject one shared key into both envs' to: 32-byte workspace signing secret is Supabase-held (new additive table public.instatic_workspace_signing_keys, service-role/RLS) and IS that workspace's …"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1935",
      "title": "INSTATIC_SECRET_KEY must be workspace-derived (durable per-workspace key), not a hand-set env",
      "summary": "Operator 2026-10-08: 'we own this instatic implementation, keys should be associated with the signed-in user/WORKSPACE (workspace, because multiple collaborators).' INSTATIC_SECRET_KEY = 32-byte base64 AES master key (vendor/instatic/server/secrets/masterKey.ts): signs the deployment marker Skyden verifies (deployment…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1934",
      "title": "Website API served via apex /api rewrite on Vercel (GCP out); experienceos.ai arc landing + downloads live",
      "summary": "2026-10-08, operator furious GCP kept being referenced + api.experienceos.ai down. TRUTH: the website's API is served SAME-ORIGIN at experienceos.ai/api/* via a Vercel rewrite (infra/apex-static/vercel.json: /api/:path* -> https://experienceos-api.vercel.app/api/:path*). The experienceos-api app runs on Vercel (experi…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1933",
      "title": "Storytold fan-out INTEGRATED + proven: 12 craft apps in Skyden, photocraft+vectorcraft live",
      "summary": "Verified live 2026-10-08 (LAW #47, .demos/skyden/main-window/*all-craft-apps.png, *menu-vec.png, *vectorcraft-live.png). All 11 fan-out apps + photocraft authored (11 parallel agents), wired (registry 11 loadRenderer + LOCAL_FIRST_PARTY + labels, experienceos-web 11 exports+deps), and committed. skyden-ui builds GREEN…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1932",
      "title": "experienceos.ai/downloads LIVE — storytold releases dynamically linked",
      "summary": "Deployed + verified live 2026-10-08 (LAW #47, .demos/skyden/cdp/experienceos-downloads.png). experienceos.ai/downloads lists all 12 storytold apps with per-platform native installers (macOS/Windows/Linux + Web build), version badges, and 'REPLACES <adobe app>' labels — all populated CLIENT-SIDE from api.github.com/rep…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1931",
      "title": "PILOT 100% PROVEN IN SKYDEN: PhotoCraft right-click→open→media-load works live",
      "summary": "Verified live in the Skyden browser 2026-10-08 (LAW #47/#58, .demos/skyden/main-window/*photocraft-live-skyden.png). Full premise works: browse web (picsum image) -> right-click image -> 'Open in PhotoCraft' context command -> PhotoCraft mounts IN Skyden -> the cross-origin web image auto-loads into the editor (via ?s…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1930",
      "title": "PILOT PROVEN: photocraft egui/wasm runs in-browser via WebGL2 + ?src media auto-open works",
      "summary": "Verified live 2026-10-08 (LAW #47, screenshot .demos/skyden/cdp/photocraft-pilot-src.png). Forked storytold/photocraft@e5e3e39 into vendor/photocraft (tracked fork), compiled apps/photocraft-web (eframe/egui+wgpu) to wasm32 via trunk (13m35s first build; wasm-opt disabled — >20min on 27MB, size-only). Served the built…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1929",
      "title": "GO: storytold craft apps render in Skyden via WebGL2 (not WebGPU-in-OSR)",
      "summary": "Measured 2026-10-08 (LAW #84). photocraft-web (and every egui/eframe craft app) = 'WebGPU with WebGL2 fallback' (apps/photocraft-web/Cargo.toml, src/web.rs: ?webgl forces eframe::wgpu::Backends::GL; eframe/egui-wgpu defaults WebGPU+WebGL2). Skyden CEF OSR composites via shared-texture on wgpu 29 (apps/skyden/host/src/…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1928",
      "title": "Storytold→Skyden mechanism: wasm-mount the egui apps; EXCLUDE artcraft/artcraft-services (non-permissive lice…",
      "summary": "Measured by parallel research 2026-10-08 (external, LAW #23). MECHANISM: all 13 craft apps are egui/eframe + wgpu and already ship/target a wasm32 web build (several via trunk + a <app>-web crate: designcraft/wordcraft/gridcraft/deckcraft; wasm-bindgen deps confirmed: lightcraft/designcraft). So integrate exactly like…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1927",
      "title": "Bring all storytold clean-room Adobe/Office apps into Skyden as owned-fork installable apps",
      "summary": "Operator 2026-10-08: house every github.com/storytold app in the Skyden browser, installable with the same right-click/context-menu + quick-commands + in-browser-edit flow as betterphoto/bettervector/rooklab. Apps (pure-Rust, Apache-2.0 clean-room rebuilds): photocraft(Photoshop), vectorcraft(Illustrator), filmcraft(P…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1926",
      "title": "API topology: experienceos-api=website; skyden-api + experience-gateway + sidecars for the rest; Rust-first, …",
      "summary": "Operator 2026-10-08. Decompose the 290-route apps/experienceos-api monolith (classified in AUDIT-experienceos-api-handler-split-2026-10-08 / GLOBAL-D-1924: 88 web-essential, 47 skyden-local, 92 admin-agent, 63 dead). TARGET: (1) experienceos-api KEEPS its name and becomes the WEBSITE API only (88 web-essential), apps/…"
    },
    {
      "date": "2026-10-08",
      "kind": "decision",
      "decisionId": "GLOBAL-D-1925",
      "title": "experienceos-api builds with webpack, not Turbopack; .next/lock shim for Vercel",
      "summary": "MEASURED (LAW #84): Turbopack (Next 16 default) cannot build apps/experienceos-api (290 routes + externalDir + ~15 transpiled source pkgs) — silent WorkerError hang, 46min to Vercel ceiling. Webpack builds it in ~15min to complete .next. Commit 782a7ce60 (switch to Turbopack 'to fix deploy') SUPERSEDED/WRONG. Ship pat…"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "d67c845c5",
      "title": "chore(version): bump to 0.30.79",
      "summary": "chore(version): bump to 0.30.79"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "6709f2453",
      "title": "Declare @experience/design-tokens dep + restore clean CSS specifiers",
      "summary": "Declare @experience/design-tokens dep + restore clean CSS specifiers"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "b11bbc848",
      "title": "Add skyden-check.mjs — functional visual testing THROUGH Skyden (our CEF browser)",
      "summary": "Add skyden-check.mjs — functional visual testing THROUGH Skyden (our CEF browser)"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "5db34edbc",
      "title": "Harden the Playwright visual harness + point it at live experienceos.ai",
      "summary": "Harden the Playwright visual harness + point it at live experienceos.ai"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "84b0d1e83",
      "title": "chore(version): bump to 0.30.78",
      "summary": "chore(version): bump to 0.30.78"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "a7d4db3fe",
      "title": "Enable promo codes at checkout + Playwright visual-test harness",
      "summary": "Enable promo codes at checkout + Playwright visual-test harness"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "14427b61c",
      "title": "chore(version): bump to 0.30.77",
      "summary": "chore(version): bump to 0.30.77"
    },
    {
      "date": "2026-10-07",
      "kind": "fix",
      "sha": "a53c8b60d",
      "title": "Arc-style landing overhaul + fix the broken experienceos-web CSS build",
      "summary": "Arc-style landing overhaul + fix the broken experienceos-web CSS build"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "121bcc95f",
      "title": "chore(version): bump to 0.30.76",
      "summary": "chore(version): bump to 0.30.76"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "dc2a13fc9",
      "title": "Visualizer: name why it is drawing nothing instead of pulsing forever",
      "summary": "Visualizer: name why it is drawing nothing instead of pulsing forever"
    },
    {
      "date": "2026-10-07",
      "kind": "feature",
      "sha": "d6d851f59",
      "title": "Record Route B de-risk probe results + measured CEF checkout state",
      "summary": "Record Route B de-risk probe results + measured CEF checkout state"
    }
  ]
}
