A local-first note taking app

Tabs per tile (phase 3): focus-or-append open flow master

Opening a document no longer replaces the active tab. New pure helper tabsModel.planOpen decides: focus an existing tab showing the same document (no reopen), else reuse the active empty start tab, else append a new tab. makeTabId is only called when a tab is actually created. useTilingDocumentSlots routes opens through planOpen and skips startDocumentOpen when the document was already open (focus only). Also make the active-tab highlight switch instantly: tab chips opt out of the global 320ms color transition (transition-none) so selecting a tab updates the highlight immediately. Fix tab switches sometimes showing the previous file: key DocumentPane by document id in DocumentSlotView so switching to a different document remounts a fresh editor. The CodeMirror view binds content on mount only, and the in-place content swap was skippable by the isWriting echo-suppression lock, so a reused editor could keep showing the old file even with the new tab marked active. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>