Commit Graph

87 Commits

Author SHA1 Message Date
type-two
b248d9e629 🎚 the Groove — swing, humanize, per-step velocity & chance
Ableton's Groove Pool (Live manual §14.1) reduced to the fixed 1/16 grid:
one "feel" applied to every playing pattern instead of scattered sliders.
- swing delays the off-beats; humanize = the manual's Random timing jitter;
  velocity = per-note Velocity Deviation; amount = the Global Amount master.
- named presets: straight / swing 16 / mpc 8-4 / drunk.
- per-step Velocity + Chance editors on the grid (§10.5.11-13): each step
  gets a loudness and a probability it fires.
- the feel + per-step expression travel with the patch; old patches migrate.
- gitignore the two large Live PDFs (local reference only).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-09 17:17:46 +10:00
type-two
3ff105dd63 🏟 tune the stadium roster — seven sports round the clock
Soccer, basketball, cricket (the long game), Australian football (the
winter Saturday roar at home), fighting, motorsport, ice hockey. Seven
calls per refresh — still ~2% of the free key's budget.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 22:49:03 +10:00
type-two
ea572e8493 🏟 the stadium — the world at play (opt-in)
TheSportsDB's free tier, invited with run.py --sports and off otherwise
(a shared, rate-limited key — 30/min — so the worker is polite by
design: the day's fixtures in a few calls per hour, everything else
computed at home). sport.events_today counts the planet's fixtures,
sport.inplay is the stadium lights climbing through the evenings, and
sport.kickoff fires the instant any match begins — swelling when many
kick off together. Routed where play belongs: Netzach the Victory,
Leo's fifth house of games, Lughnasadh's funeral games, wunjo the
joy-rune, dui the joyous lake.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-07 20:43:50 +10:00
type-two
56a775fcf8 🎭 performance mode goes pure — nothing on stage but the world
P (or F7) now removes everything that is not the world: the wordmark,
the header and its counts, the godtime readout, the ticker, every
button and chip. Only the visuals and the rotating dispatch line
remain for the audience. Z stays zen for the fully wordless sky.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 23:30:26 +10:00
type-two
aa81535379 📈 the trading desk — see the data, pin the ticker, hear the market think
Right-click any source: its actual number, live, with a two-minute
sparkline right in the menu — and 📌 pin it to the ticker, where your
watchlist scrolls ahead of the news with live values. The Binance tap
widens to ETH, SOL and the euro itself (EUR/USD on a 1s miniTicker,
since the pair trades thin), the ECB's daily fixes arrive as glacial
drones (GBP/USD, USD/JPY, AUD/USD), and Bitcoin speaks its own
technical analysis on 5s closes: the MACD line, Wilder's RSI(14), and
cross bells that ring once at every golden and death cross. All of it
routed through the Spirits like any money — to the solar plexus, to
Hod, to Nidavellir, to fehu.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:29:08 +10:00
type-two
d19618083b the Schumann resonance — the Earth's heartbeat under everything
The planet-ionosphere cavity rings at 7.83 Hz (Schumann, 1952), pumped
by every lightning strike on the globe. Below hearing, so it plays the
machine: a 7.83 Hz pulse forever breathing the Earth Echo's tone and
laying a planetary wow under the moon's — and octaved ×4 to 31.32 Hz,
a true sub humming beneath the drone voice. The one dial the world
never turns: it is the size of the Earth, and that does not change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:13:05 +10:00
type-two
c6083fb2b7 ☯ the bagua — the I Ching joins the Spirits, and the world casts itself
Eight trigrams in the King Wen Later Heaven ring, south at the top as
the compasses have it, every feed seated by the Shuogua's attributions:
quakes at zhen the thunder-shock, the word at dui the mouth, the moon
at kan, the sun at li, your own hands at gen — "Gen is the hand." At
the centre the two loudest trigrams stack into a live hexagram, named
from all 64 by the King Wen table; silence rests at 11, Peace.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 20:05:48 +10:00
type-two
f0e5b28aef 🎨 the artist — Kandinsky's palette joins the Spirits
Concerning the Spiritual in Art (1911) taken at its word: six pigments
round a wireframe palette, weiß the canvas on the easel, schwarz the
final pause, his four great contrasts strung dashed between the drops —
and every feed seated by the feeling of its colour, each colour keyed
to the register of its instrument. Paint strokes itself onto the canvas
as the data sings. Plus GODSTRUMENT_MANUAL_SOURCE.md (the manual's
source doc) and its Appendix E entry for the new skin.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 19:50:31 +10:00
type-two
783d8d0c97 local_source.py — device firmware for the "local source" sensor rig
The room as an instrument. Streams environmental sensors (light/temp/humidity/
pressure/ToF-hand/IMU-shake+tilt/mic-energy + crowd.hit events) to a hub over
OSC. Confirms + documents the hardware-agnostic ingest contract: OSC
/gs/<group>/<name> <float> -> a live source (already handled by hub._osc_handler;
send RAW, the hub auto-scales). Runs with zero sensors (smooth simulated
fallbacks) so the pipeline works before any hardware exists; real driver lines
(BH1750/BME280/VL53L1X/MPU6050/mic) are stubbed to uncomment.

