Skip to content

strobe v0.3.0

Choose a tag to compare

@github-actions github-actions released this 05 Nov 01:24
· 96 commits to master since this release
e401d98

Added

  • Shadertoy imports go to user-scenes/shadertoy-imports, and the Library renders missing thumbnails (D547) (f97eaa8)
  • other scene folders are searched through their subfolders (D546) (9657c9c)
  • prerender the library's scenes at launch and on a rescan, and open on the Library (D542, D543) (ecb8d36)
  • list other scene folders in place, user-scenes by default; remove the watched folder (D538) (00dd39f)
  • webcam input behind syn_Media through strobe-capture (M-04, D528-D530) (0652441)
  • /play shares short links, stored once in R2 by content hash, from a Cloudflare Worker (D525, D527) (e239561)
  • the website names the release GitHub publishes and drops its stats band (D526) (420064b)
  • /play, a browser sandbox running Strobe's own scene player as wasm on WebGL2 (D524) (95ccd19)
  • scene 18, Jester Totem, with UV rays, twins and a perform group of controls (D520) (ca1576f)
  • remote and projector pages as installable web apps; the projector service updates at logon (D517, D518) (be7238e)
  • the projector page asks for a password instead of a token in a link (D516) (6486003)
  • the controller draws its quick controls over the host's own rows (D515) (bef98c7)
  • the desktop remote sends the controls as data and the controller draws them (D513) (87fc7a7)
  • controls as one-row value bars under ruled group headers (D510-D512) (2276d8d)
  • Connect on a Strobe found on the network proves the chosen trust file (D509) (bfbf1a4)
  • install.ps1 installs strobe-projector and retires the Python tool (D502) (773f822)
  • the headless projector service follows its config file (D502) (0fb4777)
  • Settings > Projectors switches the projectors from Strobe (D502) (f85561e)
  • strobe-projector, the projector power tool in Rust (D502) (3224d56)
  • name each paired device by what it asked as, its kind, address and times (D500) (09cdd76)
  • tools: projector power control over PJLink for the show PC (D497) (16b6779)
  • upload the synthetic audio textures in the bench and add a render-scale sweep (32ac6a8)
  • credit contributors and upstream projects on the About page (5fbb9be)
  • change a scene's HARD and SMOOTH transitions on a new song, heard or told with new_song (e72ee04)
  • generate controls from the Controls view and save them into the scene (#32) (6a871f4)
  • add the project website in site/, adapted from the Cinnabar site (9fb3464)

Fixed

  • the crash monitor's start-up refusals stay out of the log, and --diagnose keeps the run before (R-09) (c875131)
  • background compiles leave the output four fifths of the time, and a rebuilt context reloads the thumbnails (D550) (62f7c6b)
  • the QuickJS and MIDI timing tests run alone under nextest on this branch too (18fcd4b)
  • the prerender doc names its function-local gap in plain code, which rustdoc cannot link (570d663)
  • client-list saves take turns under a process-wide lock instead (f001763)
  • each client-list save writes its own temporary file, so a token still rotates (8903945)
  • timing tests run alone under nextest, and the parse guards cannot flake (D544) (0951e41)
  • the coverage job installs the ALSA headers strobe-io's MIDI layer links (D539) (958b2d7)
  • check-linux.sh passes shellcheck (D541) (2737bae)
  • link the C runtime statically, and check imports and the loaded ANGLE (D544) (aaf0f2e)
  • release.yml uploads every file as its own argument (SC2046, D538) (8e4600a)
  • thumbnails decode by their bytes and fill the card (D540) (4fb9eb2)
  • what the new linters found, and actionlint built from its tag (D541) (6da7273)
  • the client list's save retries a file Windows holds for a moment, so a token still rotates (D531) (65086d3)
  • the macOS job skips strobe-web, and the sandbox test reads a control's value as a number (0a0f444)
  • withdraw Jester Totem, a friend's shader, from scenes/ and the site (D526) (a0cb046)
  • remote control rows are laid out at the host's size and scaled with the picture (D519) (f5be68e)
  • the projector service's supervisor swaps in a new build itself; the launcher only leaves it (D518) (c6d8fb4)
  • testing --make-remote-trust no longer puts message boxes on the screen (517619e)
  • hovering a toggle no longer draws it on; Close reaches the window's corner (D513) (45c75b5)
  • every control is a row in one frame, with its widget at the right end (D510) (a15f984)
  • toggles keep their switch and colours their swatch, not bars (D510) (629e6cf)
  • don't swap a covered control frame Windows did not paint (D508) (bf0029f)
  • pj prints only its own output; the log header reaches stderr only at info (D506) (149d77c)
  • credit the people who made Strobe, not the bots and coding agents they ran (D501) (40a9376)
  • let --diagnose exit once its report is saved (D499) (d24327e)
  • keep a Shadertoy import's iTime running through a resize at any speed (cfeb567)
  • draw the tilt-shift blur as Synesthesia's engine does, its taps capped for GLSL ES (7d7d369)
  • compute the SSF helpers as Synesthesia's engine does, not as its docs say (D490) (f5f9536)

Performance

  • optimise the audio tests, pilot nextest on Windows, keep timings (D535) (9936127)
  • a controlled host leaves its preview out and sends a picture only when it changed (D514) (8fea7df)

Documentation

  • D550's fixes pass on the mini PC, 51 fps through the prerender and no texture warnings after a rebuild (820ec42)
  • the guide covers subfolder search, where imports go and rendered pictures, and #91's subjects name D546 and D547 (2e9e513)
  • a pre-release sweep brings the guides, READMEs and status docs up to what master does (78fb53b)
  • the records name the rewritten commits, and the rewrite is recorded (D549) (296ca83)
  • the two #83 subjects that cite D538 are corrected to D541 in the changelog (212b144)
  • the changelog and its corrections name the rewritten commits (4c7fca4)
  • master's ruleset requires ci-ok alone, now that it has passed there (D533) (a2ee8e7)
  • the decisions index lists master's D538, D540, D542 and D543 (54ef1b8)
  • the T480 passes the release-candidate harness, and thin LTO costs no frame time there (D544) (2590350)
  • every citation of the audit follow-up names D544, and the pushed subjects are corrected (9f016fb)
  • the audit follow-up is D544, since master took D542 and D543 (f2f0ac0)
  • the release dry run published and its provenance names the tagged commit (D544) (65da9f4)
  • the decisions index includes D544 (d30462c)
  • the roadmap and decisions index cite D541 (5f5e288)
  • cite D541 everywhere this PR cited D538 (fbd3e58)
  • this PR's decision is D541; master's #84 took D538 (986fa49)
  • the audit's checks on the roadmap, and what is left as backlog D-07 (c37f25b)
  • one file per decision in docs/decisions/, and no shared summary line in ROADMAP (D531) (0360faf)
  • webcam input built, decisions D528-D530, camera checklist still open (c5da431)
  • M-04 webcam spike results and proposal (6339526)
  • the M31 controller is LIGHTNING, the owner's desktop at JaJa, not TORNADO (Task M31) (5f841d2)
  • mini PC desktop-control grants end at restart by design, ordinary pairings survive (Task M31) (80661e3)
  • mini PC show runs with the LAN remote, and desktop control's cost before D508 (Task M31) (5d8ae1c)
  • record the mini PC's strobe-projector run in the backlog and roadmap (L-09) (36de78a)
  • mini PC runs strobe-projector in place of the Python tool (Task M30, L-09) (cfca9a1)
  • T480 re-check of the --diagnose fix at e61f35d (Task 50 follow-up) (03031d0)
  • mini PC live capture and audio device reconnect (Tasks M27-M29, R-01) (f4df69a)
  • reconcile the backlog with the T480's Tasks 46-50, and add G-08 and R-09 (98eef61)
  • T480 test of the published v0.2.0 release archive (Task 50) (ec1431e)
  • T480 render-scale sweep, ANGLE-Vulkan and Synesthesia's scenes on Intel (Tasks 46-49) (04b782c)
  • lay the ARCHITECTURE crate graph out top-down (7ff4430)
  • draw the crate graphs as Mermaid from the real dependencies, and drop the wide arrows that broke diagrams (8504d8a)
  • record D494-D496, close C-08 and D-06, and say how to install Rust (3b34a8b)
  • write the README for someone new, and redraw the architecture diagram by hand (b090437)
  • renumber the SSF library decision to D492, after the credits took D491 (f4e891e)
  • renumber the SSF library decision to D491 and the tilt-shift item to C-08 (66c8e96)
  • settle open questions from Synesthesia 1.25.4's install and record its corpus (TORNADO T25) (e4e27aa)
  • point every crate README's known gaps at the backlog, and test that they do (03d1879)

Internal

  • the llvmpipe bench times every scene at half scale too (D-06) (8088410)
  • version 0.3.0 (92d31b8)
  • a release waits in draft for the owner's approval, so its own archives go through the rc harness first (D548) (6e28c50)
  • shipping keeps fat LTO and the sccache trial is dropped, from their measured runs (D545) (bb15b84)
  • fetch the pinned PSScriptAnalyzer by hash instead of Install-Module, 108 s to about 2 (D544) (2b889e2)
  • crate layers, unsafe_code, feature builds, rustdoc and script lint are checked (D541) (9ad440d)
  • lock rust-overlay in flake.lock (D536) (973df0b)
  • xtask builds and checks the package on every PR, plus an RC harness (D537) (b8715be)
  • one manifest pins the native DLLs; SBOM, build and --diagnose read it (D536) (9939845)
  • CI runs xtask's lanes strictly, behind one ci-ok check (D533) (0ccbc7d)
  • ignore user-scenes/, the owner's private scene library (D532) (6ae122e)
  • a docs-only pull request skips the platform builds and runs the conventions tests (D531) (e614e64)
  • deps: bump ureq from 3.4.2 to 3.5.0 (d4e3d10)
  • deps: bump resvg from 0.48.1 to 0.49.0 (9de6a88)
  • deps: bump the cargo-patch group with 2 updates (0b36dfe)
  • deploy the website to Cloudflare Pages with an account token, not the wrangler login (D525) (d771ba7)
  • a release publishes only after CI passes on its one tagged commit (D521) (ff95ba7)
  • key the Windows and Linux caches by profile so master saves release-fast (D507) (c96bebe)
  • build release-fast on master too, so pull requests restore it from the cache (D505) (be9787b)
  • build release-fast on pull requests and the fat-LTO release on master (D504) (e68ed45)
  • fetch the pinned ANGLE DLLs on a Windows dev build when they are missing (D498) (36b857d)
  • ignore remote trust files, which hold a secret (f63fd11)
  • generate THIRD_PARTY.md and the release's third-party notices with cargo xtask credits (e2b42b1)
  • add a release-fast profile and lighter dependency debug info for quicker rebuilds (#31) (bedb5a9)

Tests

  • the Shadertoy fixtures go through the corpus harness in both dialects (G-01) (9178f5a)
  • the remote's untested refusals and the desktop client's handshake and frames, from a coverage read (D544) (283a3ee)
  • baselines for the IMAGES and #include fixtures, from CI's Mesa (D534, D544) (96d5774)
  • property generators that reach the deep code, and media and include fixtures (D539, D534) (558f523)
  • property tests over untrusted input, weekly machete and coverage, decisions by crate (D539) (fb75fc5)
  • the scene library's baseline frames, from CI's Mesa llvmpipe (D534) (5dc7ec1)
  • the corpus fixtures' baseline frames, from CI's Mesa llvmpipe (D534) (8184f70)
  • the script-aware corpus is a regression gate with baseline frames (D534) (4405449)
  • clear the texture changes a test UI pass leaves, as a debug build demands (97b9bf4)
  • a slow runner's probe timeout is not a test failure (5a398e2)
  • stop tests binding every interface unless STROBE_TEST_LAN=1 (d21bbe0)
  • the fake projector's lamp strikes a set time after it reports on (edcafab)
  • check build scripts, GL object owners, driver queries and the docs' links (D497) (a3447c9)