Compare commits
2 commits
a2b732317e
...
9ce57bedf9
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9ce57bedf9 | ||
|
|
bfc777c18b |
3 changed files with 33 additions and 123 deletions
43
AGENTS.md
43
AGENTS.md
|
|
@ -2416,6 +2416,13 @@ Rules:
|
||||||
`node scripts/smoke-test.mjs` manually before shipping.
|
`node scripts/smoke-test.mjs` manually before shipping.
|
||||||
|
|
||||||
### Distribution without GitHub
|
### Distribution without GitHub
|
||||||
|
> **Owner decision (2026-10-30): no external identities.** Distribution must
|
||||||
|
> stay self-hosted and Nostr-based. Do **not** create or ask for GitLab,
|
||||||
|
> Codeberg, GitHub, email or F-Droid-main accounts. The local Forgejo admin
|
||||||
|
> account and the self-hosted F-Droid repo key are infrastructure credentials,
|
||||||
|
> not third-party identities. F-Droid main and IzzyOnDroid are therefore
|
||||||
|
> **out of scope**.
|
||||||
|
|
||||||
- **Self-hosted Forgejo:** `https://git.skate-spots.org/skatespots/SkateSpots`
|
- **Self-hosted Forgejo:** `https://git.skate-spots.org/skatespots/SkateSpots`
|
||||||
(public source, registration disabled, admin credentials only on the relay
|
(public source, registration disabled, admin credentials only on the relay
|
||||||
host). It runs on `185.18.221.2` behind Caddy; do not commit its credentials.
|
host). It runs on `185.18.221.2` behind Caddy; do not commit its credentials.
|
||||||
|
|
@ -2434,13 +2441,10 @@ Rules:
|
||||||
The developer APK signature is unchanged; the repo key only signs indexes.
|
The developer APK signature is unchanged; the repo key only signs indexes.
|
||||||
A backup of the repo keystore/config is in
|
A backup of the repo keystore/config is in
|
||||||
`~/.config/skatespots/fdroid-repo/` (mode 600).
|
`~/.config/skatespots/fdroid-repo/` (mode 600).
|
||||||
- **F-Droid main/IzzyOnDroid:** **not submitted yet.** Both are external review
|
- **F-Droid main/IzzyOnDroid:** **out of scope by owner decision.** Both require
|
||||||
processes and require an account/email, which this machine does not own. Do
|
external GitLab/Codeberg identities and review; do not submit, create accounts,
|
||||||
**not** claim they are live. Source, APK, fastlane metadata and
|
or present them as live. The self-hosted F-Droid repo above is the supported
|
||||||
`distribution/fdroiddata/org.skatespots.app.yml` are ready. F-Droid main signs
|
F-Droid-family channel.
|
||||||
with its own key and cannot install over the Zapstore APK without uninstalling
|
|
||||||
(local data loss). Prefer the self-hosted repo/Obtanium until that is
|
|
||||||
explained clearly.
|
|
||||||
- **No GitHub required.** Keep Zapstore, Forgejo, the self-hosted F-Droid repo,
|
- **No GitHub required.** Keep Zapstore, Forgejo, the self-hosted F-Droid repo,
|
||||||
and the static page in sync for each release.
|
and the static page in sync for each release.
|
||||||
|
|
||||||
|
|
@ -2466,20 +2470,19 @@ Rules:
|
||||||
Local backups: `~/.config/skatespots/forgejo-admin.txt` and
|
Local backups: `~/.config/skatespots/forgejo-admin.txt` and
|
||||||
`~/.config/skatespots/fdroid-repo/` (mode 600).
|
`~/.config/skatespots/fdroid-repo/` (mode 600).
|
||||||
|
|
||||||
### External submissions (do not fake)
|
### Nostr-only distribution (no external identities)
|
||||||
- **F-Droid main:** blocker is not code — it is a GitLab account, review and
|
- **Zapstore** is the Nostr-native app store/update channel; keep publishing
|
||||||
F-Droid's signing key. An agent cannot create/verify an external account or
|
release events there.
|
||||||
pass review. The recipe was locally test-built from a clean clone at
|
- **Obtanium** is URL-based, not an account: users add the latest Forgejo
|
||||||
`5ebf741` (unsigned APK); F-Droid CI is still authoritative. Only start this
|
|
||||||
when the owner supplies an account/email and explicitly accepts the
|
|
||||||
signature/data-loss implications.
|
|
||||||
- **IzzyOnDroid:** app listing submissions are handled through their external
|
|
||||||
listing/review process; source and APK are ready. Same account/email blocker.
|
|
||||||
- **Obtanium:** there is no store submission. Users add the latest Forgejo
|
|
||||||
release URL (HTML source if needed) or the self-hosted F-Droid repo.
|
release URL (HTML source if needed) or the self-hosted F-Droid repo.
|
||||||
- **Ready-to-post text:** `distribution/SUBMISSION.md` has the F-Droid RFP and
|
- **F-Droid main and IzzyOnDroid do not support Nostr identities.** They are
|
||||||
IzzyOnDroid issue drafts. Posting still needs the owner's GitLab/Codeberg
|
intentionally not pursued. Do not create or request GitLab/Codeberg/email
|
||||||
account; never invent one.
|
accounts, and do not claim those stores are live.
|
||||||
|
- The local Forgejo admin account, the relay, and the F-Droid repo signing key
|
||||||
|
are self-hosted infrastructure, not third-party identities.
|
||||||
|
- The F-Droid recipe remains in `distribution/fdroiddata/` only as an unused
|
||||||
|
technical reference. It was locally test-built at `5ebf741`, but must not be
|
||||||
|
submitted.
|
||||||
|
|
||||||
### Deploy
|
### Deploy
|
||||||
- **Web (auto)**: a systemd user timer (`skatespots-deploy.timer`) runs `scripts/auto-deploy.sh` every ~3 min. When `origin/main` changes it builds and runs `netlify deploy --prod --dir=dist`. It deploys **only committed code** (skips if tracked files are modified) and never mutates a dirty tree. **Doc/scripts-only commits are skipped** (matches `AGENTS.md`/`*.md`/`scripts/`/`cvm-server/`/`skills/`) — Netlify bills **15 credits per production deploy**, so don't spend them on non-site changes. One-time setup: `netlify login` + `netlify link`. Logs: `journalctl --user -u skatespots-deploy`. Manual run: `scripts/auto-deploy.sh`.
|
- **Web (auto)**: a systemd user timer (`skatespots-deploy.timer`) runs `scripts/auto-deploy.sh` every ~3 min. When `origin/main` changes it builds and runs `netlify deploy --prod --dir=dist`. It deploys **only committed code** (skips if tracked files are modified) and never mutates a dirty tree. **Doc/scripts-only commits are skipped** (matches `AGENTS.md`/`*.md`/`scripts/`/`cvm-server/`/`skills/`) — Netlify bills **15 credits per production deploy**, so don't spend them on non-site changes. One-time setup: `netlify login` + `netlify link`. Logs: `journalctl --user -u skatespots-deploy`. Manual run: `scripts/auto-deploy.sh`.
|
||||||
|
|
|
||||||
|
|
@ -51,36 +51,19 @@ The repository metadata and APK are served from the relay host. The repo index
|
||||||
is signed with a repository key stored on that host; the APK itself keeps the
|
is signed with a repository key stored on that host; the APK itself keeps the
|
||||||
SkateSpots developer signature.
|
SkateSpots developer signature.
|
||||||
|
|
||||||
### F-Droid main and IzzyOnDroid
|
### No external store identities
|
||||||
|
|
||||||
F-Droid main requires a public, clonable source repository (the Forgejo URL
|
**Owner decision:** distribution stays self-hosted and Nostr-based. No GitLab,
|
||||||
above), an accepted `fdroiddata` recipe, a reproducible build and maintainer
|
Codeberg, GitHub, email or F-Droid-main accounts are created or requested.
|
||||||
review. IzzyOnDroid is the easier external submission step. Both remain
|
|
||||||
external-review processes; the self-hosted repo above is usable without waiting
|
|
||||||
for either.
|
|
||||||
|
|
||||||
Recipe draft: `distribution/fdroiddata/org.skatespots.app.yml`
|
F-Droid main and IzzyOnDroid both require external identities and review, so
|
||||||
Store metadata: `fastlane/metadata/android/en-US/`
|
they are intentionally out of scope. The self-hosted repo above is the supported
|
||||||
|
F-Droid-family channel.
|
||||||
|
|
||||||
The Android project is generated by Capacitor and intentionally not committed,
|
`distribution/fdroiddata/` and `fastlane/` are kept as an unused technical
|
||||||
so the prebuild steps must be verified in the F-Droid build environment before
|
reference only. A fresh local clone at `5ebf741` built the unsigned APK through
|
||||||
submitting to F-Droid main. A fresh local clone at commit `5ebf741` completed
|
the recipe's `npm ci → android:init → android:sync → assembleRelease` path, but
|
||||||
the recipe's `npm ci → android:init → android:sync → assembleRelease` path and
|
the recipe must not be submitted.
|
||||||
produced `app-release-unsigned.apk`; F-Droid CI is still the authoritative
|
|
||||||
check.
|
|
||||||
|
|
||||||
IzzyOnDroid submission details, when you want to send it:
|
|
||||||
|
|
||||||
- App ID: `org.skatespots.app`
|
|
||||||
- Source: `https://git.skate-spots.org/skatespots/SkateSpots`
|
|
||||||
- APK: the signed asset on the latest Forgejo release
|
|
||||||
- License: `AGPL-3.0-only`
|
|
||||||
- Category: Sports
|
|
||||||
- Summary: `Local-first skate map, crews, events and marketplace`
|
|
||||||
- Keep the developer signature; do not ask users to replace an existing install
|
|
||||||
with an F-Droid-main-signed build.
|
|
||||||
|
|
||||||
No GitHub account is used anywhere in this path.
|
|
||||||
|
|
||||||
## Release checklist
|
## Release checklist
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,76 +0,0 @@
|
||||||
# External submission drafts
|
|
||||||
|
|
||||||
These are ready-to-post texts for the two external stores. Neither can be
|
|
||||||
submitted anonymously: F-Droid uses GitLab, IzzyOnDroid uses Codeberg. An agent
|
|
||||||
must not create or verify an account on the owner's behalf.
|
|
||||||
|
|
||||||
## F-Droid main (RFP + fdroiddata)
|
|
||||||
|
|
||||||
F-Droid's submission queue:
|
|
||||||
<https://gitlab.com/fdroid/rfp/issues/new>
|
|
||||||
|
|
||||||
Suggested title:
|
|
||||||
|
|
||||||
> New app: SkateSpots (org.skatespots.app)
|
|
||||||
|
|
||||||
Body:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
App: SkateSpots
|
|
||||||
App ID: org.skatespots.app
|
|
||||||
License: AGPL-3.0-only
|
|
||||||
Source: https://git.skate-spots.org/skatespots/SkateSpots
|
|
||||||
Web: https://skate-spots.org
|
|
||||||
Releases: https://git.skate-spots.org/skatespots/SkateSpots/releases
|
|
||||||
Issue tracker: https://git.skate-spots.org/skatespots/SkateSpots/issues
|
|
||||||
Fastlane metadata: fastlane/metadata/android/en-US/
|
|
||||||
Recipe draft: distribution/fdroiddata/org.skatespots.app.yml
|
|
||||||
|
|
||||||
SkateSpots is a local-first skating map, crew/event tool and marketplace.
|
|
||||||
The Android project is generated by Capacitor and is intentionally not
|
|
||||||
committed; the recipe recreates it with `npm run android:init` then
|
|
||||||
`npm run android:sync` before Gradle.
|
|
||||||
|
|
||||||
The developer APK is signed by SkateSpots. F-Droid main would sign with its own
|
|
||||||
key, so it would not update over the Zapstore/Obtanium install without an
|
|
||||||
uninstall and local-data loss. Please confirm that policy with the maintainer
|
|
||||||
before publishing.
|
|
||||||
|
|
||||||
A self-hosted F-Droid third-party repo is already available at
|
|
||||||
https://fdroid.skate-spots.org/repo (repo fingerprint
|
|
||||||
88:B1:71:1C:24:02:89:FB:B2:A7:FC:C1:B3:1F:BB:9D:60:F5:7F:19:18:E0:3D:62:2D:35:F2:3D:E1:84:46:75).
|
|
||||||
```
|
|
||||||
|
|
||||||
After the RFP is accepted, open a `fdroiddata` merge request with
|
|
||||||
`distribution/fdroiddata/org.skatespots.app.yml`, after testing it with
|
|
||||||
`fdroid lint` and `fdroid build`.
|
|
||||||
|
|
||||||
## IzzyOnDroid
|
|
||||||
|
|
||||||
Preferred: file an issue at
|
|
||||||
<https://codeberg.org/IzzyOnDroid/repodata/issues/new>.
|
|
||||||
|
|
||||||
Suggested title:
|
|
||||||
|
|
||||||
> Add SkateSpots (org.skatespots.app)
|
|
||||||
|
|
||||||
Body:
|
|
||||||
|
|
||||||
```markdown
|
|
||||||
App: SkateSpots
|
|
||||||
App ID: org.skatespots.app
|
|
||||||
License: AGPL-3.0-only
|
|
||||||
Source: https://git.skate-spots.org/skatespots/SkateSpots
|
|
||||||
Latest APK: https://git.skate-spots.org/skatespots/SkateSpots/releases/latest
|
|
||||||
Website: https://skate-spots.org
|
|
||||||
Category: Sports & Health
|
|
||||||
Summary: Local-first skate map, crews, events and marketplace
|
|
||||||
|
|
||||||
SkateSpots is a local-first skating map for spots, crews, events and the
|
|
||||||
community marketplace. The APK is developer-signed and tagged Forgejo releases
|
|
||||||
carry the APK as a release asset. Fastlane metadata is in the source tree at
|
|
||||||
fastlane/metadata/android/en-US/.
|
|
||||||
|
|
||||||
No analytics, no ads, no GitHub. The app is AGPL-3.0-only. Please keep the
|
|
||||||
developer signature so existing installs can update.
|
|
||||||
```
|
|
||||||
Loading…
Reference in a new issue