Verified: --selfcheck passes; a live burst to the running hub created sources
room.*/hand.height/booth.*/crowd.* end-to-end over the websocket. Any SBC/lang
that speaks the OSC contract works identically — Pi4B ready today.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:51:42 +10:00
type-two
d0a9345cb2 ⌨ global keymap — F1-F10 defaults + fully remappable keyboard
Capture-phase keydown runs bound actions (keymap wins over built-ins, skips
inputs and the mind-mode console). Defaults F1-F10: grimoire, play/stop,
skin view, next skin, cycle mood, tracks, performance, godtime lock, earth
echo, stage. Bind any key to any action from the ⌨ keys panel (sky menu), or
"map a key" in a voice's right-click menu — including targeted nudge-up /
nudge-down (a & s as a live fader on a drone) and mute/solo. keymap persists
(gs_keys); reset-to-defaults button. Synth.toggle() exposed for the play key.

Verified: F1 opens the grimoire, F5 cycles the mood (first light->ambient,
bpm->70 locked) — the engine and defaults fire; node-bind uses the same
capture flow. Zero console errors. Grimoire section added.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:42:30 +10:00
type-two
7a444c3965 🌀 Earth Echo — a Space Echo whose tape is driven by the planet
A tape-delay effect in the built-in synth, RE-201 flavoured, with its knobs
exposed as matrix voices so any feed can drive them (and they groove/CV like
any voice). Audio chain: a delay with a feedback loop (lowpass tone roll +
highpass + tanh tape saturation), an LFO on delayTime for wow&flutter, and a
white-noise hiss bed for wear; the mix taps post -> echoIn -> wet -> out.
params() maps: echo.time -> delay 60-500ms with a LONG glide time-constant
(tape-motor pitch-bend), echo.feedback -> feedback HARD-CAPPED at 0.97
(self-oscillates, never runs away), echo.tone -> loop lowpass 6800->500Hz,
echo.flutter -> LFO depth, echo.wear -> hiss, echo.wet gated by earthEchoOn.

Sky menu "🌀 earth echo" toggles it (gs_echo persists); enabling installs the
earthy default cables: wind->time, volatility->feedback, air.pm25->tone,
moon->flutter, fire.count->wear, quake->wet. Verified: 6 echo voices appear in
the matrix with cables, zero console errors; param math unit-tested (feedback
capped, all ranges bounded, safe). Grimoire section added.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:22:59 +10:00
type-two
c6dd2adcee control voltage — the world as raw electricity for modular gear
Two paths, both documented in the grimoire:
- MIDI-to-CV (already live, no new code): the note voices are 1V/oct pitch +
  gate, CCs are modulation, 24ppqn clock is analog sync — any MIDI-CV module
  (Befaco, CM1A, FH-2, Yarns) is driven today.
- NEW: true DC control voltage from Web Audio. Sky menu ->  control voltage.
  A CV panel maps any source/voice to an output channel of a DC-coupled
  interface (ES-8/ES-9) via ConstantSourceNode -> ChannelMerger -> multichannel
  destination (setSinkId device pick). Modes: unipolar / bipolar / 1V-oct
  (semitone-accurate), per-channel scale trim (real gear never tracks on
  paper). Config persists (gs_cv). Output CLAMPED to +/-1 sample-units so it
  can never send a runaway/damaging value.

Verified: voltage math unit-tested (monotonic, 1V/oct = 0.1/oct, clamped);
panel opens, device enumeration, channel add + persist, and the audio graph
starts cleanly (no exceptions). Physical voltage needs DC-coupled hardware to
confirm (documented). Zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 15:12:55 +10:00
type-two
4bf193d097 moods persist across reloads — no more losing the gentle preset
applyMood now saves gs_mood; on page load the last-chosen mood re-applies
(default "first light"), guarded to run once per load (moodAppliedThisLoad),
never on a mid-session reconnect. A reload no longer drops you into the raw
factory "wall" — your vibe survives. Nothing mix-related survives a reload
anyway (routes/tweaks/grooves reset from the hub), so re-applying the mood is
strictly a friendlier landing. Plus: pressing the synth button into a
groove-less mix now tickers a hint pointing to mood -> first light.

Verified: first visit stores gs_mood=first light; reload re-applies it (dial
shows 92 LOCKED, gnarly voices muted), zero console errors.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:59:56 +10:00
type-two
a476b13317 admin: click-to-copy invite codes + list open (unclaimed) codes
- auth.py admin_stats now returns open_codes (all unclaimed invite codes,
  newest first); unused_codes derived from it.
- account panel: renders every open code as a click-to-copy chip ("copied ✓"
  flash); "issue new code" prepends the new code and auto-copies it. Chips are
  user-selectable (the body-wide user-select:none no longer traps them).
  copyText uses navigator.clipboard with an execCommand fallback for
  non-secure contexts.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:21:48 +10:00
type-two
ed5bfa6122 sky menu: skin picker as a submenu (all 12 skins, pick any directly)
Replaces the cycle-through "skin: X ↺" item with a ctxSub listing every skin
by label, active one marked ✓ — no more clicking through 11 to reach the one
you want.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:12:34 +10:00
type-two
8318366d1c usability: hover-zoom loupe for dense columns
The source column packs ~68 feeds ~8px apart while each hit-target is 28px
wide, so the whole column is one continuous blur — you cannot aim one node,
and labels overlap unreadably. The loupe fixes it: hovering a dense column
unfolds a magnified strip of the ~9 nearest feeds, comfortably spaced and
fully labelled with live values, the one under the cursor highlighted. Each
row is a live hit target (click=mute, shift=tab, cmd=group, drag=patch);
the panel holds still while you reach across it. Right-click sky -> hover
zoom to toggle (localStorage gs_loupe).

Verified: activation on hover, correct render + position, hit-test lands the
right node, shift-clicking a magnified row opens that source's tab. Two bugs
found & fixed during review: the panel's activation band excluded the panel
itself (vanished as you reached for it -> panel-hold), and column identity was
by object reference which goes stale when doLayout rebuilds columnInfo (wrong
side/position -> track by stable "src"/"dst" side key). drawLoupe wrapped so a
draw error can never kill the render loop.

Also verified this session (no code change needed): drag source->voice creates
a cable; cmd-click multi-selects for grouping.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 12:06:09 +10:00
type-two
b8908504d3 commune v2 — signed-in players, hosted rooms, invitations, host allocation
Hub: identity now comes from the gs_session cookie riding the websocket
handshake (auth._uid_from_cookies -> username per connection; spoof-proof).
On the read-only public hub the commune requires sign-in. Rooms are hosted:
create names the room; invitations go to present, signed-in users by
username; accept/decline; leave any time (host leaving disbands); the host
allocates sections, members claim free ones (hub arbitrates conflicts); and
voice-state is relayed ONLY from the section's holder — enforced server-side.
Roominfo broadcasts keep every member's view of the room identical.

Client: invitation inbox with join/decline in the commune panel, host desk
(invite + allocate rows), identity from the signed-in account, right-click
voice items show holders ("held by X"), presence tag survives reconnects.

Verified full protocol on the live test hub: host -> invite delivered ->
accept -> roominfo both sides -> host allocates bass to peer -> peer's state
applied on host's instrument (1.44x, menu shows holder).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 01:01:23 +10:00
type-two
7cad65125b moods (song-shaped first load) + audit fixes
- Moods: "first light" (bass line, hats, small melody, soft space, tempo
  locked 92 — auto-applied on very first visit with a welcoming ticker),
  "ambient drift" (no drums, all atmosphere), "the full storm" (the factory
  instrument). Sky menu -> mood submenu; mood grooves use fresh arrays so
  arranger banks are never overwritten. Grimoire gains "Zero — the moods".
- Audit fixes (self-audit; the review fleet hit the daily session cap):
  commune peer grooves now REPLACE the steps reference instead of writing
  in-place — a peer can no longer silently overwrite one of your arranger
  bank patterns (verified by isolated repro). export .mid with no note clips
  now explains instead of writing an empty file. wheelyearOf ordering fixed
  so sky-harmony reaches Ostara instead of Samhain's astro catch-all.
  Commune docs note the room word is the key.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-06 00:14:19 +10:00
type-two
0a4c28b4c2 the commune (play together via hub relay) + the stage (project to screens)
- hub.py: commune relay — {commune:{room,...}} messages are broadcast verbatim
  to other clients in the same room (allowed even on the read-only public hub;
  peer state never touches hub state). Room tag per ws, cleaned on disconnect.
- viz commune: join a room by word (panel via sky menu), claim voices and the
  godtime from right-click menus or the panel picker; owned sections (mute/
  level/trim, groove steps+on, arranger lane, bpm) diff-sync every 600ms;
  claims/take-overs announced in the ticker; late joiners get re-claims.
  Verified two-way through the live hub: peer state applied (level 1.70x),
  page claims relayed to peers. Bluetooth deliberately not used — a web page
  cannot be a BT peer; the hub is the meeting place, LAN or planet-wide.
- viz stage: window.open + canvas.captureStream(30) mirror window for
  projectors/AirPlay displays; double-click fullscreen; camera modes: whole
  view / follow one node / frame a station+satellites (smoothed glide),
  switchable live from the right-click menus.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 22:39:51 +10:00
type-two
390aa6e65a viz: arranger v2 — launcher button, drag-resize, grooves tab, track routing
- 🎛 tracks launcher pinned bottom-right (hides while the panel is open)
- drag the panel's top edge to resize; height remembered (gs_arrh)
- tabs: clips <-> grooves. The grooves tab is a full-size pattern editor —
  track dropdown + A/B/C letter pick + big piano roll / 16-step grid editing
  the same bank arrays the clips play (write-through). Double-clicking a clip
  jumps straight to its pattern in the editor.
- right-click any track name = that voice's full everything-menu (routing,
  cables, levels); left-click opens its inspector tab.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 22:13:15 +10:00
type-two
35117f13da viz: the arranger — tracks & clips view + .mid export
Press T (or sky menu): an Ableton-shaped tracks view for casuals. Every voice
is a track, eight bars across; each cell cycles live (the world plays the
lane) -> clip A/B/C (patterns on the existing groove grids, A/B pre-seeded so
it makes music immediately) -> silent. Double-click a clip to edit its groove
in the piano roll (shared-reference write-through). Play loops the arrangement
on the godtime clock, one column per bar; stop hands the voices back to the
world. Arrangements serialize with patches; note lanes play out over MIDI
live, and "export .mid" writes a type-1 Standard MIDI File (96 ppq, tempo
meta, lead ch0 / bass ch1) — encoder logic unit-tested by parse-back.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 22:01:42 +10:00
type-two
e66e60cb3b viz: groove grids & mind-console play out over MIDI
midiPluck(): with an out port chosen, piano-roll notes emit real MIDI note
on/off on the lead (ch 0) and bass (ch 1) channels, one 16th long on the
godtime clock; the mind-mode chakra console plays on its own channel 2.
Grooves now drive Ableton/Strudel/hardware exactly as they drive the built-in
synth — the three output mouths drink simultaneously, no switch needed.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:52:11 +10:00
type-two
24d4a00435 viz: synastry, the Elder Futhark, and the Wheel of the Year
- synastry: bind any saved chart to the active one (⚭ in the stars panel).
  The inter-aspect web between two charts becomes sound: syn.harmony/tension/
  hits as the bond's standing levels, syn.web ringing live when transits
  strike either person's end of any bond-aspect, syn.moon as the bond's daily
  weather. Partner chart drawn as a silver inner ring on the zodiac wheel,
  the bond's chords strung between the two charts. Routed per skin: the
  heart, Buddhic at-one-ment, Netzach, Venus's gate, Vanaheim, Qalb, Libra,
  ehwaz. Rising sign confirmed working (cancer rising for the Paris test).
