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 -
Starting view fitted to each roll: distance from the roll's height and width, roll centred in the screen area the control panel, header, readout and scrubber leave free, refit on resize until the camera is moved; changelog
Chasebf9ab42 -
Lighter mesh for phones: tools/build.py --coarsen N (and UNROLL_STEP) keeps every Nth sampled row and column of a built mesh with the same UV mapping; PHerc0172 lite mesh 527,834 vertices (from 2,082,140), 1.5 MB packed, loaded automatically on phones via geometry.lite (?mesh=full or ?mesh=lite overrides); tear threshold follows the mesh step
Chase0d6db02 -
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 -
README: version 1.1.0 (Install app)
Chaseecec04f -
Short labels and tooltips show the scan as 9.4 µm (9.362 µm stays in the details)
f043f2f -
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 -
Add PHerc1667 (Scroll 4): 19 segments (7.91 um meshes, X-ray from the 2.399 um scan, published ink 2.399 um and 1.129 um), from the open data bucket (CC BY-NC 4.0), with the EduceLab-Scrolls citation
623318d -
Release v1.0.0: version.json 1.0.0, CHANGELOG 1.0.0 on top of the 0.9.x pre-release history, README status released v1.0.0, api.json rebuilt
Chase00c0a57 -
unroll.help(): quick start and methods by group, help(group) and help(method); version 0.9.5
08a393b -
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 -
README: present Unroll as a released tool (v1.0 release candidate, licences, link to the public repo)
Chase85f7bdc -
build.py: read blosc-compressed surface volumes
ed64aa7 -
Add PHerc1447 (prize eligible): 15 segments, 8.64 um meshes and X-ray only, no ink layer and no ink model run, from the open data bucket (CC BY-NC 4.0)
a11db9d -
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 -
build.py: take the surface volume's .zarr, not its .tifs folder
b1ddf0d -
Add PHerc0172 (Scroll 5): 44 segments w052 to w095 (7.91 um meshes and X-ray, published ink 7.91 um, newest model), from the open data bucket (CC BY-NC 4.0)
0b28f8c -
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 -
Add PHerc0800 (prize eligible): 6 segments, 8.64 um meshes and X-ray only, no ink layer and no ink model run, from the open data bucket (CC BY-NC 4.0)
9b732da -
Add PHerc0841: 3 segments (9.366 um meshes and X-ray, published ink 2.403 um), from the open data bucket (CC BY-NC 4.0)
47dae70 -
Add PHerc0343P: 8 segments (8.64 um meshes and X-ray, published ink 2.215 um), from the open data bucket (CC BY-NC 4.0)
3dbdbf9 -
Add PHerc0009B: 18 segments with published ink (8.64 um meshes and X-ray, ink 2.401 um), from the open data bucket (CC BY-NC 4.0)
7194fee -
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 -
Add PHerc0814: 19 segments (9.362 um meshes), X-ray, published ink 2.399 um and 1.129 um, from the open data bucket (CC BY-NC 4.0)
e2acbe0 -
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 leaderboard: rank by AP by default, matching the researcher takeaway
4de4420 -
Destroy debris: landed shards and dust fade out soon after landing instead of resting 25 to 30 s on the undrawn floor, where they read as hanging in mid-air; reset clears every instanced slot; watchdog retires anything drawn and unmoving for 2.5 s; damageStats reports stillMax, stillAirMax, retired
dc2ef88 -
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: fix a share-link restore race, patient start in the e2e test
05acee5 -
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 -
ink_9um layer: all 37 windings (w023 to w045 and w052 to w059 run on Modal), manifest range and gpu.json
Grok Bote0226a7 -
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