You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The side panel returns as a project library over OPFS — the management UX of the former Recents (last-edited list, Starred section, kebab rename/duplicate/delete, current-project highlight) rebuilt against the .hyperaudio project model instead of localStorage. Successor to #434/#435/#440's UX after #451's deletion; pulls the per-project working-copy architecture forward from the Phase B umbrella (#452).
The side panel lists the library: last-edited order with created-date fallback, Starred pinned above, current project highlighted, kebab actions (rename = the project title Save uses; duplicate = new id sharing nothing or copying media; delete with confirm — removes the directory).
Switching projects asks nothing and loses nothing: the outgoing project's pending autosave flushes to its own directory. The discard-on-switch dialogs existed only because there was one work slot; they go.
Save keeps its meaning: the .hyperaudio download is the durable, portable copy. The dirty dot and quit guard become per-project ("changes not yet saved to a file" tracked per project via its own lastDownloadAt).
The Second-tab guard: one Web Lock, read-only banner (#403 Phase A) #450 Web Lock becomes per-project (hyperaudio:project:<id>): two tabs can edit different projects; the same project in a second tab gets the guarded banner. The origin-global lock remains for index writes.
Identity is OPFS-native (generated ids) — none of the file↔workdir matching hazards; re-opening the same .hyperaudio twice simply creates a second library entry.
The side panel returns as a project library over OPFS — the management UX of the former Recents (last-edited list, Starred section, kebab rename/duplicate/delete, current-project highlight) rebuilt against the
.hyperaudioproject model instead of localStorage. Successor to #434/#435/#440's UX after #451's deletion; pulls the per-project working-copy architecture forward from the Phase B umbrella (#452).Model
.hyperaudio) lives inwork/<projectId>/— the single-file snapshot (Save integrity: delegated edit tracking, generation guards, transactional open (#403 Phase A) #448) plus media, with a small library index (name, starred, timestamps, media meta) maintained alongside..hyperaudiodownload is the durable, portable copy. The dirty dot and quit guard become per-project ("changes not yet saved to a file" tracked per project via its own lastDownloadAt).hyperaudio:project:<id>): two tabs can edit different projects; the same project in a second tab gets the guarded banner. The origin-global lock remains for index writes..hyperaudiotwice simply creates a second library entry.Notes