Skip to content

Consume OpenApparatus.IO; freeze desktop pending web-port parity#16

Closed
SilicoBen wants to merge 2 commits into
mainfrom
feat/consume-io-lib
Closed

Consume OpenApparatus.IO; freeze desktop pending web-port parity#16
SilicoBen wants to merge 2 commits into
mainfrom
feat/consume-io-lib

Conversation

@SilicoBen

Copy link
Copy Markdown
Contributor

Summary

Companion PR to OpenApparatus/core#1 (already merged): the file-format and exporter code now lives in the shared OpenApparatus.IO library, so this repo deletes its local copies and consumes them via ProjectReference.

Also adds a maintenance-freeze banner to the README — a browser-based replacement is in development and will become the primary client; only critical bug fixes here in the meantime.

What changed

  • ProjectReferenceOpenApparatus.IO added to the csproj.
  • One-file GlobalUsings.cs brings OpenApparatus.IO and OpenApparatus.IO.Exporters into scope across the assembly. Avoids touching 120+ callsites' using blocks one by one.
  • 6 files deleted (now in the shared lib): ObjExporter, GltfExporter, JsonExporter, ProjectIO, PlacementConstraints, RoomObject.
  • ProjectIO is no longer VM-coupled. The new ProjectIO.Save(path, ProjectFile) / Load(path) → ProjectFile are pure data ops; the VM gains a ToProjectFile() instance method (extracted from the deleted ProjectFile.From(vm) static) to bridge its observable-property state into the data shape. The existing RestoreFromProjectFile() is the load-side adapter.
  • A few fully-qualified callsites in Views/ and ViewModels/ updated to drop the OpenApparatus.Studio.Services. / OpenApparatus.Studio.ViewModels. prefix on the moved types.

Net delta: −1,609 lines (1,716 deleted, 107 added).

Maintenance freeze

The README now carries a banner directing contributors to the web port. New features land there from now on; only critical bug fixes get merged here. The desktop repo will be archived once the web port reaches parity.

Test plan

  • dotnet build clean
  • No behavior changes (refactor only — same exporter outputs, same .oapp file format, same VM API)
  • Reviewer to smoke-test save/load and OBJ/glTF/JSON export with an existing scene file before merge

SilicoBen added 2 commits May 1, 2026 02:10
- Adds ProjectReference to OpenApparatus.IO and a one-file GlobalUsings.cs
  that brings IO + IO.Exporters into scope, avoiding per-file using updates
  across 120+ callsites.
- Removes the local copies of ObjExporter, GltfExporter, JsonExporter,
  ProjectIO, PlacementConstraints, RoomObject — they now live in the
  shared OpenApparatus.IO library.
- ProjectIO is no longer VM-coupled. The Save/Load pair now takes /
  returns a ProjectFile data object; the VM gains a ToProjectFile()
  instance method (mirror of the deleted ProjectFile.From(vm) static)
  to bridge its observable-property state into the data shape, and the
  existing RestoreFromProjectFile() is the load-side adapter.
- README gets a maintenance-freeze banner pointing readers and
  contributors at the in-development browser replacement at
  OpenApparatus/openapparatus-studio-web. Only critical bug fixes
  during the port; feature ideas land as issues against the web app.

Net delta: -1,609 lines (1,716 deleted, 107 added). Studio still builds
clean and behaves identically.
@SilicoBen

Copy link
Copy Markdown
Contributor Author

Superseded by #19, which delivers the same OpenApparatus.IO consumption without the maintenance-freeze README addition (the web-app replacement plan was dropped; Studio remains the primary client).

@SilicoBen SilicoBen closed this May 14, 2026
@SilicoBen
SilicoBen deleted the feat/consume-io-lib branch May 14, 2026 18:10
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