Metadata-Version: 2.4
Name: qviple
Version: 1.0.516.556
Summary: Qviple Desktop for macOS - the signed, notarized Qviple app, installable via pip
Author: Qviple
Project-URL: Releases, https://github.com/Pankajphad/qviple_desktop_releases/releases
Project-URL: Source, https://github.com/Pankajphad/qviple_desktop
Keywords: qviple,desktop,macos
Classifier: License :: Other/Proprietary License
Classifier: Operating System :: MacOS
Classifier: Environment :: MacOS X
Classifier: Programming Language :: Python :: 3
Classifier: Intended Audience :: End Users/Desktop
Requires-Python: >=3.9
Description-Content-Type: text/markdown

# Qviple Desktop (macOS) via pip

Install and launch the signed, notarized Qviple macOS app straight from PyPI.

```sh
pip install qviple
qviple
```

The first run extracts the app to `~/Library/Application Support/Qviple/pypi/<version>/Qviple.app` (one-time, ~150 MB) and opens it. Subsequent runs open it directly.

## Requirements

- macOS 12.2 or newer (Apple Silicon and Intel — the app is a universal binary)
- Python 3.9+

## Commands

| Command | What it does |
|---|---|
| `qviple` | Launch Qviple (extracts on first run) |
| `qviple --version` | Print the installed version |
| `qviple --uninstall` | Remove all extracted app copies |

## Uninstall completely

```sh
qviple --uninstall
pip uninstall qviple
```

## Notes

- The wheel contains the exact notarized release zip from the desktop release pipeline; nothing is rebuilt or re-signed for PyPI.
- The extracted app self-updates via its built-in updater (Sparkle). `pip show qviple` keeps reporting the version you installed with pip even after the app updates itself — reinstall/upgrade via pip only if you want the pip metadata to match.

## Rollback (maintainers)

- **Bad wheel, good app:** yank the release on PyPI (yanked versions are skipped by the default resolver but stay installable when pinned), then publish a fixed wheel as `A.B.C.N.postM` — no Flutter rebuild needed.
- **Bad app build:** yank on PyPI **and** follow the desktop-release rollback (appcast points at the latest release in `qviple_desktop_releases`); the next pubspec bump republishes both channels.
- PyPI never allows re-uploading a deleted version number — always roll forward with `.postN` or a new version.

## Release (maintainers)

Run the **PyPI Release** workflow (`pypi_release.yml`) with the pubspec version (e.g. `1.0.516+556`) and target (`testpypi` or `pypi`). It downloads the already-notarized zip from the releases repo, re-verifies signature/staple/arch, builds the wheel with `tool/pypi/scripts/build_wheel.sh`, and publishes via PyPI Trusted Publishing (OIDC) — no token secrets.
