Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ macOS experimental; Linux unsupported.

## Distribution and Updates

- **Microsoft Store** (in certification) — automatic updates after approval.
- **Microsoft Store** (live) — automatic updates through the Store.
- **GitHub MSIX** — advanced users, unsigned, requires Developer Mode for sideloading.
- **Legacy Setup.exe** — manual recovery only.
- The app detects updates via GitHub API (opens browser). It never downloads or runs installers.
Expand Down
4 changes: 2 additions & 2 deletions PRIVACY.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
**Effective date:** June 18, 2026

See the rendered policy at:
**[https://sparshsam.github.io/pdfreader-by-sparsh/privacy/](https://sparshsam.github.io/pdfreader-by-sparsh/privacy/)**
**[https://sparshsam.github.io/openreader/privacy/](https://sparshsam.github.io/openreader/privacy/)**

---

Expand Down Expand Up @@ -33,4 +33,4 @@ No third-party analytics or tracking SDKs are embedded. The only external servic

## Contact

Open an issue on the [GitHub repository](https://github.com/sparshsam/pdfreader-by-sparsh).
Open an issue on the [GitHub repository](https://github.com/sparshsam/openreader).
18 changes: 9 additions & 9 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@
</p>

<p align="center">
<a href="https://github.com/sparshsam/pdfreader-by-sparsh/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/sparshsam/pdfreader-by-sparsh?sort=semver&label=stable%20release"></a>
<a href="https://github.com/sparshsam/openreader/releases/latest"><img alt="Latest release" src="https://img.shields.io/github/v/release/sparshsam/openreader?sort=semver&label=stable%20release"></a>
<a href="LICENSE"><img alt="License" src="https://img.shields.io/badge/license-AGPLv3-blue"></a>
<a href="https://github.com/sparshsam/pdfreader-by-sparsh/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/sparshsam/pdfreader-by-sparsh/ci.yml?label=CI"></a>
<a href="#"><img alt="Microsoft Store" src="https://img.shields.io/badge/Store-In%20certification-lightgrey"></a>
<a href="https://github.com/sparshsam/openreader/actions/workflows/ci.yml"><img alt="CI" src="https://img.shields.io/github/actions/workflow/status/sparshsam/openreader/ci.yml?label=CI"></a>
<a href="https://apps.microsoft.com/detail/9MXDVW2645LL"><img alt="Microsoft Store" src="https://img.shields.io/badge/Microsoft%20Store-Get%20OpenReader-0078D4"></a>
<a href="#download"><img alt="Windows" src="https://img.shields.io/badge/platform-Windows%2010%2F11-blue"></a>
</p>

Expand All @@ -34,13 +34,13 @@ Use OpenReader directly, from scripts, or through AI agents.

### Microsoft Store (Recommended)

The Store submission is in certification. Once approved, install with one click — automatic updates included.
OpenReader is **live in the Microsoft Store**.

*Store link will appear here after certification.*
**Recommended:** Install [OpenReader by Sparsh on Microsoft Store](https://apps.microsoft.com/detail/9MXDVW2645LL).

### GitHub Releases (Advanced Users)

MSIX packages are available on the [Releases page](https://github.com/sparshsam/pdfreader-by-sparsh/releases).
For advanced users, MSIX packages remain available on the [GitHub Releases page](https://github.com/sparshsam/openreader/releases).

| Platform | Package | Notes |
|---|---|---|
Expand All @@ -55,7 +55,7 @@ MSIX packages are available on the [Releases page](https://github.com/sparshsam/
| Platform | Status |
|---|---|
| Windows 10/11 | Supported |
| Microsoft Store | In certification — recommended after approval |
| Microsoft Store | Live in Microsoft Store |
| GitHub MSIX | Advanced users |
| macOS Apple Silicon | Experimental |
| macOS Intel | Experimental |
Expand Down Expand Up @@ -237,8 +237,8 @@ dist\OpenReader\
macOS packaged builds are **experimental**. To run from source:

```bash
git clone https://github.com/sparshsam/pdfreader-by-sparsh.git
cd pdfreader-by-sparsh
git clone https://github.com/sparshsam/openreader.git
cd openreader
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Expand Down
11 changes: 6 additions & 5 deletions RELEASE.md
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ no separate code-signing certificate is needed.

The app's Help → Check for Updates:

1. Calls `https://api.github.com/repos/sparshsam/pdfreader-by-sparsh/releases/latest`
1. Calls `https://api.github.com/repos/sparshsam/openreader/releases/latest`
2. Reads `tag_name` and compares against `__version__`
3. If a newer version exists, shows a dialog with release notes
4. User clicks "Open Releases Page" → browser opens GitHub Releases
Expand All @@ -83,21 +83,22 @@ After publishing a tag:
You can inspect the latest release assets with:

```bash
gh release view --repo sparshsam/pdfreader-by-sparsh --json tagName,assets
gh release view --repo sparshsam/openreader --json tagName,assets
```

Or via the same API used by the app:

```bash
curl https://api.github.com/repos/sparshsam/pdfreader-by-sparsh/releases/latest
curl https://api.github.com/repos/sparshsam/openreader/releases/latest
```

## MSIX Signing

The MSIX package is unsigned for GitHub Release builds.

1. **Microsoft Store** — Submission is in certification. The Store signs the
package automatically with its Store identity.
1. **Microsoft Store** — Live at
[apps.microsoft.com/detail/9MXDVW2645LL](https://apps.microsoft.com/detail/9MXDVW2645LL).
The Store signs the package automatically with its Store identity.
2. **Sideloading** — Unsigned MSIX from GitHub Releases requires Windows
Developer Mode. Local test-signing scripts are in `packaging/msix/`.
3. **No self-procured code-signing cert** — The Store handles production signing.
Expand Down
2 changes: 1 addition & 1 deletion SUPPORT.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ If you are using OpenReader v1.0.0 or v1.0.1 on Windows and see this error when

**One-time manual recovery** — you need to install v1.0.3 manually, then the updater will work from then on:

1. **Download the installer** from the [v1.0.3 release page](https://github.com/sparshsam/pdfreader-by-sparsh/releases/tag/v1.0.3) — use `OpenReader-Setup.exe`.
1. **Download the installer** from the [v1.0.3 release page](https://github.com/sparshsam/openreader/releases/tag/v1.0.3) — use `OpenReader-Setup.exe`.
2. **Close OpenReader** if it is running (File → Quit, or close the window).
3. **Right-click the installer** and choose **Run as Administrator**.
4. **Install over the existing version** — use the same install location (`C:\Program Files\OpenReader` by default).
Expand Down
4 changes: 2 additions & 2 deletions docs/macos.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ Requirements:
Clone and build:

```bash
git clone https://github.com/sparshsam/pdfreader-by-sparsh.git
cd pdfreader-by-sparsh
git clone https://github.com/sparshsam/openreader.git
cd openreader
chmod +x scripts/build_macos.sh
./scripts/build_macos.sh
```
Expand Down
6 changes: 3 additions & 3 deletions docs/privacy/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ <h2>Network Access</h2>
<p>OpenReader makes a single optional network request:</p>
<ul>
<li><strong>Update check (opt-in):</strong> On launch (if enabled), the app sends a GET request to
<code>https://api.github.com/repos/sparshsam/pdfreader-by-sparsh/releases/latest</code>
<code>https://api.github.com/repos/sparshsam/openreader/releases/latest</code>
to compare the installed version against the latest published release. This request includes no
identifiers, no document data, no telemetry, and no usage statistics.</li>
</ul>
Expand Down Expand Up @@ -67,10 +67,10 @@ <h2>Changes to This Policy</h2>

<h2>Contact</h2>
<p>For questions about this privacy policy: open an issue on the
<a href="https://github.com/sparshsam/pdfreader-by-sparsh">GitHub repository</a>.</p>
<a href="https://github.com/sparshsam/openreader">GitHub repository</a>.</p>

<footer>
<p>OpenReader · <a href="https://sparshsam.github.io/pdfreader-by-sparsh/privacy/">Privacy Policy</a></p>
<p>OpenReader · <a href="https://sparshsam.github.io/openreader/privacy/">Privacy Policy</a></p>
</footer>

</body>
Expand Down
20 changes: 10 additions & 10 deletions docs/store-submission-checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
**Target version:** v1.2.2 stable (MSIX version `1.2.2.0`)
**Store ID:** `9MXDVW2645LL`
**PFN:** `SparshSam.OpenReader_yh0byntbzd2qw`
**Status:** 🔜 In certification
**Privacy policy URL:** https://sparshsam.github.io/pdfreader-by-sparsh/privacy/
**Status:** ✅ [Live in Microsoft Store](https://apps.microsoft.com/detail/9MXDVW2645LL)
**Privacy policy URL:** https://sparshsam.github.io/openreader/privacy/
**Upload artifact:** `OpenReader.msix` from v1.2.2 GitHub Release (built by release.yml workflow)

---
Expand Down Expand Up @@ -92,7 +92,7 @@ Start-Process "OpenReader"
| App Store icons | `assets\icon-*.png` (44, 71, 150, 310x150, 620x300) | Must match manifest declarations |
| Screenshots (at least 1) | Capture from running app | 1366×768 or 1920×1080 PNG recommended |
| Description text | See README overview section | 1–3 paragraphs, no HTML |
| Privacy policy URL | `https://sparshsam.github.io/pdfreader-by-sparsh/privacy/` | Published via GitHub Pages from repo `docs/` directory |
| Privacy policy URL | `https://sparshsam.github.io/openreader/privacy/` | Published via GitHub Pages from repo `docs/` directory |
| Age rating questionnaire | Complete in Partner Center | Desktop app category |

### 2.2 Store Listing Details
Expand Down Expand Up @@ -246,13 +246,13 @@ Write-Host "Publisher check: $($matches.Count -gt 0 ? 'PASS' : 'FAIL')"

## 6. Post-Submission Tasks

- [x] Publish privacy policy URL (published at `https://sparshsam.github.io/pdfreader-by-sparsh/privacy/`)
- [ ] Prepare Winget manifest for `SparshSam.OpenReader` — see [winget-preparation.md](winget-preparation.md)
- [ ] Monitor Partner Center certification report
- [ ] After acceptance: test Store install on clean Windows VM
- [ ] After acceptance: test Store upgrade over existing sideloaded installation
- [ ] Update `README.md` to reflect Store availability
- [ ] Update `docs/windows-distribution.md` with Store channel details
- [x] Publish privacy policy URL (published at `https://sparshsam.github.io/openreader/privacy/`)
- [x] Prepare Winget manifest for `SparshSam.OpenReader` — see [winget-preparation.md](winget-preparation.md)
- [x] Complete Partner Center certification
- [ ] Test Store install on clean Windows VM
- [ ] Test Store upgrade over existing sideloaded installation
- [x] Update `README.md` to reflect Store availability
- [x] Update `docs/windows-distribution.md` with Store channel details

---

Expand Down
8 changes: 4 additions & 4 deletions docs/updater-architecture.md
Original file line number Diff line number Diff line change
Expand Up @@ -84,9 +84,9 @@ breaking upgrades.

| Channel | Status | Update Mechanism |
|---------|--------|-----------------|
| Microsoft Store | 🔜 In certification | Windows Update (automatic) |
| Microsoft Store | ✅ Live | Windows Update (automatic) |
| GitHub Releases (MSIX) | ✅ Active | Manual download (unsigned — Developer Mode) |
| Winget | 🔜 Future | `winget install SparshSam.OpenReader` |
| Winget | 🟡 Manifest prepared | `winget install SparshSam.OpenReader` |
| GitHub Releases (Setup.exe) | ⚠️ Legacy | Manual download only — no in-app updates |

## Components
Expand Down Expand Up @@ -151,6 +151,6 @@ Once Store submission is active or App Installer is deployed:

## Future Work

- [x] Submit MSIX to Microsoft Store (in certification)
- [x] Publish MSIX in Microsoft Store
- [ ] Deploy App Installer hosting infrastructure
- [ ] Submit Winget manifest
- [ ] Submit prepared Winget manifest
31 changes: 15 additions & 16 deletions docs/windows-distribution.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
# Windows Distribution Strategy

**Version:** 1.2.0+
**Status:** MSIX/App Installer migration — Store reserved
**Status:** Live in Microsoft Store; Winget manifest prepared

## Overview

OpenReader has migrated from Inno Setup self-updating to **MSIX** — Microsoft's
modern packaging format — with multiple distribution channels. The app no longer
downloads or runs installers from within itself; Windows handles updates.

The Microsoft Store submission is currently in certification.
OpenReader is [live in the Microsoft Store](https://apps.microsoft.com/detail/9MXDVW2645LL).

## ⚠️ Frozen Identity (MSIX / Microsoft Store)

Expand Down Expand Up @@ -60,8 +60,7 @@ CI auto-extracts from Git tag and pads to 4 parts: `${tag}.0`

**Store ID:** `9MXDVW2645LL`

OpenReader is currently in Microsoft Store certification. Once approved, users can search for "OpenReader"
or install directly via:
Users can search for "OpenReader" in the Microsoft Store or install directly via:

```
ms-windows-store://pdp/?productid=9MXDVW2645LL
Expand Down Expand Up @@ -95,9 +94,9 @@ is active.
**Legacy Setup.exe:** Retained for manual recovery. No longer supports in-app
update triggering. Requires admin rights (UAC).

### Discovery: Winget (Future)
### Discovery: Winget

**Planned package identifier:** `SparshSam.OpenReader`
**Package identifier:** `SparshSam.OpenReader`

Once submitted to the [winget-pkgs](https://github.com/microsoft/winget-pkgs)
community repository:
Expand All @@ -107,11 +106,11 @@ winget install SparshSam.OpenReader
```

**Winget readiness checklist:**
- [ ] GitHub Releases must have predictable asset naming (done — `OpenReader.msix`)
- [ ] Release workflow produces consistent artifacts (done)
- [ ] Winget manifest: `manifests/s/SparshSam/OpenReader/1.2.0.0.yaml`
- [ ] Automated PR via winget release workflow (future)
- [ ] Update process: new release → winget bot auto-PR
- [x] Predictable release asset naming (`OpenReader-Setup.exe`)
- [x] Consistent release workflow
- [x] Multi-file manifest prepared under `packaging/winget/manifests/`
- [ ] Validate install and uninstall on Windows
- [ ] Submit the manifest PR to `microsoft/winget-pkgs`

## MSIX Packaging

Expand Down Expand Up @@ -169,15 +168,15 @@ An OV or EV code-signing certificate enables sideloading without Developer Mode:

1. **v1.1.x users:** Install OpenReader MSIX alongside existing installation.
User settings are in `%APPDATA%` (shared across versions).
2. **New users:** Prefer Microsoft Store when available; otherwise MSIX from
GitHub Releases (enable Developer Mode if unsigned).
3. **Future:** Store exclusively once Store submission is active.
2. **New users:** Prefer the Microsoft Store; advanced users may use the unsigned
GitHub MSIX with Developer Mode enabled.
3. **Winget users:** Use the Store product ID until the community manifest is merged.

## Open Items

- [ ] Submit MSIX to Microsoft Store
- [x] Publish MSIX in Microsoft Store
- [ ] Procure code-signing certificate (if not using Store exclusively)
- [ ] Implement App Installer hosting infrastructure
- [ ] Submit Winget manifest
- [ ] Submit prepared Winget manifest
- [ ] Validate Store vs. sideload behavior
- [ ] End-to-end update flow validation
Loading