Skip to content

Add a Microsoft Store package that updates through the Store and keeps guides in the home folder - #179

Merged
Twest2 merged 7 commits into
mainfrom
feat/178-microsoft-store
Oct 29, 2026
Merged

Twest2 merged 7 commits into
mainfrom
feat/178-microsoft-store

Conversation

@Twest2

@Twest2 Twest2 commented Oct 29, 2026 •

Copy link
Copy Markdown
Owner

Issue

Relates to #178 (point 1, SmartScreen warnings; translations are not part of this PR)

Summary

Adds a Microsoft Store package for Windows. Microsoft signs Store packages, so people who install StepForge from the Store get no Windows protected your PC warning and need no administrator rights. The Store also updates StepForge automatically. Publishing is free for individual developers and uses your own identity.

The Store becomes the recommended Windows install in the docs. The .exe installer and Chocolatey stay as they are.

Changes

  • Store package: npm run package:windows:store (scripts/package-windows-store.js) builds an unsigned .appx from packaging/windows/store/identity.json (the reserved app name and the values Partner Center assigns). Partner Center signs the package.
    • Version numbers: the Store requires the fourth part to be 0, so StepForge a.b.c.d becomes Store version a.b.(c×100+d).0. Every past release maps to a higher number than the one before.
    • Command for agents: the manifest adds a stepforge.exe execution alias.
    • Images: npm run icons now also writes the Store tiles and logos to build/appx/.
  • Updates: a Store install never offers Chocolatey's Update now. When Check for updates finds a newer version, it shows Open Microsoft Store, which opens StepForge's Store page through a URL built in the main process (app:openStore).
  • Library location (all Windows installs): the .exe, Chocolatey and Store versions all default to %USERPROFILE%\StepForge.
    • Not %APPDATA%: Windows deletes everything a Store app writes there when it is uninstalled. %APPDATA%\stepforge is also Electron's own profile folder.
    • Not Documents: OneDrive (on by default on many Windows 11 PCs), Dropbox and Google Drive often back up Documents. That would upload every guide without the user turning on sync, and fight StepForge's own sync.
    • Automatic migration (core/library-location.js): on the first start of the new version, a library in %APPDATA%\stepforge is copied to %USERPROFILE%\StepForge. Only StepForge's folders move (library, settings, cloud, shared-links), not Electron's profile files. Every file's hash is compared, and only then does the app switch. On failure it keeps the old folder active and shows why in Guide storage. A durable checkpoint lets the next start recover even if rollback failed. If the two copies have diverged, both are kept and Guide storage explains how to recover manually.
    • Old copy: retained until you remove it yourself. No install deletes it automatically, because another installation may still use it. Guide storage reports its backup path; manual cleanup must leave Electron’s profile and library-location.json in place.
    • Not moved: a folder the user chose, a pending manual move, STEPFORGE_DATA_DIR, or a new folder that already holds a library (for example, both versions installed).
    • MCP server: reads the old folder until the app has moved it, so agents never see an empty library.
    • Manual moves (Choose folder…): also copy only StepForge's folders now. They no longer try to copy or rename Electron's profile, which on Windows is the same folder as the old default.
  • AI agents: in a Store install, the agent setup commands use the stepforge.exe alias. The real exe path includes the version number, so it changes with every update.
  • CI and releases:
    • CI: the Windows job builds the package with a placeholder identity on every PR and uploads it as microsoft-store-test-package.
    • Release workflow: builds the real package once identity.json is filled in and uploads it as the microsoft-store-package artifact. It is not attached to the GitHub release.
  • Docs:
    • New: docs/windows/microsoft-store.md (installing, updates, switching from the .exe, uninstalling) and docs/windows/MICROSOFT_STORE_RELEASE.md (the maintainer's Partner Center steps).
    • The README, the Windows install guide and the Chocolatey guide now recommend the Store.
    • Updated: data-location tables, privacy, AI agents, contributing and architecture.

Area

  • Settings
  • Packaging / install
  • Documentation
  • Tests
  • Git / workflow

Testing

  • bash tests/run_test.sh passes (not run: it launches the app)
  • npm test: 1048 passed, 0 failed, 20 skipped. New tests cover version mapping, identity validation, the manifest and alias, tile sizes, Store detection, the default library, the alias path, the Store URL, the update check, the Settings → About buttons and the Update now refusal.
  • tests/checks/test_repo_structure.sh passes.
  • Not yet verified on Windows. An .appx can only be built on Windows, so this PR's windows-latest CI run is the first real build. Installing the package and checking the alias, the %USERPROFILE%\StepForge library and the Store button still has to be done by hand (steps in the release guide under "Trying a package before you submit").

Screenshots or recordings

N/A

Rollout notes

Steps for myself. Details are in docs/windows/MICROSOFT_STORE_RELEASE.md.

  1. Create a free individual developer account at storedeveloper.microsoft.com and verify your ID.
  2. In Partner Center: Apps and games → New product → MSIX or PWA app, and reserve StepForge.
  3. Fill in packaging/windows/store/identity.json and commit it: the name you reserved (displayName, which is a variant such as "StepForge Guides" if StepForge was taken), plus Product management → Product identity (Package/Identity/Name, Package/Identity/Publisher, Package/Properties/PublisherDisplayName, Store ID).
  4. Merge, then run the Release workflow. Download the microsoft-store-package artifact.
  5. In Partner Center, fill in the first submission: pricing, properties with the privacy policy URL, age rating, store listing with at least one screenshot, the runFullTrust reason and notes for certification. The release guide has text to use.
  6. Upload the .appx and submit for certification.
  7. Optional, once the listing is live: replace the Store search link in the docs with the apps.microsoft.com/detail/<Store ID> link.

Until the listing is live, the docs' Store link opens a search that finds nothing. Until identity.json is filled in, the release workflow skips the Store package, and releases work as before.

Checklist

  • Linked to an issue above
  • Scope is limited to that issue
  • Docs updated for user-visible changes
  • No new network calls, runtime dependencies, or third-party branding
  • Follow-up work is tracked in an issue

Comment thread docs/windows/microsoft-store.md Outdated
with Chocolatey.
3. Install StepForge from the Store, as above.

Keep only one of the two installed. Having both gives you two StepForge entries

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add an important tag

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Done in 742c13e: it's an [!IMPORTANT] callout now.

Comment thread docs/windows/MICROSOFT_STORE_RELEASE.md Outdated

> No account or sign-in is needed. To test: open StepForge, choose New guide,
> then Capture → Start capture session. Click anywhere on screen a few times,
> then stop the recording from the StepForge icon in the notification area.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

change to system tray?

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Changed to "system tray" in 742c13e.

Comment thread docs/GETTING_STARTED.md Outdated
Comment thread docs/windows_installation.md Outdated
Comment thread README.md Outdated
Comment thread docs/windows/microsoft-store.md Outdated
Comment thread docs/windows/microsoft-store.md Outdated
@Twest2 Twest2 changed the title Add a Microsoft Store package that updates through the Store and keeps guides in Documents Add a Microsoft Store package that updates through the Store and keeps guides in the home folder Oct 29, 2026
@Twest2

Twest2 commented Oct 29, 2026

Copy link
Copy Markdown
Owner Author

BLOCKING: Remove maintainer note created by Claude about the integration with Microsoft store.

@Twest2
Twest2 merged commit 9c38bb6 into main Oct 29, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[FEAT] Add multi-language support and add Microsoft store download options.

1 participant