Commit graph

23 commits

Author SHA1 Message Date
06db8b959c 830e3dce-c0ea-4998-9516-bbc5e8faac90 2026-11-07 04:06:58 +00:00
60a7d40568 v7.19.0 — trueblack auto: trails reach pure black at any persist without opting in; exact alpha-preserving -1/255 GPU sweep (mode 22) runs by default in the sticky zone (persist >= 0.5), Canvas2D difference tail demoted to a gated no-WebGL fallback (alphaArt latch), trueblack header tri-state (auto/on/off) — fixes the Texe-rings stuck-quantum smear 2026-11-07 03:25:42 +00:00
2f0ed4f657 v7.18.0: Zai-Magic preset 'Beautiful Spectrogram' (bgx scrolling spectrogram)
Twelfth hand-authored Zai-Magic preset: a true scrolling spectrogram as a
pure script -- bgx feedback slide moves the whole framebuffer left (the
time axis), persist 1 keeps the history locked, and a 64-bin vertical
write head at the right edge inks pink -> red -> orange -> yellow -> white
over a deep dark navy field that only leaves by scrolling off the left
edge. The per-frame ink is computed from the live stroke geometry (coats
= 1.12 + 1.604*wpx/segl; ink = 1.1/(coats*ratio)) so overlapping columns
accumulate to full palette strength at any fps, aspect or brush width,
with per-coat adds kept above 8-bit quantization. Half-second erase phase
drains the previous preset's framebuffer, 3s 15x fill sweep paints the
navy field, stage resizes replay the sweep. EMBEDDED_SEED_VERSION
7.14 -> 7.18.1; seed re-synced (107 presets).
2026-11-07 02:43:12 +00:00
bbbee3ce5d v7.17.0 — trueblack: opt-in subtractive tail on the trail fade; long-persist trails reach pure black (8-bit fixed-point wash swept by a -1/255/frame 'difference' fill), unblocking the Orange Burst bg* blow-out 2026-11-06 16:41:30 +00:00
062cd79952 v7.16.0 — presets tab rearranged: management panel on top, full-width tree below
User request: drop the side-by-side split so the 'Load Preset' section
sits on top at full width with no wasted height (even when a preset is
selected) and the preset tree below uses the whole section width, so
preset names never clip. Buttons pack into one compact grid row on
desktop (2x3 for a user folder; phones keep the old stacking); the tree
fills the tab body's leftover height on desktop (h-full flex chain,
420px cap only below lg); club-mode scope line + RANDOM/SEQUENCE pill
share one row. No logic changes. Worklog Task 48.
2026-11-06 08:40:11 +00:00
4d5fba3977 v7.15.2 — footer Facebook page link + theme switch moved to Settings
The project's Facebook page (facebook.com/openvisengine) is now linked
from the footer's right-hand group beside the version stamp — icon-only
(lucide Facebook glyph), opens in a new tab, same hover/focus treatment
as the portfolio link. The light/dark tick switch moved out of the
header into the Settings tab's Appearance section as a 'Light / dark
mode' row above the base-theme cards — identical mechanics (checked =
white theme, unchecked = the visitor's stored dark base, both persist,
mount-guarded SSR). Header is one control lighter; every appearance
control now lives in one place. Verified in-browser: link attrs + icon,
toggle absent from header, flip round trips (outline -> light -> outline,
and purple -> light -> purple proving the stored-base tracking), What's
New shows 7.15.2, sticky footer + no overflow at 1280/375, console clean.
2026-11-06 07:17:18 +00:00
b08490e80e v7.15.1 — silence hold: beat detection & prediction freeze during silence
Sustained near-digital quiet on the overall level (< 0.006 for 300 ms,
sticky until a decisive 0.015) now places an immediate HOLD on the beat
tracker: nothing fires (real or predicted -- previously the predictor
kept faking beats for up to ~2 s into any silence), the tempo estimate
and confidence freeze exactly where they are, and beatphase freezes for
scripts instead of saturating at 'beat imminent'. Decisive audio
releases the hold instantly and the grid resumes from the phase the
audio went quiet (captured before the debounce window, so a
pause/resume keeps perfect time); after a hard cut the comb + first
real beats re-align within a couple of periods. 'Set Beat' taps release
the hold outright. Waveform/band data is never gated -- it still flows
(it is simply ~0, because the audio is gone).

- BeatFrame.silent carries the state; scripts get the silent variable
  (1 while held); the beat indicator shows an amber HOLD badge + amber
  phase ring while held.
- rust-agent/src/beat.rs + engine.rs: same gate ported for parity (its
  bass level doubles as the silence signal; NOT compile-verified -- no
  cargo in this sandbox).
- Verified: headless 26/26 assertions on the real BeatTracker (music ->
  silence -> in-phase resume -> onsetless pad -> tap; the pre-fix
  fake-beat window 12.8-15.5 s is empty) and browser E2E on the live
  app with a generated 120 BPM + silence looping WAV (HOLD badge tracks
  the silent spans exactly across two loop cycles; console clean).
2026-11-06 06:49:46 +00:00
Z User
5f1c03db31 e0315efb-ff50-4f97-ab76-b2f751e9b03b 2026-11-06 01:14:43 +00:00
Z User
b54841fabf c123beee-6c07-4660-8af8-d2ff1f89767c 2026-11-05 23:35:41 +00:00
Z User
5451c6ccdd cc601e21-85be-4466-9dee-d6199754c813 2026-11-05 22:47:32 +00:00
Z User
9cea959a52 v7.13.1 — Beat Matrix endpoint fix: full 16x10 grid, no phantom dot past the wall 2026-11-05 08:44:59 +00:00
Z User
b161685026 v7.13 — merge the parallel v7.12 line into the OVE-Directory build
Three-way merge (base d59d398, verified identical trees). Brings in:
- 7.10.1: spectrum edge fix (SPEC_TOP_HZ 16 kHz cap)
- 7.10.2 (was 7.11 there): wake lock, respectful Demo, one-click Save
- 7.12: background movement (bgrot/bgx/bgy/bgzoom) + osc-rotations preset

Hand-merged: script-tab.tsx toolbar (one-click Save + Upload side by side),
version.ts + release-notes.ts single timeline, new 7.13 entries.
2026-11-05 08:09:31 +00:00
Z User
40c6d2887e b8fd4912-690d-432c-9235-71b5108014df 2026-11-05 06:53:07 +00:00
Z User
1ea335a2fe 62fe0e7e-3025-47cc-bab0-d72875f1698e 2026-11-04 23:55:48 +00:00
Z User
401963b9f3 a30cfb39-1b53-4097-990f-27d01fb42f1f 2026-11-04 18:48:09 +00:00
Z User
1c1105da45 e7e98d75-c472-45a0-8363-2cc17e4e3f4e 2026-11-04 16:14:36 +00:00
Z User
d59d398cec 74b54406-5b0d-416f-8a38-1f1006a1c814 2026-11-04 06:47:03 +00:00
Z User
9b76dcc208 a132a822-8297-48ee-a813-68dcaf906c8b 2026-11-04 05:50:06 +00:00
Z User
a97d5a17ad 12b812ed-f283-4328-aa03-41acf2879cf3 2026-10-31 03:45:59 +00:00
Z User
698fc1c2a3 v7.8 — share strings 2.0: big-base packing cuts them to ~28% of the script (was ~51%)
The user asked for more compression 'by any means possible', suggesting
base-62 numbers and dictionary phrases. Both ideas shipped — cranked up:

- Dictionary grew ~170 data-mined entries: every function WITH its open
  paren (sin(, if(, megabuf(, …), every engine variable (vol_att, time,
  bpm, sv, …), AVS idioms ("hue = hue + dt * ", "t = t + dt * ", " * 0.",
  ") * ", "(0."), header lines ("linewidth: ", "blend: additive",
  "mode: lines"), blank-line+section skeletons ("\n\n[point]\n"), CRLF
  statement ends, ~70 number literals, and the library's common variable
  names (ring, spokes, chroma, segs, …) — all mined by frequency over the
  101-preset embedded corpus with a greedy-cover scorer.
- New scheme ▼ 'big-base packing': the dictionary output is read as ONE
  BIG NUMBER over its own alphabet and rewritten in base 32,164 — one
  digit per character from CJK Unified + Hangul. ~15 bits/char vs
  base-62's 5.95 ("1400" costs ~0.85 chars). The body's alphabet rides
  in a ~32-char bitmap header (dict-symbol bitmap + ASCII bitmap + raw
  non-ASCII tail) instead of ~80 literal symbols.
- Pair-packing kept as the fallback for short scripts (encoder picks
  whichever body is shorter); ▲ strings from v7.7 still decode via the
  kept legacy tables; still lossless for ANY text (verified: 101-preset
  corpus + 21 edge cases incl. CRLF, Hangul/CJK literals, lone
  surrogates, platform-injected zero-widths), still copy-safe, still
  self-checking (8 FNV check digits).
- Base packing gated at 16K symbols (O(n²) BigInt); encode 1.1 ms on the
  largest preset. Decode input capped at 40K chars.

Corpus measure: 64854 → 18026 chars = 72.2% reduction (v7.7: 49.1%);
median share string 26.9% of source, best 21.9%. Bass Bloom: 1341 → 326.
Browser-verified: encode→copy→paste→decode→load round-trip through the
dialogs for both ▼ and legacy ▲ strings, What's New 7.8 entry, mobile +
desktop layout, sticky footer.
2026-10-29 10:49:56 +00:00
Z User
80782609b2 133604ae-01f0-4bd7-96a5-69156cef7530 2026-10-29 10:04:00 +00:00
Z User
78bf025686 fcea9515-7ac3-402f-9159-635593e53a1f 2026-10-29 09:26:27 +00:00
Z User
9e90f7ff8a 06aca6bb-9fee-4fa9-bcc4-7ce527f71121 2026-10-29 08:43:20 +00:00