- the runes (futhark): all 24 Elder Futhark runes in the Kylver-stone row,
  ringed as a rune-band — glyph codepoints and meanings agent-verified
  against rune-poem scholarship. Routing keeps attested senses: wealth's
  strife at fehu, the word at ansuz, the giant's blow at thurisaz (quakes),
  need's narrow band at nauthiz (verifier correction: debt-as-need there,
  not othala), fate's lot-cup at perthro (natal), the raised warding hands
  at algiz, the bond at ehwaz (horse & rider). Poetic licences commented.
- wheel of the year (celtic): the eight festivals at their true solar
  longitudes (quarters + cross-quarters at 15 deg fixed signs — the
  astronomical reckoning, verified), the live sun walking the rim showing
  where the year stands. Modern-synthesis provenance honestly noted.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:31:58 +10:00
type-two
b1edc37da1 viz: the wheel skin, ascendant & houses, aspect cables, native tongues
- the wheel (zodiac skin): twelve signs in the astrologer's circle (0 Aries at
  the ascendant's place, CCW), feeds routed by traditional rulership (verified;
  inflation corrected to Jupiterian Sagittarius, poverty to Saturnian Capricorn,
  Mercury-retro to Gemini), live planets riding the rim, natal chart on the
  inner ring, aspects as chords — red hard / green soft / gold conjunctions,
  dashed transit-to-natal. Planets re-station through the signs live.
- ascendant + midheaven: birthplace (lat/lon) in the natal panel; ASC/MC from
  GMST + the standard formula (Monte-Carlo verified to 1e-13 deg horizon
  residual; anchored to sunrise physically). Rising sign announced; whole-sign
  houses + gold ASC/MC markers drawn on the wheel; natal.angles source (hard
  contacts to the angles, per transit doctrine).
- aspect cables everywhere: in every skin, live sky aspects draw as faint
  colored lines between the planets' own spheres.
- every Spirit speaks its own tongue (all scripts verified codepoint-by-
  codepoint): sephirot in Hebrew, chakras in Devanagari, lata'if in Arabic,
  nine worlds in Old Norse, planetary gates in their glyphs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:18:05 +10:00
type-two
ea2920ee65 viz: the natal chart — a verified ephemeris in the browser
 your stars (sky menu): birth date/time/UTC-offset -> the chart is cast
client-side and kept in localStorage; the server never sees it. Ephemeris:
Meeus truncations (Sun ~0.01°, Moon <=0.1° — 13-term ch.47 series) + JPL/
Standish Keplerian elements (planets <=~0.2°, 1800-2050), Kepler-solved and
precessed J2000->equinox of date. Verified: eclipse anchors (0.02°/0.03°),
Meeus worked examples, agent-checked element table (all 72 numbers), 2020
great conjunction reproduced to 0.08°, and an independent Meeus-vs-Kepler
solar cross-check that caught the precession frame.

