Skip to content

strobe v0.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Oct 01:37
· 769 commits to master since this release

Added

  • audio: syn_Spectrum is 1024 texels wide, Synesthesia's width (D269) (3d54234)
  • diag: the input's real level in Diagnostics, so a dead microphone shows (AMD Task A2) (040e5eb)
  • intake: the watched drop folder is a setting, applied live and saved (D265, I-02) (47ce415)
  • tags: tag any library scene by name, and exclude tags in Generate (D264, U-08) (493ef2b)
  • editor: error columns on the user's line, and scene.json checked before a reload (D263, U-02) (67a1e36)
  • autocontrol: act on TORNADO T26's community-scene findings (D259) (084cc0c)
  • ui: the palette lists scenes and presets after exact commands (D262, U-01) (a0fc468)
  • remote: --remote-proxy lets the operator's own HTTPS proxy in, by name, from this computer (D258) (b88351f)
  • io: MIDI feedback to faders, LED rings and pad lights (D257) (5b85345)
  • brand: wordmark, lockups, one-colour mark, banner and social preview (D256) (182d57d)
  • io: Synesthesia's default and random on a control, a group or a bank (D247) (f92cf01)
  • app: wire the LAN remote into the frame loop, with a kill switch and pairing approval (b5a97d1)
  • app: rename a generated control in the review; Import offers to generate controls (D246) (353c17e)
  • remote: opt-in LAN listener with pairing, rotating tokens and the controller page (ba2fe2f)
  • bench: --readback checks textureFinalPass on any context, the window one included (D245) (5db662e)
  • ui: keyboard focus is a 2 px accent ring, at 3:1 on every surface (D243) (6f5f0dc)
  • app: --watch-folder adds scenes that settle in a folder to the library (D240) (fe9cf84)
  • bench: results.md says scripts are not run and marks scripted scenes (D239) (a5d6453)
  • playlist: audio-song ends a cue when the next track starts (D237) (0318199)
  • remote: version negotiation, bounded decode and golden v1 messages (D236) (8ae484a)
  • app: a dropped folder of scenes is added to the library, a scene a frame (D235) (f24681c)
  • io: Synesthesia's OSC addresses work where they mean the same (D234) (1203b04)
  • audio: confidence-aware downbeat estimate moves the playlist's bar lines (D233) (bcc736b)
  • remote: bounded app-thread bridge with a reply per command (D232) (e116d73)
  • playlist: saving over a hand-written playlist keeps its comments (D231) (70d0be4)
  • app: Ctrl-click selects several cues and the card's settings go to all of them (D230) (4cb857a)
  • app: a Shadertoy URL on the cue card is imported and added as the next cue (D229) (f89b826)
  • a key per macro drives it while held (D228) (c989f31)
  • a glide per macro eases what it drives, even a plain slider (D227) (223af7a)
  • hear breakdowns and drops and advance cues on them (D226) (b12c114)
  • gfx: a long image sequence shrinks as a whole to fit its memory instead of being cut (D225) (7dfc8b7)
  • app: drag a scene from the browser onto a cue, and enable disabled cues again (D224) (e49ccdb)
  • presets carry syn_Media on a third channel (D223) (f697da1)
  • take a scene's library picture from its live frame (D222) (fd86cff)
  • app: Comfortable or Compact density, and macro sliders no longer clipped (D220) (e79fe11)
  • keep, drop and re-range each generated control before opening the copy (D219) (d707cb7)
  • app: a dropped file goes where it belongs: scene, playlist, media or import (D218) (88ec638)
  • app: STROBE_FINISH_AFTER_SWAP, an opt-in wait for the output's swap (D216 experiment) (7a49cce)
  • choose syn_Media in the Inspector and per playlist cue (D217) (2b88ce0)
  • app: named layouts, saved in Settings and applied from Settings or the palette (D215) (13f5907)
  • rename a preset, and ask before replacing or deleting one (D214) (90f0cd3)
  • app: edit the selected cue in the LIST pane, and keep unsaved edits when the file changes (D213) (3b85570)
  • app: scene thumbnails in the browser from IMAGE_PATH, decoded off the UI thread (D212) (2ac383c)
  • app: favourite scenes, a star on each browser row and a filter (D211) (15716ad)
  • app: edit a macro's reach and colour, and pin a control from its name (D210) (e8f03aa)
  • io: OSC feedback out, changes only, from a thread of its own (D209) (508be54)
  • app: edit shortcuts in Settings, with clashes named and moved only on purpose (D208) (ebcda62)
  • meta settings carry across scenes, and Limit Colors in the post stage (D207) (afdfe0e)
  • scene tags from Synesthesia's TAGS, searched, edited and used by Generate (D205) (facf1ff)
  • app: Editor workspace with save, reload, backups and go-to-error (D204) (c20f99d)
  • app: reopen the last session's scene at launch (136b023)
  • app: STROBE_FAULT=crash@N for the crash drill on a packaged build (R-04) (3533e8b)
  • app: generate controls from the Inspector or palette in a worker process (D202) (0c57779)
  • app: blackout_on and blackout_off commands beside the toggle (D201) (b2433e2)
  • app: command palette on Ctrl+K over every command and pane (D200) (54a9b19)
  • app: log output window resizes, fullscreen state and occlusion (R-02) (fbf2efa)
  • scene: int-to-float on every dialect, #if on non-macros, ES uniform initializers, real-scene library forms (D199) (48c3505)
  • scene: type-aware int-to-float rewrite for the GLSL ES dialect (Q8) (9954698)
  • xtask: cargo xtask corpus runs the compatibility harness (D195) (b50b0ec)
  • remote: support paired-client reauthentication (2e7192a)
  • remote: define typed LAN remote protocol (b7505d3)
  • remote: add transport-independent LAN protocol crate (2c3fec2)
  • scene: #include against the scene folder and the GLSL library folders (00e491b)
  • ssf-lib: image family, Synesthesia's older media names, and edge and audio stand-ins (a323d54)
  • scene: traveler controls, a speed whose rate eases with PARAMS (0ea9b5d)
  • scene: FIXED_SIZE passes keep their grid at any output size; reaction diffusion uses it (c006f40)
  • app: configurable hotkeys from show-control.json, checked for unknown commands and clashes (d8a9ceb)
  • app: show control in the app - MAP pane, macros stage 2, presets and fav slots, cue presets (2787b4f)
  • app: Parametric Flow theme, window icon and title-bar mark (41c2827)
  • xtask: cargo xtask brand renders the icon PNGs and .ico from SVG, checked in CI (c489fe3)
  • io: strobe-io - MIDI and OSC workers, mapping model, learn, soft takeover, macros (0568f86)
  • app: asset problems through the failure path, and --media (f8e9aa6)
  • gfx: cube maps and syn_Media stills and image sequences (ef78829)
  • app: an Output (meta) section in the inspector (073fd08)
  • app: meta controls drive the output post stage and the audio gains (9e55391)
  • gfx: output post stage - one program, zero cost at neutral (d889778)
  • scene: presets and fav slots; scaffold strobe-io (0c675c9)
  • scene: MetaValues snapshot of the meta bank, and a MEDIA key for syn_Media (c0b8e77)
  • transition demo playlist with a custom wipe; prime scenes at load; size the compositor (85cf767)
  • playlists in the app - precompile, clock tick, warm-up, transitions, transport and the LIST pane (b517f81)
  • cast PASSINDEX compared with a float literal on GLSL ES (D163) (da8b97d)
  • textureFinalPass through an asynchronous PBO readback (D162) (c3e8e61)
  • Show - precompile, clock events, warm-up, transitions and resume in strobe-app (d1cd68d)
  • show timeline rows, file watcher and Generate form parsing (8110b4d)
  • refuse script uniforms created after load; nothing compiles mid-show (D161) (3696b2a)
  • show glue in strobe-app - beat mapping, scene cache, overrides, start plan, resume writer (49490b3)
  • script meta/ writes land in a meta control bank (D160) (1b3593a)
  • transition compositor, content-keeping resize and a shader-compile counter in strobe-gfx (adf20c9)
  • strobe-autocontrol --context auto|headless|window and --gl (47c87c5)
  • screenshot states, script readout, wrapped banners, drag limits, UI pass timing (af2489e)
  • Contextual Perform shell replaces the engineering layout (D120) (a266cab)
  • port rustaman's colour, theme catalog, motion and icon geometry; add pane model, prefs and commands (250c276)
  • Send to Strobe userscript, with a Node harness for its protocol (f563ede)
  • app: import Shadertoy shaders from a dropped file, an id, or the browser (ad6bb53)
  • strobe-autocontrol scoring, pipeline, CLI and end-to-end tests (c40260d)
  • shadertoy: REST client, texture downloader, import pipeline and loopback listener (ef53f85)
  • strobe-autocontrol analysis and rewrite (candidates, naming, uniforms) (1dcbda7)
  • xtask: cargo xtask symbolicate turns a minidump into a readable stack (ac67d32)
  • app: local strobe_Date, browser-matched Shadertoy audio, real pass file in shader failures (aa1cad9)
  • shadertoy: strobe-shadertoy crate with id parser, JSON model, dialect stage, converter and strobe-import (80e0a2f)
  • app: rebuild the GL context and both windows on loss, with STROBE_FAULT injection (f7d470a)
  • playlist: playback clock, resume points, soak tests and example playlist (7009a68)
  • app: context-loss recovery policy and STROBE_FAULT parser as pure, tested logic (d3d9aa7)
  • playlist: model, inheritance, TOML I/O, generator and timeline (bcf03f1)
  • scene,gfx: PASS_SOURCES, SOURCE, image sampling options, full-precision passes, Shadertoy audio texture, strobe_Date (2d3b781)
  • gfx: robust contexts, GL reset status and a lost flag that stops Drop calling GL (8e38c93)
  • app: GPU timer queries and adaptive resolution; maximized control window (0a23ee9)
  • app: run scene scripts, feed the mouse, add the 11-script-orbits scene (a71f7af)
  • app: live audio capture with synthetic fallback, audio settings UI (27047ef)
  • app: wire strobe-diag into the desktop app (018d1a5)
  • strobe-bench --context window, for drivers with no EGL devices (9ffb19c)
  • audio: cpal capture thread, device listing, and WAV tuning harness (f4fb43d)
  • strobe-diag crate with logger, session context, panic hook and native crash capture (83c2d38)
  • strobe-app desktop shell with egui control window and output window (57684a9)
  • audio: pure-DSP analyser producing every SSF audio uniform (0807db8)
  • script: QuickJS host for the Synesthesia JavaScript API (e0e57c3)
  • windowed GL context shared by several window surfaces (native GL 3.3 or ANGLE/EGL) (aa9609f)
  • adaptive render scale controller (c6c59a2)
  • headless benchmark, 10-scene base library, and agent planning docs (f84b564)
  • workspace, SSF scene model, GLSL library, and headless GL renderer (39645c1)

Fixed

  • ssf: Synesthesia's 90 default scenes all compile; a script's state is not a uniform (D268) (e47c44f)
  • ui: the nav rail scrolls on a short window instead of hiding SET under the transport (T480 Tasks 36-38) (776ddf3)
  • every discarded result says why, and the ones that lost an error now handle it (D267) (fe97702)
  • audio: a stream glitch is not a failure, and reopening backs off (D266, AMD Task A1) (2e678e4)
  • scene: GLSL ES sees through function-like macros, and a sampler ?: becomes a ?: of calls (D261, C-02) (2554058)
  • ui: narrow windows give way in order and nothing covers BLACKOUT (D260, T480 Tasks 33-35) (d03bccf)
  • remote: ping from the moment the page connects, and give pairing the code's lifetime (30801e4)
  • a Shadertoy import's speed controls tick at its clock's rate, so they follow st_speed (D246) (3850189)
  • media: chosen media is sampled as the scene's MEDIA slot says (D238) (5eaddb0)
  • gfx: a failed ANGLE attempt names the DLLs missing beside the executable (af2a985)
  • a command-line error is recorded as ARGUMENTS, not CONTEXT (T480 Task 27) (62ccfea)
  • app: the control pacer ignores redraws while the output covers the window (TORNADO T16) (c480514)
  • app: a bad command-line argument says why on the terminal and in the log (b7f24ed)
  • bench: log the renderer's messages to stderr (2ff23c9)
  • app: find the bundled library beside the program when started elsewhere (R-03) (175b326)
  • gfx: double-buffer a pass that samples its own target (D203) (1199b76)
  • scene: every line ending is one newline; a missing picture plays black (D201) (663dfcf)
  • script: syn_PrimeBang is a script global that never fires (Q25) (bd090e1)
  • app: corpus harness passes clippy and its CLI test filters one scene (b652173)
  • remote: the protocol crate builds, tests run, and ping rejects unknown fields (193617f)
  • scene: hoist ES globals of user struct types too (3d42fc6)
  • scene: null keys, near-identical control names, images by content, ISF image macros (de154ac)
  • script: a name the scene does not declare is a warning, not an error (29114bc)
  • scene: load real Synesthesia shapes (CRLF, untyped controls, 0-size passes, MEDIA slots, multi-name globals); literal pass sizes are absolute (1358718)
  • scene: opaque final pass, and hoist non-constant global initializers on GLSL ES (22e0f77)
  • app: --no-midi is not saved; MAP pane order puts the activity monitor under the connections (7bedd73)
  • app: set Windows' big icon too, so the taskbar and Alt-Tab show the brand icon (9296eb6)
  • app: the MAP pane's rows fit their dock; macro cards keep the name, tag shows MIDI or OSC (de713c7)
  • app: one log line per new activity line; compact preset row (0331106)
  • app: Diagnostics cards take what they need instead of half the pane (e749ceb)
  • clippy field_reassign_with_default in the Generate form test (bd6c767)
  • clippy in the PASSINDEX fix-up (a517c2a)
  • a button for a pane hidden by width shows it; docs: decisions D130-D138, Q20 (140c413)
  • autocontrol builds against stage-2 AudioTextures and without the HTTP client (bb59601)
  • app: drain stale GL errors before egui; a give-up after start says Strobe stopped (9c75d70)
  • bench: exit non-zero when a scene fails, so CI catches it (2d3638d)
  • app: release the old context before building one on another backend (8a26353)
  • diag: kill an unconnected crash monitor at exit; log the socket path (23a6cdb)
  • diag: crash monitor socket lives under the data dir, in long-path form (9e45b8e)
  • diag: log why the crash monitor connection fails, immediately (230df52)
  • diag: only the monitor clears its socket file, so Windows can connect (82212c7)

Performance

  • app: the output waits for its own swap once the control window is seen waiting (D221) (8bdc079)
  • app: slow the control window to 10 Hz while switching to it waits on the output (D216) (0831f43)
  • app: split the control window's redraw in the perf line; record TORNADO T12 (0021a26)
  • app: time the control window's swap in the perf line; record TORNADO T11 (7a1ab45)
  • app: log a perf line every minute and slow a covered control window to 2 Hz (D206) (14b1ea5)
  • RGBA16F float passes by default, from T480 measurements (fed60bd)

Changed

  • app: rustfmt the corpus harness (6ca9a46)
  • move the bench's window-context runner into strobe_gfx::offscreen (5264c19)
  • move synthetic audio into strobe-scene so the app can share it (1936f14)

Documentation

  • describe v0.1.0 as the first release, for testing (5ef9a64)
  • release: add the v0.1.0 release plan and link it from the roadmap and contributing (b39c183)
  • amd: neon_city and beamers look right later in time (Task A6) (504b07a)
  • amd: Synesthesia beside Strobe on the RX 580 (Task A6) (8fc4ed0)
  • open-questions: settle Q1, Q3, Q9, Q13 from Synesthesia's shipped scenes (e2ea36c)
  • amd: Synesthesia's 90 scenes are 90/90 on the RX 580, and the ANGLE banding is not the float format (Task A5) (63468b2)
  • architecture: error locations carry a column where Mesa gives one (D263) (2a627d2)
  • decisions: D261 names the derivative caveat of a sampler choice moved inside (03aa328)
  • decisions: D260's heading in the log's format (2c3af50)
  • autocontrol: record D259 and I-03 status after TORNADO T26 (b2957ed)
  • compat: the owner's 65 scenes one by one, with status, category and constructs (C-03, TORNADO T24) (fc2d48b)
  • renderer seam contract and the G-03 front-end spike; naga ruled out, no second backend (D255) (4e95bf5)
  • C-06 done, Alpha Channel deferred to an alpha output, D-04 skips (D247-D249) (cd0601c)
  • remote: LAN remote decisions D250-D254, user guide section, and status (3f0ae2e)
  • t480: Task 32, the exe icon is embedded and extracted as the Strobe mark (009f871)
  • tornado: T22 corpus unchanged frame for frame; T23 script lifecycle (d5eea5b)
  • I-04 audited; no cache eviction and no import cancel (D242) (4fcb754)
  • compatibility matrix with evidence, and stale claims brought up to date (7ffedf7)
  • hardware: TORNADO soak and SSF media docs (T19, T21), T480 Task 31 (ac14524)
  • t480: Task 30, the corpus harness 12 of 12 in both dialects (2eb3b99)
  • backlog: G-01 is met by the corpus harness and its CI test (9215858)
  • t480: Task 29, a macro's key drives it within 18 ms on Windows (cd6a111)
  • roadmap: bring phases 1, 4-7 and the known gaps up to today (D217-D231) (47db765)
  • a user guide for running the Windows release without a toolchain (D-02) (d09ba4e)
  • tornado: T18, the corpus passes 63 of 65 in both dialects with no regressions (fa81707)
  • t480: Task 28, image-sequence memory; log when a media sequence has loaded (b3728d0)
  • tornado: T17, the swap wait costs nothing on a GPU-heavy scene; warn when --render-scale is clamped (12a9ddf)
  • tornado: T14, the control pacer holds late frames to a third (D216) (52eab69)
  • T480 Task 25, OSC in and out, Limit Colors and meta carry-over on Windows (ca804d5)
  • rewrite the README to match the codebase, without the roadmap (2dfce6f)
  • T480 Task 24, the perf line on Intel; fix the socket-length message (e90f31f)
  • T480 Task 22, the packaged build's library path and crash drill pass (322c5dd)
  • TORNADO T8 and T9, D203 confirmed and two backend differences that are the scenes' own (c237b2f)
  • TORNADO T4 and T5 results (bc4668e)
  • strobe-remote README (40ee040)
  • twelve scenes, with Silicon Atlas (654ecd0)
  • reconcile status audit with current project backlog (edc4550)
  • link roadmap to comprehensive implementation backlog (ce43326)
  • consolidate remaining implementation backlog (cb6e655)
  • update LAN remote status after protocol slice (3efd4ff)
  • track LAN remote implementation progress (bbeddfa)
  • list LAN remote protocol crate (1a0dac6)
  • record LAN remote protocol crate boundary (0caa76f)
  • D197 traveler and the image family, D198 #include (adff447)
  • D196, more shapes from Synesthesia's own scenes (768e53a)
  • D193, D194, TORNADO T2 over 65 real Synesthesia scenes, Q24 resolved (a3d1c34)
  • D192, T480 Task 17 soak, Q8 from the first real Synesthesia corpus (963b535)
  • research LLM shader creation and iteration (879deb0)
  • research low-cost bug and crash reporting (e5dc357)
  • T480 Task 16, both window icons now set (8592a2d)
  • TORNADO NVIDIA baseline, D191 FIXED_SIZE, modern graphics APIs on the roadmap (b9bccc2)
  • research modern graphics API support (01999df)
  • strobe-scene README lists presets (73467fe)
  • show control - architecture, roadmap, status audit evidence, crate README, app README, debugging (32b2f61)
  • show control decisions D170-D179, Q23, MAP pane screenshot (19c4cf0)
  • T480 Task 15 (icons, theme, post-stage cost) and the LAN remote on the roadmap (862ad2e)
  • research LAN remote control PWA (cdca34b)
  • T480 Task 14, playlist show with 0 runtime compiles and transition cost (1105cc7)
  • D190 brand in the app, README mark, branding checklist (e3c8c55)
  • post stage, cube maps and syn_Media (D180-D186), roadmap, audit, open questions (ab35315)
  • post-stage screenshots from Xvfb (llvmpipe) (5f2c6e3)
  • playlist stage 2 - D150-D158, architecture frame, roadmap, audit evidence, READMEs, debugging (ae05c67)
  • D160-D163, Q14/Q8/Q21, roadmap, audit, architecture and crate READMEs (3824ff8)
  • T480 Tasks 12 and 13, the Perform UI at 150% and auto-controls on Intel (bf4093d)
  • D140, the offscreen context runner and autocontrol's --context (65c8257)
  • Perform UI stage 1 screenshots, architecture, roadmap, audit and READMEs (dc3c81d)
  • T480 Task 11, importer and listener verified on Intel; Shadertoy API behind Cloudflare (79fc8e1)
  • Shadertoy stage 2 decisions D110-D117, status, and Q19 (16bc427)
  • strobe-autocontrol stage 1 (D123-D126), architecture, roadmap, audit, READMEs (2c59d81)
  • document STROBE brand asset workflow (e42e9f1)
  • add parametric flow SVG brand mark (46071a3)
  • add STROBE Parametric Flow brand guidelines (bfcd5b4)
  • T480 Task 9, hidden output window and recovery fixes verified on Windows (3015cfa)
  • Perform UI is Contextual Perform (D120); master is fast-forwarded after CI (D121) (c290209)
  • a README for every crate (1aee0ea)
  • record D96, the hidden output window and the decoupled scene frame (7b70410)
  • crate READMEs (WIP) (9ebb514)
  • T480 Task 8, context-loss recovery verified on real WGL (e2b2e1b)
  • fold in the owner's status audit (PR #5); plan auto-generated controls (b991fa8)
  • renumber the Shadertoy decisions to D90-D95 (07538ef)
  • Shadertoy import decisions D77-D82, open questions Q15-Q18, architecture, roadmap and README (10c1482)
  • crash drill expectations match the T480 results (b7e7d32)
  • context-loss recovery (D66), DEBUGGING.md, T480 recovery check (50d15e2)
  • playlist crate decisions D73-D77, architecture section and roadmap (b32a236)
  • add prioritized implementation gap audit (55fcc90)
  • correct README status and implementation claims (726b596)
  • reconcile roadmap with current app integration (afb560f)
  • crash capture works on Windows; 10022 was the MSIX package context (feb9d65)
  • roadmap — app integration merged (5367681)
  • app screenshot with live script, audio panel and adaptive resolution (6a19f07)
  • bench window mode on Windows, T480 pending list, D70-D72 (fd3c8d1)
  • roadmap reflects merged agent work and what is in flight (ccb0f89)
  • document xtask, the release process and the CI/release decisions (D50-D59) (dfb4f38)
  • add CODEOWNERS, dependabot config, issue forms, PR template and SECURITY policy (af273dc)
  • T480 hardware report from the laptop test session (e689705)
  • deepen UI research with interaction and runtime findings (16fe415)
  • add detailed UI implementation handoff (05c5e66)
  • add second-round UI research conclusions (d107add)
  • add interactive HTML UI mockup directions (b365d50)
  • add UI mockup and design decision workflow (ca6dd46)
  • clean UI research citations for GitHub (ef48a02)
  • link agent research to UI architecture (07aec68)
  • add UI design guide to agent reading list (9ec6031)
  • add modern UI architecture and interaction plan (0aa899e)
  • point agents to integration research guide (d4771f8)
  • add deep agent research and integration guide (f1a0494)
  • track diagnostics and repo/CI agents in the roadmap (66a9676)
  • baseline benchmarks and in-flight work in the roadmap (2143d7b)
  • add README, design plan, and repository base files (d5dc4f4)

Internal

  • deps: sha2 and sha1 0.11, getrandom 0.4, and the CI actions group (576e9de)
  • app: a version block in each Windows executable, from Cargo's version (D244) (d61f3ef)
  • macos: exclude the crates that build strobe-gfx from the portable tier (83b6cf3)
  • app: embed the brand icon in the Windows executable (D241) (979ce13)
  • deps: bump dirs from 6.0.0 to 7.0.0 (ac23b69)
  • allow CDLA-Permissive-2.0 for webpki-roots (Shadertoy HTTP client) (a757d98)
  • drop winit's Wayland CSD feature, clearing RUSTSEC-2026-0192 (D122) (7452bc6)
  • drop winit's Wayland CSD feature, clearing RUSTSEC-2026-0192 (D122) (420ba63)
  • drop winit's Wayland CSD feature, clearing RUSTSEC-2026-0192 (D122) (5fd6e0e)
  • master is the default branch (d086fa4)
  • deps: bump dtolnay/rust-toolchain (a49a258)
  • add release workflow, macOS job, changelog check, bench frame artifacts and pin-checking tests (bbaf41f)
  • add xtask crate with ci, changelog and bench subcommands (8980bb0)
  • build every workspace binary and run on claude/** pushes (bda6a9a)
  • ignore agent worktrees (8ae14d9)
  • pinned, hash-checked ANGLE fetch script for the D3D11 fallback (cf14096)

Tests

  • autocontrol: each test imports its fixtures into its own folder (dfcc3d0)
  • GPU tests record their skips, and CI counts them apart from passes (D249) (2341ccb)
  • remote: end-to-end and adversarial tests for the LAN listener (be791d8)
  • app: a cue's preset applies on cue start, an override beats it, a missing preset falls back (2129d7f)
  • gfx: post stage on known colours in both dialects (6e95350)
  • a show played end to end on headless GL - skipped scene, warm-up, crossfade, hold, next, reload, zero runtime compiles (26a7320)
  • golden tests pin autocontrol analysis and rewrite on converted shaders (714cadd)
  • shadertoy: converter golden files, determinism, error cases, warnings, assets and writer tests (a85eaf9)
  • shadertoy: original fixtures and headless render tests, plus ES-safe aliasing of redefined built-ins (5286d0f)

Other

  • corpus harness integration test and categoriser updates (67c25ad)
  • strobe-corpus harness, worker processes, cause categoriser, report (f2800a2)
  • Add Silicon Atlas scene metadata (eb36937)
  • Add animated Silicon Atlas GPU board shader (f620cec)
  • app: remote, MAP pane draft, preset plumbing, command ids (9bbd150)
  • output window hidden at launch (2a2f6e8)
  • keep status documentation changes in a PR (d1c7174)
  • keep status documentation changes in a PR (9c4d123)
  • keep status documentation changes in a PR (28e3e8b)
  • snapshot after usage-limit interruption (cd743f0)
  • snapshot after usage-limit interruption (76f3567)
  • snapshot after usage-limit interruption (79faa74)
  • snapshot after usage-limit interruption (de372aa)
  • snapshot after usage-limit interruption (1194e57)

Known limitations in v0.1.0

This is the first tagged release. It is cut for testing, not production:
the engine, the performer UI, playlists, show control and Shadertoy import are
built and tested, but the items below are known to be unverified or missing.
Each is tracked in docs/STATUS_AUDIT.md
or docs/IMPLEMENTATION_BACKLOG.md.

  • MIDI has never seen a controller. The parser and the mapper are tested
    from recorded bytes, but no physical device has driven them. Port names,
    hot-plug timing, and a device another program holds open on WinMM are
    unverified. (P-04)
  • Shadertoy import has never touched shadertoy.com. Cloudflare answers the
    REST API with 403, so the browser userscript is the route to rely on, and it
    is untested against the live site. (I-01, Q19)
  • The LAN remote has never seen a phone. It is tested over loopback sockets
    and with a real WebSocket client, but not on Android or iOS, and the Windows
    firewall prompt has not been seen. It is plain HTTP: trusted networks only,
    and there is no installable PWA. (L-02, L-07, L-08)
  • Audio device removal and reconnection is unverified. Live capture works;
    unplugging and replugging the selected input has not been tested. (R-01)
  • An HD 4000 has not run it. The floor is OpenGL 3.3, nominally a 2012
    Intel HD 4000, but the measurements come from a UHD 620, a GTX 1080 Ti and an
    RX 580. The meta post stage's cost on an HD 4000 is unmeasured. (P-03)
  • A four-hour show of real scenes has not run. The pure playlist clock has
    been soaked; a long show on real hardware has not. (P-03)
  • A real OS file drop is unverified. The typed path runs the same import
    job. (I-02)
  • Video and webcam input are not implemented and read as no media. NDI
    output is not implemented. (M-04, M-06)
  • macOS does not run. Windows is the target; Linux builds and runs.

There is no code-signing certificate, so SmartScreen warns on a fresh
download. Build provenance is attested instead:
gh attestation verify strobe-v0.1.0-x86_64-pc-windows-msvc.zip -R lnorton89/strobe.

The separate -symbols.zip holds strobe.pdb. Keep it: it is what turns a
minidump from this exact build into a stack with function names and file:line.