Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
72 commits
Select commit Hold shift + click to select a range
41254f1
port animation rewrite + hover fix from exolivelit (sans embed mode)
disconcision Jul 29, 2026
8528cec
design doc: captured geometry architecture for draggable nool
disconcision Jul 29, 2026
93d2e89
step 1: box-snapshot motion layer replaces view transitions
disconcision Jul 30, 2026
87d2766
fix clone style loss: mount overlay inside the stage container
disconcision Jul 30, 2026
70a990d
rigid-subtree grouping + context shells + filter inheritance
disconcision Jul 30, 2026
2da1738
perf: eliminate paint storms; restore glow, selection morph, soft shadow
disconcision Jul 30, 2026
616111f
fix exit z-order, start clock at first paint, add Shift+S shadow toggle
disconcision Jul 30, 2026
719bf3a
design doc: shadow A/B verdict and round-4 fixes
disconcision Jul 30, 2026
ff334fa
shadows: clone-only strip, warm textures, toolbox promotion, Shift+D
disconcision Jul 30, 2026
cb5d890
design: pinned.md for parked items (shadow strategy, Shift+D call)
disconcision Jul 30, 2026
81d19d4
step 2: drag mode + candidate enumeration + hidden-mount measurement
disconcision Jul 30, 2026
fbffbf0
step 3: live drag-to-rewrite via Motion manual mode + ancestor sites
disconcision Jul 30, 2026
93a2585
drag debug: gate to commute+distribute, draw tracks with live t readout
disconcision Jul 30, 2026
f6802a4
drag: sticky active track (24px challenger margin)
disconcision Jul 30, 2026
48bb0d6
pinned: drag overlap legibility options
disconcision Jul 30, 2026
d32bd20
drag: mover-not-passenger affordance filter
disconcision Jul 30, 2026
2bb68d1
drag: knob-on-rails mechanic; drop vanishing-grab candidates
disconcision Jul 30, 2026
2fc8df2
design doc: knob-on-rails mechanic and vanish-fix findings
disconcision Jul 30, 2026
40bbf6c
drag: Rails/Closest mechanic toggle; singleton grab guard
disconcision Jul 30, 2026
66d5821
drag: debug-overlay toggle + hover tooltips on all corner icons
disconcision Jul 30, 2026
41ff410
ci: take exolivelit's workflow fixes (checkout/cache v4)
disconcision Jul 30, 2026
0e278b9
fix: single class expressions on #seed and #main (classList clobber)
disconcision Jul 30, 2026
7e7dc14
drag: per-rule loadout toggles in the noolbox
disconcision Jul 30, 2026
00a2257
drag: commit the exact candidate exp (fixes double pop-in on creates)
disconcision Jul 30, 2026
eb9c270
drag: emerge/converge geometry for creates and deletes (demo port, v1)
disconcision Jul 30, 2026
fd51ba7
drag: clone/grow emerge and merge/absorb converge via structural prov…
disconcision Jul 30, 2026
4cf7e0b
drag: unify correspondence - per-node dual exits, no fades, prefer-grab
disconcision Jul 30, 2026
73745dd
mobile: responsive scale, portrait stacking, touch fixes, drag default
disconcision Jul 30, 2026
38e3dd8
design: TODO.md consolidated index of remaining work
disconcision Jul 30, 2026
398c9d9
selection: restore root-selection outline morph and press feedback
disconcision Jul 30, 2026
0905d7c
motion: fix rapid-selection glitches; glow chases under key repeat
disconcision Jul 30, 2026
28afd53
infix: selected atoms show their selection outline
disconcision Jul 30, 2026
a6240eb
shadows: disable the clone shadow strip (measured obsolete on desktop)
disconcision Jul 30, 2026
145a6d5
nav: screen-space columnar arrow navigation replaces tree moves
disconcision Jul 30, 2026
5fe96f6
drag: disable the selection mechanic entirely in drag mode
disconcision Jul 30, 2026
aa84f37
drag debug: rule-keyed track colors and name-derived codes
disconcision Jul 30, 2026
314eacd
drag debug: inverted reversed dots, stacked sub/superscript codes
disconcision Jul 30, 2026
8c3830e
drag debug: all-white reversed dots, tighter dots, thin solid rails b…
disconcision Jul 30, 2026
37992cd
drag: logical mover filter β€” local tree position, not measured boxes
disconcision Jul 30, 2026
7dfe31f
drag: pattern-level moverhood β€” grips decided by the rule's own patterns
disconcision Jul 31, 2026
ffcf6f9
drag: noolbox rule glows with the rail parameter, flashes on commit
disconcision Jul 31, 2026
b3b95b7
drag: rule glow uses the rule-press flashbang, continuous in t
disconcision Jul 31, 2026
62c49aa
drag: glow exits decay exponentially instead of hard-vanishing
disconcision Jul 31, 2026
4b91957
drag: eliminate the glow's hard cutoffs; decelerating afterglow tail
disconcision Jul 31, 2026
0392415
drag: restore the flashbang blowout via a plus-lighter overlay
disconcision Jul 31, 2026
972ad14
drag: commit flash back to row-level plus-lighter, snap accepted
disconcision Jul 31, 2026
db47f70
drag: committed drags play their transform's sfx on release
disconcision Jul 31, 2026
ed741e8
drag: granular scrub of the transform's own sample along the rail
disconcision Jul 31, 2026
67a30ed
drag: six drag-sound modes behind a Shift+A cycle toggle
disconcision Jul 31, 2026
42f5e4a
drag: plucks are THE drag sound; experiment modes removed
disconcision Jul 31, 2026
acaa456
drag: commit flash cut to a brief pop (0.9s -> 0.28s)
disconcision Jul 31, 2026
ea91465
undo/redo world states on Cmd+Z / Cmd+Shift+Z
disconcision Jul 31, 2026
a19009e
drag plucks: chord quality carries the rewrite's structural effect
disconcision Jul 31, 2026
c7548ea
drag provenance: grow/absorb anchor at the head, not the box center
disconcision Jul 31, 2026
e401898
design: sound.md β€” channel model, plucks decision, derivation ladder
disconcision Jul 31, 2026
51054bd
drag plucks: content is the rule's operator multiset, walked src->result
disconcision Jul 31, 2026
1cf6e62
drag: loadout defaults + guards for the reported stuck-blend state
disconcision Jul 31, 2026
ef1394a
drag plucks: harmony experiment under Shift+A β€” quality third re-layered
disconcision Jul 31, 2026
1dfe6a6
noolbox: whole-row loadout toggle, equals-sign glow, fixed wheel speed
disconcision Jul 31, 2026
4af3eac
noolbox: native snap scrolling; solid-white equals glow
disconcision Jul 31, 2026
3fa726d
noolbox: mandatory snap, left shadow room, recessed edge fades
disconcision Jul 31, 2026
3eb9f39
noolbox: revert edge fade (the hard lip read as the recess), try snap…
disconcision Jul 31, 2026
7111e2d
persistence: sessions survive refresh; hardReset action
disconcision Jul 31, 2026
a2f4cf4
icons: corner L-clusters, reset button, motion icon retired; fixes
disconcision Jul 31, 2026
cda03bd
click-path emerge/converge: button transforms get drag provenance
disconcision Jul 31, 2026
87e296f
provenance: bystanders are not twins; heads never twin-match alone
disconcision Jul 31, 2026
18973e0
motion: the selection glow rides full morphs as its own layer
disconcision Jul 31, 2026
b96cd4f
motion: stationary selections keep their decoration through morphs
disconcision Jul 31, 2026
b564eb0
design: record pre-compaction loose ends
disconcision Jul 31, 2026
e0da564
toolbox: demo ordering β€” times-commutativity and distributivity into …
disconcision Jul 31, 2026
2534d64
seed press: displace the flanks by compositor transform, not margin
disconcision Jul 31, 2026
27bff54
seed strike: a dedicated action and a bong to close a demo on
disconcision Jul 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/workflows/deploy-branches.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,16 @@ jobs:
#- name: Debugging with ssh
# uses: lhotari/action-upterm@v1
- name: Checkout nool repo on current branch # STEP 1
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
path: source
- name: Add name of current branch to environment as BRANCH_NAME
uses: nelonoel/branch-name@v1.0.1
- name: Retrieve build environment if cached # STEP 2
id: build-cache
uses: actions/cache@v2
uses: actions/cache@v4
with:
path: '/home/runner/.opam/'
path: "/home/runner/.opam/"
key: ${{ runner.os }}-modules-${{ hashFiles('./source/pnp-lock.yaml') }}
#- name: Debugging with ssh
# uses: lhotari/action-upterm@v1
Expand All @@ -29,7 +29,7 @@ jobs:
- name: Use Node.js 21.2.0
uses: actions/setup-node@v3
with:
node-version: '21.2.0'
node-version: "21.2.0"
# yarn global add pnpm@8.10.5
- name: Install dependencies and build nool # STEP 3
run: |
Expand All @@ -43,7 +43,7 @@ jobs:
pnpm run build
working-directory: ./source
- name: Checkout website build artifacts repo # STEP 4
uses: actions/checkout@v2
uses: actions/checkout@v4
with:
repository: disconcision/disconcision.github.io
token: ${{ secrets.DEPLOY_NOOL }}
Expand All @@ -66,4 +66,4 @@ jobs:
git add -A
git status
git diff-index --quiet HEAD || (git commit -m "github-deploy-action-${BRANCH_NAME}"; git push)
working-directory: ./server
working-directory: ./server
88 changes: 88 additions & 0 deletions design/TODO.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# TODO β€” consolidated index (draggable branch)