Transit-vs-natal aspect engine with TIGHT transit orbs (conj/opp 5°, sq/tr 4°,
sex 3°, luminaries x1.3, quadratic peak at exactness — per transit practice,
not natal-chart orbs). Seven sources: natal.harmony / tension / hits / moon /
saturn / birthday / and natal.web — the chart's own tight aspects as a
resonance network, rung whole when a transit strikes either end. Multiple
charts (self, lover, friend), switchable; natal planets drawn as gold ghosts
under the godtime dial so transits are visible approaching. Routed per skin:
third eye, Buddhic, Tiferet, the East, Sol's gate, Asgard, Sirr, Water, the
Crown of the spread.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 21:00:25 +10:00
type-two
fa383179f9 grimoire: the Ableton recipe — IAC bus, same-Mac routing, VSTs as the voice
Step-by-step for the most-asked wiring: IAC Driver online -> Web MIDI out to
IAC Bus 1 -> Ableton Track/Remote/Sync on -> lead ch1 / bass ch2 play any
instrument, CCs map to any plugin knob, EXT slaves Ableton's tempo to godtime
(or the player's heartbeat). States plainly that native VST/AU cannot run
inside the browser sandbox — Ableton is the plugin host, the planet drives it.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 20:15:16 +10:00
type-two
35fc3c8d86 viz: portfolio source, source sample-&-hold gates, MIDI clock out
- 💰 your holdings (sky menu): declare coins/tokenized metals + quantities;
  quantities are WEIGHTS (per-holding gain = share of bag). Prices poll from
  Binance public spot API straight to the browser — server never sees the
  ledger (localStorage only). Sources: me.<sym> (labels show live share %),
  me.portfolio (drift), me.portfolio.vel (churn). Routes where money lives in
  all nine skins (Hod, the West, Nidavellir, Metal, hopes-and-fears...).
- Source groove grids: sample & hold — a source's value is only sampled on
  lit steps and held between, turning smooth feeds into stepped sequences
  ("quantize in time", source side).
- MIDI clock out: 24-ppqn 0xF8 on the godtime transport whenever an out port
  is selected — DAWs can slave to the planet (or to your heart).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 20:11:58 +10:00
type-two
9c51097258 viz: groove grids per voice + gentler default sound
- Groove grids: every voice tab gets a 16-step sequencer on the godtime clock.
  Note voices (lead/bass): 8x16 mini piano roll (minor pentatonic), your
  melody replaces the data's while the groove is on. CC voices: 808-style
  gate row that rhythmically chops the world's signal (defaults all-on).
  Grooves serialize with patches (My Patches / spells).
- Default sound tamed: tighter reverb impulse (1.8s), wet 0.9->0.55, delay
  send/wet down, feedback clamp 0.82->0.55, pad/drone gains down, pad detune
  narrowed, perc volumes down — and lead/bass retriggers rate-limited to the
  godtime grid (data jitter glides pitch instead of machine-gunning hits).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 20:01:36 +10:00
type-two
6079ff266a viz: the Eight Shapes + Your Own Sources (Grimoire) + live heart-rate source
- Grimoire: "The eight shapes" — the data typology (drift, flux, events,
  counts, accumulators, angles, enums, booleans; SHAPE->CLEAN->BOUND->SPEAK)
- Grimoire: "Your own sources" — the personal layer: heart (live), portfolio
  (designed: holdings as weights), natal chart (designed)
- body.heart: opt-in Web Bluetooth heart-rate source (standard BLE HR service,
  browser permission = consent, pulse never leaves the page). Menu: connect /
  disconnect / godtime-follows-your-heart (tempo = your pulse). Routes to the
  heart's true home in every skin: anahata, Tiferet, Qalb, Fire, Sol's gate,
  the Querent, the Lodge altar.
- tof.*/touch join hand.* in the personal routings; body.* joins the body family

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:51:03 +10:00
type-two
74338cf13c viz: the Spread — tarot Celtic Cross skin, dealt live
Ten positions of Waite's published Celtic Cross as a map skin: the cross at
left, the staff ascending at right. Heavens in the crown, deep structure
beneath, retrogrades + deaths in what-is-behind, births/seasons before,
money & fire in hopes-and-fears — and the player's hands (hand.* and tof.*)
in the Querent's place. Also fixes tof.* hand sensors reaching the Lodge porch.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:40:23 +10:00
type-two
eaba76edca viz: skin system — 8 traditions on one engine (Source / Spirit / Matter)
A skin = 7-10 stations + source->station mapper + per-station scale, spine or
true 2D map (positioned stations + canonical connective paths). All engine
features (mind mode, vector console, trails, patching) work inside every skin.

- planes: Bailey/D.K. Seven Planes & 49 sub-planes, spectrum-ladder spine,
  Monad / Spiritual Triad / Personality brackets (spec adversarially verified)
- tree: Hermetic Qabalah Tree of Life (Golden Dawn attributions, stated), ten
  sephirot on three pillars, all 22 canonical paths
- lodge: Craft Freemasonry from published sources only — officers E/W/S, dark
  North, Boaz & Jachin at the porch (the player's hands = the candidate)
- ladder: Hermetic seven planetary gates; yggdrasil: the nine worlds;
  lataif: Naqshbandi six subtle centres (wind breathes at Ruh);
  wuxing: Five Phases, sheng ring + dashed ke star
- launch.json: self-contained godstrument-test sandbox entry

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 19:35:03 +10:00
type-two
b997a16697 viz: exhaustive Grimoire, 3D chakra view, mind mode, performance tiers
Two sessions of frontend work on the single-file console:
- Grimoire: ~82k-char lore-and-spec manual grounded in the real routing
- Chakra view (C): hand-rolled 3D spine of 7 wheels, sources orbit their
  chakra 360deg, drag to spin/tilt with flick momentum — no three.js
- Mind mode: click a wheel to go POV inside it; a vector console plays that
  wheel's scale via click / QWERTY / MIDI, through the world's own FX bus
- Right-click everything-menu + modifier set (solo, per-voice level, patch)
- Performance tiers (auto/full/ultra/lite): cached bg, glow sprites, fps
  governor for weaker/ultrawide machines; ultra adds comet-trail spirals
- Local-only dev backdoor (?dev=1, hostname-locked to localhost)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 16:18:35 +10:00
type-two
e69b7e2ad6 Accounts, socio-economic feeds, and hub fixes (track deployed work)
Captures backend work already running on godstrument.pro but never committed:
- auth.py: invite-only accounts + per-user presets (SQLite, scrypt, signed
  stateless sessions), mounted by hub.py at /api/*
- hub.py: /api static+API handler, readonly public mode, full route spec in hello
- socio-economic / market / fire / debt / crypto workers + normalize/transform
- .gitignore: never commit godstrument_users.db* or auth_secret
- test_fixes.py: framework-free self-check for the review fixes

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-05 16:18:35 +10:00
7f4b4bcabe Chinese zodiac + seasons + live wildfires; overlapping concept groups
- world_zodiac.py: Chinese zodiac year/element + 2-hour animal, N/S summer (computed)
- world_fire.py: live wildfires from NASA EONET (the fire element)
- overlapping groups: a source can now belong to many concept groups at once
  (elements fire/earth/air/water/spirit, plus wealth + summer vibes) — they stack
- transform.py: member_groups (1:many) replaces 1:1 grouping

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 02:48:50 +10:00
60173d44cb Add socio-economic data, performance mode, spells (full-state templates)
- world_bank.py: poverty, food security, fertility, life expectancy (World Bank)
  folded into the "shadow" / "bright" concept groups
- spells: save/load now captures the full live mix (gains/mutes/freezes), not
  just the wiring; TEMPLATES panel renamed SPELLS
- performance mode (press P): clean projection view + rotating "dispatches from
  the world" text readout for live shows

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 02:37:03 +10:00
a039ee7d7c Add dark/yang data, concept groups, named templates, editing console, Strudel kit
- world_debt.py + world_econ.py: US national debt + inflation (the dark half)
- concept groups: "the shadow" / "the bright" — group sources by feeling
- named templates: hub save_patch/load_patch + console TEMPLATES panel
- editing console: runtime add/remove/set route + make_group; drag-to-patch,
  shift-click inspector, cmd-select grouping in the viz
- planetary orbital LFOs per group; almanac + ephemeris workers
- Web MIDI (out + learn) in the console; strudel/godstrument.md starter kit

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 02:25:19 +10:00
8deb65b4fe Godstrument: a multi-modal sensor-fusion instrument
Everything — your hand, the room, a satellite, the markets, the sky — becomes an
OSC control signal fused through a modulation matrix. Includes:
- hub + normalize (One-Euro) + matrix (curves/gates/quantize) + transform (tweaks/groups)
- 20+ workers: sim sensors, 8 keyless world feeds, ephemeris/almanac/clock (computed),
  time-warp replay (quakes/weather/db), and the dealgod market warehouse feed
- planetary orbital LFOs, SQLite recorder, city targeting
- live browser console: mute, group macros, drag-to-patch, inspector, Web MIDI

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-05 02:13:05 +10:00