Editor-uploaded updates, Cursor agent logs, strategic roadmap, and the last three GitHub pushes — one dossier.
Case file
STEN · BLACK MONEY
Issue folio
Editor · Agent · Roadmap · GitHub Read like a zine, not a ticket dump
BLACK MONEY · command logEditor 0Agent 48Roadmap 0
Human layerEditor updates
0
No manual entries yet.
Cursor agentAgent-uploaded updates
48
automatically logged by Cursor agent
Fix
Video project galleries expand to director frame; share dock viewport-fixed
Galleries break out of the narrow content column to nearly fill the page director frame. Share/Permalink portals to document.body so page-transition transform no longer traps fixed positioning — the dock stays on screen while scrolling.
automatically logged by Cursor agent
Feature
Sources & credits accept multi-type document refs
Project sampleUsages can credit sample, fileAsset (vectors), photoAsset, musicTrack, videoAsset, or mediaGallery. Added stock-graphic kind and graphic/prop usage roles for stock elements like lips and bill art.
automatically logged by Cursor agent
Update
Sticky share dock + gallery containment + desk spine cleanup
Public share/permalink is a larger fixed floating dock; gallery section is contained inside the page body with clipped borders; video desk spines are collapsible sections without nested card chrome.
automatically logged by Cursor agent
Update
Collapsible chop cards on project desk
Chop rows collapse by default with a compact variant pill; expand to edit page display format. Expand/collapse all for long lists.
automatically logged by Cursor agent
Feature
Desk publisher coherence: media spines, page chop variants, layout modes
Video project desk regrouped into photo/video/audio/meta spines; chops use projectChop page display overrides; public video page layout modes (showcase/timeline/archive) and hero priorities are visibly distinct; ~50 desk/public polish items shipped.
automatically logged by Cursor agent
Feature
Desk project publisher: media spine + person credits + scenes
Video project desk now uses a collapsed feature panel, unified Media & stills surface with gallery covers, person-linked productionCredits, and documentary-backed scenes editing via PATCH /api/desk/documentaries/[id].
automatically logged by Cursor agent
Feature
Site-wide Visual Canvas WYSIWYG (draft + publish)
New Desk Ops Visual Canvas: click-to-select iframe WYSIWYG against contained previews, allowlisted CSS overrides with breakpoints, undo/measure/presets/diff, Save draft + Publish to live via siteVisualCanvas singleton and root layout CSS injection.
automatically logged by Cursor agent
Update
Audio display variants on project pages + desk uploader
Refined AudioAssetRender so display variants (default, compact, waveform, chat bubble, minimal) are visually distinct on project chops. Added the same wireframe display-variant picker from the Desk audio editor to ProjectAudioDropzone, persisting displayVariant on upload.
automatically logged by Cursor agent
Update
Restore quote type; mute video page decorators
Reverted video epigraph to uppercase article type (no italic). Added SmokeRule ornaments, page-frame corner marks, masthead/section hairlines, and gallery panel borders using existing smoke/bm magazine patterns.
automatically logged by Cursor agent
Update
Restack video masthead; full-bleed gallery rail
Video project title block now follows title → quoted tagline → creator|date → type order with reference spacing. Gallery array breaks out of the content column to full page width with subtle left/right edge borders and overlay scroll controls.
automatically logged by Cursor agent
Update
Center wide epigraph quote under video hero
Video project descriptions now split quote body from — attribution, center in a wider responsive max-width (36→64rem breakpoints), preserve line breaks, and drop forced uppercase so epigraphs read like the Julius Caesar layout.
automatically logged by Cursor agent
Update
Video project masthead + larger gallery rail
Removed presentation body from video project pages. Masthead now stacks type, title, and tagline. Gallery covers are larger/wider with overflow-only side arrows plus a bottom scroll bar with nav.
Video project masthead, tags, horizontal galleries
Explained/unified gallery version-family display into horizontal cover cards with hover reveal + lightbox. Restacked title/date/creator above cover and centered description/YouTube/tags below. Tags link to media-rich archive with back-to-project. Muted Click to play cue.
automatically logged by Cursor agent
Update
Video hero Click to play overlay
Video production cover now shows a persistent Click to play cue with play glyph, idle breathe, hover veil/scale/letter-spacing, and immersive lower-third placement.
automatically logged by Cursor agent
Update
Project page layout + gallery lightbox polish
Gallery expand lightboxes now portal to document.body with nested-safe scroll lock and reliable CDN URLs. Cover/split/immersive hero and layout options (showcase/archive/timeline) drive the live video project page, not just Desk wireframes. Elevated VP typography, immersive hero band, and section awareness.
automatically logged by Cursor agent
Feature
Site-wide photo content dedupe + Desk upload UX
Identical image bytes reuse the existing photoAsset (SHA-1 / content hash) across Desk, Studio, and media-tree; dropzone reports new vs already-in-library and avoids stacking duplicate rows.
automatically logged by Cursor agent
Fix
Fix Studio gallery list preview skeletons
mediaGallery/tag list previews no longer use hanging `->` / images.0 paths; slug uniqueness check scoped + fail-open; gallery slugs typed to avoid photo collisions.
automatically logged by Cursor agent
Fix
Remaining media/project upload P0–P1 upgrades
mediaGalleries weak-append on upload; Mux published-form video ids; musicTrack parentResource on create+sync; empty-file rejects; deskHref returns; video taxonomy selects; Final-Render→feature bind; audio desk parent/album/chops; size-limit hints; tree concurrency + attach messaging.
automatically logged by Cursor agent
Fix
Desk media/project upload P0–P1 fixes
Type-first project create; chops as sampleChop linked to projectLibrary+chops; stills as photograph/motionFrame; media-tree audio→musicTrack; Sync materials without empty library; video material roles include audio-track; Media hub + /desk/audio index; honest production tree-import CTA.
automatically logged by Cursor agent
Fix
Fix Desk /new routes unscrollable
/desk/projects/new and other create wizards were classified as fill-height document editors, so the shell used overflow-hidden. Exclude /new paths from fill layout so the main pane scrolls.
automatically logged by Cursor agent
Feature
Deployed Desk play-by-play project folder upload
New /desk/projects/new wizard: metadata + browser folder pick + sequential media-tree import (photos, video, musicTrack chops, graphics). Hosted Studio Import tools deep-links to Desk. Audio classified as first-class musicTrack. Path-based CLI scan remains for local Dropbox machines.
automatically logged by Cursor agent
Fix
Fix Featuring person search (filter + name index)
Featuring still used the schema artist filter because array-level schemaType.of mutation never reached ReferenceInput; filter now lives on AudioPersonReferenceInput. Also added person __experimental_search on firstName/lastName so Austen matches (title was empty).
automatically logged by Cursor agent
Fix
Featuring person search no longer stuck on artist filter
AudioPeopleInput passed filter: undefined for Featuring, which left the schema artist-only GROQ filter in place — Austen Chase Freeze (non-artist) never appeared. Now null slots use GROQ true so every person is searchable.
automatically logged by Cursor agent
Fix
Featuring people picker allows any person type
Audio Featuring slot no longer filters by filmmaker/director/subject/etc. — reference search lists every person.
automatically logged by Cursor agent
Fix
Audio sourceFilename hydration retries until asset is ready
SmartAudioAssetInput often marked hydration done after a duration-only probe (or a single 450ms retry) before Sanity exposed originalFilename on the upload. Now polls with backoff, falls back to client.getDocument, and only locks hydration once file metadata (title/sourceFilename) lands.
automatically logged by Cursor agent
Fix
Fix Studio React #185 category/type sync loop
Audio/file/sample category and type inputs patched sibling fields on every mismatch, which oscillated and hit React maximum update depth in Structure. Now sync only when the driving field changes (same pattern as video). SmartAudioAssetInput hydration no longer re-runs on every field patch. Studio redeployed.
automatically logged by Cursor agent
Fix
Classic Studio host restored (Dashboard disabled via API)
Org dashboardStatus was still enabled despite the manage UI looking off, which 302d acf-sss.sanity.studio into a blank Dashboard shell. Patched organizations API to disabled; classic host returns 200 again. Desk Studio URL points at acf-sss.sanity.studio (prod) / localhost:3333 (local); embedded /studio is now a redirect only.
automatically logged by Cursor agent
Fix
Bare /studio shell — stop blank Studio pages
Classic acf-sss.sanity.studio still 302s into Sanity Dashboard on HTML navigations even with org Dashboard toggled off. Embedded /studio was blanked by Radix/Antd providers plus deskTools full-viewport iframe. Root layout now renders a bare shell for /studio, deskToolsPlugin disabled, referrer policy fixed. Use https://xstenofreality.com/studio until classic host stops redirecting.
automatically logged by Cursor agent
Fix
Fix production /login 404 → redirect to /edit
Production /login intentionally 404d while Desk FABs and docs still pointed there; redirect to /edit and point Studio tools sign-in at /edit. Sanity Dashboard URLs still 404 when org Dashboard is off—use acf-sss.sanity.studio or /studio instead.
automatically logged by Cursor agent
Fix
Unblank Studio: skip motion on /studio + workspace SSS
Embedded /studio was blank with only Desk FABs visible because app/template.tsx left the Studio shell at opacity:0 while DeskToolsOverlay mounted on body. Classic host 302s into Sanity Dashboard (stuck Logging in) when Dashboard is enabled; workspace name aligned to SSS to match create-manifest. Prefer disabling org Dashboard and using xstenofreality.com/studio.
automatically logged by Cursor agent
Fix
Fix embedded /studio full-bleed without local Next
Production /studio was prerendered inside public site chrome (empty x-pathname under force-static), so NextStudio looked blank/heavy and pushed work onto local dev. Mark /studio full-bleed, force-dynamic for pathname, and add Dashboard bridge script. Prefer acf-sss.sanity.studio for CMS; keep Sanity org Dashboard off if that shell stays blank.
automatically logged by Cursor agent
Fix
Hosted Studio Presentation uses production site, not localhost
sanity deploy was baking studio/.env.local (localhost:3000) into Presentation, so the live Studio iframe failed without local Next. previewOrigin now rejects localhost in production builds; deploy/build scripts force SANITY_STUDIO_PREVIEW_URL=https://xstenofreality.com. Redeployed classic Studio and the web embed.
automatically logged by Cursor agent
Fix
Restored classic acf-sss.sanity.studio by disabling Dashboard
Org Dashboard was forcing a 302 from acf-sss.sanity.studio into a broken www.sanity.io/@…/studio shell (blank / sign-in 404). Disabled dashboardStatus for org oNVkElVdM and redeployed the hosted Studio. Classic host and embedded /studio both work; leave Dashboard off until Sanity fixes that shell.
automatically logged by Cursor agent
Fix
Embedded Studio at /studio bypasses broken Dashboard
Sanity Dashboard URL (www.sanity.io/@…/studio/…) was blank with sign-in 404. Studio is now embedded via NextStudio at https://xstenofreality.com/studio; NEXT_PUBLIC_SANITY_STUDIO_URL points there so Desk and Presentation links use a working entry point. Classic acf-sss.sanity.studio still exists but may redirect into Dashboard.
automatically logged by Cursor agent
Fix
Allow Presentation embed from Sanity Dashboard
Expanded Next.js CSP frame-ancestors to include www.sanity.io, *.sanity.io, and *.sanity.studio so xstenofreality.com can load inside both classic Studio and Dashboard Presentation iframes.
automatically logged by Cursor agent
Improvement
Audio narration roles, people slots, Studio host notes
Added Narration/VO and Script reading under video project audio; people field now switches Artists/Featuring/Speakers/Subjects/Credited with personType filters; documented Dashboard disable to fix acf-sss.sanity.studio redirect 404.
automatically logged by Cursor agent
Improvement
Audio track runtime, captions, streaming picker, people refs
Runtime edits as HH:MM:SS with upload probe; fixed sourceFilename hydration retries; added Captions; streaming links use platform multi-select showing only selected URL fields; artist refs any person.
automatically logged by Cursor agent
Feature
Audio track categories, roles, and display wireframes
Refined musicTrack taxonomy with Video project audio (full OST, cues, snippets, temp/trailer/diegetic), Production sound (SFX/Foley), and Sampling & source roles; Studio/Desk display variants now use wireframe previews with category/role sync inputs.
automatically logged by Cursor agent
Fix
Hide empty legacy cover photo fields in Studio
Fixed inverted hidden() on project.coverPhoto and article.coverPhotoAsset so legacy Cover photo only appears when a ref still exists; project list preview prefers coverPlacement.
Media-tree import auto/web/graphic profiles map Projects__/HOLDS/Vectors trees to photo kinds + graphicSpec, fileAsset designProject stubs (no AE binary upload), projectElements, and Desk Photos filters / Import tree workflow. Light public stills kind + preferred-face labels.
automatically logged by Cursor agent
Improvement
Changelog photos module + Desk Photos index
Added archive-media/photos changelog module, retagged graphic/editorial/hold kinds under it, and added /desk/photos index + Media nav item for the photoAsset desk suite.
automatically logged by Cursor agent
Fix
Bypass Sanity CDN for oversized GROQ POSTs
sanityFetch and serverSanityFetch now skip the API CDN when the GROQ POST body would exceed the 300 KB cap (project pageBuilder and getPageQuery were ~311 KB), routing those reads to the direct API instead.
Added graphicElement, editorialGraphic, and hold photoAsset kinds with graphicSpec (intended ratio, color mode, .ai/.xd/svg vector masters, artboard, design attributes, hold status) plus project + elementKeys tagging in Studio and Desk.
automatically logged by Cursor agent
Feature
Tagged content arrays on Tag intelligence + /tags/[slug]
Selecting a tag in Desk Tag intelligence lists documents that carry it (Desk + public links). Public /tags/[slug] always shows a Tagged content array across sparks, articles, media, projects, and more — not only messenger anchors.
automatically logged by Cursor agent
Feature
Tag intelligence create/apply + untagged queue
Tag intelligence can create tags, apply them to selected documents, and list untagged docs. Circuit hop return now carries practice proof via cookie+session and Initiation chip navigates with ?practice= so tag hops file proofs.
automatically logged by Cursor agent
Fix
Circuit hop proofs now file on return
Practice hops (06 · THE CIRCUIT) seeded session hop state and a Desk banner with File proof · return. Returning to Initiate with an active hop (query or session) records practiceProofs so completed hops register as proofs.
automatically logged by Cursor agent
Update
Production dataset wiped for demo fresh start
Exported production backup, deleted and recreated the production dataset empty, redeployed schema, and fixed Tone Orchestra yn→pole remapping so maybe-logic bias prefers pole formats before allow-list hits. Operator Journey starts at Threshold on an empty dataset.