unroll / index.html

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. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. Reword ink-layer copy: candidates for expert reading⁠

    Chase Hendrick
    bf77c3f
  12. 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
  13. 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
  14. 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
  15. Realism pass for carbonized papyrus, island and outlier prune for unroll morph, docs/REALISM.md, cache bust d

    78b3d8f
  16. 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
  17. 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
  18. 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
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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
  24. 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
  25. Destroy mode: UV damage mask with tear, crush, burn and water at any unroll amount; roll up; size-dependent debris

    6dde6ff
  26. Data-driven scroll framework and Open your own⁠

    f6dcaa7
  27. About panel: add a subtle Made by Chase Hendrick credit

    7a534f8
  28. 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
  29. Add Crush mode: mash the papyrus into instanced flakes, fragments and dust

    7c1873b
  30. 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
  31. Add Tear apart mode: brittle carbonized papyrus fracture toy

    35d922f
  32. Mark GPU ink layer as lower res, explain why two ink layers

    unroll
    79b1c36
  33. Clarify ink layer buttons: Published ink vs Our GPU ink, with tooltips and hint line

    unroll
    3e17cb6
  34. Unroll: review fixes, ZeroGPU receipts, licence

    Verified signature
    10880af
  35. Unroll: first private preview

    Verified signature
    e6863b5
  36. initial commit

    Verified signature
    83cf288