Commit History

7 days ago

  1. Unroll 1.7.2: on phones the Read box no longer covers the title with More controls open

    Verified signature
    13a1396

8 days ago

  1. One page scroll bar and American English

    Verified signature
    757768f

10 days ago

  1. 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 signature
    7391956

11 days ago

  1. Unroll 1.6.0: Connect your tool panel in the Embed sheet

    Verified signature
    e5067cd

19 days ago

  1. 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 signature
    e31bb23
  2. Starting view one wheel step farther out (OPEN_STEP = 1/0.95^zoomSpeed on the fitted distance)

    Verified signature
    212a55c
  3. Restore b24a488 files overwritten by eadab8d (an upload from an older local copy)

    Verified signature
    943fb39
  4. Open one wheel step farther out

    Verified signature
    eadab8d
  5. 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

    Chase
    b24a488
  6. 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

    Chase
    bf9ab42
  7. 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

    Chase
    0d6db02
  8. 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 Hendrick
    42b53b4
  9. 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 Hendrick
    ce6b88b
  10. 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 Hendrick
    1c31760
  11. README: version 1.1.0 (Install app)

    Chase
    ecec04f
  12. Short labels and tooltips show the scan as 9.4 µm (9.362 µm stays in the details)

    f043f2f
  13. 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
  14. 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

    Chase
    3203736
  15. Reword ink-layer copy: candidates for expert reading⁠

    Chase Hendrick
    bf77c3f
  16. 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
  17. 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

    Chase
    00c0a57
  18. unroll.help(): quick start and methods by group, help(group) and help(method); version 0.9.5

    08a393b
  19. 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
  20. 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

    Chase
    7a02281
  21. README: present Unroll as a released tool (v1.0 release candidate, licences, link to the public repo)

    Chase
    85f7bdc
  22. build.py: read blosc-compressed surface volumes

    ed64aa7
  23. 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
  24. 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
  25. build.py: take the surface volume's .zarr, not its .tifs folder

    b1ddf0d
  26. 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
  27. Realism pass for carbonized papyrus, island and outlier prune for unroll morph, docs/REALISM.md, cache bust d

    78b3d8f
  28. 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
  29. 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
  30. 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
  31. 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
  32. 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
  33. 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
  34. 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
  35. 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
  36. 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
  37. 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
  38. 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
  39. Ink Bench leaderboard: rank by AP by default, matching the researcher takeaway

    4de4420
  40. 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
  41. 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
  42. Ink Bench: fix a share-link restore race, patient start in the e2e test

    05acee5
  43. 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
  44. ink_9um layer: all 37 windings (w023 to w045 and w052 to w059 run on Modal), manifest range and gpu.json

    Grok Bot
    e0226a7
  45. 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
  46. Destroy mode: UV damage mask with tear, crush, burn and water at any unroll amount; roll up; size-dependent debris

    6dde6ff