Commit graph

55 commits

Author SHA1 Message Date
Claude
12803052fd
kasuti: four new motifs + custom pattern editor
Adds Rose, Totem, Figurine, and Snowflake to the motif reel — inspired
by patterns 1/2/4 on the reference sketch and the red snowflake
sample. Each is an Eulerian graph so an alternating tour exists
(36/24/34/52 stitches respectively).

Appends a "+ Make your own" tile at the end of the reel that opens a
dialog-based pattern editor: click between dots on a 14×14 grid to
toggle stitch segments. The editor reports connectivity and Eulerian
status live and only enables "Use this motif" once the pattern is
connected. The saved custom pattern is centered into the main grid
and selected immediately.

https://claude.ai/code/session_01KNdXjQczMCRGMK7K3Qderw
2026-04-22 08:08:51 +00:00
Claude
197f7b681b
kasuti: new interactive — alternating Eulerian tour on a grid
Trace traditional Kasuti embroidery motifs so the design appears
identical on both sides of the fabric. Two side-by-side 20×20 SVG
fabrics (front/back); the active side flips after every stitch, and
only legal unvisited pattern edges from the current vertex are
clickable. Seven Eulerian motifs in the top reel (Square → Temple),
per-side thread colour pickers (default black on front, red on back),
undo / reset, completion detection + canvas-confetti.

Implemented from the idea in admin-data.json; idea removed and
replaced with a note on the slug.

https://claude.ai/code/session_01KNdXjQczMCRGMK7K3Qderw
2026-04-21 18:33:32 +00:00
Claude
8e041f32d7
computing-pi: clickable avg toggle + second instruction line
T9: The center avg display is now a <button>. Clicking it toggles
between showing avg × 4 (with 'π ≈ 3.1416' reference) and showing
plain avg (with 'π/4 ≈ 0.7854'). Label flips accordingly. Subtle
background hover wash to hint at interactivity.

T10: Added a second instruction line below 'Click on any of the
completed runs to view the full sequence.' calling out the avg
toggle. Both lines sit in a shared centered text-muted-foreground
container with small vertical gap.
2026-04-21 15:45:07 +00:00
Neeldhara Misra
3b7387e579 admin: computing-pi: mark T10 done 2026-04-21 20:48:17 +05:30
Neeldhara Misra
bc61479cb6 admin: computing-pi: mark T9 done 2026-04-21 20:48:16 +05:30
Neeldhara Misra
5ed8eb9332 admin: computing-pi: add T10 2026-04-21 18:29:52 +05:30
Neeldhara Misra
9c5fa3f60a admin: computing-pi: add T9 2026-04-21 18:29:47 +05:30
Claude
6ea57f2a48
computing-pi: call the Propp source a preprint, not a paper 2026-04-21 12:53:56 +00:00
Claude
2863ec16b4
computing-pi: Propp footnote, in-progress counter, per-tile clicks, note
T5: Added a centered <footer> below the Card crediting Jim Propp's
paper, the LinkedIn post, and Arghya Dutta — markdown links rendered
as anchor tags with target=_blank rel=noopener noreferrer.

T6: Reset button shows a mono ({stoppedCount}/{n}) suffix while any
run is still active; the suffix disappears once all runs stop.

T7: Tile clickability is now per-run (run.stopped) instead of gated
on allStopped. Since stopped runs are immutable, the detail Dialog
stays accurate while unrelated tiles keep ticking.

T8: Added a small instruction note between the header and the tile
grid: 'Click on any of the completed runs to view the full sequence.'
The old 'All runs complete' banner is reduced to the discarded-runs
callout only.
2026-04-21 12:49:32 +00:00
Neeldhara Misra
b14c922369 admin: computing-pi: add T8 2026-04-21 18:15:12 +05:30
Neeldhara Misra
64d130425c admin: computing-pi: add T7 2026-04-21 18:14:34 +05:30
Neeldhara Misra
9ebb2cf45a admin: computing-pi: add T6 2026-04-21 18:14:11 +05:30
Neeldhara Misra
b99e8aa508 admin: computing-pi: add T5 2026-04-21 18:13:35 +05:30
Claude
ee2d249513
computing-pi: shorten card description to one sentence 2026-04-21 12:36:47 +00:00
Claude
f752b45810
computing-pi: move fraction dot onto the H/T row's bottom border 2026-04-21 12:34:21 +00:00
Claude
80ae2ecaa8
computing-pi: fraction-indicator dot on the H/T header
Small black dot on the H/T row at left: (H / total) * 100%. The
midpoint corresponds to H = T, so the dot crosses the middle exactly
when a run hits the stopping condition (H > T). Discarded runs end
the simulation with their dot still left of center.
2026-04-21 12:31:11 +00:00
Claude
1efdec5e44
computing-pi: raise cap to 5000, amber levels, discard, H/T counters
T1: MAX_TOSSES_PER_RUN is now 5000.