Single place to find remaining work. Detail lives in the referenced docs;
items listed in full here are NOT recorded elsewhere.

## Recorded elsewhere (see those files for detail)

- **design/captured-geometry.md** β€” plan step 4 "Still open": chaining
(multi-rewrite drags); Pat-level provenance, execution half (rewrites record
correspondence β€” subsumes comp-match ambiguity and clone-source edge
cases; the affordance half β€” pattern-level moverhood β€” landed
2026-07-30, restoring the factor-via-shared-die gesture symmetrically);
near-collinear rail acquisition tie-breaks. Also its findings entry
"Rule gating (game design, sketch)".
- **design/pinned.md** β€” shadow strategy reevaluation (nine-slice sprite
etc.) + Shift+D default decision; drag overlap legibility (shadow + scale
on held subtree, dim the rest); toolbox motion (tool flips snap; extend
motion layer to pat-* ids); mobile gaps (touch toolbox scroll, landscape
crampedness, touch equivalents for keyboard/debug shortcuts).
- **design/sound.md** β€” the channel model (meaning β†’ audio channel), the
plucks decision, the derivation ladder (size delta β†’ operator multiset β†’
pattern melody), pan sketch; open: undo/redo sound.
- **design/drag-target-decomposition.md** β€” tree-edit vs layout-reaction
in drag targets; site-frame rail correction (open, next) and staged
choreography (open, designed experiment); figs/rail-variants.png.

