Commit History
7 days ago
-
Unroll 1.7.2: on phones the Read box no longer covers the title with More controls open
Verified signature13a1396
8 days ago
-
One page scroll bar and American English
Verified signature757768f
10 days ago
-
Unroll 1.7.0: Live sheet, stream any public segment and volume and see the volume on the sheet
Chase Hendrick +1: Claude Opus 5.5 (1M context)Unverified signatureCo-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01VUSJzcTqFQdQ5GarxuyTNs7391956
11 days ago
-
Unroll 1.6.0: Connect your tool panel in the Embed sheet
Verified signaturee5067cd
19 days ago
-
v1.5.0: labeled segments in the CT volume and window.unroll.ct API; roll-angle guard; topoAudit and sweepAudit test hooks (Grok's WIP patches, tested)
Verified signaturee31bb23 -
Starting view one wheel step farther out (OPEN_STEP = 1/0.95^zoomSpeed on the fitted distance)
Verified signature212a55c -
Restore b24a488 files overwritten by eadab8d (an upload from an older local copy)
Verified signature943fb39 -
Open one wheel step farther out
Verified signatureeadab8d -
Fix first load flash and black screen: no pow() of a negative base in the intro sweep shader (NaN on real GPUs, spread by bloom), guarded normal and rim terms, service worker serves exact ?v= matches only (older copies are the offline fallback), cache bust nan1
Chaseb24a488 -
CT volume view (lib/ctvolume.js, lib/ctsource.js): a cube of the raw X-ray scan around a picked papyrus point (256 voxels, 128 on phones) as a Data3DTexture, raymarched MIP clipped to an oriented slab that starts square to the surface; own canvas beside the scroll, render on demand; panel group (Pick a point, Show volume) and floating panel with slab, tilt, window/level, size and detail controls; Settings, unrollView.ct.volume API and actions, ?ctvol URLs, scanGeom and scanPick hooks in app.js, glossary (MIP, slab, CT volume, raymarching), docs
Chase Hendrick42b53b4 -
X-ray window/level with percentile auto contrast (lib/ctwl.js): uCTWin uniform in the surface shader, X-ray contrast panel group (Window, Level, Auto contrast, Full range), Settings (auto on load, low and high percentiles), unrollView.ct API and actions, ?ctwin ?ctlevel ?ctauto URLs, glossary entries, docs
Chase Hendrickce6b88b -
Lower resolution while dragging (lib/dragres.js): renderer and composer pixel ratio drop on OrbitControls start and return 150 ms after the camera settles; Settings and panel control (off, light, strong), unrollView.dragRes API, ?dragRes= URL, glossary entry, docs/CT_VIEW.md; fix undefined prevClear in hover pick
Chase Hendrick1c31760 -
Type and spacing scale (CSS variables) for every panel and button: 14 px floor and normal tracking on phones, 1.5 body line height, balanced button padding and icon gap, safe-area insets, phone landscape layout, layer labels that wrap cleanly, panel kept clear of the header and credit
0c79aed -
Install app: web app manifest, icons from the favicon art, service worker caching the app shell and default scroll (cache names tied to version.json), Install app button in View and Settings, install action, glossary entry, README section
Chase3203736 -
Reword ink-layer copy: candidates for expert reading
Chase HendrickReplace claims that neural networks found the ink with: ink layers show where models detect ink; letters visible here are candidates for expert reading. Updates the README, page lede, meta tags, and the PHerc0139 manifest lede. Assisted-by: Grok Botbf77c3f -
Public API at window.unroll (schema, help, coverage test; ui and bench groups), embed mode with postMessage bridge and oEmbed, version 0.9.4 in About and API, ink_9um (9 µm) label and credit, Ink Bench hardening from the audit, hashchange without reload, capped test hooks
cc6b6d8 -
Relicense all code to Apache 2.0 (LICENSE, NOTICE with three.js kept MIT, frontmatter), version 1.0.0 (version.json, CHANGELOG.md); scan data stays CC BY-NC 4.0
Chase7a02281 -
Overlay textures upload through a per-frame queue (about 6 ms per frame, initTexture) instead of all at once, removing the 14.6 s main-thread freeze; import map versions for tear.js, damage.js and lib/*.js; scan shown as 9.4 µm with 9.362 µm voxels in the details; glossary links every occurrence; mobile panel clears the bottom bar
1410d57 -
Realism pass for carbonized papyrus, island and outlier prune for unroll morph, docs/REALISM.md, cache bust d
78b3d8f -
Control panel redesign (ui.js, ui.css): grouped Layers, Ink Bench, View, Destroy and Scrolls with icon and text labels, 44 px targets, pressed states, shortcut tooltips, focus rings, docked mobile panel; Settings (quality, reduced motion, speed, glow, background, HUD, labels, sensitivity, units, Ink Bench button) saved in localStorage and settable by URL; agent API unrollView.actions/settings/state/glossary (docs/AGENT_API_UI.md); plain language glossary.json under About with linked terms; faster intro (motion within one frame, ease-out, about 2.5 s, skip with Enter or button, follows speed) with shaders compiled behind the loader; CPU pick fallback for Destroy on GPUs without float targets; readout panel, fixed Roll up width, header clear of the panel
97b9983 -
Sandbox debris: triangles bound to removed nodes are hidden instead of hanging frozen; tiny loose pieces become crumbs, small pieces held by a glued node are freed, a sheet only sleeps when no free piece is off the floor; crumbs and flakes settle and fade like the main view; cache-busting ?v= on the JS modules; sandboxStats/sandboxSim test hooks
9728790 -
Relabel the second ink layer as ink_9um (9 µm): Chase Hendrick ran the public scrollprize/ink_9um model, which the Vesuvius Challenge trained; HUD readout INK_9UM; cache-busting version on JS and CSS
01b454f -
Multi-scroll support: build.py and fetch.py take any open-data scroll (per-scroll voxel size, X-ray scan, renumbering by radius, optional ink, a second 1 um ink layer), make_manifest.py, the scroll picker's prize eligible badge and eligible-only toggle (window.unrollScrolls), and a 'Why N ink layers?' box written from each manifest's ink layers
cf20894 -
Destroy: floor follows the scroll as drawn (rolled or unrolled) with a soft visible floor glow; smoke, ash, sparks and burnt flakes rise from each ember's current spot on the deformed sheet; new Crumble (K, unrollView.crumble()) breaks the scroll up from its edges into a heap of dust, Reset restores it; help and README
235aa03 -
Faster first load: ship the int16 geometry as byte planes + gzip (scroll.i16p.gz, 1.62 MB instead of 3.48 MB), unpacked in the browser to the exact scroll.bin bytes with a fallback to scroll.bin; tools/pack_bin.py builds it, tests/pack_bin.mjs checks the round trip
77b49a9 -
Ink Bench: examples on all 37 windings, researcher takeaway (rank by AP, report the X-ray floor), ink_9um credit, untrack pycache, sturdier leaderboard test
a9ce211 -
Ink Bench: score your own ink prediction against the published ink, in the browser, with a Python and CLI companion, an open bundle format, a leaderboard view and Apache-2.0 code
f918b86 -
Destroy: fibrous alpha-tested damage edges, Burn and Water tools with cursors, Roll up, size-dependent debris that settles on the floor, wall-clock burn timing; rename Tear apart to Destroy; ink model text reads its coverage from the manifest
de293f3 -
Destroy mode: UV damage mask with tear, crush, burn and water at any unroll amount; roll up; size-dependent debris
6dde6ff -
Data-driven scroll framework and Open your own
- scrolls/index.json registry and per-scroll manifests (windings with ranges, ink layers with sources and resolutions, credits, data terms); PHerc. 139 migrated with no visible change - scroll picker (hidden with one scroll), per-scroll and per-winding lazy loading - lib/manifest.js validator shared by the page and tools/validate_scroll.mjs; docs/ADDING_A_SCROLL.md; tools/precompute_template.py - Open your own: files, folders, zips or a URL, read in the browser only (nothing uploaded), OBJ/PLY with UVs, PNG/JPG/TIFF layers, size limits, clear errors, kept in IndexedDB and labelled local; downloadable synthetic example package - atlases as WebP with JPG fallback (about 2.1 MB smaller) - rename layers: Published ink (2.4 µm) and Our ink model (9 µm)f6dcaa7 -
About panel: add a subtle Made by Chase Hendrick credit
7a534f8 -
Polish: keyboard shortcuts with a ? help overlay, V to reset the camera, lazy-load the ZeroGPU textures, preload data and three.js in parallel, fix phone layout overlap and desktop title overlap, vignette and papyrus sheen, full OG and Twitter tags with a new rendered preview
ed610d3 -
Add Crush mode: mash the papyrus into instanced flakes, fragments and dust
7c1873b -
Tear apart: real cracks with vertex splitting and a cut render mesh; fix slider snap-back, edge spikes; add compare swipe, scale bar, load error state
0bedd54 -
Add Tear apart mode: brittle carbonized papyrus fracture toy
35d922f -
Mark GPU ink layer as lower res, explain why two ink layers
unroll79b1c36 -
Clarify ink layer buttons: Published ink vs Our GPU ink, with tooltips and hint line
unroll3e17cb6 -
Unroll: review fixes, ZeroGPU receipts, licence
Verified signature10880af -
Unroll: first private preview
Verified signaturee6863b5 -
initial commit
Verified signature83cf288