The codebase
How big the Wavelength engine is, how it grew, and what it can do, measured from its git history one commit at a time.
45,431lines of C++ code, written in 18 days
- First commit2,430
- v0.1.08,078
- v0.2.09,291
- v0.3.017,776
- v0.4.024,936
- v0.5.042,949
- v0.6.045,431
- Source files
- 159
- Comment lines
- 3,170
- Commits
- 361
- Releases
- 6, latest v0.6.0
- In development
- 0.6.0
- Lines added, removed
- +85,801 −8,414
How it grew
Each step is a commit: the lines of C++ code in src/ once it landed, not counting blank lines or lines that hold only a comment. Point at the line, or focus it and use the arrow keys, to see each commit.
Every commit (361)
| When | Commit | What changed | Lines of code | Change |
|---|---|---|---|---|
| Mon 12 Oct, 23:13 | 811d6fb |
π RELEASE: v0.6.0 | 45,431 | 0 |
| Mon 12 Oct, 21:39 | d857f6e |
π IMPROVE: wavelength.mcpb asks for a songs folder | 45,431 | 0 |
| Mon 12 Oct, 21:39 | a1e3ad6 |
π¦ NEW: MCP write_job, read_job, list_songs; songs by name | 45,431 | +146 |
| Mon 12 Oct, 06:20 | eabc5f1 |
π¦ NEW: wavelength.mcpb and the files the MCP directories list it by | 45,285 | 0 |
| Mon 12 Oct, 06:20 | 95c7769 |
π FIX: install.sh checks the release archive against SHA256SUMS.txt | 45,285 | 0 |
| Mon 12 Oct, 06:17 | bd219c3 |
π¦ NEW: MCP tool save_preset; state save --set takes the plugin's text | 45,285 | +41 |
| Sun 11 Oct, 20:38 | cf1e307 |
π IMPROVE: Move toβ¦ opens a group picker on the Riffs page | 45,244 | 0 |
| Sun 11 Oct, 20:38 | fcd1d1c |
π¦ NEW: riffs in other meters: a Meter menu on the record bar and in the riff editor | 45,244 | +2 |
| Sun 11 Oct, 15:36 | 24e7c97 |
π IMPROVE: riff Play turns to Pause; groups listed newest first | 45,242 | 0 |
| Sun 11 Oct, 15:20 | d7ac433 |
π IMPROVE: riff groups file themselves by day, numbered, with no names | 45,242 | +51 |
| Sat 10 Oct, 21:18 | 718fd3e |
π DOC: changelog: the stale skill docs were weeks old, not months | 45,191 | 0 |
| Sat 10 Oct, 21:18 | e6fe76c |
π DOC: agent skill: a riffs.json riff can be written as well as recorded | 45,191 | 0 |
| Sat 10 Oct, 21:18 | 593d327 |
π FIX: the skill installer finds current docs for a symlinked or -dev binary | 45,191 | 0 |
| Sat 10 Oct, 13:58 | 1367e38 |
π FIX: Enter in a serve dialog's field no longer cancels it | 45,191 | 0 |
| Sat 10 Oct, 13:47 | 18c4eaa |
π¦ NEW: write a riff note by note | 45,191 | 0 |
| Sat 10 Oct, 08:08 | 8f8c60c |
π¦ NEW: box select and duplicate in the riff editor | 45,191 | 0 |
| Sat 10 Oct, 08:04 | 926e833 |
π¦ NEW: a ruler in the riff editor to play from anywhere | 45,191 | 0 |
| Sat 10 Oct, 07:45 | de97bae |
π FIX: the Sounds and Riffs pages no longer open blank | 45,191 | 0 |
| Sat 10 Oct, 07:45 | 248a801 |
π¦ NEW: rename a track or instrument from the More menu | 45,191 | +40 |
| Sat 10 Oct, 07:36 | 7417475 |
π IMPROVE: adding an instrument asks for no track name | 45,151 | 0 |
| Sat 10 Oct, 07:25 | dc294b5 |
π FIX: scrolling past a knob no longer turns it | 45,151 | 0 |
| Fri 9 Oct, 22:15 | 8797661 |
π¦ NEW: try a preset on the keys before you pick it | 45,151 | 0 |
| Fri 9 Oct, 22:09 | 47d67ab |
π¦ NEW: preset pickers filter by type | 45,151 | 0 |
| Fri 9 Oct, 21:59 | 8793285 |
π¦ NEW: a riff library apart from songs: the Riffs page and wavelength riffs | 45,151 | +520 |
| Fri 9 Oct, 19:36 | ce572eb |
π FIX: Sounds-page projects validate again | 44,631 | +1 |
| Thu 8 Oct, 13:02 | 9790236 |
π¦ NEW: record riffs on the Sounds page for the agent to build on | 44,630 | +99 |
| Thu 8 Oct, 12:41 | 2d3bd49 |
π¦ NEW: Sounds page opens the plugin's own window | 44,531 | +468 |
| Thu 8 Oct, 12:29 | 3aa9c0b |
π¦ NEW: Sounds page: tune each instrument by ear, then hand off | 44,063 | +2 |
| Thu 8 Oct, 12:17 | cfcae50 |
π¦ NEW: sounds.json keeps instruments tuned by ear; knobs turn live | 44,061 | +684 |
| Wed 7 Oct, 10:14 | a19abad |
π IMPROVE: patch cards flag patches that are out of tune | 43,377 | +11 |
| Wed 7 Oct, 10:09 | 5d2b3a9 |
π FIX: velocity humanize no longer silences full-velocity notes | 43,366 | +1 |
| Tue 6 Oct, 18:56 | d5adb2e |
π€ TEST: the regression checks run on Linux in Docker | 43,365 | 0 |
| Tue 6 Oct, 18:56 | b52e902 |
π IMPROVE: the examples play their fallbacks without plugins | 43,365 | 0 |
| Tue 6 Oct, 18:55 | ddb235e |
π FIX: warning-free on GCC | 43,365 | 0 |
| Tue 6 Oct, 18:55 | e0ba70f |
π FIX: copied files land on Docker Desktop bind mounts | 43,365 | +20 |
| Tue 6 Oct, 18:22 | 6400768 |
π€ TEST: one check.sh run at a time | 43,345 | 0 |
| Tue 6 Oct, 18:22 | 947d53f |
π FIX: channel strip records stay inside their file | 43,345 | +3 |
| Tue 6 Oct, 18:10 | fc4acee |
π€ TEST: fuzz the file readers under a sanitizer build | 43,342 | 0 |
| Tue 6 Oct, 18:02 | 600f458 |
π FIX: a package's instruments can't read outside the song | 43,342 | +83 |
| Tue 6 Oct, 18:02 | 8d7ea2b |
π FIX: file readers refuse hostile files instead of crashing | 43,259 | +250 |
| Tue 6 Oct, 17:39 | b1bba68 |
π DOC: agent skill names Audio Units and GarageBand imports | 43,009 | 0 |
| Tue 6 Oct, 17:39 | 46b097c |
π DOC: roadmap shows what 0.5.0 shipped; release step keeps it current | 43,009 | 0 |
| Tue 6 Oct, 17:39 | 0c81daf |
π DOC: readme lists 28 effects, Audio Units and the newer commands | 43,009 | 0 |
| Tue 6 Oct, 17:38 | 2e491f5 |
π DOC: help, AGENTS.md and the format docs caught up with 0.5.0 | 43,009 | +6 |
| Tue 6 Oct, 14:46 | cd81b49 |
π DOC: changelog line for track realtime | 43,003 | 0 |
| Tue 6 Oct, 14:46 | c75f932 |
π¦ NEW: track realtime paces a plugin to the clock around its notes | 43,003 | +54 |
| Tue 6 Oct, 12:07 | 18dbbfe |
π IMPROVE: start 0.6.0-dev | 42,949 | 0 |
| Tue 6 Oct, 12:03 | 5374488 |
π RELEASE: v0.5.0 | 42,949 | 0 |
| Tue 6 Oct, 11:16 | 7a1278d |
π¦ NEW: mod wheel and channel pressure on builtin:synth | 42,949 | +52 |
| Tue 6 Oct, 10:56 | e312a43 |
π IMPROVE: Vintage Clav and Sculpture calibrated against a GarageBand bounce | 42,897 | +51 |
| Tue 6 Oct, 10:53 | 0e439b0 |
π IMPROVE: Smart Control knobs on effects read GarageBand 10.4's finer steps | 42,846 | +42 |
| Tue 6 Oct, 10:29 | 842ea94 |
π¦ NEW: GarageBand plug-in automation plays; eq bands automatable | 42,804 | +289 |
| Tue 6 Oct, 10:16 | 31d3a3b |
π IMPROVE: ES2 patches calibrated against a GarageBand bounce | 42,515 | +70 |
| Tue 6 Oct, 10:12 | 4992c82 |
π FIX: GarageBand audio files under a long or moved absolute folder | 42,445 | +13 |
| Tue 6 Oct, 09:55 | 15328f5 |
π¦ NEW: GarageBand Groove Track followers play on the master's timing | 42,432 | +3 |
| Tue 6 Oct, 09:42 | 37335e7 |
π¦ NEW: bus pan; GarageBand aux pans import | 42,429 | +12 |
| Tue 6 Oct, 09:36 | 9e61361 |
π FIX: no audio-region-fade warning on GarageBand imports | 42,417 | β2 |
| Tue 6 Oct, 09:19 | b52a9f6 |
π FIX: GarageBand auxes named by Logic's placeholder keep their sends | 42,419 | +10 |
| Tue 6 Oct, 09:14 | 63bf8a7 |
π FIX: GarageBand's Chinese Kit is recognised as a sampler patch | 42,409 | +2 |
| Tue 6 Oct, 09:04 | 86c09d1 |
π¦ NEW: Pedalboard's Dr. Octave plays its octave below | 42,407 | +9 |
| Tue 6 Oct, 08:59 | 10115bc |
π¦ NEW: delay wow and flutter; Tape Delay plays them | 42,398 | +44 |
| Tue 6 Oct, 08:50 | a270ca1 |
π¦ NEW: meterChanges: a meter map by bar | 42,354 | +118 |
| Tue 6 Oct, 08:38 | 9417b91 |
π¦ NEW: Alchemy's tuned filters play; builtin:synth filter chains | 42,236 | +461 |
| Tue 6 Oct, 08:34 | bd60fa3 |
π¦ NEW: GarageBand's Spreader plays; chorus spread | 41,775 | +6 |
| Tue 6 Oct, 08:25 | 1c586f8 |
π¦ NEW: GarageBand's Ringshifter and Roswell Ringer play | 41,769 | +38 |
| Tue 6 Oct, 08:11 | 8e3b807 |
π¦ NEW: tune effect (pitch correction); GarageBand's Pitch Correction plays | 41,731 | +115 |
| Tue 6 Oct, 08:01 | d2a609a |
π¦ NEW: ringmod effect: ring modulator and frequency shifter | 41,616 | +82 |
| Tue 6 Oct, 07:42 | 30cae29 |
π¦ NEW: pitch effect; Vocal Transformer and Pitch Shifter play | 41,534 | +91 |
| Tue 6 Oct, 07:05 | d7a305e |
π FIX: GarageBand pitch bend plays; the sampler follows pitchbend | 41,443 | +11 |
| Tue 6 Oct, 06:55 | 6e1e99c |
π¦ NEW: GarageBand AU effects import; optional plugin effects | 41,432 | +37 |
| Tue 6 Oct, 06:48 | 345c164 |
π¦ NEW: GarageBand tracks on third-party Audio Units import and play | 41,395 | +36 |
| Tue 6 Oct, 06:38 | 7d256c4 |
π FIX: quantized GarageBand notes kept, and quantize Strength plays | 41,359 | +4 |
| Tue 6 Oct, 06:33 | 1a0891c |
π¦ NEW: GarageBand's transposition track imports | 41,355 | +24 |
| Tue 6 Oct, 06:26 | a374c39 |
π¦ NEW: GarageBand arrangement markers import as job markers | 41,331 | +21 |
| Tue 6 Oct, 00:05 | 6578ab2 |
π IMPROVE: GarageBand patches play their AutoFilter | 41,310 | +24 |
| Tue 6 Oct, 00:01 | f97b2bd |
π IMPROVE: older Apple Loops play the instrument in their own strip | 41,286 | +45 |
| Mon 5 Oct, 23:58 | 6f95ed1 |
π FIX: Apple Loops import on their own patch, not a GM piano | 41,241 | +18 |
| Mon 5 Oct, 23:51 | 5da5f4e |
π FIX: GarageBand's Church Organ is a sampler, not a closed synth | 41,223 | 0 |
| Mon 5 Oct, 23:46 | f92d764 |
π IMPROVE: GarageBand patches play their Vintage Tube EQ | 41,223 | +20 |
| Mon 5 Oct, 23:43 | 91235b0 |
π¦ NEW: Echo, Multipressor and five more GarageBand effects play | 41,203 | +15 |
| Mon 5 Oct, 23:34 | 7b080f5 |
π¦ NEW: GarageBand's effect patches as an fx chain by name | 41,188 | +142 |
| Mon 5 Oct, 23:28 | db6feae |
π IMPROVE: Retro Synth patches calibrated against a GarageBand bounce | 41,046 | +11 |
| Mon 5 Oct, 23:26 | a31211d |
π¦ NEW: delay sides and taps, for Stereo Delay and Delay Designer | 41,035 | +128 |
| Mon 5 Oct, 23:17 | b91ef27 |
π IMPROVE: GarageBand's electric pianos follow the keys as GarageBand's do | 40,907 | +34 |
| Mon 5 Oct, 22:43 | 53fb8d8 |
π¦ NEW: every GarageBand Time Quantize value, swing and tuplets included | 40,873 | +31 |
| Mon 5 Oct, 21:51 | 5bc5ba6 |
π FIX: GarageBand's Echo plays at its level and tone | 40,842 | +12 |
| Mon 5 Oct, 21:38 | 6b85c4d |
π¦ NEW: GarageBand Smart Control automation on Retro Synth's filter | 40,830 | +159 |
| Mon 5 Oct, 10:29 | 611b9a3 |
π FIX: GarageBand projects in 3/4, every Time Quantize, send automation | 40,671 | +23 |
| Mon 5 Oct, 08:30 | 4e882e3 |
π¦ NEW: a GarageBand project's master fade imports | 40,648 | +15 |
| Mon 5 Oct, 08:20 | d9cbe56 |
π¦ NEW: GarageBand automation, loops in the project key, the balance pan law | 40,633 | +70 |
| Sun 4 Oct, 23:37 | 2f616fd |
π FIX: exact GarageBand patch and instrument names win over partial ones | 40,563 | +3 |
| Sun 4 Oct, 23:24 | d70fdeb |
π FIX: Drummer loop slices, Ultrabeat key 53, the B3's cabinet roll-off | 40,560 | +30 |
| Sun 4 Oct, 23:10 | b2bd5d8 |
π¦ NEW: 14 more Alchemy patches play, source filters stay on their source | 40,530 | +150 |
| Sun 4 Oct, 22:51 | 1a330a6 |
π¦ NEW: GarageBand's guitar and bass amps play as built-in effects | 40,380 | +587 |
| Sun 4 Oct, 22:47 | 69bcca6 |
π¦ NEW: Retro Synth Table mode plays the patch's own wavetable | 39,793 | +107 |
| Sun 4 Oct, 22:43 | 42a4b7d |
π¦ NEW: track midiFx chain, GarageBand's MIDI effects play | 39,686 | +685 |
| Sun 4 Oct, 21:41 | c619ffe |
π IMPROVE: GarageBand tempo ramps confirmed as steps | 39,001 | β1 |
| Sun 4 Oct, 21:34 | 32008e5 |
π¦ NEW: GarageBand import keeps audio region trims and loops | 39,002 | +26 |
| Sun 4 Oct, 21:07 | 58cc72e |
π¦ NEW: GarageBand import keeps region loops, trims and quantize | 38,976 | +34 |
| Sun 4 Oct, 20:52 | d818755 |
π FIX: GarageBand import plays a region's Transpose | 38,942 | +4 |
| Sun 4 Oct, 20:46 | 3d279ca |
π FIX: GarageBand import reads exact faders, pans, mute and solo | 38,938 | +12 |
| Sun 4 Oct, 16:02 | ca52c5c |
π¦ NEW: import GarageBand projects | 38,926 | +1,030 |
| Sun 4 Oct, 15:07 | e2f0f6d |
π¦ NEW: patch folders by path for builtin:synth and the sampler | 37,896 | +25 |
| Sun 4 Oct, 11:59 | 688698d |
π FIX: Alchemy distortion per voice, noise bands, closed filters refused | 37,871 | +64 |
| Sun 4 Oct, 11:02 | c110a83 |
π FIX: Alchemy patches play Amp effects at their held level | 37,807 | β1 |
| Sun 4 Oct, 10:55 | 594a06c |
π¦ NEW: GarageBand's additive and granular Alchemy patches play | 37,808 | +523 |
| Sun 4 Oct, 10:55 | 2f49af6 |
π¦ NEW: builtin:synth additive oscillator | 37,285 | +211 |
| Sun 4 Oct, 10:29 | caf4459 |
π¦ NEW: GarageBand's Vintage Electric Piano, Clav and Sculpture play by name | 37,074 | +726 |
| Sun 4 Oct, 10:13 | 02e6707 |
π¦ NEW: DecentSampler instruments play without the plugin | 36,348 | +955 |
| Sun 4 Oct, 08:58 | 032b6c5 |
π¦ NEW: DecentSampler, Maschine and MeldaProduction libraries as sources | 35,393 | +55 |
| Sun 4 Oct, 08:54 | 8281a5e |
π¦ NEW: GarageBand's Alchemy patches play by name | 35,338 | +1,462 |
| Sun 4 Oct, 08:21 | edee144 |
π DOC: arp tour example | 33,876 | 0 |
| Sun 4 Oct, 08:19 | 49eaf1b |
π FIX: re-created GarageBand patches stay near each other's level | 33,876 | +46 |
| Sun 4 Oct, 08:10 | 1cea67e |
π¦ NEW: GarageBand's Arpeggiator, patches arpeggiate by themselves | 33,830 | +551 |
| Sun 4 Oct, 07:42 | 29708d4 |
π¦ NEW: track arp, held notes played as an arpeggio | 33,279 | +88 |
| Sun 4 Oct, 07:39 | 02c44f9 |
π¦ NEW: phaser effect and a noise-gate mode for gate | 33,191 | +77 |
| Sun 4 Oct, 07:34 | 040b962 |
π¦ NEW: ES2, ES1, EFM1 and Vintage B3 patches, and most patch effects | 33,114 | +644 |
| Sun 4 Oct, 07:07 | 2ed8d27 |
π¦ NEW: GarageBand's Retro Synth patches on builtin:synth | 32,470 | +236 |
| Sun 4 Oct, 06:57 | d04183e |
π¦ NEW: GarageBand patches play through their own EQ, compressor and delay | 32,234 | +133 |
| Sun 4 Oct, 04:45 | 174742a |
π FIX: Drummer loop notes start at beat 0 | 32,101 | +7 |
| Sun 4 Oct, 04:38 | 1d3de24 |
π¦ NEW: Ultrabeat patches as kits, samples --patch | 32,094 | +229 |
| Sun 4 Oct, 04:30 | 8602ee7 |
π¦ NEW: convolve effect, note-named sample folders, GarageBand kits | 31,865 | +217 |
| Sun 4 Oct, 04:19 | 0f72575 |
π¦ NEW: GarageBand and Logic patches in the sampler | 31,648 | +312 |
| Sun 4 Oct, 04:07 | a2c4cf3 |
π¦ NEW: Apple Loops by name, in the song's tempo and key | 31,336 | +385 |
| Sun 4 Oct, 04:07 | fe347e0 |
π¦ NEW: AAC and Apple Lossless decode on macOS | 30,951 | +88 |
| Sun 4 Oct, 04:03 | 1878031 |
π DOC: changelog for import keeping notes of undescribed instruments | 30,863 | 0 |
| Thu 1 Oct, 23:50 | 3a28ead |
π¦ NEW: wavelength stage, faders from stem loudness by role | 30,863 | +291 |
| Thu 1 Oct, 23:45 | bec111d |
π FIX: serve plays the song's own render first | 30,572 | +5 |
| Thu 1 Oct, 23:45 | a68f893 |
π FIX: lint reads long drum samples as drums | 30,567 | +16 |
| Thu 1 Oct, 23:45 | a83af70 |
π FIX: analyze finds stems of a render made elsewhere | 30,551 | +6 |
| Thu 1 Oct, 23:45 | f579add |
π FIX: postFaderLufs on every render, windows included | 30,545 | +42 |
| Thu 1 Oct, 23:44 | a0303c2 |
π¦ NEW: mix check for a thin bass, tracks[].lowShare | 30,503 | +43 |
| Thu 1 Oct, 12:00 | 8d7edad |
π FIX: serve opens songs whose sampler kit is a key map | 30,460 | +14 |
| Wed 30 Sep, 19:52 | b3274bb |
π FIX: import keeps the notes of instruments it can't describe | 30,446 | +3 |
| Wed 30 Sep, 15:12 | 41d4b85 |
π FIX: import --list works without a value | 30,443 | 0 |
| Mon 28 Sep, 08:00 | 99f79db |
π IMPROVE: moving a group of notes previews only its first note | 30,443 | 0 |
| Mon 28 Sep, 07:23 | 201b412 |
π¦ NEW: live loop in the editor, hear mix and note changes in a second | 30,443 | +160 |
| Mon 28 Sep, 07:10 | b344406 |
π¦ NEW: render --cache reuses tracks whose audio can't have changed | 30,283 | +232 |
| Mon 28 Sep, 06:36 | cbe10d1 |
π FIX: purge leaves read-only render folders alone and shows every error | 30,051 | +11 |
| Mon 28 Sep, 06:28 | f2de42c |
π IMPROVE: purge knows master outputs and keeps them unless --masters | 30,040 | +21 |
| Mon 28 Sep, 06:25 | cb144a0 |
π¦ NEW: wavelength purge, free render WAVs and keep songs playable | 30,019 | +349 |
| Mon 28 Sep, 06:09 | c2a3581 |
π FIX: instruments that fill only one stereo channel play in the centre | 29,670 | +29 |
| Mon 28 Sep, 05:55 | d2d9e84 |
π DOC: changelog for the picture's tempo range | 29,641 | 0 |
| Mon 28 Sep, 05:55 | 57f9ca7 |
π FIX: song picture shows the tempo range, not first and last tempo | 29,641 | +10 |
| Sun 27 Sep, 21:04 | ca69f75 |
π¦ NEW: wavelength card, pictures of how presets sound | 29,631 | +609 |
| Sun 27 Sep, 21:04 | dcf4fe8 |
π IMPROVE: share the picture's canvas, font and colours | 29,022 | +13 |
| Sun 27 Sep, 19:09 | dc55754 |
π FIX: Firefly Synth 2 presets saved without a patchState wrapper | 29,009 | +1 |
| Sun 27 Sep, 19:07 | bdf7630 |
π¦ NEW: presets for FB-02, FB3, Firefly Synth 2 and Vaporizer2 CLAP | 29,008 | +149 |
| Sun 27 Sep, 19:07 | 3a9b84b |
π FIX: help check fails under pipefail | 28,859 | 0 |
| Sun 27 Sep, 18:32 | d1be6b6 |
π DOC: roadmap statuses after 0.4.0 | 28,859 | 0 |
| Sun 27 Sep, 18:31 | b0b1edb |
π DOC: park preset capture in the roadmap | 28,859 | 0 |
| Sun 27 Sep, 17:24 | 01aeee0 |
π IMPROVE: keep local research out of the public tree | 28,859 | 0 |
| Sun 27 Sep, 17:07 | 99723cc |
π FIX: quick fixes from the compat sweep | 28,859 | +38 |
| Sun 27 Sep, 16:57 | d082b03 |
π¦ NEW: Reaktor 6 ensembles and snapshots by name | 28,821 | +216 |
| Sun 27 Sep, 16:57 | 4428a46 |
π FIX: plugin updates that keep the bundle's date | 28,605 | +11 |
| Sun 27 Sep, 16:03 | 2c061a7 |
π FIX: what the second compat sweep found | 28,594 | +43 |
| Sun 27 Sep, 15:20 | d014ddc |
π¦ NEW: live playing in the serve playground | 28,551 | +265 |
| Sun 27 Sep, 15:12 | af77a7e |
π FIX: what the first compat sweep found | 28,286 | +268 |
| Sun 27 Sep, 14:59 | 9cdde8a |
π¦ NEW: note edits (edits.json), Render button, playground, overview, light mode | 28,018 | +248 |
| Sun 27 Sep, 14:34 | 1dd72f8 |
π IMPROVE: serve stops idle live-note workers after 10 minutes | 27,770 | +14 |
| Sun 27 Sep, 14:24 | 16fe101 |
π¦ NEW: live notes in the serve editor | 27,756 | +265 |
| Sun 27 Sep, 14:18 | c6cbb37 |
π¦ NEW: wavelength compat, a compatibility sweep over every plugin | 27,491 | +430 |
| Sun 27 Sep, 14:13 | 65d3932 |
π¦ NEW: serve right-click menus, cancel renders, song details, rename and trash | 27,061 | +276 |
| Sun 27 Sep, 14:07 | 74d16c9 |
π¦ NEW: Audio Unit hosting on macOS | 26,785 | +658 |
| Sun 27 Sep, 13:56 | 7219275 |
π¦ NEW: HISE user presets by name | 26,127 | +140 |
| Sun 27 Sep, 13:50 | 78fa11d |
π¦ NEW: Logic and GarageBand Sampler instruments (.exs) in the sampler | 25,987 | +270 |
| Sun 27 Sep, 13:38 | e246372 |
π¦ NEW: Surge XT Effects .srgfx presets by name | 25,717 | +110 |
| Sun 27 Sep, 13:14 | 8bf4ee7 |
π€ TEST: serve check on a free port, and say what failed | 25,607 | 0 |
| Sun 27 Sep, 13:10 | 8f9374c |
π¦ NEW: Serum 2 multisamples in the sampler, SFZ velocity curves | 25,607 | +50 |
| Sun 27 Sep, 12:52 | 274fe7d |
π¦ NEW: Pendulate presets by name | 25,557 | +3 |
| Sun 27 Sep, 12:51 | 2909e06 |
π¦ NEW: Kilohearts snap-in presets by name | 25,554 | +48 |
| Sun 27 Sep, 12:47 | ffed903 |
π¦ NEW: Serum 2 FX effect presets and racks by name | 25,506 | +58 |
| Sun 27 Sep, 12:47 | bd1f09e |
π FIX: obxdRoot declared before its use | 25,448 | 0 |
| Sun 27 Sep, 12:46 | b7f6ad1 |
π FIX: old OB-Xd banks and exact preset-file names | 25,448 | +13 |
| Sun 27 Sep, 12:41 | 4782a1b |
π¦ NEW: MeldaProduction presets for every Melda plugin | 25,435 | +35 |
| Sun 27 Sep, 12:30 | 8306021 |
π¦ NEW: Echobode patches and Permut8 bank programs by name | 25,400 | +219 |
| Sun 27 Sep, 12:16 | 017ccd9 |
π¦ NEW: audjoo Helix .hxp patches by name | 25,181 | +16 |
| Sun 27 Sep, 12:14 | e352eec |
π¦ NEW: OB-Xd bank programs, Surge 1.x, TyrellN6 and more presets | 25,165 | +121 |
| Sun 27 Sep, 12:14 | 7a929b2 |
π FIX: Rosetta re-exec wrote command output to stderr | 25,044 | +1 |
| Sun 27 Sep, 12:07 | 54c0180 |
π FIX: plugin scan storm when many commands start at once | 25,043 | +97 |
| Sun 27 Sep, 12:04 | efb701a |
π FIX: scan VST3 bundles left in VST 2 folders | 24,946 | +9 |
| Sun 27 Sep, 10:39 | 210a678 |
π IMPROVE: start 0.5.0-dev | 24,937 | +1 |
| Sun 27 Sep, 10:28 | b4c709b |
π RELEASE: v0.4.0 | 24,936 | 0 |
| Sun 27 Sep, 10:08 | 21b6a76 |
π¦ NEW: terminal output for people: grouped help, colour, tables, progress | 24,936 | +650 |
| Sun 27 Sep, 09:38 | 2c51575 |
π¦ NEW: wavelength upgrade and version --check | 24,286 | +222 |
| Sun 27 Sep, 09:18 | 9753ba2 |
π DOC: a roadmap, lowercase file names, one line per paragraph | 24,064 | 0 |
| Sun 27 Sep, 09:08 | f01239b |
π€ TEST: release-test uses its own work folder per run | 24,064 | 0 |
| Sun 27 Sep, 09:00 | a069017 |
π€ TEST: release-test runs every archive through the song format, fallbacks and MCP | 24,064 | 0 |
| Sun 27 Sep, 08:58 | 12264d7 |
π DOC: 0.4.0 docs caught up with the engine | 24,064 | +6 |
| Sun 27 Sep, 08:58 | ac8b6fe |
π IMPROVE: song format Draft 2, from an independent review | 24,058 | +266 |
| Sun 27 Sep, 08:58 | 278e2e1 |
π FIX: a master loudness target with no effects crashed | 23,792 | 0 |
| Sun 27 Sep, 07:33 | 1799e4a |
π IMPROVE: packages carry an unchanged sample once | 23,792 | +42 |
| Sun 27 Sep, 07:24 | e5fd7e7 |
π IMPROVE: a song's picture carries its title | 23,750 | +6 |
| Sun 27 Sep, 07:21 | 09c78ae |
π FIX: fallbacks --suggest gave sidechain key tracks a bogus entry | 23,744 | +1 |
| Sun 27 Sep, 07:15 | 4f6fd81 |
π DOC: song workflow in the plugin skill, MCP song tools in README | 23,743 | +1 |
| Sun 27 Sep, 07:15 | 98b3c93 |
π¦ NEW: upgrade, lib: sample names, fallbacks --suggest, render --keep | 23,742 | +1,018 |
| Sun 27 Sep, 06:49 | ab324ee |
π¦ NEW: song format schemas, Python reader and fixtures | 22,724 | +65 |
| Sun 27 Sep, 06:40 | 3273346 |
π¦ NEW: .wavelength packages: pack, unpack, validate | 22,659 | +360 |
| Sun 27 Sep, 06:36 | 051a39c |
π¦ NEW: musical diff and comments pinned to revisions | 22,299 | +554 |
| Sun 27 Sep, 06:29 | 1e24a6c |
π¦ NEW: song history: save, undo, redo, restore, git export | 21,745 | +888 |
| Sun 27 Sep, 06:14 | e6c9959 |
π€ TEST: check.sh waits for serve to answer | 20,857 | 0 |
| Sun 27 Sep, 06:14 | 93974a1 |
π¦ NEW: import Bitwig projects without a DAWproject export | 20,857 | +330 |
| Sun 27 Sep, 05:42 | bd6128a |
π DOC: song format, draft 1 | 20,527 | 0 |
| Sat 26 Sep, 21:36 | 8ef9630 |
π IMPROVE: serve has the Wavelength favicon | 20,527 | +6 |
| Sat 26 Sep, 21:34 | d4273af |
π¦ NEW: wavelength kit, free synths for machines without plugins | 20,521 | +448 |
| Sat 26 Sep, 21:11 | 46d1500 |
π FIX: review comments failed with 403 after serve restarted | 20,073 | +11 |
| Sat 26 Sep, 20:45 | de3e525 |
π DOC: agent skill says how to read song.png | 20,062 | 0 |
| Sat 26 Sep, 20:37 | a2729f8 |
π IMPROVE: song.png lanes show post-fader LUFS and drop jumps | 20,062 | +24 |
| Sat 26 Sep, 20:22 | 6f09d11 |
π DOC: a loop can peak a little over the limiter where its tail folds in | 20,038 | 0 |
| Sat 26 Sep, 20:22 | 65f39c4 |
π IMPROVE: MCP render takes loop | 20,038 | +2 |
| Sat 26 Sep, 20:21 | e9c9db4 |
π¦ NEW: render --loop, seamless loops for games and apps | 20,036 | +39 |
| Sat 26 Sep, 20:16 | 7741e30 |
π FIX: repetition check reads effect automate and lfo curves | 19,997 | +8 |
| Sat 26 Sep, 20:16 | e570bf0 |
π¦ NEW: track fallbacks, so a job renders without its plugins | 19,989 | +84 |
| Sat 26 Sep, 20:12 | 1fad283 |
π¦ NEW: wavelength mcp, built-in docs and a Claude Code plugin | 19,905 | +617 |
| Sat 26 Sep, 20:12 | 7e362b4 |
π¦ NEW: mix checks for the kick, the low end, phase and repetition | 19,288 | +218 |
| Sat 26 Sep, 19:55 | 9806296 |
π¦ NEW: render --png, a picture of the song for agents | 19,070 | +473 |
| Sat 26 Sep, 19:44 | 4786a7d |
π¦ NEW: builtin:synth, a polysynth that needs no plugin | 18,597 | +821 |
| Sat 26 Sep, 19:25 | 7a42c65 |
π IMPROVE: start 0.4.0-dev | 17,776 | 0 |
| Sat 26 Sep, 08:44 | ab278cf |
π RELEASE: v0.3.0 | 17,776 | 0 |
| Sat 26 Sep, 08:38 | 747489c |
π IMPROVE: serve UI in the Wavelength brand | 17,776 | 0 |
| Sat 26 Sep, 08:35 | 4c828b7 |
π¦ NEW: DAWproject export prints built-in instruments | 17,776 | +67 |
| Sat 26 Sep, 06:47 | 9174070 |
π FIX: Windows build of serve, Linux build warnings | 17,709 | 0 |
| Sat 26 Sep, 06:47 | 186b2b3 |
π DOC: known limits and the agent skill caught up with 0.3.0 | 17,709 | 0 |
| Sat 26 Sep, 05:53 | 3d6e99a |
π¦ NEW: DAWproject export | 17,709 | +431 |
| Sat 26 Sep, 05:42 | 343c2ac |
π IMPROVE: MusicXML grace notes and pedal; case-insensitive sample paths | 17,278 | +65 |
| Sat 26 Sep, 05:39 | 31c4262 |
π¦ NEW: SoundFonts, General MIDI fallback, SFZ filters and release triggers | 17,213 | +644 |
| Sat 26 Sep, 00:41 | cb64e04 |
π¦ NEW: MusicXML import | 16,569 | +591 |
| Sat 26 Sep, 00:33 | ee12ed6 |
π¦ NEW: MP3, FLAC and WAV deliveries measured after decoding | 15,978 | +636 |
| Sat 26 Sep, 00:23 | aa0dd85 |
π¦ NEW: SFZ instruments in builtin:sampler | 15,342 | +410 |
| Sat 26 Sep, 00:16 | 3881436 |
π¦ NEW: AIFF, FLAC, MP3 and Ogg Vorbis samples and clips | 14,932 | +175 |
| Fri 25 Sep, 22:36 | a78c40d |
π IMPROVE: optional stable code signature for local macOS builds | 14,757 | 0 |
| Fri 25 Sep, 22:18 | 777e16b |
π IMPROVE: serve answers local reverse proxies on .localhost names | 14,757 | +1 |
| Fri 25 Sep, 21:42 | 09ad700 |
π¦ NEW: wavelength serve, a local web UI for reviewing songs | 14,756 | +668 |
| Fri 25 Sep, 21:31 | 6a344bc |
π¦ NEW: render --from/--to renders only some bars of a song | 14,088 | +77 |
| Fri 25 Sep, 21:21 | f0f5434 |
π DOC: AGENTS.md wording | 14,011 | 0 |
| Fri 25 Sep, 21:21 | d8ede34 |
π€ TEST: automation-tour checks follow and switch curves in the report | 14,011 | 0 |
| Fri 25 Sep, 21:21 | e7324fb |
π¦ NEW: report automation activity and dead curves | 14,011 | +119 |
| Fri 25 Sep, 21:20 | eaf9466 |
π¦ NEW: warn when width narrows a signal away | 13,892 | +34 |
| Fri 25 Sep, 21:20 | 8b25989 |
π IMPROVE: render --tracks keeps stem names | 13,858 | +7 |
| Fri 25 Sep, 21:20 | fe1a5bc |
π¦ NEW: wavelength timeline | 13,851 | +64 |
| Fri 25 Sep, 21:20 | 375e503 |
π¦ NEW: params --set and --map show display text | 13,787 | +91 |
| Fri 25 Sep, 21:20 | 873334c |
π¦ NEW: analyze --peaks | 13,696 | +136 |
| Fri 25 Sep, 21:20 | 85566b5 |
π¦ NEW: bus stems and bus targets in stage-gains | 13,560 | +8 |
| Fri 25 Sep, 21:20 | c8d2834 |
π¦ NEW: send throws shorthand | 13,552 | +36 |
| Fri 25 Sep, 21:20 | ec93ddb |
π¦ NEW: chord timeline and curves that follow it | 13,516 | +135 |
| Fri 25 Sep, 21:19 | 27fdaaf |
π¦ NEW: display text and note names in automation curves | 13,381 | +90 |
| Fri 25 Sep, 21:19 | b43a3ff |
π¦ NEW: switch automation points and curves | 13,291 | +25 |
| Fri 25 Sep, 21:04 | 33b0963 |
π IMPROVE: warn on host mix vs a plugin's own Mix | 13,266 | +16 |
| Fri 25 Sep, 21:03 | e434437 |
π¦ NEW: "intended" silences an effect's distortion warnings | 13,250 | +5 |
| Fri 25 Sep, 21:01 | 0eb9445 |
π¦ NEW: audio clips that play the song's own render | 13,245 | +123 |
| Fri 25 Sep, 20:56 | 1a41c0f |
π¦ NEW: sampler length trim that works with reverse | 13,122 | +4 |
| Fri 25 Sep, 20:55 | e3e053a |
π¦ NEW: builtin:shepard endless riser | 13,118 | +89 |
| Fri 25 Sep, 20:53 | 32f81d7 |
π¦ NEW: repeat effect for beat-repeat stutters | 13,029 | +49 |
| Fri 25 Sep, 20:51 | 66fd20b |
π¦ NEW: delay loopFx, effects inside the feedback loop | 12,980 | +69 |
| Fri 25 Sep, 20:47 | 18d6256 |
π¦ NEW: reverb freeze and automatable decay | 12,911 | +14 |
| Fri 25 Sep, 20:46 | af0cd49 |
π¦ NEW: level match on any effect | 12,897 | +51 |
| Fri 25 Sep, 20:28 | 2491db6 |
π FIX: warn about late automation on buses and the master | 12,846 | +27 |
| Fri 25 Sep, 20:25 | c0cecb4 |
π FIX: drop check measures across an intended near-silence | 12,819 | +28 |
| Fri 25 Sep, 20:22 | b4e1438 |
π FIX: lint --harmony leaves unpitched samples out | 12,791 | +51 |
| Fri 25 Sep, 20:14 | ec2d2b4 |
π FIX: saturate match follows the level over time | 12,740 | +27 |
| Fri 25 Sep, 20:05 | 9fae977 |
π¦ NEW: render --level-from keeps a part at its level in the full mix | 12,713 | +16 |
| Fri 25 Sep, 19:13 | d85238c |
π¦ NEW: lint --harmony finds wrong notes before a render | 12,697 | +497 |
| Fri 25 Sep, 16:15 | 5cd2f4f |
π DOC: move changes made since 0.2.0 out of its changelog section | 12,200 | 0 |
| Fri 25 Sep, 16:15 | 82c14fe |
π¦ NEW: audio clips, instrument automation and five more Bitwig devices in the DAWproject import | 12,200 | +221 |
| Fri 25 Sep, 15:44 | d1c1889 |
π¦ NEW: MIDI file import and export | 11,979 | +637 |
| Fri 25 Sep, 15:24 | de54a2e |
π FIX: read Bitwig 6 projects to the end | 11,342 | +22 |
| Fri 25 Sep, 15:13 | e6d4b76 |
π¦ NEW: read Bitwig projects for what DAWproject exports leave out | 11,320 | +696 |
| Fri 25 Sep, 14:22 | 10c83a6 |
π¦ NEW: import DAWproject files | 10,624 | +539 |
| Fri 25 Sep, 14:13 | 3800487 |
π DOC: VST2 and Rosetta in README, AGENTS.md, effects and changelog | 10,085 | 0 |
| Fri 25 Sep, 14:13 | d22c647 |
π¦ NEW: VST2 hosting, and Intel-only plugins under Rosetta | 10,085 | +715 |
| Fri 25 Sep, 11:33 | 9813330 |
π IMPROVE: track warnings in the top-level warnings list | 9,370 | +9 |
| Fri 25 Sep, 10:24 | 7bbe2f0 |
π IMPROVE: report duration, no empty stems folder, clearer docs | 9,361 | +1 |
| Fri 25 Sep, 10:24 | e97909e |
π FIX: lint compares each pair at its own notes; ranges, split | 9,360 | +58 |
| Fri 25 Sep, 10:23 | 34efdd3 |
π IMPROVE: weak-drop check measures the boundary in bars | 9,302 | +11 |
| Fri 25 Sep, 10:19 | 14ce363 |
π DOC: BBC SO Discover percussion keyswitches by instrument | 9,291 | 0 |
| Fri 25 Sep, 10:06 | 6805806 |
π FIX: Linux release archives without macOS extended attributes | 9,291 | 0 |
| Fri 25 Sep, 10:06 | b765393 |
π FIX: the skill installer downloads with wget when there is no curl | 9,291 | 0 |
| Fri 25 Sep, 09:47 | 239597c |
π¦ NEW: start 0.3.0-dev | 9,291 | 0 |
| Fri 25 Sep, 09:46 | dd5e639 |
π RELEASE: v0.2.0 | 9,291 | 0 |
| Fri 25 Sep, 09:45 | b43b2d1 |
π DOC: changelog ready for 0.2.0 | 9,291 | 0 |
| Fri 25 Sep, 09:45 | af089a7 |
π FIX: Windows archive carries its runtime licences | 9,291 | 0 |
| Fri 25 Sep, 09:45 | 2468e83 |
π¦ NEW: the skill installs release builds on Linux and Windows | 9,291 | 0 |
| Fri 25 Sep, 09:45 | 300db6b |
π€ TEST: arrangement-tour example checked by check.sh | 9,291 | 0 |
| Fri 25 Sep, 09:45 | 182d0b7 |
π FIX: clip distortion warning threshold and advice | 9,291 | +2 |
| Fri 25 Sep, 09:45 | 382b2e1 |
π FIX: analyze and option parsing details | 9,289 | +5 |
| Fri 25 Sep, 09:45 | a4b3f3b |
π FIX: analyze reads chip oscillators at their real pitch | 9,284 | +32 |
| Fri 25 Sep, 09:17 | 7c3d826 |
π IMPROVE: arrangement checks know intent, pre-master sections | 9,252 | +44 |
| Fri 25 Sep, 07:40 | 9a5fb15 |
π¦ NEW: per-note dyn curves for velocityTo instruments | 9,208 | +29 |
| Fri 25 Sep, 07:39 | 1a1c09e |
π¦ NEW: automation.rides, gain curves that add up | 9,179 | +25 |
| Fri 25 Sep, 07:22 | eb9c3a1 |
π¦ NEW: dropout and weak-drop checks, analyze --every | 9,154 | +113 |
| Fri 25 Sep, 06:41 | d35186a |
π IMPROVE: clip kneeDb, loudness gain before the peak stage | 9,041 | +15 |
| Fri 25 Sep, 01:10 | 6dbe23a |
π DOC: transients and sub-heavy sounds in the mixing guide | 9,026 | 0 |
| Fri 25 Sep, 01:10 | 2b6fa8b |
π¦ NEW: clip effect, a soft clipper for transients | 9,026 | +36 |
| Fri 25 Sep, 01:01 | 95d5f7b |
π FIX: render --tracks writes no stems for helper tracks | 8,990 | +3 |
| Fri 25 Sep, 00:59 | bd21b45 |
π FIX: commands reject unknown options | 8,987 | +22 |
| Fri 25 Sep, 00:58 | 49b53e6 |
π FIX: analyze reads the pitch of very short windows | 8,965 | 0 |
| Fri 25 Sep, 00:56 | f9c1cfb |
π¦ NEW: wavelength lint checks voice leading | 8,965 | +113 |
| Fri 25 Sep, 00:50 | d813aa8 |
π¦ NEW: analyze --grid; onset times land on the attack | 8,852 | +26 |
| Fri 25 Sep, 00:40 | 4e969f7 |
π FIX: master lines up a mix's lead-in; limiter reports per section | 8,826 | +30 |
| Fri 25 Sep, 00:37 | 9b202a2 |
π¦ NEW: name the tracks that drive the master limiter | 8,796 | +19 |
| Fri 25 Sep, 00:33 | 7cedf2c |
π IMPROVE: warn when an automation curve starts late | 8,777 | +34 |
| Fri 25 Sep, 00:30 | 3368c41 |
π¦ NEW: level-matched saturate | 8,743 | +9 |
| Fri 25 Sep, 00:29 | e06f532 |
π FIX: loudness of windows shorter than one gating block | 8,734 | +5 |
| Fri 25 Sep, 00:28 | 52d6240 |
π IMPROVE: loudness target gain goes in front of the limiter | 8,729 | +15 |
| Fri 25 Sep, 00:23 | c1f8ac7 |
π¦ NEW: render --tracks renders part of a song | 8,714 | +43 |
| Fri 25 Sep, 00:20 | 6cc1566 |
π IMPROVE: limiter warning says how long it limited | 8,671 | +6 |
| Fri 25 Sep, 00:19 | 3f96872 |
π FIX: audition stops when a plugin opens a licence window | 8,665 | +8 |
| Fri 25 Sep, 00:18 | 9a68d13 |
π FIX: kill render workers that open a licence window | 8,657 | +26 |
| Fri 25 Sep, 00:16 | c51a2bb |
π IMPROVE: fewer render workers when the machine is busy | 8,631 | +15 |
| Fri 25 Sep, 00:15 | 9d862a8 |
π¦ NEW: per-note vibrato on sampler tracks | 8,616 | +32 |
| Fri 25 Sep, 00:14 | eac8e39 |
π IMPROVE: analyze in song time, warn on loud-target gain into master | 8,584 | +27 |
| Fri 25 Sep, 00:13 | d81c066 |
π FIX: round-robin kits play the General MIDI alternate keys | 8,557 | +15 |
| Fri 25 Sep, 00:11 | a17e22a |
π FIX: master --chain no longer passes a mix through silently | 8,542 | +6 |
| Fri 25 Sep, 00:11 | 5c7d3fd |
π€ TEST: check.sh takes BUILD and JOBS | 8,536 | 0 |
| Fri 25 Sep, 00:10 | b9eb126 |
π¦ NEW: loudness range and labelled section loudness in reports | 8,536 | +45 |
| Thu 24 Sep, 23:58 | b4f3cf6 |
π FIX: retry crashed tracks and fail renders that lose one | 8,491 | +28 |
| Thu 24 Sep, 23:58 | 078552d |
π¦ NEW: block plugins by name | 8,463 | +47 |
| Thu 24 Sep, 23:58 | 2f68375 |
π FIX: catch garbage samples after effects, not just plugins | 8,416 | +10 |
| Thu 24 Sep, 22:52 | 4d49df0 |
π FIX: mute garbage samples from plugins | 8,406 | +28 |
| Thu 24 Sep, 22:38 | 57a6813 |
π DOC: release checklist with the local binary builds | 8,378 | 0 |
| Thu 24 Sep, 22:28 | 456e329 |
π FIX: put wine64 on PATH in the Wine smoke-test image | 8,378 | 0 |
| Thu 24 Sep, 22:28 | 0775b30 |
π FIX: release build paths for Windows, quiet GCC ABI notes | 8,378 | 0 |
| Thu 24 Sep, 22:28 | 6d4062b |
π¦ NEW: build release binaries for every platform locally | 8,378 | 0 |
| Thu 24 Sep, 22:28 | 30e7f29 |
π¦ NEW: Linux and Windows support | 8,378 | +300 |
| Thu 24 Sep, 21:52 | da93433 |
π¦ NEW: the /wavelength agent skill | 8,078 | 0 |
| Thu 24 Sep, 21:44 | a80b50c |
π¦ NEW: start 0.2.0-dev | 8,078 | 0 |
| Thu 24 Sep, 21:44 | eaf2da5 |
π RELEASE: v0.1.0 | 8,078 | 0 |
| Thu 24 Sep, 21:42 | 965c9e0 |
π FIX: options without a value are an error | 8,078 | +2 |
| Thu 24 Sep, 21:38 | 3511578 |
π¦ NEW: personal job defaults (defaults.json) | 8,076 | +20 |
| Thu 24 Sep, 20:56 | ea6ae28 |
π DOC: mastering, orchestral writing and listening lessons | 8,056 | +8 |
| Thu 24 Sep, 20:52 | 5380dac |
π¦ NEW: leadIn, silence before the song | 8,048 | +9 |
| Thu 24 Sep, 20:41 | d95d634 |
π IMPROVE: stage-gains reads any render folder | 8,039 | 0 |
| Thu 24 Sep, 20:29 | 392e1bf |
π¦ NEW: wavelength master, and a mastering example | 8,039 | +62 |
| Thu 24 Sep, 20:28 | 6c4a59c |
π¦ NEW: loudness target on the master | 7,977 | +37 |
| Thu 24 Sep, 20:27 | b4e2c33 |
π¦ NEW: multiband effect | 7,940 | +87 |
| Thu 24 Sep, 20:15 | a4ae8b0 |
π IMPROVE: audition tags, retag, retries; Serum 1 patches skipped | 7,853 | +32 |
| Thu 24 Sep, 19:14 | 6908aca |
π¦ NEW: sidechain audio into effects | 7,821 | +120 |
| Thu 24 Sep, 19:11 | b320ae2 |
π¦ NEW: builtin:audio, clips on the timeline with time stretch | 7,701 | +158 |
| Thu 24 Sep, 19:08 | 33de96f |
π¦ NEW: plugin tracks render in parallel worker processes | 7,543 | +154 |
| Thu 24 Sep, 18:44 | 36e3d28 |
π¦ NEW: wavelength audition, a sound index for presets | 7,389 | +308 |
| Thu 24 Sep, 18:33 | 616d683 |
π DOC: point at extract-embedded-presets, drop a stale converter note | 7,081 | 0 |
| Thu 24 Sep, 18:30 | a76b3c6 |
π¦ NEW: wavelength analyze | 7,081 | +342 |
| Thu 24 Sep, 18:28 | d7434b3 |
π FIX: compensate plugin latency | 6,739 | +24 |
| Thu 24 Sep, 18:17 | 296f480 |
π DOC: bring the README and CLI help up to date | 6,715 | +3 |
| Thu 24 Sep, 18:16 | a8cc503 |
π FIX: no unchanged-parameter warning for BBC SO instruments | 6,712 | +1 |
| Thu 24 Sep, 18:13 | f887215 |
π FIX: JSON output survives preset names that are not UTF-8 | 6,711 | 0 |
| Thu 24 Sep, 18:11 | 69196da |
π¦ NEW: Analog Lab V, AAS Player, MPowerSynth, Soundbox, DecentSampler presets | 6,711 | +298 |
| Thu 24 Sep, 18:04 | b9d336c |
π¦ NEW: extract presets compiled into JUCE plugin binaries | 6,413 | +8 |
| Thu 24 Sep, 18:00 | 67306ba |
π¦ NEW: Microtonic kits and drums, parameters as display text | 6,405 | +297 |
| Thu 24 Sep, 17:55 | 4a134c3 |
π¦ NEW: Guitar Rig 6 racks load by name, with licence checks | 6,108 | +96 |
| Thu 24 Sep, 17:53 | 2ddd063 |
π¦ NEW: Cherry Audio presets and SynthMaster NKS by name | 6,012 | +122 |
| Thu 24 Sep, 17:41 | 7a37fe2 |
π¦ NEW: Synplant patches load by name | 5,890 | +85 |
| Thu 24 Sep, 17:38 | 5eb59a5 |
π¦ NEW: NKS preset index and DX7 cartridges for Dexed | 5,805 | +285 |
| Thu 24 Sep, 17:00 | 8a161e3 |
π¦ NEW: Serum 2, Odin2 and u-he presets load natively | 5,520 | +376 |
| Thu 24 Sep, 16:38 | 423bb66 |
π DOC: note behaviour changes in the changelog | 5,144 | 0 |
| Thu 24 Sep, 16:35 | c5e7ccf |
π¦ NEW: modulation, routing, MIDI controllers and safer renders | 5,144 | +1,061 |
| Thu 24 Sep, 15:45 | ac6d60c |
π¦ NEW: builtin:sampler for Bitwig multisamples and drum kits | 4,083 | +692 |
| Thu 24 Sep, 15:28 | 25a1ca4 |
π DOC: drive plugins with compiled-in presets through JUCE state | 3,391 | 0 |
| Thu 24 Sep, 15:13 | 492751b |
π¦ NEW: Load CLAP factory presets by name | 3,391 | +256 |
| Thu 24 Sep, 14:12 | 0a5911f |
π¦ NEW: VST3 hosting | 3,135 | +705 |
| Thu 24 Sep, 13:00 | a5d2ae4 |
π¦ NEW: Wavelength headless music engine for AI agents | 2,430 | +2,430 |
What it can do
Read from the source rather than kept as a list: commands from the command line's dispatcher, effects from the effect factory, formats from the code that reads or writes them. The line in each box is its count over the same days as the chart above.
- Commands 24 5 at the first commit
- Built-in effects 28 11 at the first commit
- Built-in instruments 6 2 at the first commit
- Plugin formats 4 1 at the first commit
- File formats 16 1 at the first commit
- Preset file types 38 1 at the first commit
- Platforms 3 1 at the first commit
- Libraries it builds on 10 2 at the first commit
Release by release
Where each ability first shipped. Hover or tap one for the commit that brought it.
| Ability | In v0.1.024 Sep | New in v0.2.025 Sep | New in v0.3.026 Sep | New in v0.4.027 Sep | New in v0.5.06 Oct | New in v0.6.012 Oct |
|---|---|---|---|---|---|---|
| Commands24 |
|
|
|
|
|
· |
| Built-in effects28 |
|
|
|
· |
|
· |
| Built-in instruments6 |
|
· |
|
|
· | · |
| Plugin formats4 |
|
· |
|
· |
|
· |
| Audio files5 |
|
· |
|
· | · | · |
| Music files6 | · | · |
|
|
|
· |
| Sample libraries5 |
|
· |
|
· |
|
· |
| Preset file types38 |
|
· | · | · |
|
· |
| Platforms3 |
|
|
· | · | · | · |
| Libraries it builds on10 |
|
|
|
· | · | · |
Commands
| Command | What it does | First in |
|---|---|---|
wavelength plugins |
v0.1.0 | |
wavelength version |
v0.1.0 | |
wavelength state |
v0.1.0 | |
wavelength params |
v0.1.0 | |
wavelength render |
v0.1.0 | |
wavelength presets |
v0.1.0 | |
wavelength samples |
v0.1.0 | |
wavelength analyze |
v0.1.0 | |
wavelength audition |
v0.1.0 | |
wavelength master |
v0.1.0 | |
wavelength lint |
v0.2.0 | |
wavelength import |
v0.3.0 | |
wavelength export |
v0.3.0 | |
wavelength timeline |
v0.3.0 | |
wavelength serve |
v0.3.0 | |
wavelength picture |
v0.4.0 | |
wavelength docs |
v0.4.0 | |
wavelength mcp |
v0.4.0 | |
wavelength kit |
v0.4.0 | |
wavelength upgrade |
v0.4.0 | |
wavelength compat |
v0.5.0 | |
wavelength card |
v0.5.0 | |
wavelength stage |
v0.5.0 | |
wavelength loops |
v0.5.0 |
The engine, part by part
The C++ source grouped by what it does, largest first, with each part's growth over the same days.
-
Effects and instruments
Built-in effects, the drum machine, FX, sampler, SFZ, SoundFont and DecentSampler players, audio clips, the synth with GarageBand's synths re-created on it, and MIDI effects.
-
Files and formats
Audio files in and out, MIDI, MusicXML, DAWproject, Bitwig and GarageBand projects, Apple Loops and Logic patches, zip, XML and binary plists, all read with bounds checks.
-
Plugin hosting
Loads CLAP, VST3 and VST2 plugins and Audio Units, scans and caches them, drives them offline and tests them all (compat); installs free ones (kit).
-
Command line and MCP
The wavelength command: arguments, every subcommand, help, terminal output and the JSON report; the MCP server, the docs built into the binary and self-upgrade.
-
Render and mix
The job (with stand-in sounds for missing plugins), tempo and meter maps and automation, then the mix graph: tracks, sends, buses, master; staging faders by role and the track cache.
-
Songs
The song format: the manifest, revisions with undo and a musical diff, comments pinned to revisions, .wavelength packages and upgrades.
-
Presets and states
Finds presets by name in 20-odd formats and turns them into the state a plugin loads; audition indexes how they sound.
-
Review server
The local review page's server (wavelength serve): songs, previews and review comments, the Sounds page with plugins' own windows, and the riff library.
-
Measurement
Loudness (BS.1770), analysis of pitch, brightness and onsets, the harmony check, and the song picture for agents that can see but not hear.
-
Platform
What differs on macOS, Linux and Windows: folders, processes, libraries.
Every source file
Each rectangle is a file (its .cpp and .hpp together), sized by its lines of code and shaded by how many commits changed it: the stronger the blue, the more it has been worked on.
Every source file as a table (159)
| File | Part | Code | Comments | Commits | What it is |
|---|---|---|---|---|---|
serve.cpp serve.hpp |
Review server | 2,417 | 133 | 26 | `wavelength serve`: a local web UI for reviewing songs. |
alchemy.cpp alchemy.hpp |
Effects and instruments | 2,320 | 189 | 6 | GarageBand's Alchemy patches. |
main.cpp |
Command line and MCP | 2,134 | 81 | 117 | Wavelength, a headless music engine for AI agents. |
sampler.cpp sampler.hpp |
Effects and instruments | 2,079 | 148 | 33 | builtin:sampler: plays sample libraries without a plugin. |
logic_patches.cpp logic_patches.hpp |
Files and formats | 1,892 | 205 | 30 | GarageBand and Logic patches: a .patch folder holds one channel strip (.cst) per channel and data.plist. |
effects.cpp effects.hpp |
Effects and instruments | 1,878 | 127 | 42 | Effects: built-in DSP (deterministic, always available) and CLAP effect plugins. |
garageband.cpp garageband.hpp |
Files and formats | 1,632 | 173 | 30 | GarageBand projects (.band, GarageBand 10 for Mac). |
preset_formats.cpp preset_formats.hpp |
Presets and states | 1,444 | 98 | 21 | Converters from plugins' own preset files to the state their plugins load. |
synth.cpp synth.hpp |
Effects and instruments | 1,361 | 63 | 14 | builtin:synth: a virtual-analog polysynth inside Wavelength, so melodic parts render on a machine without any plugins (a fresh laptop, a CI runner, an agent's cloud⦠|
render.cpp render.hpp |
Render and mix | 1,291 | 83 | 54 | |
dawproject.cpp dawproject.hpp |
Files and formats | 1,064 | 68 | 11 | DAWproject import (the open project format Bitwig, Studio One and others export): the arrangement, tracks, notes, plugin states, mixer (volume, pan, mute, sends⦠|
platform.cpp platform.hpp |
Platform | 987 | 70 | 13 | Everything that differs between macOS, Linux and Windows: folders, child processes, loading plugin libraries, the main-thread event loop and leaving the process. |
job.cpp job.hpp |
Render and mix | 936 | 38 | 52 | A render job: the JSON document agents write. |
mcp.cpp mcp.hpp |
Command line and MCP | 848 | 23 | 13 | `wavelength mcp`: a Model Context Protocol server on stdin/stdout (JSON-RPC, one message per line), so Claude Desktop, Claude Code, Cursor and other MCP clients can⦠|
decent_sampler.cpp decent_sampler.hpp |
Effects and instruments | 822 | 61 | 1 | DecentSampler instruments. |
apple_keys.cpp apple_keys.hpp |
Effects and instruments | 782 | 168 | 4 | GarageBand's Vintage Electric Piano ("E-Piano" in channel strips), Vintage Clav ("Clav") and Sculpture settings, played on builtin:synth (garageBandSynthPatch() in⦠|
song_cli.cpp song_cli.hpp |
Songs | 763 | 13 | 13 | The song commands (docs/song-format.md): save, history, undo, redo, restore, diff, comments, riffs, pack, unpack, validate, migrate and fallbacks. |
au_plugin.cpp au_plugin.hpp |
Plugin hosting | 753 | 32 | 5 | Audio Unit (AUv2, macOS) implementation of the Plugin interface, on AudioToolbox's C API. |
vst3_plugin.cpp vst3_plugin.hpp |
Plugin hosting | 729 | 30 | 15 | VST3 implementation of the Plugin interface, built on the Steinberg VST3 SDK hosting helpers (module loading, PlugProvider, HostProcessData, EventList, ParameterChanges). |
midi_file.cpp midi_file.hpp |
Files and formats | 661 | 40 | 8 | Standard MIDI Files (.mid): import into a job, export a job's parts. |
preset_files.cpp preset_files.hpp |
Presets and states | 627 | 45 | 27 | Preset files on disk for a plugin, found in the standard preset folders (/Library/Audio/Presets/<vendor>/<plugin>, ~/Library/Audio/Presets/...) and a few known vendor⦠|
musicxml.cpp musicxml.hpp |
Files and formats | 573 | 24 | 4 | MusicXML scores (.musicxml, .xml, compressed .mxl; score-partwise) imported into a job. |
encode.cpp encode.hpp |
Files and formats | 558 | 22 | 3 | Delivery files next to mix.wav: MP3 (LAME, loaded at run time, or ffmpeg), FLAC (built in) and 16/24-bit WAV. |
package.cpp package.hpp |
Songs | 548 | 31 | 10 | .wavelength packages (docs/song-format.md, section 5): a song folder packed into a ZIP whose first entry is `mimetype`, and back. |
compat.cpp compat.hpp |
Plugin hosting | 536 | 27 | 6 | `wavelength compat`: a compatibility sweep over every installed plugin. |
apple_synths.cpp apple_synths.hpp |
Effects and instruments | 531 | 90 | 5 | GarageBand's Vintage B3, ES2, ES1 and EFM1 settings, played on builtin:synth (garageBandSynthPatch() in retro_synth.hpp finds the patch and its instrument). |
card.cpp card.hpp |
Measurement | 525 | 32 | 2 | Patch cards: how a preset sounds, for agents that can see images but can't hear. |
bitwig.cpp bitwig.hpp |
Files and formats | 517 | 38 | 3 | Bitwig Studio project files (.bwproject): the devices a DAWproject export leaves out. |
help.cpp help.hpp |
Command line and MCP | 515 | 14 | 25 | `wavelength help`: a short list of commands grouped by task, `help <command>` (or `<command> --help`) for one command's usage and details, `help all` for everything. |
harmony.cpp harmony.hpp |
Measurement | 489 | 45 | 5 | Harmony check for `wavelength lint --harmony`: the key in force at every bar (declared in the job's "keys", given with --key, or detected per section), the chord of⦠|
vst2_plugin.cpp vst2_plugin.hpp |
Plugin hosting | 460 | 14 | 5 | VST 2 implementation of the Plugin interface: loads a .vst bundle (macOS), .dll (Windows) or .so (Linux) through its VSTPluginMain entry, on Wavelength's own declaration⦠|
song.cpp song.hpp |
Songs | 458 | 33 | 10 | A song folder (docs/song-format.md): the manifest wavelength.json, the job and the files that belong to it. |
riffs.cpp riffs.hpp |
Review server | 435 | 35 | 2 | Riffs: short parts a person plays on serve's pages for an agent to build songs from. |
history.cpp history.hpp |
Songs | 432 | 32 | 4 | A song's revisions (docs/song-format.md, section 6): history/log.jsonl, one revision per line, and history/objects/<2>/<sha256>, each tracked file's content compressed⦠|
analyze.cpp analyze.hpp |
Measurement | 424 | 44 | 11 | Measurements an agent needs in place of listening: pitch, brightness, spectral balance, stereo image, onsets and the amplitude envelope of a stem, a mix or a window of⦠|
kit.cpp kit.hpp |
Plugin hosting | 422 | 21 | 2 | `wavelength kit`: a starter set of free instruments for machines without plugins (a cloud container, CI, a fresh laptop): GPL synthesizers downloaded from their own⦠|
midifx.cpp midifx.hpp |
Effects and instruments | 416 | 28 | 2 | A track's "midiFx": its notes through a chain of MIDI effects, in order, before anything else reads them (any instrument). |
dawproject_export.cpp |
Files and formats | 412 | 17 | 4 | DAWproject export: a job as a project a DAW opens with its plugins loaded (see dawproject.hpp). |
instance.cpp instance.hpp |
Plugin hosting | 399 | 27 | 9 | One plugin instance plus the host side it talks to. |
sf2.cpp sf2.hpp |
Effects and instruments | 389 | 20 | 2 | SoundFont 2 (.sf2) and its Ogg Vorbis compressed form (.sf3, MuseScore's): presets by bank and program, resolved into zones (instrument generators with the preset's⦠|
clap_plugin.cpp clap_plugin.hpp |
Plugin hosting | 382 | 6 | 13 | CLAP implementation of the Plugin interface (wraps Instance, the CLAP host side). |
retro_synth.cpp retro_synth.hpp |
Effects and instruments | 375 | 59 | 13 | GarageBand's and Logic's synth patches, played on builtin:synth: `"plugin": "builtin:synth", "preset": "Sweet Cream Synth Lead"`. garageBandSynthPatch() finds the patch⦠|
state_file.cpp state_file.hpp |
Presets and states | 362 | 35 | 22 | Plugin state files. |
migrate.cpp migrate.hpp |
Songs | 361 | 19 | 2 | `wavelength migrate <song>`: brings a song folder made before the song format (docs/song-format.md) up to it. |
catalog.cpp catalog.hpp |
Plugin hosting | 360 | 38 | 11 | Finds CLAP and VST3 plugins on disk. |
songdiff.cpp songdiff.hpp |
Songs | 347 | 12 | 7 | Two versions of a job compared as music (`wavelength diff`, docs/song-format.md): which tracks, bars, sounds and settings changed. |
audition.cpp audition.hpp |
Presets and states | 317 | 21 | 11 | The audition index: every preset of a plugin rendered once (C4 for one second) and measured, so an agent can choose sounds by what they sound like and knows each⦠|
arp.cpp arp.hpp |
Effects and instruments | 315 | 26 | 2 | A track's "arp": its held notes played as an arpeggio, before anything else reads them (any instrument). |
purge.cpp purge.hpp |
Songs | 306 | 25 | 4 | wavelength purge: gives back the disk renders take while every song stays playable. |
engine.cpp engine.hpp |
Render and mix | 305 | 37 | 23 | Running plugins (CLAP or VST3) over a whole timeline: instruments (notes in, audio out) and effects (audio in, audio out), with parameter automation. |
picture.cpp picture.hpp |
Measurement | 305 | 18 | 5 | A picture of a song, for agents that can see images but can't hear: the sections and bars, the mix's loudness over time with each section's level, its spectrum, and a⦠|
automation.hpp |
Render and mix | 294 | 33 | 8 | Breakpoint automation. |
fallback.cpp fallback.hpp |
Render and mix | 281 | 22 | 6 | Stand-in sounds for jobs that travel: a track's "fallback" lists other sounds (another plugin, builtin:synth, a sample library) that play its part when its own plugin or⦠|
builtins.cpp builtins.hpp |
Effects and instruments | 267 | 19 | 7 | Built-in instruments, used as `"plugin": "builtin:drums"` or `"plugin": "builtin:fx"`. |
microtonic.cpp microtonic.hpp |
Presets and states | 260 | 19 | 3 | Sonic Charge Microtonic kits (.mtpreset) and drums (.mtdrum), via the plugin's own text parser. |
clips.cpp clips.hpp |
Effects and instruments | 256 | 18 | 5 | builtin:audio: audio files placed on the timeline in beats, with pitch-preserving time stretch (Signalsmith Stretch), transposition, reverse, trimming and fades. |
audio_file.cpp audio_file.hpp |
Files and formats | 256 | 15 | 4 | Audio files in: WAV, AIFF/AIFC, CAF, FLAC, MP3, Ogg Vorbis and M4A, told apart by their contents (not the extension). |
stage.cpp stage.hpp |
Render and mix | 231 | 12 | 1 | Gain staging: each track's fader from its stem loudness. |
apple_loops.cpp apple_loops.hpp |
Files and formats | 219 | 21 | 1 | Apple Loops: the loops GarageBand and Logic install in /Library/Audio/Apple Loops (and the user's own in ~/Library/Audio/Apple Loops). |
sfz.cpp sfz.hpp |
Effects and instruments | 218 | 7 | 2 | SFZ instruments (the open text format for multisampled instruments): the file's headers flattened into one opcode map per <region> (control -> global -> master -> group⦠|
self_upgrade.cpp self_upgrade.hpp |
Command line and MCP | 188 | 11 | 1 | `wavelength upgrade`: replaces this binary with the latest GitHub release for this platform, checked against the release's SHA256SUMS.txt and run once before it takes⦠|
track_cache.cpp track_cache.hpp |
Render and mix | 188 | 19 | 3 | render --cache: each track's audio after its effects and before its fader, kept between renders and reused when nothing that shapes it has changed. |
parse_check.cpp parse_check.hpp |
Files and formats | 187 | 5 | 1 | `wavelength __parse <format> <file>...` (internal): one file reader over each file, a JSON line per file. |
term.cpp term.hpp |
Command line and MCP | 183 | 15 | 2 | Terminal styling for people, invisible to agents: colours, symbols and a progress line appear only when the stream is a terminal, NO_COLOR is unset, TERM isn't "dumb"β¦ |
zip.cpp zip.hpp |
Files and formats | 175 | 8 | 6 | Minimal zip reader (stored or deflated entries, no zip64): Bitwig .multisample instruments and DAWproject files are zips. |
presets.cpp presets.hpp |
Presets and states | 175 | 7 | 2 | CLAP preset discovery: lists a plugin's presets (its built-in banks and preset files) through the plugin's preset-discovery factory, and resolves a name to a loadable⦠|
bplist.cpp bplist.hpp |
Files and formats | 174 | 10 | 4 | Binary property lists ("bplist00"), read on any platform: Apple keeps small settings in them inside channel strips and presets (the Arpeggiator's rhythm grid). |
xml.cpp xml.hpp |
Files and formats | 171 | 5 | 3 | A small XML reader for project and score files (DAWproject, MusicXML): elements, attributes and text content, entities decoded; comments, processing instructions and⦠|
plugin.cpp plugin.hpp |
Plugin hosting | 159 | 38 | 14 | A hosted plugin, independent of its format (CLAP or VST3). |
loudness.cpp loudness.hpp |
Measurement | 155 | 14 | 6 | Integrated loudness per ITU-R BS.1770-4 / EBU R128 (K-weighting, 400 ms blocks with 75% overlap, absolute gate at -70 LUFS, relative gate 10 LU below the ungated mean). |
wav.cpp wav.hpp |
Files and formats | 130 | 6 | 6 | |
canvas.hpp |
Measurement | 118 | 8 | 1 | Drawing for the PNG pictures (song pictures, patch cards): an RGB canvas with coverage-shaded rectangles, the web UI's JetBrains Mono (ASCII subset, built into the⦠|
editor_window_mac.mm |
Review server | 102 | 3 | 1 | editor_window.hpp on macOS: an NSWindow per plugin editor. |
review.cpp review.hpp |
Songs | 98 | 9 | 2 | Comments on a song (review.json, docs/song-format.md section 7): each keeps an anchor to what was heard (the revision and render that were playing, the bars, time and⦠|
dsp.hpp |
Effects and instruments | 96 | 6 | 3 | Small DSP building blocks shared by the built-in effects and instruments. |
meter.hpp |
Render and mix | 96 | 7 | 1 | The song's meter: "timeSignature" [3, 4] from bar 1, and "meterChanges" [{"bar": 9, "sig": [4, 4]}] from the bars they name. |
docs.cpp docs.hpp |
Command line and MCP | 91 | 5 | 1 | The agent docs built into the binary (AGENTS.md, docs/job-format.md, docs/effects.md), so an agent with only the executable, or connected over MCP, reads the guide that⦠|
vst2_abi.hpp |
Plugin hosting | 90 | 10 | 1 | The VST 2 plugin binary interface, declared from its publicly documented layout so Wavelength can host VST 2 plugins without Steinberg's (withdrawn) VST 2 SDK. |
bundle.cpp bundle.hpp |
Plugin hosting | 82 | 3 | 5 | A loaded .clap bundle: the shared library, its clap_entry, and the plugin factory. |
sha256.hpp |
Songs | 82 | 3 | 1 | SHA-256 (FIPS 180-4): names song history objects and checks the files a manifest lists. |
sounds.cpp sounds.hpp |
Review server | 81 | 12 | 1 | Sounds: `sounds.json` beside a job (docs/job-format.md, "Sounds") gives tracks their instrument (plugin, preset, state, params) on top of whatever wrote the job, the way⦠|
audio_codecs.cpp |
Files and formats | 64 | 1 | 1 | dr_flac, dr_mp3 and stb_vorbis compiled into Wavelength (their warnings are silenced for this file). |
editor_window.cpp editor_window.hpp |
Review server | 27 | 10 | 1 | A desktop window that holds a plugin's own editor (serve's "Plugin window"): the plugin attaches its view to the window's content view. macOS only for now (an NSWindow⦠|
tempo.hpp |
Render and mix | 23 | 4 | 5 | Beats <-> seconds through a tempo map. |
bytes.hpp |
Files and formats | 16 | 5 | 1 | Bounds checks for readers of files from anywhere (songs, packages, projects, presets): sizes and offsets read from a file can be anything, so `at + len <= size` must⦠|
image_codecs.cpp |
Measurement | 4 | 2 | 1 | stb_image_write (PNG out) and stb_truetype (text in pictures) compiled into Wavelength (their warnings are silenced for this file). |
Around the engine
The rest of the repository, and the commits that built it.
What the repository holds
Lines in each kind of file, blank lines left out.
What the commits were
By their Emoji-Log prefix.
When they were made
Commits by hour of the day, in the committer's time (UTCβ4).
Measured from commit 811d6fb of the engine's repository, 12 October 2026 at 23:13. Only committed work counts.