## Not recorded elsewhere (canonical here)

### Decisions awaiting Andrew
- Rails vs Closest drag mechanic: comparison toggle exists (8th corner
icon); pick one, delete the other.
- Debug defaults when tuning ends: drag-debug overlay currently ON by
default; Shift+S / Shift+D toggles and `window.__knob` debug global
should be removed or gated.

### Game-design track (mechanism sketch in captured-geometry.md)
- Rule ACQUISITION: pick up / put down transforms, earned via levels
(loadout toggles are only the enable/disable half).
- Loadout conflict detection: geometric-ambiguity checking at enumeration
(coincident/near-coincident anchors), warnings or disambiguation;
curated presets.
- Loadout persistence: tools.dragActive resets on restart (Escape) and
isn't persisted across sessions.

### Polish (Andrew's observations, not yet acted on)
- Noolbox recess lip: the bottom turquoise line reads thicker than the
top edge; the top has a nice cast shadow below (maybe wants slightly
more) but lacks a brightness lip on its upper part. Subtle and easy to
overdo β€” parked. (An edge fade-out was tried and reverted: it dissolved
the hard lines that make the recess read as a slot; but the current
hard cutoff is also "close but imperfect".)
- Noolbox exact-fit height (no truncated bottom row) would need
JS-driven resizing with a moving bottom lip, or elastic inter-rule
gaps β€” both judged worse than truncation for now; see discussion.

### Pending verdicts / watches
- Shift+A harmony experiment (sound.md): keep or delete after listening.
- Sound pan (concept 3, sound.md): queued, unbuilt.
- Adjacent-possible previews: blur-at-rest/sharpen-on-hover fixed and
icon moved top-left β€” Andrew to judge whether the feature earns its
keep or gets deleted.
- Stuck-mid-tween drag state (reported, never reproduced in three
scripted chaos campaigns): guards landed β€” if it recurs, check the
console for "manual_start: empty before-capture" and whether
window.__knob.frames is still advancing; either datum bisects the
hypothesis space.
- Die loses blue tint during merge flights: diagnosis + candidate fix
in captured-geometry.md findings (backdrop baking); Andrew to call.

### Icon workflow (idea, unbuilt)
- Trying icon candidates in context: fetch SVGs by concept from the
Iconify API (aggregates 200+ open sets, no auth:
api.iconify.design/<set>/<name>.svg) into assets/icons/candidates/,
plus a one-page "icon lab" rendering each candidate at actual corner
size with the app's invert filter and hover styling. Noun Project API
(Andrew has an account) as the alternative source, same lab.

### Meta
- Distill the capture-vs-internalize REPORT from captured-geometry.md's
findings into a standalone write-up while fresh.
- Code cleanup nits: unused imports/dead consts (Toolbar, ModelField,
palette_1/2, ded), `flipping` dep in package.json.

### Long-horizon (context in memory + first design discussion)
- Internalization triggers to watch for: vary-style continuous drags,
non-CSS layouts, animating layout at 60fps, 3D.
- Toolbox as a drag surface (tools-as-draggables, palette drags Γ  la
stage-builder demo).
Loading
Loading