Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
749f0a5
research(penrose): pre-implementation exercises for the explorer
claude May 10, 2026
5c096a1
build: exclude research/ from tsc and eslint
claude May 10, 2026
ac1a01d
research(penrose): replace Q1 with precision-drift evaluation
claude May 10, 2026
4b5c591
research(penrose): add BigInt-exact enumeration to Q3
claude May 11, 2026
bffdcd7
research(penrose): add Q4 viewport-anchor and Q5 Go experiment
claude May 11, 2026
26d9d41
chore: ignore .next/ anywhere, remove stray research/penrose/go/.next
claude May 11, 2026
98b1d0b
research(penrose): add Go viewport-anchor benchmark
claude May 11, 2026
a3469a5
feat(penrose): explorer prototype
claude May 11, 2026
636e450
build: bump tsconfig to ES2024 and restore BigInt literals
claude May 11, 2026
90536e1
fix(penrose): muted prime-moments palette + correct stroke pass
claude May 11, 2026
15b8299
fix(penrose): render P3 rhombi in tile space, not pentagrid cells
claude May 11, 2026
ac1ea40
fix(penrose): rhombus corners + saturated prime-moments palette
claude May 11, 2026
d8a0e19
fix(penrose): remove dedup — cell_UR is not unique per rhombus
claude May 11, 2026
0a97c8c
feat(penrose): pinch-to-zoom on touch
claude May 11, 2026
b03c4c9
feat(penrose): outlines + midline tracery instead of solid fills
claude May 11, 2026
d374714
feat(penrose): single outline color + long-diagonal decoration
claude May 11, 2026
5937899
style(penrose): borders 2px / diagonals 0.75px (~2.7× ratio)
claude May 11, 2026
80ddaf7
style(penrose): colored outlines per type, inside-clipped
claude May 11, 2026
34a88f9
docs(penrose): v1 design spec
n2p5 Jun 23, 2026
a7a5657
research(penrose): substitution + Z5 coordinate pivot, literature survey
n2p5 Jun 23, 2026
8270536
research(penrose): path addressing model + procedural-world applicati…
n2p5 Jun 24, 2026
7c8048b
research(penrose): exact cut-and-project window + validated engine
n2p5 Jun 24, 2026
e8f9d38
research(penrose): tested cut-and-project engine
n2p5 Jun 24, 2026
2387461
research(penrose): tested reliable deflation (substitution)
n2p5 Jun 24, 2026
d0945d7
research(penrose): the bridge — substitution tiling -> Z5 de Bruijn c…
n2p5 Jun 24, 2026
33e39d1
research(penrose): record the bridge result (substitution -> de Bruij…
n2p5 Jun 24, 2026
6b80b5e
research(penrose): closed-form coordinate recursion (the index carry)
n2p5 Jun 24, 2026
250967c
research(penrose): record the closed-form fold (index-carry recursion)
n2p5 Jun 24, 2026
c74c89f
research(penrose): universal closed-form recursion (forced index carry)
n2p5 Jun 24, 2026
8299937
research(penrose): STATUS — verified results vs open problems
n2p5 Jun 24, 2026
6bfeb2c
research(penrose): face extraction, proven exact against the substitu…
n2p5 Jun 24, 2026
ecd2836
research(penrose): golden-point rule — complete coordinate-space defl…
n2p5 Jun 24, 2026
46a821e
research(penrose): STATUS — faces + golden-point rule verified, T6/T7…
n2p5 Jun 24, 2026
59a08dd
docs(penrose): v1 spec rewrite around the tested engine + explorer pl…
n2p5 Jun 24, 2026
6baeb0b
feat(penrose): port tested cut-and-project engine into the explorer app
n2p5 Jun 24, 2026
ced1f00
feat(penrose): patch builder turns engine faces into a render model
n2p5 Jun 24, 2026
24a6b5d
feat(penrose): spatial-grid hit-testing maps a point to its tile
n2p5 Jun 24, 2026
53e94ad
feat(penrose): rewrite explorer onto the tested engine, bounded patch…
n2p5 Jun 24, 2026
ec37f76
feat(penrose): URL codec for tile address, seed, and zoom
n2p5 Jun 24, 2026
eba7527
docs(penrose): correct codec test row in explorer plan (dot separator…
n2p5 Jun 24, 2026
21d4b84
feat(penrose): click-to-pin doubles as camera origin and share URL
n2p5 Jun 24, 2026
75d0164
fix(penrose): canonical tile address is the full [n; j,k]
n2p5 Jun 24, 2026
d0e280a
docs(penrose): unbounded viewport-generator spec + plan (verified enu…
n2p5 Jun 24, 2026
1ea67ab
feat(penrose): pentagrid viewport enumerator (generic edgeless tiling)
n2p5 Jun 24, 2026
171e52f
feat(penrose): physical-space chunk cache over the pentagrid enumerator
n2p5 Jun 24, 2026
bfed736
feat(penrose): edgeless explorer via per-viewport pentagrid generation
n2p5 Jun 25, 2026
724a633
feat(penrose): faster zoom, trackpad pinch gets a higher sensitivity …
n2p5 Jun 25, 2026
07f6311
feat(penrose): translucent chip behind the explorer HUD for legibility
n2p5 Jun 25, 2026
f9b2a1d
fix(penrose): validate shared pins, bound the chunk cache, lazy hit i…
n2p5 Jun 25, 2026
4c73f9f
refactor(penrose): extract corners4/centroid/faceKey/rhombusType, mem…
n2p5 Jun 25, 2026
9824f03
polish(penrose): edgeless copy and B1 Mosaic scoped color tokens
n2p5 Jun 25, 2026
e331eaa
feat(penrose): teaching spine slice 1, Sketch harness and the two tiles
n2p5 Jun 25, 2026
8fbddb1
feat(penrose): teaching spine slice 2, the dead-end animated sketch
n2p5 Jun 25, 2026
f75bac7
docs(penrose): teaching-spine editorial arc (the reader's journey)
n2p5 Jun 25, 2026
5fb02ca
feat(penrose): restructure landing into the guided teaching spine
n2p5 Jun 25, 2026
1eb5438
feat(penrose): deeper-problem sketch and derived experiment number
n2p5 Jun 25, 2026
ba5adb1
feat(penrose): honest naive-solver dead-end replaces the staged sketch
n2p5 Jun 25, 2026
6e399c9
feat(penrose): unsolvable-future sketch from a verified exhaustive proof
n2p5 Jun 25, 2026
7bd89be
feat(penrose): follow tempting moves through to a pure-geometry wall
n2p5 Jun 25, 2026
a95b5b7
feat(penrose): cut-and-project sketch for the global-solve spine beat
n2p5 Jun 25, 2026
baff0c5
feat(penrose): interference overlay teaching sketch (spine section 7)
n2p5 Jun 25, 2026
7e6ae0c
feat(penrose): section 9 scaling sketches, thick:thin to phi and the …
n2p5 Jun 25, 2026
5725d4d
feat(penrose): dead-end sketches settle to a clean final patch
n2p5 Jun 25, 2026
a9cb890
feat(penrose): cut-and-project shown one dimension down (Fibonacci st…
n2p5 Jun 25, 2026
612ef04
feat(penrose): the address is a walk along five directions
n2p5 Jun 25, 2026
ec28120
feat(penrose): overlay is two draggable line layers, zoomed out, no tint
n2p5 Jun 25, 2026
ed885cc
feat(penrose): fade the scaling sketches between levels
n2p5 Jun 25, 2026
0a216ba
feat(penrose): dead-ends show red unfillable gaps; gentler golden fade
n2p5 Jun 26, 2026
ab217cb
feat(penrose): address walk is longer, then the tiling fades in aroun…
n2p5 Jun 26, 2026
afe50ef
feat(penrose): overlay spins a full 360 over a large off-screen plane
n2p5 Jun 26, 2026
a6fbdef
feat(penrose): hierarchy is a real zoom-out where lines become tiles
n2p5 Jun 26, 2026
de41616
feat(penrose): overlay turns by a fifth, zoomed out further
n2p5 Jun 26, 2026
7f17b8c
feat(penrose): golden-ratio sketch shows the ratio converging to phi
n2p5 Jun 26, 2026
4c4faa7
feat(penrose): address walk traces real tile edges so it lines up
n2p5 Jun 26, 2026
2c7e0a3
feat(penrose): hierarchy is a deflation zoom-in with a staged fade
n2p5 Jun 26, 2026
472f0e5
feat(penrose): strip sketch shows the window giving real Penrose tiles
n2p5 Jun 26, 2026
fa0f0a8
feat(penrose): strip's 2D panel builds the plane outward, not mutate it
n2p5 Jun 26, 2026
a3c695a
feat(penrose): overlay zoomed far out, finer lines, faint base + cris…
n2p5 Jun 26, 2026
a71ba6b
feat(penrose): hierarchy as alternating gold/blue nested line grids
n2p5 Jun 26, 2026
b00a82a
feat(penrose): hierarchy holds a beat on each layer alone before nesting
n2p5 Jun 26, 2026
8e4852a
feat(penrose): hierarchy gets the draw-out / beat / zoom rhythm
n2p5 Jun 26, 2026
c233553
feat(penrose): golden ratio as two growing tile stacks, not a ruler
n2p5 Jun 26, 2026
7cb499e
fix(penrose): golden bars solid; strip sketch animation fixed + tied …
n2p5 Jun 26, 2026
e55f338
fix(penrose): strip sketch animates the whole build; lighter render
n2p5 Jun 26, 2026
0df3bb2
fix(penrose): even build pace in strip sketch (sqrt wavefront)
n2p5 Jun 26, 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
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
/playwright-report/

# next.js
/.next/
.next/
/out/

# production
Expand Down
25 changes: 22 additions & 3 deletions DESIGN.md
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,17 @@ Two tokens per mode. No accent color. Ever.

In `globals.css` the tokens carry the `--color-` prefix (`--color-paper` etc.) that Tailwind v4's `@theme` requires to generate `bg-paper` / `text-ink` utilities. Same tokens, two forms.

### Scoped experiment hues

An experiment may bind a constellation hue to a named role through a scoped token. No new hue enters the language. The Penrose explorer does this:

| Token | Reuses | Role |
| --- | --- | --- |
| `--color-penrose-thick` | `--color-moment-1` (gold) | thick rhombus fill |
| `--color-penrose-thin` | `--color-moment-4` (teal) | thin rhombus fill |

Grout reuses `--color-paper`; the pin ring reuses `--color-ink`. The only new value is a dark teal (`#4f7d92`) that `--color-penrose-thin` takes in dark mode, nudged lighter for contrast on the dark paper. `thick` is identical in both modes.

## Dither

The visual signature. Three roles, strict territories, strict density.
Expand Down Expand Up @@ -121,6 +132,14 @@ The visual signature. Three roles, strict territories, strict density.
- **Active.** Fill at ink `0.1`.
- **Disabled.** Opacity `0.4`, `cursor: not-allowed`.

## Teaching animation (scoped)

Animation is otherwise not in the language. Teaching experiments are the one exception, under a hard contract.

- **User-initiated only.** Motion happens on an explicit play, step, or slider drag. Never on load, never ambient, never on scroll.
- **Reduced-motion is honored.** Under `prefers-reduced-motion`, play is disabled and the sketch renders its representative end state, stationary. The query is read live, so a mid-session change takes effect.
- **Confined to teaching sketches.** This applies to the framed sketch primitive inside a teaching experiment (the Penrose spine's `Sketch` harness). It does not relax the no-animation rule for site chrome, forms, or data viz.

## Light/dark toggle

- **State.** Cookie `theme` = `"light"` | `"dark"`. Absent = `"dark"`.
Expand All @@ -138,12 +157,12 @@ The visual signature. Three roles, strict territories, strict density.
- MDX for experiment writeups
- Open Graph / social cards
- Tags, categories, search
- A second accent color
- A second accent color (relaxed: an experiment may bind an existing constellation hue to a named role through a scoped token, as the Penrose explorer does; no new hue)
- Custom icon set beyond toggle and row-delete `×`
- Photography or non-dithered illustration
- Animation beyond focus and hover
- Animation beyond focus and hover (relaxed: user-initiated motion inside a teaching sketch, under the "Teaching animation" contract above)
- A second typeface family
- Per-experiment custom styling
- Per-experiment custom styling (relaxed: scoped tokens that reuse existing constellation hues are allowed)
- Multi-column layouts, dashboards, dense tables

## Adding a new experiment
Expand Down
638 changes: 638 additions & 0 deletions docs/superpowers/plans/2026-06-24-penrose-unbounded-generator.md

Large diffs are not rendered by default.

Loading
Loading