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 interface preview using fictional files and paths. It illustrates the current workflow without capturing a real desktop.
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?
- 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.
- 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.
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.
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.
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 ReleaseThe 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.
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.0The 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.
Run the automated behavior tests:
dotnet run --project .\tests\WorkspaceRecall.Tests\WorkspaceRecall.Tests.csproj -c ReleaseThe 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- 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.
If Space Recorder solves a problem you have, star the repository to save it for later and help other Windows users discover it.
