Skip to content

Title Bar and Project Files

Rev Oconner edited this page Apr 30, 2026 · 5 revisions

Title Bar and Project Files

The title bar handles project-level actions: starting, opening, saving, and reopening recent projects. The unsaved-changes safety net also lives here.

The buttons

From left to right (after the app icon and window title):

image
Button What it does
New Starts a fresh empty project. If the current project has unsaved changes you are prompted first.
Open Opens a .muvp project file. Prompted for unsaved changes first.
Recent files Pops up a list of the last ten projects you saved or opened. Click an entry to open it.
Save Saves the current project. Prompts for a path on the first save; reuses it after that.
Save as Always prompts for a new path. Use to fork a project.
Preferences Opens the Preferences dialog.
Help Opens the About dialog: app name, version, copyright, and quick-link buttons (GitHub, Documentation / this wiki, License, Privacy Policy).

The window title shows the project name (or Untitled for an unsaved project) followed by * when there are unsaved changes.

image

The .muvp project file

A .muvp file is a small JSON pointer sheet, not a container archive. It stores:

  • The path to every mesh and texture in your project (both as an absolute path and as a path relative to the .muvp itself).
  • The channel assigned to each texture.
  • The active texture types list.
  • Every Atlas / Quality / Output setting (resolution, padding, dilation, filter, packer, allow-rotation, world-scale, output folder, atlas format, mesh format).
  • UI state — which view (source vs atlas) was last shown, overlay toggle states.
  • The most recent pack's atlas paths, so reopening the project flips straight back to the atlas view.

It does not store the meshes or textures themselves — just the paths to them. The file is small (a few kilobytes for any realistic project).

Sharing a project across machines

Because the file stores both absolute and relative paths, you can zip a project folder along with its meshes and textures and reopen it on a different machine. The app tries the absolute path first, then falls back to the relative path. If neither works, the row is flagged as missing and you can right-click to relocate it.

If many rows are missing under the same parent folder (for example you moved D:/Art/... to E:/Art/...), relocating one will offer to fix the rest under the same new root.

Save semantics

  • The Save button (and Ctrl+S) saves in place if a path is known, otherwise prompts for one.
  • Save as (and Ctrl+Shift+S) always prompts.
  • Saving never packs. Saving and packing are independent.
  • A successful pack does not clear the unsaved-changes mark — the pack's results are stored separately and are not part of the project file's "is the input set clean" question.

Unsaved-changes prompt

If the current project has unsaved changes and you do anything that would lose them — clicking New, Open, picking a recent file, or closing the window (X button, Alt+F4, taskbar Close) — the app shows a three-button confirm:

  • Save — saves the project, then proceeds.
  • Don't Save — discards changes and proceeds.
  • Cancel — aborts. Nothing changes.

Pressing Enter is the same as clicking Save. Clicking outside the dialog is the same as Cancel. There is no Escape shortcut — close the dialog with the X, the Cancel button, or by clicking the backdrop.

Recent files

image

The Recent files popover shows the last ten projects you saved or opened, most recent first. Each entry is the filename in the title row with the directory underneath in dimmer text. Clicking an entry runs the unsaved-changes prompt for the current project, then opens the chosen one.

If a recent entry no longer exists on disk, opening it shows an error and the entry is automatically removed from the list.

The list is stored at ~/muvp/recent_files.json. Clearing it is a one-click action inside the popover.

What counts as a change

Any of these flips the project to "unsaved":

  • Adding, removing, or replacing a mesh or a texture.
  • Changing a channel assignment.
  • Changing the Active Texture Types list.
  • Changing any Atlas, Quality, Output, or Pack setting.
  • Changing the output folder or atlas / mesh format.

The pack button itself does not flip the dirty mark. Neither do view-only actions like switching between source and atlas preview, zooming, panning, or toggling the wireframe overlay.

See also

Clone this wiki locally