v1.9.0 - Tabs & Editor Groups
[1.9.0] - 2026-06-21 - Tabs & Editor Groups
The deepest structural change MidiEditor AI has had. The editor was
single-document to its core - one open file, one of every widget, shared global
state throughout. 1.9.0 rebuilds that foundation into a true multi-document
architecture and turns the front end into a modern editing workspace: keep
several files open as tabs, split the editor into two
side-by-side editor groups, and drag tabs between them - with selection,
channel visibility, tools, MidiPilot, the MCP server and live collaboration all
reworked to act per-document. The short feature list below sits on top of that
rebuild; despite how far it reaches, every existing single-file workflow behaves
exactly as before.
Summary
- Multiple files open at once, as tabs. New and Open now add a tab instead of replacing the current document. Switch by clicking, close with a per-tab save prompt, reorder by dragging, and open a fresh tab with the + button.
- Two files side by side - independent editor groups. Split opens a second, fully-editable editor group with its own tab bar. Drag tabs between the groups (a blue caret shows where they land; dropping anywhere in a pane works too). The focused pane drives the side panels, tools, zoom and the playback cursor.
- Your session is remembered. Open tabs, the split layout and the active tab are restored on the next launch - including the restart that applies a theme change or an update.
Full Changelog - Tabs & Editor Groups
Added
- Multi-document tabs. A tab strip above the timeline; File -> New / File -> Open open each document in its own tab (the current one stays open). Close a tab with its ✕ (save prompt on unsaved changes), reorder tabs by dragging, open an empty tab with the + button. Per-document selection, channel visibility and viewport are kept, so switching tabs restores that document's state.
- Editor groups (Split View). View -> Split View (or the Split tab-tool) opens a second editor group beside the first and moves the chosen tab into it. Both groups are independent and fully editable; each has its own tab bar and its own set of documents. The focused pane (the one you last clicked) is the active document - side panels, tools, selection, zoom and playback all follow it.
- Cross-group tab drag & drop. Drag a tab from one group onto the other to move the document across, with a blue insertion caret showing the drop position. Dropping a tab anywhere inside a group's editor area (not just on the thin tab bar) moves it into that group.
- Tab-tools row. Under the standard New / Open / Save / Undo / Redo buttons (two-row toolbar): New Tab, Split, Clone (duplicates the current document into a new, unsaved "<name> (copy)" tab), and Close All Tabs (closes every tab in both groups with save prompts, then starts fresh with one empty document). The Split icon is drawn from the active theme's colours.
- Collapse / restore / close the second group. The secondary group's bar has a collapse control that hides the pane while keeping its tabs - a theme-coloured "Group 2 (N)" chip then appears in the primary tab bar to restore it - and a close control that closes the group and all its tabs (with save prompts).
- Drop a file into a specific pane. Dragging a MIDI file from the file manager onto a pane opens it there; the target group is outlined while you drag.
- Side-by-side comparison (Sync). The secondary group's Sync toggle links the two views: scroll, zoom and the cursor/marker follow the left (master) document, and playback plays the left while both panes' cursors run together. The right is a read-only reference, but you can still pick its tab to toggle its own track/channel visibility (per-document) - ideal for lining up a cover against the original.
- Session restore. The open tabs of both groups, the split/collapsed state and the active tab are saved on exit and reopened on the next start - across normal restarts, theme-change restarts and auto-update restarts. (Never-saved documents can't be reopened by path, so they're offered for saving on close.)
Fixed / Changed
- View operations follow the focused pane. Zoom, the playback cursor, measure/marker navigation, smooth-scrolling and the shared scrollbars now act on the focused editor group instead of always the primary one, so each split pane can be scrolled independently with the same bars.
- Active editor group is highlighted. When split, the focused group's tabs stay fully lit while the other group's tabs dim, making it obvious which side is active.
- Clicking any tab focuses its group. Clicking a tab now always focuses that editor group - including clicking the tab a group already has selected - so you no longer have to click into the note roll to move focus.
- AI edits always land on the document they were started on. If you switch tabs while MidiPilot (agent or simple mode) is working, its result is applied to the original document (and its selection), not whichever tab happens to be active when the response arrives. MCP sessions likewise bind to the document they are working on, so a read-then-edit stays on the same document across tab switches (the
get_editor_statetool re-syncs the session to the active document). Closing that document mid-run safely stops the run / unbinds the session. - Selection is per-pane. Each pane draws its own document's selection (and only the focused pane draws the tool overlay), so selecting in one group no longer paints a "ghost" selection in the other.
- Closing prompts every unsaved tab. Quitting now offers to save all unsaved documents across both groups, not just the active one - and cancelling the save dialog no longer discards the document.
- Live collaboration stays single-document. While a LAN/WAN session is active the tabs are locked to the shared document (other tabs, the tab tools and File New/Open are disabled, and in a split the non-session pane is frozen); everything unlocks again when the session ends. This keeps live collaboration on the proven single-document model.