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.

Roster Studio spreadsheet feedback — web0.3.0.dev3

Live at https://openhoops.io/rostereditor. Final source60k archive f501daabd54405193f41a689d825afec54f3b19c83680550e7f7cd8c50371302, Worker c4824824-5169-40ef-933e-69adca43a88e. The accepted60i writer payload is 02aa727c2ce3ac15c0b06daef70e982c3de182f5e503f44f0a3811620af7b85b; its last change preserves support for quoted spreadsheet headers. Existing workspaces, accounts, templates and private links remain compatible. This is a website update, not a new public Windows hook package.

Report and corrections

The supplied screenshots report the100-row page limit obstructing large copy/paste, concern about spreadsheet exports opening in one column, and a rejected team CSV import showing “Preferred national rank: use a whole number.” Export had succeeded; reimport failed.

The integer parser incorrectly processed the exported @unset marker for optional ranks as a number. Non-value states now bypass numeric parsing; untouched CSV cells are skipped before the50,000-changed-cell transaction limit. Reimporting a complete mixed team sheet, or a wide unchanged player sheet, preserves unset/null meanings. Literal markers remain escaped, and native/metadata fingerprints still reject stale files. Native equal-value writes also avoid rewriting equivalent text handles.

Choose Rows → All rows to load the entire filtered/sorted table. A window of80 rows is drawn while selections use the complete loaded dataset, so copying a column or pasting across former page boundaries includes offscreen rows.100/250/1000 page choices remain. Ctrl+A selects the loaded table; Ctrl+Space selects the current column; Ctrl+Home/End navigates to its ends. Pasting is atomic with original cell preimages. Limits remain50,000 changed cells per edit and500,000 loaded cells in All rows; choose fewer columns or split larger changes.

Tools → Export spreadsheet (Excel / Sheets) downloads UTF-8 BOM TSV with all matching rows and the selected columns. Existing CSV exports remain. Import detects comma, semicolon and tab separators, including supported Excel sep= hints and quoted column headers. This adds spreadsheet interoperability; an actual physical Excel/Sheets application round trip was not performed.

Rejected imports show the affected row/field and an editable spreadsheet draft with actual CSV download and Retry import. Corrected drafts are persisted. A definite422 rejection can retry unchanged with its original command ID after a server fix; corrected text receives a newly journaled command ID. Interrupted/unknown saves retain an immutable original command for receipt recovery.409 stale-revision/hash conflicts still require fresh review; no force-overwrite path was added. A second selection-refresh bug, exposed while verifying successful recovery, is also fixed. Modal background accessibility and footer sizing are corrected.

Team GID is a graphics/uniform grouping key. ArenaID references an existing Arenas table row, independently of artwork filenames. Their values should only be made equal when compatible records exist; user roster IDs were not renumbered automatically.

Recovery instructions for editors

Refresh the editor in the same browser/profile, then choose Review draft → Retry import. Keep the local draft. For the reported unset-rank bug the original exported CSV can retry unchanged. Correct other genuine validation failures in the draft or download its spreadsheet text. If another editor saved a newer revision, the stale-file protection remains active: preserve the draft and reconcile against a fresh export rather than discarding work or forcing the old import.

Evidence

Combined acceptance:148 Windows writer/preparation/college cases on60c,47 exact60i payload grid/server cases,35 frontend DOM cases on60k,10 local HTTP cases on60c and13 production HTTP cases on60i. Final60k retains the accepted60i writer exactly and adds the tested guard that keeps editing disabled after a failed row refresh. Final native browser readback confirms the loaded All rows view; the earlier recovery/save evidence uses the same recovery code on60g. Authoring modules are unchanged from60c except the tested CSV/grid code. Source, deployment.

Native Paseo on the exact live site verified All rows at team904/905, explicit validation rejection, corrected draft recovery in another existing tab, Retry import, dialog closure and saved revision7. Authenticated independent readback confirms exactly one saved revision, the intended native name and preserved unknown rank. All tests use owned private QA workspaces; March Madness Legacy and the original empty owner workspace were not edited. Native browser refresh was canceled by its beforeunload handling, so cross-tab recovery is the browser evidence; storage/reload cases also have scoped DOM tests. Full-page capture can still repeat a clipped strip below the viewport; retained captures are labeled accordingly and do not certify pixels outside their clean region.

Early60a exposed equivalent-name native rewriting in the no-op test;60e/60f exposed a successful-save refresh error when columns were reset with a selection. Those failures and the diagnostic remain separate evidence. A temporary QA restart helper initially refused its mismatched58 process predicate; only positively identified60 QA processes were subsequently stopped. No shared game/MVP/desktop input or protected hosting service was changed.

Metadata API52 is a separate private source implementation. Presentation, full RED MC semantic/career/IFF parity, real-mod/custom-art acceptance, physical cross-browser/input coverage and native-save companion reconciliation retain their existing limits.