Skip to content

Store GUI machines as isolated TOML configurations - #195

Draft
iblowmymind wants to merge 2 commits into
techomancer:mainfrom
iblowmymind:feature/gui-machines-overhaul
Draft

iblowmymind wants to merge 2 commits into
techomancer:mainfrom
iblowmymind:feature/gui-machines-overhaul

Conversation

@iblowmymind

Copy link
Copy Markdown
Contributor

iris-gui currently stores machine configurations inside gui.json, duplicating the emulator’s TOML format and sharing machine state paths. This change discovers and edits canonical machines/<name>/<name>.toml files alongside gui.json and runs each machine from its own directory.

  • Keep GUI preferences in gui.json; save machine settings using the same TOML schema consumed by the emulator.
  • Store all TOML filesystem paths relative to the machine directory. New disks default to disks/, with private NVRAM and NVEEPROM alongside the TOML.
  • Migrate existing JSON machines with a preferences backup, preserve existing disk files, and isolate battery-backed state. Preserve malformed configurations and report failures.
  • Support sandboxed macOS storage and bookmarks, isolate App Store CHD diffs, and guard working-directory changes while emulator operations are active.
  • Remove TOML import/export actions and use the saved TOML directly for GUI and developer launch paths. Update configuration documentation.
  • In a separate commit, change the About description to “Emulator for various SGI machines”.

Validation:

  • cargo test -p iris-gui --locked --offline: 69 passed.
  • cargo test -p iris-gui --features appstore,pcap --locked --offline: 73 passed.
  • cargo check -p iris-gui --features bundled,pcap --locked --offline: passed.
  • Tests cover migration, relative paths, machine discovery and lifecycle, private persistent state, external TOML edits, rename/delete retention, and sandbox resource handling. Headless lifecycle tests passed outside the tool sandbox after its shared-memory restriction prevented the initial run.
  • Signed macOS sandbox GUI behavior, visual GUI interaction, full IRIX disk boot, and Linux AppImage runtime behavior remain untested.

@iblowmymind
iblowmymind force-pushed the feature/gui-machines-overhaul branch from 4109331 to d4f4005 Compare October 8, 2026 22:27
@iblowmymind
iblowmymind force-pushed the feature/gui-machines-overhaul branch from d4f4005 to a761fc8 Compare October 9, 2026 06:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant