| 2026-05-31 | f0debef | Lua: midimacro :send(), instrument CC envelopes; update README (#157) |
| 2026-05-31 | 4d96726 | Lua: midimacro :send(), instrument CC envelopes; update README |
| 2026-05-31 | 3124cb6 | ci: run ctest (incl. Lua API self-test) on the macOS jobs too (#156) |
| 2026-05-31 | 0aa7cf3 | Lua: notifiers (zt.on / zt.off / zt.fire) for play/stop/row/idle events (#155) |
| 2026-05-31 | 1ec95ef | ci: run ctest (incl. Lua API self-test) on the macOS jobs too |
| 2026-05-31 | 4da70be | Lua: notifiers (zt.on / zt.off / zt.fire) for play/stop/row/idle events |
| 2026-05-31 | b4a8556 | Lua: full API self-test (lua/selftest.lua) + --lua-test runner + ctest (#154) |
| 2026-05-31 | d57250d | Lua: full API self-test (lua/selftest.lua) + --lua-test runner + ctest |
| 2026-05-31 | c9bd3ca | Lua console: wrap long scrollback lines instead of clipping them (#153) |
| 2026-05-31 | 23d8abf | Lua console: wrap long scrollback lines instead of clipping them |
| 2026-05-31 | 51c24c7 | Lua console: clip scrollback lines to the console width (#152) |
| 2026-05-31 | 2ef4275 | Lua console: MIDI macros, arpeggios, song message, instrument extras, file I/O (#151) |
| 2026-05-31 | 44fc586 | Lua console: clip scrollback lines to the console width |
| 2026-05-31 | ce18363 | Lua console: MIDI macros, arpeggios, song message, instrument extras, file I/O |
| 2026-05-31 | b0ed0a8 | Lua console: full cell access, order list, note names, constants (#150) |
| 2026-05-31 | e041142 | Lua console: full cell access, order list, note names, constants |
| 2026-05-31 | 3420483 | Lua console: object layer for patterns, tracks, transport (#149) |
| 2026-05-31 | 0de207a | Lua console: object layer for patterns, tracks, transport |
| 2026-05-31 | 8fd9ff0 | index on esa/lua-objects-tracks-patterns: 1c1f53b Lua console: Renoise-style object layer (zt.song, zt.instrument(i)) |
| 2026-05-31 | 53bc24e | Lua console overhaul: Tab cycling, rprint/oprint/help, and Renoise-style objects (#148) |
| 2026-05-31 | 1c1f53b | Lua console: Renoise-style object layer (zt.song, zt.instrument(i)) |
| 2026-05-31 | 34ab580 | Lua console: real Tab completion (cycling) + Renoise-style introspection |
| 2026-05-31 | c65bebe | keybuffer: treat AltGr as plain Alt for shortcuts (KDE/X11 fix) (#143) |
| 2026-05-31 | 6213217 | Don't bleed the playback status line over a modal popup (#146) |
| 2026-05-31 | 13db973 | Palettes: fix Hotdog Stand (bright yellow), alphabetize list, doc headless screenshots (#147) |
| 2026-05-31 | 2020b54 | Pattern Editor keymap: Block Functions family on Ctrl + Ctrl-Shift-P Song Duration (#144) |
| 2026-05-31 | fe3d3e8 | MainMenu: highlight the current page when reopening the ESC menu (#145) |
| 2026-05-31 | 849c02b | Palettes: fix Hotdog Stand (bright yellow), alphabetize list, doc headless screenshots |
| 2026-05-31 | 2201596 | Don't bleed the playback status line over a modal popup |
| 2026-05-31 | b849296 | MainMenu: also highlight Play Song when reopening ESC menu while playing |
| 2026-05-31 | 897e01f | MainMenu: highlight the current page when reopening the ESC menu |
| 2026-05-31 | ae71d73 | Pattern Editor: bind whole Block Functions family on Ctrl (B/E/U too) |
| 2026-05-31 | ce6d672 | help: add Ctrl-Shift-P Song Duration entry to F2 Pattern Operations |
| 2026-05-31 | fc5df68 | Pattern Editor keymap: Ctrl-D = select one beat, Ctrl-Shift-P = duration |
| 2026-05-31 | 9153f41 | keybuffer: treat AltGr as plain Alt for shortcuts (KDE/X11 fix) |
| 2026-05-30 | b8fca47 | skill: refresh ztrackerprime contributor skill (drift fixes + foot-guns) (#142) |
| 2026-05-30 | 4936fe4 | skill: add shortcut-map updates + foot-guns that didn't land in the first commit |
| 2026-05-30 | 194cb57 | skill: refresh ztrackerprime contributor skill (drift fixes + foot-guns) |
| 2026-05-29 | 6221e9c | samples PR B (engine): SampleOutputDevice voice mixer + routing + audio wake-up |
| 2026-05-29 | 1b77298 | samples PR A: sample pool + .zt SMPL/SMIX persistence + WAV loader |
| 2026-05-29 | 1c91e66 | docs: sample-playback design doc + incremental PR plan |
| 2026-05-29 | a159ee6 | spike: enable ENABLEAUDIO to validate dormant SDL3 audio backend |
| 2026-05-29 | b9803f2 | build: add macOS -> Windows x86 (XP) cross-build script (#139) |
| 2026-05-29 | 9452a83 | build: add macOS -> Windows x86 (XP) cross-build script |
| 2026-05-29 | 98530e2 | README: fix stale minimum-resolution claim (1024x700 -> 840x480) (#138) |
| 2026-05-29 | 96a1f1c | README: human edit 2026-05-29 09:29:46 |
| 2026-05-29 | 76b4de3 | README: human edit 2026-05-29 09:18:09 |
| 2026-05-29 | d7daacd | README: human edit 2026-05-29 09:15:17 |
| 2026-05-29 | 11335fd | README: document PianoKey + Create 16 Channels, fix macOS regen command (#137) |
| 2026-05-29 | 82a5640 | Instrument Editor: "Create 16 Channels" for the current MIDI device (#136) |
| 2026-05-29 | 3231ea3 | F2 F2: "PianoKey" toggle for Ableton/Logic keyjazz layout (#135) |
| 2026-05-25 | 7a2104b | CHANGELOG: name the release zt 2026_05_25_2 |
| 2026-05-25 | bab9b7d | Linux: rpath=$ORIGIN so bundled libSDL3.so.0 is found at runtime (#134) |
| 2026-05-25 | 33a9d18 | Linux: rpath=$ORIGIN so bundled libSDL3.so.0 is found at runtime |
| 2026-05-25 | e99b226 | Alt-P / Ctrl-P rebind: duplicate-pattern + paste-continuously + Song Duration (#133) |
| 2026-05-25 | c88de80 | Alt-P / Ctrl-P rebind: duplicate-pattern + paste-continuously + Song Duration |
| 2026-05-18 | 1a66642 | CC Envelopes v2: per-instrument, CCizer-aware (Shift+F6) (#132) |
| 2026-05-18 | d3d6d78 | Help (F1) page: modifier+key jumps to documented shortcut (#131) |
| 2026-05-14 | 0e7d8e1 | IEdit keyjazz when slider focused + Alt-P centering + Ctrl+C/V/P clipboard (#129) |
| 2026-05-14 | d45482d | CC Console: double-click reset + Ctrl+F2 drawmode cycle (#128) |
| 2026-05-14 | 5b3cacd | Windows: Ctrl+Shift+grave fixes CC drawmode cycle + keyjazz in mouse-draw (#127) |
| 2026-05-14 | ca8feda | CI: bundle CCizer banks + SysEx examples in release artifacts (#126) |
| 2026-05-13 | 3b8280a | CC Drawmode: one-key arm-and-draw + visual cleanup (#125) |
| 2026-05-12 | f62ef2c | CC Drawmode: cycle through CCizer slots + Shortcuts rebind (#123) |
| 2026-05-12 | 9430fca | palettes: regenerate all 7 hand-tuned ones from Schism's IT data (#122) |
| 2026-05-12 | be25b09 | ztskin: port multiplatform skin compiler/decompiler CLI (#119) |
| 2026-05-12 | 29a57c2 | .gitattributes: union-merge doc/CHANGELOG.txt (#121) |
| 2026-05-12 | 2a59dcd | build-all.sh: one-shot wrapper around the per-platform build scripts (#120) |
| 2026-05-12 | c4ad81a | Sysconfig MIDI: preserve devices on Refresh + in-your-face open errors (#118) |
| 2026-05-12 | 8580467 | Quit confirmation: default focus to Yes, so Ctrl-Q + Enter quits (#101) |
| 2026-05-04 | 8ef5fbf | windows-x86-xp: static-link MinGW C++/pthread runtime so XP can launch zt.exe (#117) |
| 2026-05-02 | 5d2880b | midiInQueue: serialise insert/pop/check/size/clear with std::mutex (#116) |
| 2026-05-02 | af5ac64 | Pattern Editor: Ctrl+H — Find / Replace Note popup (#115) |
| 2026-05-02 | 105ab95 | test: SysEx receive queue stress + concurrency suite (#114) |
| 2026-05-02 | c180b5e | Linux ALSA MIDI input — initial implementation (needs hardware verification) (#113) |
| 2026-05-02 | 58ea0e3 | ListBox: defuse the OnSelect mousestate-clobber foot-gun (#112) |
| 2026-05-02 | 682c576 | Pattern Editor: Ctrl+Shift+F fills selection with note at cursor (#111) |
| 2026-05-02 | 57b8a34 | Pattern Editor: ALT+SHIFT+Q / ALT+SHIFT+A transpose by octave (#110) |
| 2026-05-02 | 571646a | Pattern Editor: drop stale MIDI-in queue on enter() (#109) |
| 2026-05-02 | 8e7e9d5 | skill: add freshness signal + correct cross-platform SysEx receive status (#108) |
| 2026-05-02 | c5f34cb | CLAUDE.md + skill: bug reports are branch + PR + push, no asking (#107) |
| 2026-05-02 | 7ce8be8 | CC Console: reset slider widget pool on file switch (#106) |
| 2026-05-02 | ef210b5 | .gitignore: add pycache/ and *.pyc |
| 2026-05-01 | 952b5a3 | Paketti CCizer rename + show inst/port/channel in title |
| 2026-05-01 | 740bca7 | Import 9 Schism Tracker palettes + reusable importer script |
| 2026-05-01 | 90431c6 | ESC menu: window size & zoom presets (1024x640 to 2560x1440 3x) |
| 2026-05-01 | d632256 | README: fix About screenshot (was Palette Editor + Main Menu) |
| 2026-05-01 | 82070e3 | README + screenshots: a tour of every zTracker' page |
| 2026-05-01 | 748256a | F12 Sysconfig: stop CCizer/SysEx folder inputs overlapping |
| 2026-05-01 | b0ffe96 | SysEx Librarian: real ListBox file selector |
| 2026-05-01 | d642259 | Headless + script CLI: run zt windowless, drive from a file, dump PNGs |
| 2026-04-30 | 68ec144 | Skill: codify list-pane idiom + 8 page-construction invariants |
| 2026-04-30 | 27172fa | CC Console: real ListBox file selector + fix vanishing-sibling bug |
| 2026-04-30 | fdb9675 | CC Console: fix Slot/CC#/Name/Slider/Learn column overlap |
| 2026-04-30 | 35c505d | Shift+F2: ESC cancels capture/learn instead of opening main menu |
| 2026-04-30 | b781a26 | zt-screenshot.sh: capture by CGWindow ID, fix SDL window detection (audit P17) |
| 2026-04-30 | 11cedbf | Add CCBN roundtrip test (audit P18) |
| 2026-04-30 | b181584 | Audit M9 + L15 + L16: localtime_r, recv rotation, ownership doc |
| 2026-04-30 | 22d5fcc | Audit M6 + M7: heap-alloc macOS sysex packet list + seed recv_seq |
| 2026-04-30 | f9c77b8 | Windows SysEx receive: wire MIM_LONGDATA -> zt_sysex_inq (audit P19) |
| 2026-04-30 | 3f04c4f | Cache *.syx midimacros at song-load (audit H3 + M10) |
| 2026-04-30 | b1515a3 | Audit cluster: H2 + M8 + L13 + L14 + L12 |
| 2026-04-30 | af2897d | Windows SysEx send: poll MHDR_DONE before unprepare (audit H1) |
| 2026-04-30 | f86a026 | CC Console: real ValueSlider widgets + need_refresh on every key handler |
| 2026-04-30 | 6bd1305 | Skill + CLAUDE.md: document CCizer + SysEx pages and PRs #78-#84 |
| 2026-04-30 | c053248 | Pattern row -> SysEx file: midimacros named *.syx dispatch as files |
| 2026-04-30 | 74b1647 | SysEx Librarian (Shift+F5): send .syx files + auto-capture responses |
| 2026-04-30 | a3857c2 | SysEx I/O foundation: send (3 platforms) + receive ring + queue |
| 2026-04-30 | 84d7ff5 | Pattern Editor + CC Console: auto-route, drawmode badge, undo |
| 2026-04-30 | bebb7eb | Per-instrument CCizer bank + optional CCBN .zt chunk |
| 2026-04-30 | 4eb3fee | formatting |
| 2026-04-30 | 7aae858 | ztracker_mac no longer exists |
| 2026-04-30 | d373382 | CC drawmode: pretty-print learnt CCizer slot names in status |
| 2026-04-30 | 76020d8 | CC Console: MIDI Learn per slot + .cc-midi sidecar |
| 2026-04-30 | 6433e97 | Pattern Editor: Ctrl+Shift+§ CC drawmode (incoming CC -> S/W effects) |
| 2026-04-30 | b1fe4b4 | F12 Sysconfig: CCizer Folder text input |
| 2026-04-30 | a23811b | test_ccizer: portability shim for Windows (MSVC + MinGW) |
| 2026-04-30 | 9f92e8e | CC Console (Shift+F3) + Shift+F2/F3 reshuffle |
| 2026-04-29 | 3b961b1 | Unify Shortcuts & MIDI Mappings into one Shift+F3 page |
| 2026-04-29 | 948d028 | MIDI Mappings page: bind 4 / 8 audition to incoming MIDI |
| 2026-04-29 | b023c00 | F10 Song Message: caret + cursor nav + crash signal handler |
| 2026-04-29 | 8fb67f1 | macOS MIDI Out: re-resolve endpoint by name on send failure |
| 2026-04-29 | bd6a610 | Hotfix: F10 robustness + Load/Save list clamps at edges |
| 2026-04-29 | 5784a56 | F11 4/8 Audition Step: move legend below the slider |
| 2026-04-29 | 4d67fd0 | Pattern Editor: configurable advance for 4 / 8 note audition |
| 2026-04-29 | 7bf972f | Pattern Editor: restore 4/8 note audition + 1/§/. editing keys |
| 2026-04-29 | 7430e6e | Split skill into thin SKILL.md + references/, add recipes & glossary |
| 2026-04-29 | 616ea43 | Sanitize SKILL.md — remove personal context, dated snapshots, anecdotes |
| 2026-04-29 | a41fb1e | Add in-repo SKILL.md for AI agents that load .claude/skills/ |
| 2026-04-29 | e660070 | Add CLAUDE.md — contributor notes for AI assistants |
| 2026-04-28 | d2f19ed | ESC menu: "Copy Relaunch Command" -- round-trips current MIDI / song state to clipboard |
| 2026-04-28 | a2824dc | CLI: also accept --flag=value, single-dash -flag; fix bare-word match |
| 2026-04-28 | 40ddc57 | CLI: --help, --list-midi-in, --midi-in, --midi-clock |
| 2026-04-28 | 37fcd68 | VU meters: replace Frankenstein bar formula with linear fade |
| 2026-04-28 | 055b5cc | Re-enable VU meters: harden draw against null/stale instrument access |
| 2026-04-28 | c4dbcad | Shift+F4: dedicated Keyjazz slot -- Tab here to enter, focus highlights |
| 2026-04-28 | 131f5ba | Remove DISABLE_UNFINISHED_* gates -- F4 / Shift+F4 / F10 are shipping features |
| 2026-04-28 | bd4a4ba | F4/Shift+F4 + Arpeggio keyjazz: drop premature mousestate=0 clobber + add visible Keyjazz panel |
| 2026-04-28 | d6d93ef | Shift+F4 Arpeggio editor: keyjazz audition |
| 2026-04-28 | 38a4a09 | F3 InstEditor: revert PR #61's frame extension; numbers go back outside frame |
| 2026-04-28 | e476016 | Revert: Ctrl-S in F4/Shift+F4 saves the song (matches title hint) |
| 2026-04-28 | 87b2713 | Reorder ListBox::mouseupdate: bMouseIsDown reset AFTER switch, not before |
| 2026-04-28 | c966802 | Arpeggio editor: shift Length and below down 1 row to clear preset listbox |
| 2026-04-28 | fb0f0bb | F4/Shift+F4: 1-char gap between label and slider/textfield (DRY) |
| 2026-04-28 | 049b69f | Strip diagnostic status messages -- the actual freeze fix landed in 60d3ac5 |
| 2026-04-28 | 60d3ac5 | Fix UI freeze after click: always consume button-up in ListBox::mouseupdate |
| 2026-04-28 | 2ea68e1 | Diagnostic: write S-key dispatch outcome to status line |
| 2026-04-28 | 16603cc | F4/Shift+F4: also swallow Cmd-S (macOS habit), not just Ctrl-S |
| 2026-04-28 | ca0a254 | Real KeyBuffer integration tests + fix saturation-drain bug they found |
| 2026-04-28 | 6425284 | Integration tests for save-key dispatch + editor preset/sync cycle |
| 2026-04-28 | 89460df | Fix Ctrl-S freeze in F4/Shift+F4: consume the key when swallowing |
| 2026-04-28 | 8520740 | Preset selector decision logic extracted + 72-check regression suite |
| 2026-04-28 | 1d1628f | F4/Shift+F4: drop preset-dedupe guard so every click applies |
| 2026-04-28 | 96b513e | F4/Shift+F4 preset selector: single-click selects, P cycles when focused |
| 2026-04-28 | 726fe68 | Unit-test harness + preset data extraction |
| 2026-04-28 | 295f726 | F4/Shift+F4: refresh slider widgets after preset is applied |
| 2026-04-28 | f298d96 | Arpeggio editor: nudge preset listbox +1 column (x=46 → 47) to match F4 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> |
| 2026-04-28 | 76bd2a2 | F4: pin doc-block x to column 4 so it lines up with Shift+F4's triggers |
| 2026-04-28 | 076a9c3 | F4/Shift+F4 preset listbox: positions, ordering, robustness |
| 2026-04-28 | 1f93654 | F4/Shift+F4: SkinSelector-style inline preset listbox |
| 2026-04-28 | 1af9f6d | Swallow Ctrl-S inside F4 (MIDI Macro) and Shift+F4 (Arpeggio) editors |
| 2026-04-28 | fce0a1e | Anchor F4/Shift+F4 doc lines just above toolbar so they stop floating |
| 2026-04-28 | af6e8e0 | Cmd-W behaves as Ctrl-W on macOS; mouse-wheel scrolls Help/About/Song Message |
| 2026-04-27 | d8ff1fd | Match docs placement: 'Trigger from pattern' below the grid in both editors |
| 2026-04-27 | 95ad943 | Arpeggio editor: row of space between sliders; docs match macro layout |
| 2026-04-27 | 188e7b3 | Revert Cmd+S=save: it stole the Pattern Editor Set-Instrument shortcut |
| 2026-04-27 | 04270fa | Cmd+S saves on macOS; double-click MIDI port toggles |
| 2026-04-27 | 316f593 | F4 toggles Macro<->Arp; remove em-dash junk in titles |
| 2026-04-27 | 4f7b078 | ValueSlider: stop drag on mouse-up; fix arp keys-hint overflow |
| 2026-04-27 | 7aaaba5 | F4 + Shift+F4: rearrange overlapping help text |
| 2026-04-27 | 63e0dba | F4 + Shift+F4: page-level shortcuts, name follows preset, trigger info on screen |
| 2026-04-27 | 17dce64 | F4 + Shift+F4: legacy migration, cursor sanity, slot delete, modified indicator |
| 2026-04-27 | 8f5e3a3 | F4 + Shift+F4 editors: robust input + presets + focus visibility |
| 2026-04-27 | e7ef8e3 | Arpeggio editor: fix crash on entry, fix overlapping layout |
| 2026-04-27 | 27f4672 | Arpeggio playback: actually loop at repeat_pos |
| 2026-04-27 | 67e9f92 | Implement MIDI Macro and Arpeggio editors + playback |
| 2026-04-27 | 1c49b15 | midi-io: fix crash when opening a second MIDI In device |
| 2026-04-27 | 4ed7ff5 | Enable MIDI Macro + Arpeggio editor pages on F4 / Shift+F4 |
| 2026-04-27 | 4f287c5 | F11/F12/Ctrl+F12 polish: About box, Post-Load names, F11 toggle |
| 2026-04-27 | 3beb77b | Sysconfig F12: align Latency/Bank/Alias with MIDI Out list, normalise Open device button |
| 2026-04-27 | 2acf9f5 | F11/F12/Ctrl+F12 layout polish + widget upstream cleanup |
| 2026-04-27 | 39a3517 | OrderEditor: handle left-click to move the cursor |
| 2026-04-27 | 588126c | F12 MIDI list: Enter/Space toggle device + surface run-log |
| 2026-04-27 | df40768 | Fix two macOS crashes: MIDI-thread NSWindow + Cmd+Q popup loop |
| 2026-04-27 | 2caddb9 | midi-io: fix crash when opening a second MIDI In device |
| 2026-04-26 | 6fc479a | About page: keep each copyright + author on a single row |
| 2026-04-26 | debe5ed | About page: lift textbox 1 row, extend bottom 2 rows |
| 2026-04-26 | bbe472e | About page: capitalize zTracker in license line |
| 2026-04-26 | 1fd17e4 | About page: move Esa below Nic Soudee, grow textbox by 5 rows |
| 2026-04-26 | 4905595 | About page: 2026 dates, add Esa Juhani Ruoho to coding, split License line |
| 2026-04-26 | 8eb177e | About page: nudge textbox 1 row lower, end 2 rows lower |
| 2026-04-26 | 5889b6a | About page: widen textbox by 4 chars, lift 2 rows, shrink height to 75% |
| 2026-04-26 | 35bb895 | About page: shift textbox 1 col left, anchor top to overlap logo |
| 2026-04-26 | ac4df38 | About page: textbox sits below the logo, logo back at row 9 |
| 2026-04-26 | 93651df | About page: lift logo to row 7, widen text box another 20% |
| 2026-04-26 | d61de86 | About page: lift logo 3 rows, widen text box 20%, keep clear of toolbar |
| 2026-04-26 | fe592ba | README: refresh for the last few weeks of merged work |
| 2026-04-26 | ba72136 | Post-Load Page: configurable destination after a successful load |
| 2026-04-26 | a6bca71 | Translate Manu's Spanish source comments inline (English in [EN: ...]) |
| 2026-04-26 | b159099 | Songconfig: tighten Title/BPM/TPB label spacing; widen Title field |
| 2026-04-26 | 88653a7 | Order List: cycle focus back when Up is pressed at row 0 |
| 2026-04-26 | 09ebab5 | About page: clamp text-box height so it never overlaps the toolbar |
| 2026-04-26 | 2f4e318 | F5 Play Song: align pattern display rows with the Pattern Editor (F2) |
| 2026-04-26 | 10357fb | Translate Manu's Spanish source comments inline (English in [EN: ...]) |
| 2026-04-26 | 34b34cc | Help: re-indent continuation lines after macOS shortcut rewrite |
| 2026-04-26 | d9ef935 | Songconfig: tighten Title/BPM/TPB label spacing; widen Title field |
| 2026-04-26 | fcf0053 | Order List: cycle focus back when Up is pressed at row 0 |
| 2026-04-26 | e24828b | About page: clamp text-box height so it never overlaps the toolbar |
| 2026-04-26 | 223cc00 | F5 Play Song: align pattern display rows with the Pattern Editor (F2) |
| 2026-04-26 | 841783c | ESC menu: open in Load (Ctrl-L) view; let Keybindings page bind Ctrl-Q |
| 2026-04-26 | 6910eb9 | ESC main menu: flush popup region so Up/Down updates highlight |
| 2026-04-26 | 1e0761b | ESC menu polish: include Songmsg + Midimacro; fix Keybindings Ctrl-S leak |
| 2026-04-26 | ca24037 | ESC main menu (Schism-style) — Phase 1: discoverable navigation |
| 2026-04-26 | 8240232 | help.txt: section-wide colon alignment + rewriter formula fix |
| 2026-04-26 | 85b929d | F10 Song Message: managed null-terminated mirror; help.txt cleanups |
| 2026-04-26 | d847f84 | F10 Song Message: enable SDL text input on the page |
| 2026-04-26 | df969f2 | F10 Song Message: fix layout, dangling text pointer, backspace, Enter |
| 2026-04-26 | 3f45d9a | Enable F10 Song Message editor (in-place edits already persist) |
| 2026-04-26 | 23b3b3a | Help: Shift-Tab from first section now wraps to last section |
| 2026-04-26 | f0e73a8 | Unblock Midimacro editor; help: octave keys, no Cmd-TAB rewrite |
| 2026-04-26 | b42e7cf | Midimacro editor: bind to plain Ctrl-M (export moves to Ctrl-Shift-M) |
| 2026-04-25 | d297c65 | Midimacro editor: add Ctrl-Alt-M as guaranteed-working shortcut |
| 2026-04-25 | 76c8c9d | Midimacro editor: bind to plain Shift-F4 (no Cmd/Ctrl/Alt needed) |
| 2026-04-25 | f7d02a8 | macOS: free Cmd-Q from the menu so Pattern Editor can use it for Transpose-Up |
| 2026-04-25 | b0b8c70 | Quit shortcut: accept plain Ctrl-Q, not just Ctrl-Alt-Q |
| 2026-04-25 | 197c756 | CI: harden libpng/zlib fetch against transient mirror failures |
| 2026-04-25 | a38d7e4 | Default skin: paint out empty bargraph frames in toolbar.png |
| 2026-04-25 | debc2e2 | F5 Play Song: show live playback status (Ord/Pat/Row/Time) |
| 2026-04-25 | ea4f058 | Pattern Editor: only post View Mode status on actual change |
| 2026-04-25 | dd6edb6 | Minor tweaks: status messages, help nav, F4 binding |
| 2026-04-25 | 99b809c | CI: re-enable branch-gate to validate README-MAC.txt in packaged DMGs |
| 2026-04-25 | 5b47568 | CI/macOS: ship README-MAC.txt with quarantine-fix instructions |
| 2026-04-25 | a339b1d | CI: drop temporary pr-release-packaging branch-gate before merge |
| 2026-04-25 | 232dadd | CI: temporarily run packaging on every push to pr-release-packaging |
| 2026-04-25 | e6e0f9f | CI: add workflow_dispatch trigger for manual packaging test runs |
| 2026-04-23 | 739bb2c | Global Config: UI toggles for MIDI In Sync + Chase MIDI Tempo |
| 2026-04-23 | e45c541 | MIDI In: optional tempo chase from incoming MIDI Clock |
| 2026-04-22 | 3c487f8 | CI: tag-triggered cross-platform release packaging |
| 2026-04-21 | 9467247 | F3: shift right-side panel down 1 row to match instrument list |
| 2026-04-21 | 6b2f282 | After file load, switch to Instrument Editor (F3) |
| 2026-04-21 | 9ccb9f2 | Global Config page 2 focus + padding, Sysconfig alignment, Ctrl-click Conf |
| 2026-04-21 | 8037ff6 | UI polish: F1 toggle, F3 row align, Sysconfig spacing, Global cfg align, FileList typeahead |
| 2026-04-21 | cd5927f | Fix remaining macOS build warnings |
| 2026-04-18 | 4c98ea2 | Fix -Winconsistent-missing-override warnings (macOS AppleClang) |
| 2026-04-18 | 03e51c3 | Lua Console: tab completion + full API listing on open |
| 2026-04-18 | a8d81c7 | Let Ctrl/Alt/Cmd shortcuts through on text-input pages |
| 2026-04-18 | afe59b5 | Lua Console: fix invisible rendering + broken keyboard input |
| 2026-04-18 | b618067 | Rock-steady MIDI timer: monotonic clock, drift-free schedule, no UAF on stop |
| 2026-04-18 | 06eb551 | macOS Finnish ISO: fix § (Note Off) and <>/octave-up-down keys |
| 2026-04-17 | b79e689 | F12 Sysconfig layout + tab-order, symmetric page-nav buttons, RUSure title padding |
| 2026-04-17 | bf7c89b | Add in-app keybindings editor (Ctrl+Alt+K) |
| 2026-04-17 | 7cf0343 | Add ZT_KEYDEBUG=1 full-trace keyboard logger |
| 2026-04-17 | ff1ff79 | Silence sprintf deprecation noise; emit compile_commands.json for clangd |
| 2026-04-17 | b034f55 | Skip invisible and text-only elements in UP/DOWN focus cycle |
| 2026-04-17 | 179f26e | Align F3 instrument list and description column edges |
| 2026-04-17 | a7641e7 | Fix F5 and F11 views overlapping the toolbar at low resolution |
| 2026-04-16 | d05937e | Fix pattern editor overlapping the toolbar at low resolution |
| 2026-04-16 | fec9c44 | Restore megagrump compiler warning fixes |
| 2026-04-16 | 994541f | Add macOS app bundle and UI layout updates |
| 2026-04-16 | fa6e16c | Add palette editor |
| 2026-04-16 | eefcde9 | Add platform build scripts |
| 2026-04-16 | 77579e2 | .DS_Store |
| 2026-04-16 | a51a81e | add #include <algorithm> to CDataBuf.cpp for std::min/std::max |
| 2026-04-16 | d08a8e8 | add #include <algorithm> to CDataBuf.cpp for std::min/std::max |
| 2026-04-15 | 1c09408 | fix Skin::setpath / switchskin signatures to match Skins.h (post-rebase) |
| 2026-04-15 | 57db86f | fix CMakeLists: guard TARGET_BUNDLE_CONTENT_DIR behind if(APPLE) |
| 2026-04-15 | 29774bd | fix rebase merge artifacts: remove duplicate blocks in font.cpp and CUI_Config.cpp |
| 2026-04-14 | dbeea67 | Palette Editor: fix include case so Linux / MinGW CI finds Skins.h |
| 2026-04-14 | 45448db | Palette Editor: move checkbox to row 10 to avoid swatch label collision |
| 2026-04-14 | 5591b71 | Palette Editor: revert inline redrawscreen, layout regression in Pattern Editor |
| 2026-04-14 | b3696f5 | revert TRACKS_ROW_Y to PAGE_TITLE_ROW_Y + 2 (fix cascade regression) |
| 2026-04-14 | 35bf481 | CUI_RUSure: Enter fires the focused button (Yes/No) on the same frame |
| 2026-04-14 | 56948d4 | Help text: uniform CMD-X/ALT-X on macOS, normalize source lines |
| 2026-04-13 | 99e830f | Palette Editor: "Reset skin to default" checkbox, tint slider auto-bumps hue |
| 2026-04-13 | 3be3093 | Palette Editor: atomic update on click, skin presets do real skin switch |
| 2026-04-13 | a7e708a | Skin recolor: per-pixel signed delta, no LUT, no banding |
| 2026-04-13 | 7811b6c | Skin recolor: anchor LUT on the skin's authoring colors |
| 2026-04-13 | 6b6bbca | Palette Editor: funnel every palette write through recolor, speed up remap, IT-style listbox |
| 2026-04-13 | 18b73f9 | PNG recoloring: toolbar/buttons follow palette via luminance remap |
| 2026-04-13 | 28c8a75 | Palette Editor: move global sliders out of toolbar zone, walk R/G/B with arrows |
| 2026-04-13 | 2388924 | Palette Editor: skins as presets, RGB sliders, brightness/contrast/tint |
| 2026-04-13 | 8b065b8 | Palette Editor: fix layout overlap, add mouse, ship presets |
| 2026-04-13 | 4e717d4 | add Palette Editor (Shift+Ctrl+F12): live color editing + 7 predefined palettes |
| 2026-04-13 | 0534cbf | fix: rebuild main.cpp and CUI_Patterneditor.cpp from master |
| 2026-04-13 | 64ec077 | remove accidentally-committed libpng/zlib source tree |
| 2026-04-13 | 4e67c24 | Palette Editor: copy palettes/ into .app bundle + add 7 skins to preset panel |
| 2026-04-13 | bf5edaf | Palette Editor: redesign layout — bigger swatches, per-slot labels, clear selection highlight |
| 2026-04-13 | 3e8a5e4 | Global Config: Current Settings textbox y 24->25 (one row lower) |
| 2026-04-13 | 69f901a | remove Replicate at Cursor (duplicated in PR #14); mark zt-screenshot.sh as macOS-only |
| 2026-04-13 | 779dbec | Global Config: Current Settings textbox y 23->24 (moved 1 row down) |
| 2026-04-13 | 7dd1a12 | Global Config: Current Settings textbox auto-fits content height (count newlines) |
| 2026-04-13 | 26066dc | keys: KS_META (Cmd) for ALT shortcuts; restore Replicate at Cursor; § scancode debug |
| 2026-04-13 | 0357f6e | PEParms dialog: add DrawMode checkbox row (toggles regular <-> effect-draw) |
| 2026-04-13 | 284feea | Sysconfig: Open device button y=47 (one below list border, not overlapping) |
| 2026-04-13 | 9a3c59d | Sysconfig: Open device button up 2 rows so it sits right below the device list box |
| 2026-04-13 | 0091b8b | Sysconfig: Open device button xsize 15->14 so right edge aligns with device list right edge |
| 2026-04-13 | 6517e75 | fix § key on Finnish/EU layouts: SCANCODE_NONUSBACKSLASH -> SDLK_GRAVE |
| 2026-04-13 | 5f740de | keys: § Note Off, Shift+§ drawmode toggle, Ctrl+1-0 step (Finnish kbd fallbacks) |
| 2026-04-13 | 36fd4a4 | InstEditor: MidiOutDeviceSelector ysize 13->14 (one extra row at bottom) |
| 2026-04-13 | 053cda9 | Pattern Editor: F2-F2 toggles regular <-> effect-draw mode (Shift+~ alternative) |
| 2026-04-13 | 5b0867d | Bank slider width 14->16; Open device buttons down 1 row |
| 2026-04-13 | 0d28b5d | Global Config: shrink Current Settings textbox so it doesn't bleed over the bottom ruler |
| 2026-04-13 | 30ede8b | Global Config: add (Ctrl+F12) to title; page 1 fields +2 rows so they clear the Return button |
| 2026-04-13 | 9294ed9 | revert: titles back to 'Name (Fn)' format |
| 2026-04-13 | 75ec045 | InstEditor: fm->y -1 each so labels sit inside the frame, not on its top edge |
| 2026-04-13 | 0de3c98 | InstEditor: all y +1 row (start one row lower) |
| 2026-04-13 | 37d61f7 | InstEditor: visible inst rows 39 -> 40 (show one more) |
| 2026-04-13 | 9cb8036 | add zt-screenshot.sh + revert Sample/Instrument rename + InstEditor fm down 1 + Order List clip at 039 |
| 2026-04-13 | 3d1f9fa | revert: undo Sample Editor X left-shift (broke layout) |
| 2026-04-13 | 7b0e7bc | UI: Help one more row taller (bottom margin 9 -> 8) |
| 2026-04-13 | 602b0f3 | UI: Sample Editor left-shift, Help bottom margin, Order List taller |
| 2026-04-13 | 2810fa2 | UI: Help textbox one row lower (y=12) |
| 2026-04-13 | ccefb12 | UI: Pattern Editor +1, Sample Editor +1, Order List label, Help height, F1 toggle, skins |
| 2026-04-13 | 4d8c6f4 | UI: one-row gap between title and content; Order List label/data fixed |
| 2026-04-13 | 766d46e | UI: title centered, content on first row below title, pattern grid left-aligned |
| 2026-04-13 | 82fe3bc | layout pass: left-aligned titles, (Fn) Name format, tighter content |
| 2026-04-13 | 6b25945 | ci: use fixed buffer size instead of PATH_MAX for bundle_resources_path (MSVC) |
| 2026-04-13 | b39c8ce | ci: copy zt.app bundle instead of flat zt binary on macOS |
| 2026-04-13 | 8fa64da | fix § key on Finnish/EU layouts: SCANCODE_NONUSBACKSLASH -> SDLK_GRAVE |
| 2026-04-13 | 3d6597a | macOS: Help path + auto build-date version string |
| 2026-04-13 | fcfcac4 | macOS: proper .app bundle with 'zt' icon + configurable window_icon |
| 2026-04-13 | 8642f61 | add Multichannel .MID and per-track .MID export |
| 2026-04-13 | 75ac98d | mouse-wheel zoom preserves current window size (fix window-resize jitter) |
| 2026-04-13 | 4aff040 | move Lua into extlibs/lua/ (per @m6502 review feedback) |
| 2026-04-13 | 334813d | add Humanize Velocities (ALT+H) — Paketti-inspired |
| 2026-04-13 | d581769 | ci: disable unused SDL3 X11 extensions on Linux build |
| 2026-04-13 | e5a32d8 | fix MSVC link: unify is_saving extern decl as std::atomic<int> |
| 2026-04-13 | 7c0a594 | fix Windows link: include <SDL_main.h> in one TU only |
| 2026-04-13 | 67ffc10 | ci: fix Linux apt package name (libxscrnsaver-dev -> libxss-dev) |
| 2026-04-13 | 4f08ffb | ci: install SDL3 X11/Wayland build deps on Linux |
| 2026-04-13 | bcb56b4 | fix Windows build: include windows.h before mmsystem.h in winmm_compat.h |
| 2026-04-13 | 5686f1c | UX polish: page title F-key labels + pattern editor row alignment + statusmsg bleed fix |
| 2026-04-13 | b0edb20 | ci: fetch libpng/zlib sources at build time + replace libsdl3-dev with source build |
| 2026-04-13 | 8caa481 | add GitHub Actions CI: Windows x86 (XP-compat), Windows x64, macOS arm64, macOS x86_64, Linux x86_64 |
| 2026-04-13 | a7290dc | add UI polish: playback info, page title shortcuts, Ctrl+M MIDI export, community skins |
| 2026-04-13 | 01a4f60 | PR-A: cross-platform bug fixes |
| 2026-04-13 | ff5f742 | add pattern operations: Undo, Replicate, Double, Halve, Clone, Interpolate, Reverse, Rotate, Solo, Follow |
| 2026-04-13 | 21f4e08 | Add configurable keyboard shortcuts infrastructure (loads/saves to zt.conf) |
| 2026-04-13 | 72606c1 | Add Lua 5.4 scripting with REPL console and zTracker API bindings |
| 2026-04-12 | 3745890 | add IT/Paketti pattern operations: halve, interpolate, solo, reverse, rotate, follow |
| 2026-04-12 | 83db7ab | update changelog with Lua scripting and configurable shortcuts |
| 2026-04-12 | 5ade7cc | add Lua 5.4 scripting with REPL console and zTracker API bindings (#1) |
| 2026-04-12 | f39152d | configurable keyboard shortcuts saved to zt.conf (#11) |
| 2026-04-12 | 3f69e5b | update changelog with Undo, Double/Clone Pattern, MIDI export |
| 2026-04-12 | d6f93d4 | add Undo (Cmd+Z), Double Pattern (Ctrl+Shift+G), Clone Pattern (Ctrl+Shift+D) |
| 2026-04-12 | 1df5b20 | quick MIDI export shortcut (Ctrl+M) + changelog update |
| 2026-04-12 | 815e924 | < > for octave up/down, backtick/§ for note off, faster key repeat |
| 2026-04-12 | 1a3c6a2 | fix F12 System Config layout: skin selector and MIDI lists no longer overlap |
| 2026-04-12 | 27a0a6b | fix Replicate at Cursor: source is above cursor, not including cursor row |
| 2026-04-12 | 41c5453 | add Replicate at Cursor (ALT+R / Cmd+R) — ported from Paketti |
| 2026-04-12 | f9c86a4 | fix #18 System Config: cursor up/down navigates between lists and controls |
| 2026-04-12 | 488f6e9 | update changelog with ztconf editor, playback info, closed issues |
| 2026-04-12 | e74785b | show playback position at bottom of Pattern Editor during playback (#16) |
| 2026-04-12 | d862cfb | in-app zt.conf editor: all settings editable from System Configuration (F12) |
| 2026-04-12 | 2737bb5 | update changelog with Cmd key and Backspace fixes |
| 2026-04-12 | 997f1d9 | all ALT shortcuts now work with Cmd on macOS via KS_HAS_ALT macro |
| 2026-04-12 | b9e198c | Cmd+1-0 sets edit step on macOS (KS_META accepted alongside KS_ALT) |
| 2026-04-12 | b21c601 | macOS Backspace works as Delete, update changelog with all recent fixes |
| 2026-04-12 | be44e98 | remove debug fprintf from pattern editor |
| 2026-04-12 | 38967ca | align all pages to TRACKS_ROW_Y, fix key repeat, move version string up |
| 2026-04-12 | aa11a25 | fix Help ESC goes to Pattern Editor, fix #17 bleed (agent: enter/leave/draw clear) |
| 2026-04-12 | 56c0f99 | fix #17 screen bleed on page switch + fix F11/F12 title labels |
| 2026-04-12 | 409f8f7 | fix #15 Pattern Editor full height + fix #13 ListBox cursor clamp on resize |
| 2026-04-12 | 9e9f26e | update CHANGELOG with all recent fixes, close resolved issues (#4, #8) |
| 2026-04-12 | 5ec7750 | fix MIDI device name display, help.txt path fallbacks, F3 alignment |
| 2026-04-12 | 38e65b5 | fix help.txt path on macOS: use relative path when zt_directory is empty |
| 2026-04-12 | be1715b | fix macOS .app crash: allocate cur_dir before GetCurrentDirectory call |
| 2026-04-12 | a2f459c | remove temp files accidentally committed |
| 2026-04-12 | 8c06613 | add shortcut keys to all page titles + fix start-mac.sh for .app bundle |
| 2026-04-12 | cb954b6 | proper macOS .app bundle with icon, Info.plist, bundled resources |
| 2026-04-12 | 3d897ad | add CHANGELOG.md documenting all cross-platform fork changes for upstream PR |
| 2026-04-12 | 84b5d87 | align Help page with Pattern Editor: same start row, full window width/height |
| 2026-04-12 | 18e3f9d | add start scripts for all platforms + fix F1 toggle Help |
| 2026-04-12 | 39563ba | add start-mac.sh: one-command build and run |
| 2026-04-12 | b1e0644 | fix skin switching crash: guard against double-free of SDL surfaces |
| 2026-04-12 | 95e34d6 | F1 toggles Help screen (pressing F1 while Help is open closes it) |
| 2026-04-12 | 04686b0 | bump version to v2026_04_12 |
| 2026-04-12 | 59d791b | fix macOS startup crash: copy zt.conf+skins next to binary, guard postAction null ptrs |
| 2026-04-12 | 9dd0725 | fix macOS path separators: backslash -> forward slash for skins, argv, cwd |
| 2026-04-12 | 29d1dbe | update README for cross-platform + restore 8-bit PNG support |
| 2026-04-12 | 17a73b1 | add macOS Cmd key support: Cmd maps to ALT so all ALT shortcuts work with Cmd on Mac |
| 2026-04-12 | 46d1d44 | add 5 community skins + old 0.85 skins from cmicali/ztracker |
| 2026-04-12 | 2f5c078 | const char* cleanup: fix all string-literal-to-char* warnings across 19 files |
| 2026-04-12 | 5a70863 | credit @rbruinier and @superjohan for ztracker_mac cross-platform groundwork |
| 2026-04-12 | 4ff57a2 | Phase 4: macOS native build works. One source tree, two targets. |
| 2026-04-12 | caa7ff5 | Phase 2+3: RtMidi, portable timer, std::thread/mutex, platform abstraction layer. |
| 2026-04-12 | 33f107e | CMake cross-build from macOS + MinGW-w64, default to windowed mode. |
| 2019-01-04 | 2518ad0 | removal of outdated email address for Daniel |
| 2019-01-04 | cd5250e | fix features list |
| 2019-01-04 | 201ee57 | added links |
| 2019-01-04 | d2831c9 | added list of features |
| 2019-01-04 | f71b641 | readme.md updates |
| 2019-01-04 | b5a242b | moved building.txt to readme.md |
| 2019-01-04 | 9cfc43a | old 0.85 skins + readme |
| 2019-01-04 | 8cb4f40 | 5 zTracker skins added into the repo |