Mod

Schwung

Rising53/100

Open framework that adds synths, effects and tools to Move.

forAbleton Move·by@charlesvestal

Unclaimed. Is this yours? Sign in with GitHub as @charlesvestal to claim it.

Downloads
0
Stars
499
Forks
83
Commits
3,276
Last commit
Download v1.8.2

schwung.tar.gz· 23 MB

Custom license· charlesvestal/schwung·downloads come from the creator’s GitHub releases

2,963
Commits
100
Releases
2,963 commits and 100 releases in the last year
Activity · last 12 months
100 releases
  1. v1.8.2Latest1 file
    • Automation and p-locks could stay unavailable for a whole session ("Not locked: Move's song not readable"): Schwung's reader of Move's song gave up after about 100 seconds if it could not connect at boot, and could lose the song for good after switching sets. It now keeps trying once a minute and searches all of Move's memory, so it reconnects without a restart (#678)
    • move_model_status.txt (Files → schwung) now names exactly what is missing when the reader cannot connect, and where it found things when it can — attach it to any report about automation or p-locks
  2. v1.8.11 file
    • External MIDI notes (e.g. a USB sequencer like the OXI One) no longer register as held step buttons, so turning a knob while one plays no longer writes a p-lock or shows "Not locked" (#676)
    • A refused p-lock now says what is actually missing — "no clip on this track" or "Move's song not readable" — instead of always "new clip, try again in a moment" (#676)
  3. v1.8.01 file
    • Master FX: "My Presets" page on each of the 8 Master FX positions — save, load and delete per-module presets, remembered per set (#661)
    • Send FX: the same "My Presets" page on the 8 positions of Send A and Send B, remembered per set (#673, thanks @jorgeuribera)
    • Remote UI: load modules into slots, Master FX and Tool from the browser (#638); see every chain position, and module loads finish on the device's own load state (#669); loads the server did not offer are refused, line-in included (#666)
    • Mirror: a fading finger shows each control as it is used (#631)
    • get_bpm() holds a steady tempo while Move plays
    • Knob grid: integer knobs with 17-48 values step at 4 detents per value, like a selector (#622, #624); turning a gating enum no longer re-plans the grid on every write (#657); module widgets load in Master FX, the sends and buses (#640); list-shaped bodies stay inside the caller's area (#652, #663); a null in knobs[] is an empty knob (#625)
    • Modules that draw their own screen get the buttons they claim (#633)
    • Opt-in per-knob filter for an encoder that reports counts backwards (#658)
    • Standalone tools: one launch at a time, a tool launch is no longer counted as a failed boot, and the launch lock lives in /dev/shm (#641, #664); open_tool_cmd launches a tool the way the Tools menu does (#635)
    • Speaker EQ emulation moved into host/speaker_eq.c (#642)
    • Fixes: a bracket inside a name no longer cuts off shadow_config.json (#667); a Remote UI "viz": false no longer empties a module's chain_params (#623); install.sh reports a root SSH failure instead of a fake full disk (#650)
    • Catalog: adds Bloom, Concat, Tenebrae, TinyPro5, TinyVoice, Gresil, Model-72, Viz, Shimwash, Clementine-XT, Strut, TinyK, SetBfree, Quilt and Stereoid; dAVEBOx replaced by dAVEBOx SA
  4. v1.7.31 file
    • Play/Pause resumes instantly. A slot paused for more than about a second came back 0.1–0.5 s late, by an amount that varied with the pause, so it felt like the press hadn't landed and a second press paused it again. A parameter write now wakes the slot immediately, as MIDI already did. Fixes Radio Garden 0.3.0's Play/Pause; any module that starts sound from a parameter benefits. (#620)
    • A knob trigger fires once per touch. Turning a trigger knob slowly while holding it could fire it twice — pause then resume on a toggle. A held knob is now one gesture; letting go and turning again fires again. (#620)
    • Step menu on Drum Rack tracks shows and edits only the selected pad. (#619)
  5. v1.7.21 file
    • Chance follows the knob when you turn it fast. A quick spin moved chance one step per jog message, a fraction of the turn, so the value lagged your hand and seemed to snap back. It now moves as far as you turn. (#616)
    • Each note on a step follows its own condition. Notes on one step shared a single play/skip decision so chords drop together, but that decision ignored differing conditions: a hi-hat at 4:4 beside another voice at 1:5 played on the first pass. Notes now share a decision only when their conditions match. (#617)
  6. v1.7.11 file
    • No more clicks on Move tracks with Move→Schwung on. Move's track audio sometimes reached Schwung with two packets swapped, which played as a 3 ms glitch on that track. Schwung now puts them back in order. (#614)
  7. v1.7.01 file
    • The step menu works again on Move 2.1.1 and later. Move 2.1.1 changed how notes are stored, so holding a step and pressing Menu showed "No note" on every step and you couldn't set chance or conditions. Schwung reads the new format, and if a future Move firmware changes it again, the menu says "Can't read" instead of "No note". (#611)
    • No more audible hiccup when you pick a module. Loading a synth, effect or MIDI effect no longer happens on the audio thread. A swapped module fades out and in on its own, so the rest of the track, including reverb tails, keeps playing. (#605)
    • Updating a module from Schwung Manager can no longer crash Move. Updates install by replacing files rather than writing over a module Move is running. A module already loaded since Move started runs its new version after a restart, and the manager says so. User files in a module's folder (ROMs, samples) are kept. (#474, #607)
    • Switching sets no longer risks saving one set's modules into another. Each slot is checked against its saved state after a set switch, and autosave won't save a slot that still holds the previous set's modules. (#609)
    • Move no longer logs an "audio dropout" 43 times a second while the resample bridge is on. With nothing playing, the bridge handed Move pure digital silence, which Move counts as a dropped input block, writing about 200 KB of log a minute to the device. Silent blocks now carry inaudible dither. (#612)
    • New in the catalog: Elusive Muse, Move Bitwig Controller, OKTONIK.

    Module updates released alongside: JE-8086 0.5.6 (no dropout on set switches, memory leak fixed), Multisampler 0.6.6 (no stall when loading an instrument), Mini-JV 0.6.2 (memory leak fixed). Dexed, OB-Xd, NAM, Key Detect, Osirus, Performance FX and Stretch now unload completely, so an update takes effect without restarting Move.

  8. v1.6.31 file
    • A module loaded into Send A/B now opens its editor, as it does as a slot or Master FX insert (#601)
    • Module-drawn pages can open the on-screen keyboard and open a file in a Tool (ctx.openTextEntry, ctx.openFileInTool) — used by Webstream 0.5.0's browse page (#600)
  9. v1.6.21 file
    • Co-run tools (dAVEBOx, OKTONIK Lab): knobs on a synth/effect grid now edit the visible parameter instead of slot macros, and Back closes a Global Settings overlay correctly (#592, #594)
    • The knob card no longer sticks after dismissing the Schwung UI with a knob held (#595)
    • The knob card shows its 4-up row for modules without a ui_hierarchy, e.g. 9W9 (#596)
    • Module-drawn pages can come first in a module (page_first) and stay live without a knob (#597, #598) — used by Radio Garden 0.3.0
    • Duplicating a set copies all of its Schwung state (#589)
    • Step chance matches through slot transpose (#588)
    • Idle chain slots wake on MIDI Start/Continue (#586)
    • Manager: custom GitHub installs understand multi-module release.json (#587)
  10. v1.6.1Schwung v1.6.11 file

    Schwung v1.6.1

    • step editor available when Schwung UI is up, as well
    • internal mixing is now done at 32-bit to prevent clipping
  11. v1.6.01 file

    Schwung v1.6 the "finally" release

    :railway_track::control_knobs: Track Automation

    • Schwung tracks can now have automation. Turn a knob while the transport is recording, and it will record your movements.
    • Hold a step and turn a knob, and it will p-lock on that step
    • Hold a step, hold delete and touch that knob to delete its automation, or clear from the slot settings.
    • Automation is associated with clips, all the copy / paste / dupe / etc should work as you expect

    :octagonal_sign::level_slider: Scenes and Morphing Crossfader

    • A new "Scenes" page accessed with shift+step3 hold (or shift+vol+step3 allows for setting up 16 A and 16 B states with 16 scenes of A/B pairs
    • Hold a scene to enter edit mode, go move some knobs, come back and tap again to exit
      • Or use global shift+down (Scene A) or shift+up (Scene B) mode switches to edit from anywhere
    • Transition between the scenes with the jog wheel on the scenes page, map to an external CC
      • or use a global shift+volume shortcut for a built-in Octatrack-style scene crossfader

    :bar_chart::game_die: Step Editor with Probability

    • Hold a step and press "Note/Session" to bring up the step editor
    • Set Probability (%, or modulo A:B) with jog, press "Note/Session" to navigate to length and velocity
    • Probability is ignored by Move synths

    Also:

    • Schwung now reads Move's own song live. This means we have removed lots of guesswork on things like mute/solo state and volume control
    • Modules now have access to things like groove, transport state, key, tempo, etc from the live document state
    • Screen mirroring now includes a device dupe for seeing LEDs and touches, as well as the ability to record (with audio) or save a screen capture
    • Volume controls are all now smoothed
    • Better recovery from link audio discontinuities
    • File pickers and LFO targets now can be scrolled through with a knob turn in addition to the jog click entry
    • A few fixes around midi channel declaration, drum module pages, standalone tool handoff and other small updates
  12. v1.5.01 file

    Headline: control surfaces

    • OXI E16 and Faderfox EC4 as full surfaces. Their knobs edit what you're looking at, with names and values on the device's own screen. Choose it in Global Settings → Surfaces. (#544; EC4 support by legsmechanical, #539)
      • Three layouts per device. Map shows 16 parameters with a slot map on Shift. Knobs gives 8 parameters plus labelled navigation. Custom is your own pages, learned on the device and saved per Set.
      • A Mixer on a Shift tap: level, mute, solo, pan, sends, returns, Skipback and a master DJ filter.
    • A CC map for any controller. Press Shift+Vol+Sample, move a parameter, then move a knob. Bindings are saved per Set. Per-pad drum parameters can be learned too.
    • A new Controls page in Schwung Manager edits the custom pages and the CC map from the browser.

    Also new

    • Slot mute and solo follow Move's track. This works live, and at boot and Set load too (#540).
    • Module picker: Sort by Type groups modules under their category (#538).
    • Manager module filters: narrow by Category, then Type, then Tag (#486).
    • Enterable module screens. A module-drawn page can be navigated, and Back climbs out one level at a time (#520, #534). A module's own mode can choose which pages show (#533).
    • DR32's envelope picture follows its A-H-D / A-S-R switch (#545). This needs the matching DR32 update.
    • Ten new modules in the catalog: DrumRack32, Bus Driver, Sophie, Bouba-Kiki, Acid, Kit Builder, Loopex, Trance Gate, CHONK, SIMIAN and Piano Practice.

    Fixes

    • Resample on Mix with a Line In slot no longer feeds back (#547).
    • Line In is no longer gated after a second of silence (#515).
    • Schwung Manager:
      • An out-of-date saved catalog could offer a host downgrade. It no longer does, and it now says when it's offline (#505).
      • Check for Update really checks now (#506).
      • Beta channels are off unless enabled (#537).
      • The Platforms tab is removed (#546).
    • Remote UI: module panels open unfolded, and extra values stay live (#516, #517).
    • Knob pages:
      • Faster re-planning (#465, #519).
      • Filter and LFO pictures are corrected (#511).
      • My Presets and Module pages now appear on module-drawn grids (#396, #400).
    • Release package: licence texts ship in the tarball (#507).

    Removed

    • Automation lanes are off main for now (#528). The work continues on a branch.
  13. v1.4.01 file

    Boot targets, from the web UI

    Anything Schwung Manager installs can now register a boot-selector target — and loses that row again when it is uninstalled. Until now the only way into the boot registry was a human with an SSH session.

    A payload declares one block in its manifest:

    "boot_target": { "name": "V", "exec": "entry.sh" }
    

    exec is relative to the payload's own directory; the manager composes the absolute path and owns the registry entry. Two payload shapes are supported: an ordinary module that ships a binary, and a new platform — an alternative firmware with no module in it, installed to /data/UserData/platforms/<id>/ from a new platforms[] catalog section, with the same update detection modules get.

    Installing can add a picker row; it can never cause that row to boot. The boot default changes on explicit user choice only — the new Boot page, or the picker at boot.

    The Boot page

    Global Settings' web counterpart: every row the picker will show, where it came from (module: …, platform: …, or installed manually), a warning when its entry script no longer resolves, and a radio to set the default. The picker holds 14 targets beside Stock and Schwung, and the page says how many are registered — registration past the cap is refused rather than silently dropped.

    Third-party targets are safe

    Registry entries the manager writes carry an owner, and it rewrites or deletes only entries whose owner it recognises. A target you installed by hand is never touched, and neither is Schwung's own. The one exception is a deliberate migration: an unowned entry whose entry script lives inside the payload that now declares it is adopted, so modules that used to register themselves over SSH converge on a row the manager can clean up.

    Also in this release

    • Spkr EQ setting — Auto / Off / On (#479)
    • A pad block could outlive the component UI that raised it (#476)
    • Catalog: MonkSynth, Pixel Walkers, Overwork Mix, Maze Voice

    Fixed along the way

    • A module installed with component_type: utility (or none) landed in a directory that findModuleDir, discoverInstalledModules and the Remote UI's findModuleWebUI all failed to look in — three copies of one list, all with the same hole. Its Remote UI never appeared.
    • docs/BOOT_TARGETS.md said three failed boots in one section and two in another; the watchdog does three.
    • CI could be broken for the whole repo by a third-party apt repo on the runner image.
  14. v1.3.31 file

    Fixes a long-standing bug where the pads stopped responding inside the Schwung UI while continuing to work on Move's own tracks — reported as intermittent and unreproducible, present in 1.3 and earlier.

    • Pads no longer go dead after visiting a module's editor. A module can take the pads for its own gestures (9W9 uses them for Shift+Pad lane select) and releases them from its own tick, which only runs while its editor is on screen. Leaving that editor by any route other than Back stopped the tick with the pads still taken, and nothing left could give them back. The flag also survived a Move restart, so the symptom could outlive anything you remembered doing — one device had it stuck for 13 hours.
    • The release is now stated as an invariant checked every frame rather than a list of exits, so it covers dismissing, switching slots, Global Settings, Master FX, Tools, co-run, and both Keep Schwung settings.
    • The shim additionally releases the pads whenever the Schwung UI closes, and clears the flag at startup so an already-stuck device recovers on its next restart.
    • Modules keeping their own copy of this state no longer need one: the host call is now idempotent and checks the live value.

    New regression test tests/host/test_pad_block_lifecycle.sh. Verified on hardware.

  15. v1.3.21 file

    Hotfix for USB-C audio routing.

    • Removes Schwung’s USB-C Persist setting and disables its boot-time XMOS replay. That replay could leave the Move speaker muted or send the microphone over USB-C while Main Out was selected.
    • USB-C output routing is now owned exclusively by Move’s Settings. If Move reports the wrong source, toggle its USB-C output setting away and back.
    • Existing saved persistence values are retained for rollback compatibility but ignored by 1.3.2.
  16. v1.3.11 file

    A single fix on top of 1.3.0.

    A module widget whose canvas.js failed to load was recorded as loaded (#472)

    If a module's widget script failed to load even once, its knobs drew ordinary dials from then on — and the only thing that restored them was opening a different module and coming back.

    The host set the "this module's widgets are loaded" latch before the three steps that can still fail: resolving the module's directory, reading its canvas.js, and registering the widget. So a failed load ended up in exactly the same state as a successful one, and every later attempt was refused as already done. Nothing was logged, because falling back to a built-in dial is normal, correct behaviour for a module that simply has no widget.

    Now a failed load is its own state and is retried when you leave the page and come back — the same gesture that already worked, but it no longer requires visiting an unrelated module to stumble into it. A module that declares no widget, or whose script loads but declares nothing usable, is treated as finished and never re-read, so nothing is re-parsed on a loop. Every way this can end now says so in debug.log, including a module directory that could not be found — which previously returned in silence and looked identical on screen to a module with no widget.

    Verified on hardware by forcing the failure and repairing it.

  17. v1.3.01 file

    New:

    • Sends! On Master FX, you'll see Send A and Send B buses. Add FX there, and then send to them from your slot settings
    • Buses! Modules can declare certain voices available to send to buses, so you can have additional FX chains on slots (think per-drum buses). Nothing does this yet, watch this space.
    • Boot menu: when booting schwung lets you choose between Schwung or Stock Move. This gives a fallback if there's ever a problem, and opens up for more standalone experiences (auto-boot to dronage on your dronage tombstone machine)
    • A module can be told when you actually press a pad, so the page follows the pad you hit rather than the notes a running clip plays.

    New module dev features:

    • Modules can implement send controls to send whatever sub-mix they want
    • Modules can also declare default buses and auto-create them (think ableton drum bus). Watch this space.
    • Custom widgets and custom fullscreen UI are available more consistently
    • Modules can declare built-in fx modules to ship with, and name a factory preset rather than only parameter values
    • Modules can declare module dependencies to auto install them
    • Modules can claim copy/delete/undo gestures — hold Copy, tap pads, they take the source pad's sample and settings. Nothing declares it yet.
    • Modules can claim buttons or CCs and grab them instead of passing them to Move
    • Parameter contracts can be 128k
    • Logging for slow parameters to report problems in the future

    Fixes:

    • Cleaned out module store cruft from settings — Global Settings is six sections now, and System → Web Manager shows this Move's IP and a QR code to open the manager on your phone
    • Resampler pre-roll trim now runs — takes no longer start on the count-in
    • step+volume no longer tracks master volume when editing velocity
    • visible_if now working for conditional pages
    • Fixed knobs restoring the previous initial value when changing presets
    • One module without a custom widget no longer wipes every other module's widgets until reboot
    • Time driven midi fx no longer freeze on silent slots
    • Module state survives reboots
    • Wave editor can read 24 bit wav and aiff
    • install.sh can roll back to previous releases
    • Enum lists no longer blank the screen to spell out a value the row already prints in full

    Catalog: Hank, a 2-operator FM synth on eight knobs. Velocity Scale is no longer bundled — it's a catalog module now, so it updates on its own schedule.

  18. v1.2.01 file

    Schwung v1.2.0

    • State snapshot and recall — Shift+Copy saves a snapshot of your set's parameters, Shift+Delete brings it back. Super fun for mangling sounds and then reverting as a drop. Recall can be quantized to the next beat, bar or 2 bars (Global Settings → Shortcuts → Recall Q) so the revert lands in time. The snapshot belongs to the set and re-seeds when you load one, so you can always get back to how a set started.
    • Save stems in the Quantized Sampler and Skipback. Off by default — turn it on in Global Settings → Audio → Save (Master / Stems / Both). One file per slot, plus a Move stem when Move→Schwung is off. Empty slots write no file.
    • Song Mode renders its output, including stems if the above is turned on. The Record row names the mode when it isn't Master.
    • Move→Schwung now has a metronome if you turn it on — Global Settings → Audio → Metronome: Follow (tracks Move's own metronome button), On, or Off, with Click Vol for level. It plays on the speakers only, never into a recording.
    • Long press to toggle between the Schwung and Move layers — hold a Track button either way. The Move track follows the slot, so you land where you were working.
    • Tapping a Track button now keeps you in Schwung and switches to that slot (Global Settings → Display → Keep Schwung, default on). Set it to Exit for the old behaviour; Shift+Track and Note/Session still hand the screen back.
    • The web manager has a CPU monitor under System, to see what's using resources — per-module share of the audio frame, plus per-process CPU. Polling is a button, not always-on.
    • New in the module store — JE-8086 (Roland JP-8000 emulator), Maze, and Maze Lite.

    Fixes

    • External encoders work properly again. Relative CC decoded only ±1, so accelerated encoders (OXI E16 and most endless controllers) lost every fast turn — a control that worked when you crept it and died when you played it. Enums now advance by how hard you turn, too. Move's own knobs behave identically to before.
    • Two-value switches are clockwise-on, not a toggle — turning an already-on switch on leaves it on. Boxed two-value choices still flip either way.
    • Forward channel "Auto" asks the module each time instead of being converted once at load. This is what kept the JP-8000's arpeggiator silent on an Auto slot.
    • Move's tracks no longer drift 85 ms late after loading a module with Move→Schwung on. Previously the only cure was toggling Move→Schwung off and on.
    • Preset names refresh when you change bank instead of showing blank or stale.
    • Tool time estimates read the module's declared processing ratio, so a Stems separation that takes 2m20s no longer says "about 1m 15s".

    New module contracts for developers

    • Modules can declare a surface type — drums vs chromatic — plus their voices and which one is focused. Schwung then shows a pad map in the header and follows the module's focus across parameter pages.
    • Modules can draw their own custom widgets (one knob cell) and overlay cards (a picture that floats over the page while a knob is held).
    • Both draw into a frame they are given rather than the screen, so a module's pages also work inside another host's chrome. The enum peek is now part of the shared library, so a module hosting its own param pages gets it for free.
    • src/modules/audio_fx/widget-test/ is a working example of all three module draw surfaces.
  19. v1.1.11 file

    Module lists

    • Add to List on a module's Module page files it into Favorites or a list of your own. Click a list to add or remove; New List… opens the on-screen keyboard.
    • Edit Lists… renames, clears or deletes a list. Favorites can be cleared but not renamed or deleted.
    • The Swap Module picker gains a List row on top — click it to cycle All → each of your lists, showing only the modules in the one you land on. Lists are global, so a picker only offers lists holding something it could actually load.
    • The filter sticks as you move between positions, and falls back to All (telling you so) if it would show nothing.

    Help

    • chord, arp, freeverb, linein, rnbo-runner and chain ship help for the first time — all six had no help.json at all, so their Module page offered no Module Help row.
    • Reflowed 13 lines in song-mode and file-browser that ran past the width the help viewer actually has and were silently losing their tails on the device.

    Fixes

    • The membership screen's footer dropped its primary action: drawFooter discards a hint pair that does not fit, silently and along with every pair after it.
    • A rejected list name now reopens the keyboard with your text intact — reopening from inside the confirm callback could never work, because the keyboard closes itself after the callback returns.
    • A failed write is no longer announced as a success.
    • drawChainPicker now delegates to the shared list drawer instead of carrying its own copy of the picker rectangle.

    For module authors

    tests/host/test_builtin_help_content.sh fails on a help.json the loader would silently discard (no top-level children), on lines past the pixel budget, on a missing file, and on non-ASCII. Worth mirroring if you ship help: a wrong-shaped file is indistinguishable from shipping none, which is how 13 modules came to carry documentation nobody had ever read.

  20. v1.1.01 file

    Correctness

    • An enum wrote the wrong value. formatParamForSet resolved an enum by matching against option text before reading the value as an index, so an index whose numeral appeared among the options was written as that option's position instead. Measured across the fleet contract, 40 params were affected — minijv's four LFO offsets, v_octave, transpose, the chord_pc_* family. Silent, because the cell went on showing the value the grid believed it wrote. (#376)
    • A readout looked exactly like a control. A param declared access: "read" is telemetry, and the input layer already knew — but the draw layer never consulted readOnly, so it rendered as something you could reasonably expect to change. Readouts now wear a dotted stroke, once per cell, wherever that cell's stroke already lives. Affects keydetect, gesture-test and 4K EQ. (#377)
    • midi_inject_to_move preserves the cable nibble, and cable 2 goes out USB-A. (#375)
    • SysEx out: a packet that does not fit is delayed rather than destroyed (#364), a chain slot can receive SysEx if it asks (#367), and a payload of three zero bytes is no longer dropped (#355).
    • LEDs: the overtake queue never acknowledged what it accepted, so a dropped LED was permanent rather than a flicker. (#366)
    • A chain slot clear now clears knob mappings, not just LFOs/FX/synth. (#345)
    • A plain get_param answers the base while a mod source drives the key. (#351)

    For module authors

    • The knob grid is embeddable. movyBandLayout() places header / bank bar / body / footer into a rect and lets a caller take any subset; an omitted band closes the stack up rather than leaving a hole. A tool can now keep its own chrome and host the real grid instead of writing a second one. (#373)
    • A footer hint can pin left when something else owns the right edge. (#374)
    • Modules can be filed into lists, with the swap picker filtered by list. (#378)

    UI

    • A module's help is a jog away from its knobs, and the viewer stopped looking like two screens. (#372)
    • Back out of Global Settings returns to the Tool it was opened over (#352); Back from the Knob Editor restores the grid rather than the legacy list (#346).
    • The file browser's Play waits for the wav-player DSP instead of losing the file. (#353)
    • Move's selected track follows a track long-press slot switch. (#350)
    • Envelope viz: a release role is evidence of a sustain stage, so A/D/R is no longer drawn flat. (#360)

    Manager and catalog

    • Installing from the list keeps you on the list, with your filter and a toast. (#357)
    • A Master FX position can show its own web_ui.html. (#363)
    • Added CW-78 and Wayward; corrected default_branch for fork and noisemaker.

    Module authors: if you declare an enum whose options are bare numerals, #376 changes what gets written — it is now correct. If you worked around it by padding the option text, that workaround can come out.