Skip to content

Repository files navigation

Space Recorder

Capture and restore a multi-monitor Windows workspace, including verified document paths when applications expose them.

Early prototype — source only. No public executable is available yet. Local builds are unsigned and should not be redistributed as trusted releases. See the release checklist for the signing and clean-machine gates required before publication.

Synthetic Space Recorder interface preview

Synthetic interface preview using fictional files and paths. It illustrates the current workflow without capturing a real desktop.

Why Space Recorder

Restoring window positions is only part of restoring a workspace. Space Recorder also attempts to identify the exact file behind each captured window, then makes incomplete captures visible before restoration:

  • File identified — a verified existing file path can be reopened.
  • Program only — the user accepts reopening the application without promising its internal session or tabs.
  • Needs review — no file has been identified and the user must choose what to do.
  • Excluded — the captured window is intentionally omitted from restore.

This separates two different questions:

  • Capture completeness: Did every eligible user-facing window appear in the inventory?
  • Restore readiness: Can every included window be reopened?

Current capabilities

  • Captures eligible application windows, including minimized windows.
  • Records display, position, size, Z-order, and normal, minimized, or maximized state.
  • Attempts automatic file detection without relying on a fixed extension list.
  • Uses Microsoft Office and AutoCAD automation, an optional Revit 2026 helper, and a generic existing-path resolver.
  • Allows manual file selection, Program only, or exclusion when automatic detection is unavailable.
  • Restores ready files and applications, then returns matched windows to the saved displays and positions.
  • Keeps optional local window previews disabled by default.

Current limitations

  • One saved layout named Default Layout.
  • File detection cannot be guaranteed for every Windows application.
  • Unsaved documents have no path and cannot be reopened.
  • Program-only restoration cannot promise that internal tabs, sessions, or unsaved state will return.
  • Some applications can reopen successfully without exposing enough identity for reliable window placement.
  • No signed installer, automatic updater, or public binary is available.

See the application compatibility matrix for version-specific, privacy-safe test evidence. Its entries are evidence snapshots, not compatibility guarantees.

How this differs from PowerToys Workspaces

Microsoft PowerToys Workspaces restores application positions and supports manually configured command-line arguments, including document paths. Space Recorder focuses on attempting automatic, verified document-path detection for each captured window and showing its readiness before restore.

See Microsoft's PowerToys Workspaces documentation for the official PowerToys capabilities.

Privacy and security

Space Recorder has no built-in network communication, telemetry, analytics, accounts, uploads, input hooks, startup service, or remote-control feature. It does not request administrator privileges.

The saved layout can contain private window titles and local file, folder, and executable paths. Optional previews can contain anything visible in a window. Data stays under %LOCALAPPDATA%\WorkspaceRecall, protected for the current Windows user, local system, and local administrators.

Restore is an explicit user action. It can launch captured applications and allowed local document paths, then move or change the state of matched windows. Executable, script, installer, shortcut, and registry paths are not accepted as documents. This is defense in depth; trusted applications may still execute active content inside otherwise allowed document formats.

Restoring a path on a network share can cause Windows and the target application to access that share. The optional Revit integration is disabled by default and must be enabled explicitly.

Read PRIVACY.md for the data lifecycle and SECURITY.md for the security boundary and private reporting process.

Build from source

Requirements:

  • Windows 10 or 11
  • .NET 8 SDK
  • optionally, Autodesk Revit 2026 to build the Revit helper

Build the portable, framework-dependent output:

.\build.ps1 -Configuration Release

The output is placed in dist\WorkspaceRecall-win-x64. The script locates a local Revit 2026 installation when available. To provide the API location explicitly:

.\build.ps1 -Configuration Release -RevitApiPath 'C:\Program Files\Autodesk\Revit 2026'

If the Revit API assemblies are unavailable, the main app is still published without the optional helper.

Prepare a Microsoft Store package

Maintainers can build and validate an unsigned, self-contained x64 Store package. This requires the Windows 10 or 11 SDK with the x64 MakeAppx.exe tool installed:

.\scripts\build-msix.ps1 -PackageVersion 1.0.0.0

The script creates an .msix and .msixupload under dist\SpaceRecorder-msix. It does not install, sign, upload, or publish anything. The Microsoft Store signs an accepted package during its publishing process.

The optional Revit helper is intentionally excluded from the Store package. The helper exchanges local bridge files with Revit, while normal MSIX file virtualization can isolate those files from an external Revit process. Avoiding the restricted unvirtualizedResources capability keeps the Store package's security boundary narrow. The source-built portable version can still include the helper when the Revit API is available.

Verify

Run the automated behavior tests:

dotnet run --project .\tests\WorkspaceRecall.Tests\WorkspaceRecall.Tests.csproj -c Release

The following checks use the current desktop and saved Default Layout. Review local data first because real screen or document names may be sensitive:

dotnet run --project .\tests\WorkspaceRecall.Tests\WorkspaceRecall.Tests.csproj -c Release -- --live
.\tests\verify_inventory_ui.ps1

Contributing and support

  • Read CONTRIBUTING.md before proposing a change.
  • Use GitHub Issues for reproducible bugs and scoped feature requests.
  • Use GitHub Discussions for questions and general feedback.
  • Report security problems through the private process in SECURITY.md. Do not publish sensitive paths, layouts, screenshots, or proof-of-concept details in an issue.

License

MIT

If Space Recorder solves a problem you have, star the repository to save it for later and help other Windows users discover it.

About

Privacy-first Windows app for restoring multi-monitor layouts with automatic verified document-path detection.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages