Repository navigation
Releases
Releases · lnorton89/strobe
strobe v0.4.0
Added
- the sandbox plays cube maps and a still MEDIA picture the visitor adds (D564) (
d6d5374) - a short dropdown shows its options side by side, and a mapped control says so on its row (D563) (
b572418) - /play makes scenes from a picture (
a304b47) - /play generates controls for a scene, with progress, Cancel, the app's review and Undo (
a6c61e3) - generating controls runs a step at a time, and the sandbox's engine can run it between frames (
3c980c0) - the roadmap page has jump links to Now, Next and Known gaps (
bc46d77) - /play says what it is below the sandbox (
3db2e1b) - scene cards open their scene in /play, and titles no longer truncate (
2268f86) - the note naming a document's source file moves below the document (
051a19f) - long documents keep a readable measure and have contents on a phone (
b06f06c) - site tables stack on a phone, so the last column is not off screen (
6ee8686) - the home page shows measured frame times, read from BENCHMARKS.md (
a21c9ed) - the home hero puts Download and the browser sandbox first (
36389ec) - the download page offers the current zip by name, with its size and checksum (
95dc591) - the site's social cards are files rendered by Metaplate 0.8.2 (D557) (
9475e7c) - the computer and display stay awake while the output is fullscreen (D556) (
a9f29f9) - the /play sandbox plays a scene's pictures, includes, textureFinalPass and presets as the app does (D554) (
2f1f37d) - Shadertoy cube-map inputs become scene cube maps, and the keyboard reads 256x3 with every key up (D553) (
efdad8f)
Fixed
- /play recovers from a lost WebGL context (
ed52ec4) - /play's review lets a range be typed, a negative number included (
0af23ff) - /play's status line says Compiled only after a compile has succeeded (
abed0a0) - the download button keeps its label on one line on a phone (
0e6464c) - the header's version chip waits for the width to hold it beside the nav (
e65746d) - scene cards clamp long descriptions and drop the MIT and Strobe credit lines (
c5959ea) - the architecture social card no longer counts fifteen crates (
34ec888) - the architecture page counts its crates instead of saying fifteen (
6702419) - the architecture blurb no longer counts fifteen crates (
8120814) - the home screenshot's caption names the scene it shows (
23dbb2a) - the site's prefetches no longer log eight 404s on every page load (
1f565c7) - the site reads the release once per build and again in the browser (D557) (
50bd548) - the site's package says source-available, master, and no version of its own (
a14bc06) - self-host the site's fonts from @fontsource, so a build needs no font service (
36cc1b2) - --diagnose raises its box only when nothing reads its output, so a piped rc harness run ends (D551) (
17eb901)
Performance
- a hand-loaded scene compiles in the background where the driver can, and the output plays on (D555) (
8a954cf)
Changed
- the GLSL tokenizer and the pass markers move to strobe-scene, so autocontrol no longer needs the importer (
1e9a24a)
Documentation
- U-11's decision is D563, since #107 took D561 (
61e27b2) - say which scenes CI takes through Generate controls (
642bc28) - record D558, generating controls in the sandbox a step per animation frame (
eb7f093) - the README's opening and performance section say what the site now says (
cac3416) - record D557, the site lane in CLAUDE.md, and the site's README (
f70858f) - rendered docs drop the old-hardware wording (
5bb0e78) - the roadmap social card is shorter (
d5713ec) - the compatibility social card is shorter (
4deb083) - the play social card is shorter (
6ec6801) - the scenes social card drops MIT licensed (
184f914) - the guide social card is shorter (
675c729) - the download social card is shorter (
e626d49) - the home social card says what Strobe is (
5c92bd3) - the 404 page says plainly that nothing is there (
67b52d7) - the roadmap page's summary and description drop their em dashes (
a18d550) - the compatibility page's note names its file (
735ab77) - the guide page stops repeating the document's own first line (
2cdd9f7) - the scenes page is titled for what it is and states the licence (
162a2f3) - the download page states the GPU floor and the licence accurately (
861935a) - the site's title, description and footer say source-available (
6f477f4) - the home page's status says what is run, what is not verified, and the licence (
a2027ec) - the Synesthesia comparison says Strobe is independent of its makers (
f463b3e2) - the home page's scene library blurb says what the scenes are (
ef1adc5) - the home page's features are six plain paragraphs, not eight icon cards (
7257a38) - the home page says what Strobe is, without the line about old laptops ([
c556a7c](https://github.com/lnorton89/strobe/commi...
strobe v0.3.0
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](https://github.com/lnorton89/strobe/...
strobe v0.2.0
Added
- choose ANGLE's backend with --gl angle-d3d11|angle-vulkan|angle-gl|angle-metal (#29) (
b35bb70) - rebuild the app's UI on a shared form grammar, with LAN discovery and approve-only pairing (#26) (
4784c43) - log when the fullscreen output over the control window loses the focus (D453) (
a75c76a) - scenes: Blacklight Carpet, UV-lit arcade confetti carpet with coiled helix streamers (D439) (
d3eb5e9) - adaptive resolution steps down on missed refreshes, not only the mean GPU time (D314) (
32e3cc8) - audio: on Linux fall back to a pulse or pipewire input when the default will not open (
084c6db) - control a venue's show machine with a trust file, reconnecting by itself (
4da7d2b) - a controller id for a laptop and the Host header a trusted proof binds to (
3196ef4) - app: --audio ambient, the synthetic track without its beat (
ac94a3c) - app: one click on a scene card makes it live, and LIB flips between Scenes and Controls (
f400de0) - bench: --probe finds the size where a driver drops work, --window-size bisects the drawable (D289) (
958ebca) - gfx: STROBE_GL_TRACE records where the renderer draws, and a test pins that it never uses framebuffer 0 (D289) (
403d2da) - app: venue mode launch flags and trust file on the host (
c9eed9b) - remote: trusted pairing over the WebSocket protocol (
2337d78) - remote: trust file and HMAC-SHA256 challenge-response for venue mode (
2b19e43) - scenes: Acid Mirror gains hairline streaks, crisp edges and more black, and re-seeds at once after a resize (D279) (
1a59ae8) - scenes: Acid Mirror rebuilt on a mirrored advected feedback buffer (D279) (
d0fb00d) - scenes: Neon Ribbon Flow rebuilt as layered translucent ribbons (D278) (
306c7a4) - scenes: Electric Bloom rebuilt as a three-layer glowing garden (D277) (
510aa24) - scenes: rebuild Chromatic Rise as a feedback-advected, posterised marbling (D276) (
59fc280) - add scoped desktop-to-desktop remote control (
20fc9ef) - corpus: --show-window renders in a shown tiny window, for AMD's native WGL (
2f2093e) - add Chromatic Rise psychedelic marbling scene (
a56f864) - app: --output-monitor N and --fullscreen put the output on the projector at launch (
b731fde) - ui: side panel status strip and icon tabs, help bar, panel at 31%, banners that cannot overflow (
41b425b) - ui: Synesthesia-style shell: rail-switched main view, library grid, persistent side panel (
5b61c8b) - app: Synesthesia's scenes join the library where it is installed, and its own are never written (D271) (
49f3714) - scene: one place finds Synesthesia's install and scene folders, and #include uses it (D271) (
ee1f47f)
Fixed
- keep a relative trust-file path as the whole path it named (
89780dc) - move a remote whose system-chosen address went away to the new one (
0a70ffe) - withdraw a remote command answered busy instead of running it later (
1df81af) - a refused command line exits 2, not the 1 of a fault (D454) (
32a28be) - a render-scale change keeps the warming and outgoing scenes' pictures (D440) (
c206984) - a playlist that does not load at launch leaves a scene playing (D452) (
5f858e2) - an --output-monitor that is not connected at launch is waited for (D451) (
de65374) - a fullscreen launch puts no crash or stop box over its show (D450) (
91a3072) - an atomic write syncs its temporary file before the rename (D438) (
f65ea18) - an anchored show waiting for its time follows the wall clock (D437) (
e7caa66) - Hold is refused until a cue is playing (D436) (
78bdc8d) - a save that changes nothing the show plays is not a reload (D435) (
80d4f71) - a hold survives a reload or an edit of the playlist (D433) (
bce7306) - an edit above the live cue no longer moves the show to another cue (D432) (
f6a7202) - a held cue is not moved on by an audio event (D431) (
bf56e9a) - an anchored show is placed in the run nearest now across midnight (D430) (
c77ad3b) - a GL driver message repeated every frame is summarised once a minute (D422) (
0a82f75) - a MIDI fader flood keeps its latest value and cannot crowd out a note (D421) (
10f669c) - an audio stream that stops calling back without an error is noticed and reopened (D420) (
c17c6e7) - say why the lexical callback lookup throws its exception away (D267, D414) (
64f838f) - a code-paired desktop takes back its own lease from a dead connection (
25e3999) - a Shadertoy re-import never replaces a folder that is not an import of the same shader (D418) (
92d577b) - a desktop capture over the JPEG limit is sent smaller, not dropped (
eb241d5) - a Shadertoy texture's file name never collides with a generated file or another URL (D417) (
8e2bf60) - a Shadertoy export saved as UTF-16 with a byte-order mark imports (D416) (
b39cb71) - a Shadertoy global initialised from iChannelTime or iChannelResolution sees its value (D415) (
ef8028e) - a remote Ctrl+click leaves no Ctrl held in the host's UI (
80d916b) - event callbacks declared with let or const fire, and a function may be passed itself (D414) ([
de57140](de57140...
strobe v0.1.0
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](https://gi...