T2: Tiles in progress past 500 tosses wear a progressively darker
amber wash (units of 500, up to 9 levels). Completed runs stay green.

T3: Runs that hit the cap are now flagged discarded. They carry a red
wash and an italic 'discarded' footer, are excluded from avg × 4, and
the summary / detail dialog note how many were dropped.

T4: Added a grey H/T header strip to each tile showing the running
heads count on the left and tails count on the right.
2026-04-21 12:17:55 +00:00
Neeldhara Misra
58b10a6d99 admin: computing-pi: add T4 2026-04-21 17:43:40 +05:30
Neeldhara Misra
d3beff69d3 admin: computing-pi: add T3 2026-04-21 17:42:49 +05:30
Neeldhara Misra
59968be0c3 admin: computing-pi: add T2 2026-04-21 17:42:38 +05:30
Neeldhara Misra
01eebdd3de admin: computing-pi: add T1 2026-04-21 17:42:09 +05:30
Neeldhara Misra
dc9b38a402 admin: clear override after committing eternal-domination-game status 2026-04-21 17:40:09 +05:30
Neeldhara Misra
f2fc043b32 admin: set eternal-domination-game to draft 2026-04-21 17:40:08 +05:30
Neeldhara Misra
b38711b429 admin: override eternal-domination-game status to draft 2026-04-21 17:40:07 +05:30
Neeldhara Misra
a8e7a722e8 admin: clear override after committing eternal-domination-game status 2026-04-21 17:40:01 +05:30
Neeldhara Misra
a177f76745 admin: set eternal-domination-game to draft 2026-04-21 17:40:00 +05:30
Neeldhara Misra
5822a50de2 admin: override eternal-domination-game status to draft 2026-04-21 17:39:59 +05:30
Neeldhara Misra
26e543e230 admin: clear override after committing eternal-domination-game status 2026-04-21 17:39:47 +05:30
Neeldhara Misra
ca8acdd4ef admin: set eternal-domination-game to draft 2026-04-21 17:39:47 +05:30
Neeldhara Misra
07081e6547 admin: override eternal-domination-game status to draft 2026-04-21 17:39:45 +05:30
Claude
f527a712be
Implement neighbor-sum-avoidance polish + new computing-pi interactive
neighbor-sum-avoidance (T2-T6):
- Start button now reads just "Start" (no mode suffix).
- Available numbers and shuffled preview arrangements render pre-start
  so the arena isn't empty while the user is still deciding.
- Mode switch + count slider stay mounted once active; they're just
  disabled, so starting no longer causes a layout jump.
- Guided-mode instructions expanded to call out light grey edges, red
  violation arcs, and the green valid-neighbor line explicitly.
- Draggable numbers honor isActive for the draggable attribute and
  onDragStart, showing opacity-60 + cursor-not-allowed when locked.

computing-pi (new interactive under Miscellany):
- N parallel first-passage simulations: toss until heads > tails,
  record the fraction. Average × 4 converges to π.
- Header row: runs slider | live average × 4 | Start/Reset.
- Tile grid uses a mask-gradient marquee so long sequences scroll
  their tail while staying readable.
- Click any tile once all runs complete to see the full toss sequence
  in a Dialog.
- Safety cap of 1000 tosses per run (first-passage time has infinite
  expectation, so without the cap a pathological run could block).
- Registered in interactives.ts + InteractiveRenderer + the parallel
  interactive-components map. Filled in three-bank-accounts in the
  latter while there, since it was missing.

