Contributions to impulse-tracker

Pulled 2026-06-01 from https://github.com/esaruoho/impulse-tracker and the local clone at /Users/esaruoho/work/impulse-tracker.

Summary

Merged pull requests

#DateTitle
#12024-06-17yep

Local commits

Authored on /Users/esaruoho/work/impulse-tracker. Some commits are squashed into the PRs above when they land upstream.

DateSHAMessage
2026-06-0184c7e1bbuild.yml: guard 'ls IT.EXE it.exe' with \\true so bash -e does not abort before the driver count
2026-06-013e49ca3gitattributes: renormalize ASM/INC blobs to valid UTF-8 (clears checkout encode errors)
2026-06-011c4ca74CI: build.yml now uses TLINK 3.01 + gates on driver count; release zip forces CRLF
2026-06-0153fa15drelease.yml: pin version to v2.354, stamp with date (v2.354-YYYY-MM-DD)
2026-06-0187cc192release.yml: one-click auto-incrementing release button
2026-05-297e3620aMultitimbral MIDI-in (2/2): live any-screen routing of incoming notes
2026-05-2910c837bMultitimbral MIDI-in (1/2): per-instrument MIDI-in channel + Shift-F4 batch-create 16
2026-05-205260c3dSKILL.md: bump 1.1.0 -> 1.3.0 (Multi-WAV + Condition 11 + F12 pickers)
2026-05-200a9fa2dREADME: document Multi-WAV + Shift+Alt Condition 11 + F12 pickers + F10 WAV/MWAV
2026-05-209fb5ac1Multi-WAV (Shift-Alt-M + F10 MWAV) + F10 WAV button + Shift+Alt keymap condition
2026-05-204eee4f8F11 clone auto-insert, runtime status messages, F12 dir pickers, crash hunt
2026-05-19591523cItems 3+8+10+11: full WAVDRV checks, PATLOG.TXT, IT.TXT fork docs, safe-build.sh
2026-05-19f401e39Ctrl-O robustness: size= field, START log, 0-byte cleanup, 32K rotation, WAVDRV header-write check
2026-05-19b72f541Ctrl-O: persistent CTRLOLOG.TXT in render dir, no more reading markers off CRT
2026-05-194ae100eCtrl-O bad-WAV-header: null-terminate filename + per-check info-line msg
2026-05-196e15aa7F11 clone/extend crash fix + README docs update
2026-05-195ece809BACKLOG.md: deferred items moved to Implemented (068648f)
2026-05-19068648fF2-F2 pattern length persists; M flag persists; both in IT.CFG ext block
2026-05-19ecc745bBACKLOG.md: living brainstorming surface for "what I want for this tracker"
2026-05-1990cfd04F11 cursor-key edge gestures + note-cut at row 0 in mute-wipe
2026-05-191a7aa16F11 order list: render / clone / extend ops + mute-wipe toggle
2026-05-1918e8da4Ctrl-O diagnostics: per-check markers, dismissable hold, dispatcher trace
2026-05-19a98a37cCtrl-O: Shift-Ctrl-O no-import, path validation, 15s marker hold
2026-05-1997712ceCtrl-O: render to Quicksave folder, fix import open-fail
2026-05-19d8ec842IT_F.ASM: F12 Samples->Instruments preserves drawn envelopes
2026-05-19054f1f0.gitignore: ignore repo-root IT.CFG (kept locally for zip staging)
2026-05-19f541198IT_DISK.ASM: Shift-Enter on module row = bulk-load all samples
2026-05-1806ac14aREADME.md: musician-facing "What This Fork Lets You Do" section
2026-05-18eaa34e2README.md: add 5-week changelog covering 2026-04-22 to 2026-05-18
2026-05-18f10e961IT_I.ASM: accept Shift-1..9 to save envelope presets (was Alt-only)
2026-05-184e4eb9aIT_F.ASM: default Sample->Instrument prompt to "No" to prevent envelope dataloss
2026-05-18731e168MIDI Transport toggle: independent FA/FB/FC gate alongside F8 Clock
2026-05-1816d89daCLAUDE.md: document mixer & slave channel struct layout from MIX.INC
2026-05-18e3e6940CLAUDE.md: add User-Facing Keyboard Reference section grounded in IT.TXT
2026-05-18a44c41bMusic_SilenceSampleVoices: keep playback alive across sample (re)loads
2026-05-132eb6088release.yml: default version 2.354 and overwrite existing release
2026-05-13e4fafa6release.yml: simplify dispatch UI to a single version input
2026-05-13400ea5brelease.yml: fix .DRV.DRV double-extension when source is uppercase
2026-05-13c599007release.yml: swap in TLINK 3.01 at runtime (toolchain ships 7.1)
2026-05-13fe1df01release.yml: dump diagnostics + upload logs on driver-build failure
2026-05-13141893brelease.yml: handle lowercase .drv/.net from DOSBox-X on Linux
2026-05-1362e6991release.yml: replace heredoc with echo block (fix YAML indent)
2026-05-138d80effAdd release.yml — DOS-installable zip workflow
2026-05-120afd402Add SKILL.md — architectural reference companion to CLAUDE.md
2026-05-12aaada5eAlt-R Replicate: tile row 0 when cursor is at row 0; Shift-Alt-R = ClearViews
2026-05-12d506486Pattern editor: Alt-R = Replicate at Cursor (port of Paketti feature)
2026-05-1264fa1ceF3 loader keyjazz hang fix: suppress MIDI sync playback during LoadSample
2026-05-12ec91331F3 loader keyjazz hang: instrument LoadSample + PlaySample with VRAM markers
2026-05-043537c0dCtrl-O hang: instrument WAV leave + import paths with VRAM markers
2026-05-0478fb72dGUSMIXDR + IWDRV: stop filtering MIDI System Real-Time bytes (F8-FF)
2026-05-044ebf849Sound drivers: stop filtering MIDI System Real-Time bytes (F8-FF)
2026-05-0495f628aMIDI Monitor: show RT byte counters on Shift-F1 screen
2026-05-047163709MIDI Sync: move toggle from Alt-F12 to Shift-F1 MIDI screen button
2026-05-048ca7078F12 Module Directory: Enter opens F9 as a directory picker
2026-05-048f11aa6Quickfix: translate '/' to '\' in F12 directory input fields
2026-05-04ad5d840MIDI Sync: default ON + Alt-F12 hotkey toggle
2026-05-042051b90README: document v2.354 fork additions (MIDI sync, P3 render, quicksave, build infra)
2026-05-047df9edfBump to v2.354; add Esa Juhani Ruoho 2026 copyright
2026-05-0434b725d.gitignore: ignore CACHE.ITS and rendered 004_*.001 sample dumps
2026-05-017fd1abcF12 config screen: add Quicksave directory input row
2026-05-016464e15Quick-save folder: Alt-W saves to it, Shift-Alt-W memorizes
2026-05-010c02662P3: warn user + adjust length when sample exceeds 1MB safety cap
2026-05-01d13a849P3: loop-on-render configurable + alloc-fail clears the dirty slot
2026-05-0181c78aaP3: populate IMPS filename field (+4..+15) with the rendered .NNN
2026-05-01fc92c77gitattributes: lock .ASM/.INC encoding to ISO-8859-1 + CRLF
2026-05-010a82cb3MIDI Clock sync: enable flag (default off) + delta sanity check
2026-05-01672273bF4->F3 translate: bounds + note-60-first then scan-all fallback
2026-05-019bd18d1P3 hardening: cwd reentrancy gate + 4-digit counter + WAV validation
2026-05-019d626b0F4 -> F3 cursor translation (Feature 2)
2026-05-0103b0a6dMIDI Clock 0xF8 external tempo sync (Feature 4)
2026-05-01ce3fb79P3: render to user's SampleDirectory + loop the imported sample
2026-05-01b0690a4P3: target slot = max(highest sample, highest instrument) + 1
2026-05-01f136a7bP3: page counter in memory + AssignSampleToInstrument off-by-one
2026-05-01e3f5815P3 select-fix: use LastInstrument (F3/F4 cursor), not just CurrentSample
2026-05-013a626b4P3: auto-select imported sample, instrument-mode-gated instrument
2026-05-014d5e9daP3: don't clobber WAV_PendingPattern on leave-mode entry
2026-05-0164b853bP3 filename fix: put '.' at index 6 of WAV_RenderBasename
2026-05-019ed42edP3: bump import status messages to 500 ticks (~15-30 seconds)
2026-05-01bb5e5eaP3: unique render filename REN<NNN>.<PPP> (no overwrites)
2026-05-0109d7e7dP3 diagnostics: granular failure messages per import step
2026-05-011d7910eP3 fixes: single-press flow + the actual PCM-read bug
2026-05-011b2bcf1SoundDrivers: skip-stub 13 BATs needing TASM32 or missing sources
2026-05-01af03f96IT_MUSIC.ASM: P2.5 + P3 — Ctrl-O auto-imports rendered pattern
2026-05-01089119aIT_MUSIC.ASM, IT_PE.ASM: P2a — Ctrl-O toggles ITWAV.DRV render mode
2026-04-30e4c9b4adocs: deep-dive findings for P2/P3 pattern-to-sample
2026-04-3035732c3IT_PE.ASM: Ctrl-O renders current pattern (phase 1 of pattern-to-sample)
2026-04-30be79b3cbuild: TLINK 3.01 unlocks full IT.EXE + 42 drivers + ITIPX.NET
2026-04-305bd73eddocs+build: CLAUDE.md, BUILDALL.BAT, sample DOSBox-X config
2026-04-231fa031cci: add GitHub Actions workflow to build IT.EXE via DOSBox-X + TASM
2026-04-23ec42bd1IT_K.ASM: start/stop song on MIDI System Real-Time messages
2026-04-22aa311f5Ignore macOS .DS_Store files
2024-06-17c679180Update SERVER.C
2024-06-17bda9b52Update VMM.INC
2024-06-17e7bfcbdUpdate IT.TXT
2024-06-17c24a5b0Update MIDI.TXT
2024-06-178306d8aUpdate NETWORK.TXT
2024-06-17ad1f7beUpdate SUMMARY.TXT
2024-06-178ca4a37Update ITTECH.TXT
2024-06-1730a4a31Update BUGS.TXT
2024-06-173e20876Update UPDATE.TXT
2024-06-171703757Update FILTERS.TXT
2024-06-1740949c4Update IMPULSE.FAQ
2024-06-176346713Update HINTS.TXT
2024-06-17eb81f5fUpdate IPX.ASM
2024-06-1748f9243Update SB16D.ASM
2024-06-17468688cUpdate M16.ASM
2024-06-17cc583e1Update ST97.ASM
2024-06-1732f7725Update WAVPRO.ASM
2024-06-1759423efUpdate PAS16DRV.ASM
2024-06-17b4f016fUpdate SB16MMXB.ASM
2024-06-173301167Update GUSMAXMX.ASM
2024-06-17ca8b34fUpdate GUSMIXDR.ASM
2024-06-17b906befUpdate EWSCODMX.ASM
2024-06-17d9b9447Update GUSPNPM.ASM
2024-06-17f6e03b6Update VSNDMMX.ASM
2024-06-17c5334a0Update WSSDRV.ASM
2024-06-17d8a77b1Update GOLD16.ASM
2024-06-179bdcad3Update CHANNEL.TXT
2024-06-179088521Update MMTECH.TXT
2024-06-17167ef80Update CONFIG.TXT
2024-06-176c81b93Update IT_MMTSR.ASM
2024-06-1725ec4b5Update IT_OBJ1.ASM
2024-06-1705fcd6binital->initial
2024-06-17d851b3dUpdate IT_I.ASM
2024-06-179e7b6d2Update IT_TUTE.ASM
2024-06-17a20bca3Update IT_D_RM.INC
2024-06-17aba20b8Update IT_H.ASM
2024-06-17ae3a6b9Update IT_PE.ASM
2024-06-17fc8b05eUpdate IT_D_WM.INC
2024-06-17f93b20fextention -> extension
2024-06-1759ea08creenable -> re-enable
2024-06-171428fc4hilight -> highlight
2024-06-171161fb3minor typo fixes