Draft: HOLD Files desk cut 1 (host contract): superseded if Matrix-only (A) is chosen on #142 #143
Closed
void
wants to merge 1 commit from
void/files-desk-contract into dev
pull from: void/files-desk-contract
merge into: GameCult:dev
GameCult:main
GameCult:dev
GameCult:nibu/ridge-plane-rebake
GameCult:nibu/ridge-ad-backdrop
GameCult:void/scene-test-flake
GameCult:void/files-desk-loose-files
GameCult:void/harvest-physical-room
GameCult:void/upload-failure-reasons
GameCult:void/files-desk-cut5
GameCult:void/harvest-corrections
GameCult:void/phone-hit-guard-hardening
GameCult:void/desk-slice-1-findings
GameCult:void/symphony-grammar-harvest
GameCult:void/stewardships-rooms-key
GameCult:void/files-desk-doc-status
GameCult:void/files-desk-send-cancel
GameCult:void/files-desk-cut4
GameCult:void/files-desk-cut3
GameCult:void/files-desk-cut2
GameCult:void/commons-files-desk
GameCult:void/files-desk-view
GameCult:void/mas-client-fixes
GameCult:void/phone-glyphs
GameCult:void/phone-hit-guard
GameCult:void/phone-hit-pages
GameCult:void/phone-hit-editor
GameCult:void/phone-hit-content
GameCult:void/phone-hit-room-space
GameCult:void/phone-hit-settings-b
GameCult:void/phone-hit-viewers
GameCult:void/phone-hit-common-settings
GameCult:void/phone-hit-dialogs
GameCult:void/phone-hit-settings-a
GameCult:void/phone-hit-call
GameCult:void/phone-hit-kit-strict
GameCult:void/phone-hit-foundation
GameCult:void/build-sha-untracked-filter
GameCult:void/phone-hit-areas-2
GameCult:void/stall-consumer-tests
GameCult:void/phone-hit-areas
GameCult:void/build-sha-stamp
GameCult:void/resume-reload
GameCult:void/reload-sends
GameCult:void/draft-persist
GameCult:void/pwa-push-stage-0-1
GameCult:void/chat-shell-compression
GameCult:void/runbook-config-flow
GameCult:void/client-config-runbook
GameCult:void/phone-desk-visual-fixes
GameCult:void/share-set-tests
GameCult:void/file-zone
GameCult:void/explicit-theme
GameCult:void/reply-preview-bounds-r
GameCult:void/footer-lows-3
GameCult:void/scenebuttons-hash-pin
GameCult:void/ridge-scene
GameCult:void/file-received-wording
GameCult:void/file-readers-store
GameCult:void/file-receipts-anywhere
GameCult:void/config-ridge
GameCult:void/night-band-preview
GameCult:void/file-zone-contract
GameCult:void/config-live
GameCult:void/pose-size-docs
GameCult:void/browse-key-screen-class
GameCult:void/fork-raised-at
GameCult:void/nibu-ridge-face-volume
GameCult:void/unread-icon-quiet
GameCult:void/nav-ink
GameCult:void/mind-media-row
GameCult:void/nav-quiet
GameCult:void/mind-desk-pin
GameCult:void/rename-docs
GameCult:void/nav-gutter
GameCult:void/scene-tier-full
GameCult:void/default-homeserver-chat
GameCult:void/sentiment-pose
GameCult:void/registration-https-only
GameCult:void/register-entry
GameCult:void/default-homeserver-gamecult
GameCult:void/albums-slice-1-r2
GameCult:nibu/scene-throw-compile-fail
GameCult:void/desk-order-count
GameCult:void/desk-fork-contract
GameCult:void/reply-preview-bound
GameCult:void/reply-preview-bounds
GameCult:nibu/ridge-heightfield
GameCult:void/desk-slice-1
GameCult:void/phone-contrast-taps
GameCult:void/demo-homeserver-unreachable
GameCult:void/publish-dev-preview
GameCult:void/mind-feedback-pages-spec
GameCult:void/scene-css-function-export
GameCult:void/dings-v4
GameCult:void/scene-ink
GameCult:void/newcomer-signin-errors
GameCult:void/dings-v3
GameCult:void/pose-in-bubble
GameCult:release/dev-64edacac
GameCult:void/browse-collapse
GameCult:void/albums-slice-1
GameCult:nemesis/demo
GameCult:void/nemesis-demo-tests
GameCult:nibu/terrain-hatching
GameCult:void/navigator-s8-lows
GameCult:void/footer-lows-2
GameCult:void/footer-lows
GameCult:void/auth-footer-tint
GameCult:nibu/dusk-sky-floor
GameCult:void/scene-midbuild-msg
GameCult:void/scene-midbuild-sweep
GameCult:void/scene-midbuild-test
GameCult:void/scene-test-strength
GameCult:void/sky-link-readability
GameCult:void/training-notice-comment
GameCult:void/ci-no-artifact-upload
GameCult:nibu/scene-terrain-scatter-dev
GameCult:void/room-list-plain-rows
GameCult:void/room-menu-name-chip-fix
GameCult:void/ci-runner-label
GameCult:void/text-flow-footer
GameCult:void/settings-without-window
GameCult:void/dings-hook
GameCult:void/upload-error-diagnostics
GameCult:void/file-zone-design
GameCult:void/rat-dev-cleanups
GameCult:nibu/scene-terrain-scatter
GameCult:void/text-flow-leftovers
GameCult:nibu/scene-terrain-both
GameCult:void/sky-tokens
GameCult:nibu/scene-terrain-stars
GameCult:nibu/scene-terrain-albedo
GameCult:void/terrain-demo
GameCult:nibu/scene-terrain-atmosphere
GameCult:void/ridge-scene-and-bubbles
GameCult:void/poses-readme
GameCult:void/preview-demo
GameCult:void/rat-dev-workflow
GameCult:void/preview-all
GameCult:nibu/scene-host
GameCult:nibu/terrain-tier-spike
GameCult:void/ci-drop-cinny-leftovers
GameCult:void/login-training-notice
GameCult:nibu/ridge-mesh-haze
GameCult:nibu/ridge-scene
GameCult:void/sky-sun
GameCult:void/ratatoskr-sky-palette
GameCult:void/brand-ratatoskr
GameCult:void/three-doors-look
GameCult:nibu/voxel-scene
GameCult:ratatoskr/estate-navigator
GameCult:void/composer-spellcheck
GameCult:nibu/scene-trace-prepass
GameCult:void/brand
GameCult:void/pose-catalogue
GameCult:void/resume-sync
GameCult:void/soundscape-human-subset
GameCult:void/soundscape-audio-socket
GameCult:void/pose-bubble
GameCult:hands/estate-h8
GameCult:ratatoskr/file-zone-map
GameCult:hands/estate-h7
GameCult:ratatoskr/research-atmosphere
GameCult:void/gamecult-theme-and-project-nav
GameCult:replace-matrix-js-sdk
GameCult:dependabot/docker/nginx-1.31.8-alpine
GameCult:kfiven-patch-3
GameCult:release-v4.12.8
GameCult:renovate/npm-sanitize-html-vulnerability
GameCult:dependabot/github_actions/actions/upload-artifact-7.0.2
GameCult:kfiven-patch-2
GameCult:dependabot/github_actions/dawidd6/action-download-artifact-27
GameCult:dependabot/github_actions/docker/setup-buildx-action-4.4.1
GameCult:dependabot/github_actions/docker/setup-qemu-action-4.4.0
GameCult:dependabot/github_actions/docker/build-push-action-7.4.0
GameCult:kfiven-patch-1
GameCult:release-v4.12.6
GameCult:release-v4.12.3
GameCult:release-v4.12.2
GameCult:more-theme
GameCult:fix-257
GameCult:imporve-thread-reply
GameCult:revert-2402-improve-menu-congestion
GameCult:mxidColor-toggle
GameCult:update-sw-main-msg
No reviewers
Labels
Clear labels
No items
No labels
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".
No due date set.
Dependencies
No dependencies set
Reference
GameCult/Ratatoskr!143
Loading…
Reference in a new issue
No description provided.
Delete branch "void/files-desk-contract"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Cut 1 of
docs/commons-files-desk.md(PR #142), follow-upcommons-files-desk-design-pr142. No UI, nothing deployed,filesDeskconfig declared and read by nothing.src/app/features/files/filesHost.ts: types for/indexand/file(name, size, mtime, mime, hash, role);parseIndexrefuses a malformed index and any entry name that is a path;joinPath;openIdTokenSource(mx);createFilesHost(bearer, one retry on 401, Range, host error codes carried untouched).src/preview-demo/filesHost.ts: a fake host under/_fileson the demo origin with sample zones commons and aqua, plus the pretend homeserver'sopenid/request_token. It keeps the rules the real host must: bearer required, ranges (206/416), no dotfiles,handoff-privatepresent on disk and never served or listed, read only.install.ts/server.ts: request/response headers pass through the guarded fetch.Placeholders until Eureka answers Q-E1..7 on #142: Commons roots, media-element ticket auth, error codes (the client interprets none), role set. Tests: 65 in the touched dirs pass; mutations of the name check, the 401 retry, handoff-private, dotfile and listing rules each fail a test.
🤖 Generated with Claude Code
HOLD. Meta and Eureka chose Matrix as the single authority (see #142); under that design this cut (host contract, host client, fake host) is not needed and would be closed. Not merged. Soul findings, kept for a revived B: (1) createFilesHost does not validate
host(empty,//evil.testor a query string send or break the bearer URL; pass redirect:'error' and require an absolute http(s) URL); (2) parseIndex returns a hole for a sparse entries array; (3) entry names pass U+FF0F, U+2215, U+202E, newline, duplicates; (4) size/mtime accept non-integers and 1e300, mime is any string; (5) the fake omits CSP sandbox and Content-Disposition: attachment; (6) multi-range returns 416 and Range unit is case-sensitive in the fake; (7) concurrent openIdTokenSource callers each mint a token.Files desk cut 1: contract types, host client (Matrix OpenID), fake host for preview-demoto Draft: HOLD Files desk cut 1 (host contract): superseded if Matrix-only (A) is chosen on #142Closing: Meta chose Matrix-shaped (option A on #142, #swarm 2026-11-13 14:44Z). The host contract, host client and fake host are not needed. Soul findings stay in the comment above for any revived host design. Not merged.
Pull request closed