admin-data.json updated to mark T2-T6 done with remarks, remove the
implemented Computing Pi idea, and add an implementation note.
2026-04-21 11:58:45 +00:00
Claude
014d90a36b
CLAUDE.md: document Fizzy todo/idea mirror workflow
Agents processing todos/ideas from admin-data.json should mirror them
as cards on the author's Fizzy board. Slug → tag, progress → Review
column, staging branch link in the card description. PAT is read
from FIZZY_PAT env var; never hardcoded.
2026-04-21 11:12:45 +00:00
Neeldhara Misra
dc3c7ea094 admin: add idea "Computing Pi" 2026-04-21 16:39:01 +05:30
Claude
9dc0a68219
CLAUDE.md: redact admin password, add design & aesthetics section
- Replace literal admin password with a pointer to where it lives and
  the ADMIN_PASSWORD env var override.
- Add a design section covering the shadcn-first approach, OKLCH
  design tokens, mandatory dark-mode pairing, typography pairing
  (Castoro serif display + Imprima/Geist sans), radius scale, motion
  libraries and reduced-motion handling, and the tab/card/alert
  patterns that published interactives tend to share.
2026-04-21 10:40:02 +00:00
Claude
9e5538a73d
Add CLAUDE.md to orient future agents
Documents the three-place registration dance for interactives
(interactives.ts, InteractiveRenderer.tsx, interactive-components.ts),
the admin function's text-editing of source files, routing, and
Netlify-specific build workarounds.
2026-04-21 10:34:13 +00:00
Neeldhara Misra
e7dd3ed8eb admin: descriptive commit messages + dev-mode sync fallback
Server side: writeData() now takes a message, and each action in the
POST handler computes its own — e.g. "admin: add idea "Title"", "admin:
clear note on slug". For setTodos (which ships the whole blob), diff
old vs new per slug to produce messages like "neighbor-sum-avoidance:
add T6" or "mark T1 done, add T5".

Client side: syncFromServer() falls back to the bundled admin-data.json
when /api/admin is unreachable, so the admin panel reflects committed
state under `astro dev` (which doesn't run Netlify Functions).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 18:26:27 +05:30
Neeldhara Misra
0d0365cf6d admin: update admin data 2026-04-17 10:41:22 +05:30
Neeldhara Misra
c95b9aaa28 admin: update admin data 2026-04-17 10:40:00 +05:30
Neeldhara Misra
ac0e1013c9 admin: update admin data 2026-04-17 10:39:26 +05:30
Neeldhara Misra
3de9806fe7 admin: update admin data 2026-04-17 10:39:10 +05:30
Neeldhara Misra
0448c26220 admin: update admin data 2026-04-17 10:39:01 +05:30
Neeldhara Misra
486fd6aa2d admin: update admin data 2026-04-17 10:38:28 +05:30
Neeldhara Misra
46086795a2 admin: update admin data 2026-04-17 10:38:05 +05:30
Neeldhara Misra
1c754de4f7 neighbor-sum-avoidance: render arena pre-start with interactions disabled
Show the circle arena before the user clicks Start (greyed via
opacity-60 pointer-events-none), and guard drag/drop/click handlers on
isActive. Clicking Start enables interactions and kicks off the timer
as before. Also resync slot count with the Numbers slider while idle.

Marks T1 done.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-17 09:22:23 +05:30
Neeldhara Misra
fcbdcfccdf admin: update admin data 2026-04-17 04:01:45 +05:30
Neeldhara Misra
0c9940485d Remove debug logging from admin function
GitHub API working correctly with fine-grained PAT.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 03:58:55 +05:30
Neeldhara Misra
9f5fbd99aa Add debug logging to admin function 2026-04-17 03:57:35 +05:30
Neeldhara Misra
cb252a5841 trigger redeploy for env var update 2026-04-17 03:53:04 +05:30
Neeldhara Misra
96cc344391 Remove unused form.tsx to fix dev server warning
The form.tsx UI component imported react-hook-form and
@radix-ui/react-slot which aren't installed. Nothing uses
this component — removing it cleans up the dev server output.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 03:50:35 +05:30
Neeldhara Misra
8e61afac2b Switch to standalone Netlify Function for admin API
Remove Astro adapter (causes esbuild bundling errors on Netlify)
and use a pure static build + standalone Netlify Function instead.

- Removed @astrojs/netlify adapter — site builds as fully static
- Created netlify/functions/admin.mts as a standalone Netlify Function
- Function handles all admin API operations via GitHub API
- Removed src/pages/api/admin.ts (Astro SSR route)
- Local dev: admin syncs to localStorage (server sync fails silently)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-17 03:44:01 +05:30