OPENHOOPS / 2K14Final team archive · November 9, 2026Reference libraryChecksums

Dated source reference. Current release status: handoff state. Full original relative paths are in the developer archive.

OpenHoops Roster Studio — collaborative web editor

Roster feedback60, live web0.3.0.dev3/source60k/Workerc4824824-5169-40ef-933e-69adca43a88e, fixes exported unset-rank reimports and selected-cell recovery refresh, adds All rows with windowed rendering, spreadsheet TSV/delimiter detection and editable/retryable preserved CSV drafts.148 Windows writer cases,47 exact-payload grid/server cases,35 frontend cases,10 local/13 production HTTP cases and actual live browser recovery/readback pass. Existing user projects/drafts remain protected;50,000 changed cells per edit/500,000 loaded cells are explicit bounds. Presentation and full RED MC semantic/career/IFF/physical-device coverage remain separate.

This is the canonical editor replacing the desktop UI. The proven Python writer remains shared; old desktop builds/releases stay as historical artifacts. Users work in a browser on Windows, macOS or Linux, with no game installation required for authoring.

Web0.3.0.dev1 added email sign-in and offline recovery, a synced My workspaces dashboard, self-service creation/organization/archive/reopen, named owner/editor/viewer invitations and complete workspace backup/recovery. Existing private links remain compatible. Start at https://openhoops.io/rostereditor; no setup key is needed for a verified account.

Current web0.3.0.dev2 adds four starting rosters: base/default, base/blank, expanded/default and expanded/blank. Select one during workspace creation or use the picker in an existing empty workspace. Expanded choices have905 teams and require the OpenHoops hook in game. Blank uses placeholder names while retaining sensible gameplay defaults. All copies remain private and independent; templates never overwrite a loaded roster.

Authorized scope: all supported standalone PC ROS authoring, native + optional college fields in one grid, filtering/sorting, rectangular paste, all/filtered/selected global operations, custom fields, native/college CSV, undo/history, comments/presence, clone/import/reference/health/script tools, private owner/edit/view links and verified roster-pair export. Unsafe native transforms and other game-mode file formats must remain explicitly refused rather than guessed.

Cloudflare target: Worker/static assets at https://openhoops.io/rostereditor; the homepage is reserved for the future main site; one Durable Object per shared project serializes commits and enforces access; private R2 objects preserve immutable originals and versioned snapshots. A separate isolated Python processor executes the existing writer. Container disk is temporary, never the authority for a project. Cloudflare authorization and deployment are complete; the main homepage remains reserved.

Different-cell edits may merge after checking their original values. Same-cell conflicts are explicit. Structural/bulk operations require an exact document revision. Each command has a durable idempotency key. Collaborative undo checks current values instead of silently restoring over somebody else's later changes. Email accounts verify control of the address and identify named edits. Display names remain user chosen; anonymous private-link labels are unverified.

No original game, roster, artwork, vendor program or private credentials are bundled in the public app. An uploaded workspace stays private behind its named memberships and optional capability links. Presentation and game/API/runtime changes remain outside this editor task.

Earlier implementation0.2.0.dev2/source55u added persistent recovery, sequential Undo/Redo, live comments, navigable reports, historical downloads, named donor inspection and direct ZIP intake. The exact accepted55t writer payload passes186 Windows writer/grid/transport cases.28 frontend DOM behavior cases,40 actual Cloudflare collaboration cases and12 route/access cases pass. A live905-team/13,665-player/3,779-uniform specimen passes upload, highest-index metadata,13,665-cell global edit, export and direct ZIP reimport; independently unpacked final writer readback passes for stock and expanded exports. Local36 collaboration/seven injected-storage and six simulated container-lifecycle cases retain their separate scoped evidence. DOM/service checks do not certify every browser/OS or pixels.

The managed processor uses a persistent hash-bound Python HTTP interpreter, custom1vCPU/3072MiB/2000MB resources and a five-minute inactivity sleep. Production has no Dell dependency. Final read samples were186ms warm and479ms after20seconds idle, with7.99s cold startup; the large bulk operation took2.46s and export1.34s. These are measurements, not latency guarantees. See operations for cost/recovery scope.

The interface includes all39 native tables, column presets/picker, typed cell editing, RGB controls, native/college sorting and filters, rectangular clipboard paste, all/filtered/selected global edits, mixed hash-bound CSV, custom fields, roster/season declarations, clone/import/move/delete, references, health/comparison reports, bounded TURK, comments, share-link revocation, history/undo/version restoration and ZIP export. Unsupported native/game-mode operations remain refused. Named-column coverage is not full RED MC format/semantic parity.

See deployment and recovery, private collaboration routes, college field guide and the current checkpoint. The earlier0.3.0.dev1/source56d checkpoint passes46 actual production account/recovery cases,40 legacy collaboration cases and16 route/access checks. The managed Python container is exercised; screenshot/pixel and physical cross-browser certification remain unverified. Historical downloadable ZIPs remain unchanged.

The in-app Help guide covers keyboard navigation, raw enum values, global editing/CSV, optional fields, collaboration and recovery. Commands are journaled in IndexedDB before transmission; unfinished cell drafts survive a reload and can be recovered in a new browser session with the same grant. Recovered commands retain their original actor, ID, preimages and revision. Conflicts remain available for review/download until explicitly discarded. Site-storage failure refuses transmission. This is recovery for cell typing and submitted commands, not offline editing or recovery of every unsent dialog form. Clearing browser site data removes local drafts and remembered links.

Undo/Redo traverses your acknowledged changes and persists its list for the current browser tab identity. Signed-in revision ownership is also verified on the server and supports own-change undo across devices through history. Different-cell collaborator edits remain intact; same-cell changes refuse the inverse. Structural changes form an undo boundary; all full versions remain available to owners through History. Revision review pages change details and can navigate to the current cell when its row epoch still matches. Export any saved version without restoring it, or download revision1 as the preserved original import.

Exported ZIPs can be imported directly into a new project, used to inspect named donor teams or compared with the current roster. Keep that ZIP as the portable roster/metadata backup. It contains the selected ROS/companion pair. Use the separate Full backup action for grants, discussion, receipts and complete project history. Server originals and version snapshots remain immutable; automated retention/pruning is not enabled.

Web CSV includes native and metadata fingerprints (ROS_SHA256 and EXTRAS_SHA256). Reexport after collaborator changes instead of forcing a stale spreadsheet over them. Legacy native-only CSV remains supported; metadata CSV without its fingerprint is refused. Custom numeric/boolean types carry into unset rows; text identifiers keep leading zeros. Help covers literal marker escaping, known/unknown/unset states, raw enum editing and tool limits. The hook/API do not yet consume optional metadata, and complete RED MC semantic/career/IFF parity is not claimed.