Skip to content

Explicit-save UX: Save button, dirty indicator, quit warning, project title, native bridge hook (#403 Phase A) #449

Description

@maboa

Part of the #403/#404 Phase A push. HLE moves to an explicit-save document model (matching Glider): the .hyperaudio file is the durable copy, OPFS is crash recovery only.

  1. Save button in the navbar with a dirty indicator (dot/filled state), wired to the same save path as FILE → Save Project; ⌘/Ctrl-S binding.
  2. beforeunload warning when dirty — the quit-without-saving guard.
  3. Project title source: Save/open projects as a single .hyperaudio file (#403) #404 read #save-localstorage-filename as the title; that field was deleted with the legacy dialogs (Simplify the FILE-menu save/load dialogs once Recents autosaves #436/Remove the FILE-menu Save/Load Local Storage dialogs #439). Add an editable project-title field (defaulting from the opened filename or media name) and use it for the suggested save filename.
  4. Native bridge hook: before falling back to <a download>, offer the finished archive to a registered bridge (e.g. window.hyperaudioProjectBridge.save(blob, suggestedName) or a cancelable custom event carrying the Blob). An embedding native app registers the bridge at startup and writes through its own filesystem — retiring injected save UI and keeping one save path across web and native. Document the hook's shape alongside the format spec.
  5. The blocking confirm() dialogs in the save/open flow can become in-app modals later — not blocking for Phase A.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestuxImproves the user experience

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions