Re-baseline launch version: v1.0.0 → v0.1.0; placeholder domain → shithub.sh
- SHA
6937b308d1d11d66afa2d3c763a328c7589801c9- Parents
-
3d303c4 - Tree
5855073
6937b30
6937b308d1d11d66afa2d3c763a328c7589801c93d303c4
5855073| Status | File | + | - |
|---|---|---|---|
| M |
CHANGELOG.md
|
54 | 66 |
| M |
CODE_OF_CONDUCT.md
|
1 | 1 |
| M |
CONTRIBUTING.md
|
1 | 1 |
| M |
README.md
|
3 | 3 |
| M |
SECURITY.md
|
3 | 3 |
| M |
deploy/cutover/checklist.md
|
12 | 12 |
| M |
deploy/cutover/rollback.sh
|
1 | 1 |
| M |
deploy/cutover/smoke.sh
|
1 | 1 |
| M |
deploy/docs-site/sync-to-spaces.sh
|
1 | 1 |
| R |
docs/blog/v1.0.0-launch.md →
docs/blog/v0.1.0-launch.md
|
0 | 0 |
| M |
docs/internal/bench.md
|
1 | 1 |
| R |
docs/internal/retro/v1.0.0.md →
docs/internal/retro/v0.1.0.md
|
0 | 0 |
| M |
docs/internal/runbooks/day-one.md
|
4 | 4 |
| M |
docs/internal/threat-model.md
|
1 | 1 |
| M |
docs/public/security.md
|
1 | 1 |
| M |
docs/public/self-host/deploy.md
|
3 | 3 |
| M |
docs/public/self-host/prerequisites.md
|
3 | 3 |
| M |
docs/public/self-host/troubleshooting.md
|
1 | 1 |
| M |
docs/public/status.md
|
9 | 9 |
| M |
docs/public/user/account.md
|
1 | 1 |
| M |
docs/public/user/https.md
|
2 | 2 |
| M |
docs/public/user/quickstart.md
|
1 | 1 |
| M |
docs/public/user/ssh.md
|
2 | 2 |
| M |
internal/web/templates/hello.html
|
3 | 3 |
| M |
tests/load/README.md
|
1 | 1 |
CHANGELOG.mdmodified@@ -4,82 +4,70 @@ All notable changes to shithub are documented here. This project | |||
| 4 | follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) | 4 | follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/) |
| 5 | conventions and [Semantic Versioning](https://semver.org/spec/v2.0.0.html). | 5 | conventions and [Semantic Versioning](https://semver.org/spec/v2.0.0.html). |
| 6 | 6 | ||
| 7 | +Pre-1.0 versioning: minor versions may break the API. The | ||
| 8 | +stability contract begins at v1.0.0; until then, expect changes | ||
| 9 | +between minor releases. | ||
| 10 | + | ||
| 7 | ## [Unreleased] | 11 | ## [Unreleased] |
| 8 | 12 | ||
| 9 | (Empty — first post-launch entries land here.) | 13 | (Empty — first post-launch entries land here.) |
| 10 | 14 | ||
| 11 | -## [1.0.0] — TBD (operator fills in cutover date) | 15 | +## [0.1.0] — TBD (operator fills in cutover date) |
| 12 | - | ||
| 13 | -The first stable release. **Stability contract:** every migration | ||
| 14 | -from this point on is backward-compatible from v1.0.0 — see | ||
| 15 | -`docs/internal/runbooks/upgrade.md`. | ||
| 16 | - | ||
| 17 | -### Added (since pre-launch) | ||
| 18 | -- Public landing page on `/` for anonymous viewers; signed-in | ||
| 19 | - viewers get a quick-link dashboard. | ||
| 20 | -- Lightweight status page at `docs.shithub.example/status.html`. | ||
| 21 | -- Cutover artifacts under `deploy/cutover/` — checklist, smoke | ||
| 22 | - script, rollback script. | ||
| 23 | -- Launch announcement copy at `docs/blog/v1.0.0-launch.md`. | ||
| 24 | -- Day-one operator runbook at `docs/internal/runbooks/day-one.md`. | ||
| 25 | -- Public docs site (`docs/public/`) built with mdBook. | ||
| 26 | -- Contributor + security disclosure docs finalized for post-launch | ||
| 27 | - posture (DCO sign-off, `security@shithub.example` mailbox). | ||
| 28 | -- Architecture overview + internal docs index. | ||
| 29 | -- Operator runbooks: rotate-secrets, rotate-keys, regenerate-akc, | ||
| 30 | - drain-workers, read-only-mode. | ||
| 31 | -- `THIRD_PARTY_NOTICES.md` with a CI-verified generator script. | ||
| 32 | -- a11y tooling (pa11y + axe) and k6 load-test scenarios under | ||
| 33 | - `tests/`. | ||
| 34 | - | ||
| 35 | -### Changed | ||
| 36 | -- README pivoted to post-launch framing (still flags WIP areas | ||
| 37 | - honestly). | ||
| 38 | -- Renderer (`internal/web/render/render.go`) walks `_*.html` | ||
| 39 | - partials recursively and fails loud on undefined template refs | ||
| 40 | - at startup. | ||
| 41 | -- Repo Code view restructured to GitHub's 2/3 + 1/3 layout with | ||
| 42 | - an About sidebar (description, topics, license, language, | ||
| 43 | - star/watch/fork counts). | ||
| 44 | 16 | ||
| 45 | -## [1.0.0] — core forge loop | 17 | +The first public release of shithub. Pre-1.0: there is no |
| 18 | +backward-compatibility promise yet. Migrations are forward-only; | ||
| 19 | +schema may change between minor versions. | ||
| 46 | 20 | ||
| 47 | -The first stable release. Core forge loop: | 21 | +### Initial public surface |
| 48 | 22 | ||
| 49 | -- Identity: signup, email verification, password reset, TOTP 2FA | 23 | +- **Identity** — signup, email verification, password reset, TOTP |
| 50 | - + recovery codes, SSH keys, scoped PATs, sessions with | 24 | + 2FA + recovery codes, SSH keys, scoped PATs, sessions with |
| 51 | per-account epoch invalidation. | 25 | per-account epoch invalidation. |
| 52 | -- Repositories: create, fork, archive, transfer, soft-delete with | 26 | +- **Repositories** — create, fork, archive, transfer, soft-delete |
| 53 | - grace, rename with redirects, visibility toggles, branch | 27 | + with grace, rename with redirects, visibility toggles, branch |
| 54 | - protection (force-push / deletion / required reviews / required | 28 | + protection, default-branch swap, topics, README/license/ |
| 55 | - status checks), default-branch swap, topics, README/license/ | ||
| 56 | .gitignore templates. | 29 | .gitignore templates. |
| 57 | -- Git: bare repos on disk; HTTPS smart-HTTP push/pull; pre/post- | 30 | +- **Git** — bare repos on disk; HTTPS smart-HTTP push/pull; |
| 58 | - receive hook integration for size accounting and event emission. | 31 | + pre/post-receive hook integration. |
| 59 | -- Code browsing: tree, blob (chroma syntax highlighting with | 32 | +- **Code browsing** — tree, blob (chroma syntax highlighting), |
| 60 | - light/dark themes), raw, blame, commit history, individual | 33 | + raw, blame, commit history, individual commit views, branch/tag |
| 61 | - commit views, branch/tag listings, compare views, file finder. | 34 | + listings, compare views, file finder. |
| 62 | -- Issues + PRs: full CRUD; pull requests with diff rendering, | 35 | +- **Issues + PRs** — full CRUD; reviews; required-reviewer |
| 63 | - file-by-file review, line comments, reviews, required-reviewer | 36 | + enforcement; status-check gates; three merge methods. |
| 64 | - enforcement, status-check gates, three merge methods. | 37 | +- **Social** — stars, watches, forks, `/explore`, stargazer/ |
| 65 | -- Social: stars, watches with notification level, forks | 38 | + watcher lists. |
| 66 | - (clone-on-create), `/explore`, stargazer/watcher lists. | 39 | +- **Search** — code, repo, user, issue. |
| 67 | -- Search: code, repo, user. | 40 | +- **Notifications** — in-app inbox, email fan-out, one-click |
| 68 | -- Notifications: per-user inbox + email fan-out, watch-level | 41 | + unsubscribe. |
| 69 | - routing, one-click HMAC-signed unsubscribe. | 42 | +- **Orgs + teams** — roles, invitations, one-level nesting, |
| 70 | -- Organizations + teams: create, member roles, invitations, | ||
| 71 | - one-level team nesting, team grants on repos with | ||
| 72 | max-of-sources policy. | 43 | max-of-sources policy. |
| 73 | -- Webhooks: outbound delivery with HMAC-SHA256 signing, | 44 | +- **Webhooks** — HMAC-signed delivery, exponential backoff, |
| 74 | - exponential backoff with jitter, auto-disable on persistent | 45 | + auto-disable, SSRF defense, redelivery UI. |
| 75 | - failure, SSRF defense, redelivery UI, ping events. | 46 | +- **Observability** — structured logs, Prometheus metrics, |
| 76 | -- Observability: structured logs, Prometheus metrics, optional | 47 | + optional OTel tracing, Sentry-protocol error reporting. |
| 77 | - OTel tracing, Sentry-protocol error reporting. | 48 | +- **Operations** — Ansible playbook, systemd units, Caddy edge, |
| 78 | -- Security: AGPLv3, threat model + security checklist, package | ||
| 79 | - boundary lints (markdown, policy, secret-logs, CSRF). | ||
| 80 | -- Operations: Ansible playbook, systemd units, Caddy edge, | ||
| 81 | WireGuard mesh for monitoring, Postgres WAL archive + daily | 49 | WireGuard mesh for monitoring, Postgres WAL archive + daily |
| 82 | logical backups to Spaces, cross-region DR, restore drill. | 50 | logical backups to Spaces, cross-region DR, restore drill. |
| 51 | +- **Public landing page** on `/` for anonymous viewers; signed-in | ||
| 52 | + viewers get a quick-link dashboard. | ||
| 53 | +- **Lightweight status page** at `docs.<host>/status.html`. | ||
| 54 | +- **Cutover artifacts** under `deploy/cutover/`. | ||
| 55 | +- **Public docs site** built with mdBook. | ||
| 56 | +- **Operator runbooks** for incidents, backups, restore, upgrade, | ||
| 57 | + rollback, rotate-secrets, rotate-keys, regenerate-akc, | ||
| 58 | + drain-workers, read-only-mode, day-one. | ||
| 59 | +- **a11y tooling** (pa11y + axe) and **k6 load-test scenarios**. | ||
| 60 | +- **THIRD_PARTY_NOTICES.md** with a CI-verified generator. | ||
| 61 | + | ||
| 62 | +### Known gaps at v0.1.0 | ||
| 63 | + | ||
| 64 | +- SSH git transport (HTTPS only) | ||
| 65 | +- Actions / CI runner | ||
| 66 | +- Packages, Releases, Pages, Projects, Gists | ||
| 67 | +- GraphQL API (only a small REST surface today) | ||
| 68 | +- Activity feed UI | ||
| 69 | + | ||
| 70 | +These are all on the post-MVP roadmap. | ||
| 83 | 71 | ||
| 84 | -[Unreleased]: https://shithub.example/shithub/shithub/compare/v1.0.0...trunk | 72 | +[Unreleased]: https://shithub.sh/shithub/shithub/compare/v0.1.0...trunk |
| 85 | -[1.0.0]: https://shithub.example/shithub/shithub/releases/tag/v1.0.0 | 73 | +[0.1.0]: https://shithub.sh/shithub/shithub/releases/tag/v0.1.0 |
CODE_OF_CONDUCT.mdmodified@@ -60,7 +60,7 @@ public spaces. | |||
| 60 | 60 | ||
| 61 | Instances of abusive, harassing, or otherwise unacceptable | 61 | Instances of abusive, harassing, or otherwise unacceptable |
| 62 | behavior may be reported to the project team at | 62 | behavior may be reported to the project team at |
| 63 | -**`conduct@shithub.example`**. All complaints will be reviewed | 63 | +**`conduct@shithub.sh`**. All complaints will be reviewed |
| 64 | and investigated promptly and fairly. | 64 | and investigated promptly and fairly. |
| 65 | 65 | ||
| 66 | All project maintainers are obligated to respect the privacy and | 66 | All project maintainers are obligated to respect the privacy and |
CONTRIBUTING.mdmodified@@ -97,4 +97,4 @@ run the deploy. | |||
| 97 | `proposal`. | 97 | `proposal`. |
| 98 | - **Day-to-day chat:** the project doesn't run a Slack/Discord | 98 | - **Day-to-day chat:** the project doesn't run a Slack/Discord |
| 99 | yet; PR comments and issues are the channel. | 99 | yet; PR comments and issues are the channel. |
| 100 | -- **Security:** `security@shithub.example` (see SECURITY.md). | 100 | +- **Security:** `security@shithub.sh` (see SECURITY.md). |
README.mdmodified@@ -10,11 +10,11 @@ | |||
| 10 | 10 | ||
| 11 | --- | 11 | --- |
| 12 | 12 | ||
| 13 | -**Status: v1.0.0 launched — early days. Honest about WIP areas.** | 13 | +**Status: v0.1.0 launched — early days. Honest about WIP areas.** |
| 14 | 14 | ||
| 15 | -shithub is an attempt to recreate GitHub — the platform, the UI, the workflows — as faithfully as we can, as a self-hostable open-source forge. The goal is "you should barely notice you switched." We are not there yet. The core forge loop works end-to-end (see "What works today"); large surfaces (SSH transport, Actions/CI, GraphQL, Packages) are explicitly not shipped at v1.0.0. | 15 | +shithub is an attempt to recreate GitHub — the platform, the UI, the workflows — as faithfully as we can, as a self-hostable open-source forge. The goal is "you should barely notice you switched." We are not there yet. The core forge loop works end-to-end (see "What works today"); large surfaces (SSH transport, Actions/CI, GraphQL, Packages) are explicitly not shipped at v0.1.0. |
| 16 | 16 | ||
| 17 | -The hosted instance is at **[shithub.example](https://shithub.example)**. The project's own source has migrated here from GitHub; this GitHub repo is a one-way mirror for the first 90 days post-launch as a recovery surface. | 17 | +The hosted instance is at **[shithub.sh](https://shithub.sh)**. The project's own source has migrated here from GitHub; this GitHub repo is a one-way mirror for the first 90 days post-launch as a recovery surface. |
| 18 | 18 | ||
| 19 | If you came here expecting drop-in parity with everything GitHub does, you'll find specific gaps. If you came here for an honest, AI-free, self-hostable forge, this is for you. | 19 | If you came here expecting drop-in parity with everything GitHub does, you'll find specific gaps. If you came here for an honest, AI-free, self-hostable forge, this is for you. |
| 20 | 20 | ||
SECURITY.mdmodified@@ -2,9 +2,9 @@ | |||
| 2 | 2 | ||
| 3 | ## Reporting a vulnerability | 3 | ## Reporting a vulnerability |
| 4 | 4 | ||
| 5 | -Email **`security@shithub.example`**. PGP-encrypt the report | 5 | +Email **`security@shithub.sh`**. PGP-encrypt the report |
| 6 | using the key fingerprint published at | 6 | using the key fingerprint published at |
| 7 | -`https://shithub.example/.well-known/pgp-key.asc` if your finding | 7 | +`https://shithub.sh/.well-known/pgp-key.asc` if your finding |
| 8 | is sensitive. | 8 | is sensitive. |
| 9 | 9 | ||
| 10 | The mailbox auto-acknowledges receipt within minutes. A human | 10 | The mailbox auto-acknowledges receipt within minutes. A human |
@@ -19,7 +19,7 @@ hall of fame on resolution unless you ask not to be named. | |||
| 19 | 19 | ||
| 20 | In scope: | 20 | In scope: |
| 21 | 21 | ||
| 22 | -- The hosted shithub instance (`shithub.example`). | 22 | +- The hosted shithub instance (`shithub.sh`). |
| 23 | - The shithub source as published on GitHub | 23 | - The shithub source as published on GitHub |
| 24 | (`github.com/tenseleyFlow/shithub`), exploited against any | 24 | (`github.com/tenseleyFlow/shithub`), exploited against any |
| 25 | reasonably-deployed self-hosted instance running an unmodified | 25 | reasonably-deployed self-hosted instance running an unmodified |
deploy/cutover/checklist.mdmodified@@ -9,10 +9,10 @@ visual check. | |||
| 9 | 9 | ||
| 10 | ## T-7 days | 10 | ## T-7 days |
| 11 | 11 | ||
| 12 | -- [ ] DNS A/AAAA for `shithub.example` published with low TTL | 12 | +- [ ] DNS A/AAAA for `shithub.sh` published with low TTL |
| 13 | (300s) so cutover-day changes propagate fast. Verify: | 13 | (300s) so cutover-day changes propagate fast. Verify: |
| 14 | - `dig +short A shithub.example`. | 14 | + `dig +short A shithub.sh`. |
| 15 | -- [ ] DNS CNAME for `docs.shithub.example` published. | 15 | +- [ ] DNS CNAME for `docs.shithub.sh` published. |
| 16 | - [ ] Postmark domain verified; SPF/DKIM/DMARC aligned. Verify: | 16 | - [ ] Postmark domain verified; SPF/DKIM/DMARC aligned. Verify: |
| 17 | Postmark dashboard → Domains → green. | 17 | Postmark dashboard → Domains → green. |
| 18 | - [ ] Signup-throttle config reviewed; per-IP and per-/24 | 18 | - [ ] Signup-throttle config reviewed; per-IP and per-/24 |
@@ -28,13 +28,13 @@ visual check. | |||
| 28 | - [ ] Last DNS change committed. Cutover after 48h ensures no | 28 | - [ ] Last DNS change committed. Cutover after 48h ensures no |
| 29 | propagation lag. | 29 | propagation lag. |
| 30 | - [ ] S37 backup-restore drill green within last 7 days. | 30 | - [ ] S37 backup-restore drill green within last 7 days. |
| 31 | -- [ ] S38 docs deploy verified; `https://docs.shithub.example/` | 31 | +- [ ] S38 docs deploy verified; `https://docs.shithub.sh/` |
| 32 | returns 200. | 32 | returns 200. |
| 33 | - [ ] S39 P0/P1 bugs closed. | 33 | - [ ] S39 P0/P1 bugs closed. |
| 34 | - [ ] Tag the release commit: | 34 | - [ ] Tag the release commit: |
| 35 | ```sh | 35 | ```sh |
| 36 | - git tag -a v1.0.0 -m "v1.0.0 — launch" | 36 | + git tag -a v0.1.0 -m "v0.1.0 — launch" |
| 37 | - git push origin v1.0.0 | 37 | + git push origin v0.1.0 |
| 38 | ``` | 38 | ``` |
| 39 | 39 | ||
| 40 | ## T-1 hour | 40 | ## T-1 hour |
@@ -49,9 +49,9 @@ visual check. | |||
| 49 | ## T-0: cutover | 49 | ## T-0: cutover |
| 50 | 50 | ||
| 51 | ```sh | 51 | ```sh |
| 52 | -# 1. Pull the v1.0.0 tag. | 52 | +# 1. Pull the v0.1.0 tag. |
| 53 | git fetch --tags | 53 | git fetch --tags |
| 54 | -git checkout v1.0.0 | 54 | +git checkout v0.1.0 |
| 55 | 55 | ||
| 56 | # 2. Dry-run to confirm exactly what will change. | 56 | # 2. Dry-run to confirm exactly what will change. |
| 57 | make deploy-check ANSIBLE_INVENTORY=production | 57 | make deploy-check ANSIBLE_INVENTORY=production |
@@ -77,7 +77,7 @@ Run the smoke script as soon as the deploy reports `ok=N | |||
| 77 | changed=N failed=0`: | 77 | changed=N failed=0`: |
| 78 | 78 | ||
| 79 | ```sh | 79 | ```sh |
| 80 | -deploy/cutover/smoke.sh https://shithub.example | 80 | +deploy/cutover/smoke.sh https://shithub.sh |
| 81 | ``` | 81 | ``` |
| 82 | 82 | ||
| 83 | The script exercises: home page, signup form, login form, health | 83 | The script exercises: home page, signup form, login form, health |
@@ -127,7 +127,7 @@ git remote add github https://github.com/tenseleyFlow/shithub.git | |||
| 127 | Confirm a test push lands on both: | 127 | Confirm a test push lands on both: |
| 128 | 128 | ||
| 129 | ```sh | 129 | ```sh |
| 130 | -git clone https://shithub.example/shithub/shithub.git /tmp/test-clone | 130 | +git clone https://shithub.sh/shithub/shithub.git /tmp/test-clone |
| 131 | cd /tmp/test-clone | 131 | cd /tmp/test-clone |
| 132 | echo "launch test" >> .launch-test | 132 | echo "launch test" >> .launch-test |
| 133 | git add .launch-test | 133 | git add .launch-test |
@@ -164,7 +164,7 @@ For the first 24h: | |||
| 164 | - Refresh Grafana every 30 min. | 164 | - Refresh Grafana every 30 min. |
| 165 | - Triage every alert immediately; nothing false-positive should | 165 | - Triage every alert immediately; nothing false-positive should |
| 166 | page in week 1 (we tuned for it). | 166 | page in week 1 (we tuned for it). |
| 167 | -- Bug reports go to `https://shithub.example/shithub/shithub/issues` | 167 | +- Bug reports go to `https://shithub.sh/shithub/shithub/issues` |
| 168 | (the project's own self-hosted issues — drink your own | 168 | (the project's own self-hosted issues — drink your own |
| 169 | champagne). | 169 | champagne). |
| 170 | 170 | ||
@@ -184,6 +184,6 @@ fixed." Honesty wins trust; deadlines under stress lose it. | |||
| 184 | 184 | ||
| 185 | ## Day-one retro | 185 | ## Day-one retro |
| 186 | 186 | ||
| 187 | -After the first 24h, fill in `docs/internal/retro/v1.0.0.md` | 187 | +After the first 24h, fill in `docs/internal/retro/v0.1.0.md` |
| 188 | with: what worked, what surprised us, top 3 user-reported | 188 | with: what worked, what surprised us, top 3 user-reported |
| 189 | issues, and the next sprint's focus. | 189 | issues, and the next sprint's focus. |
deploy/cutover/rollback.shmodified@@ -91,7 +91,7 @@ make deploy ANSIBLE_INVENTORY=production | |||
| 91 | # file; falls back to asking. | 91 | # file; falls back to asking. |
| 92 | BASE="${SHITHUB_PROD_URL:-}" | 92 | BASE="${SHITHUB_PROD_URL:-}" |
| 93 | if [[ -z "$BASE" ]]; then | 93 | if [[ -z "$BASE" ]]; then |
| 94 | - read -r -p "Smoke base URL (e.g. https://shithub.example): " BASE | 94 | + read -r -p "Smoke base URL (e.g. https://shithub.sh): " BASE |
| 95 | fi | 95 | fi |
| 96 | echo "" | 96 | echo "" |
| 97 | echo "running smoke against $BASE..." | 97 | echo "running smoke against $BASE..." |
deploy/cutover/smoke.shmodified@@ -7,7 +7,7 @@ | |||
| 7 | # is reachable, the API authenticates a known PAT. | 7 | # is reachable, the API authenticates a known PAT. |
| 8 | # | 8 | # |
| 9 | # Usage: | 9 | # Usage: |
| 10 | -# deploy/cutover/smoke.sh https://shithub.example | 10 | +# deploy/cutover/smoke.sh https://shithub.sh |
| 11 | # | 11 | # |
| 12 | # Optional env (when set, the script also exercises the API): | 12 | # Optional env (when set, the script also exercises the API): |
| 13 | # SHITHUB_SMOKE_PAT — a valid shp_ token for `user:read` | 13 | # SHITHUB_SMOKE_PAT — a valid shp_ token for `user:read` |
deploy/docs-site/sync-to-spaces.shmodified@@ -2,7 +2,7 @@ | |||
| 2 | # SPDX-License-Identifier: AGPL-3.0-or-later | 2 | # SPDX-License-Identifier: AGPL-3.0-or-later |
| 3 | # | 3 | # |
| 4 | # Build the public docs site and sync it to the Spaces bucket | 4 | # Build the public docs site and sync it to the Spaces bucket |
| 5 | -# that Caddy serves docs.shithub.example from. | 5 | +# that Caddy serves docs.shithub.sh from. |
| 6 | # | 6 | # |
| 7 | # Run from CI on every push to main, or from an operator's | 7 | # Run from CI on every push to main, or from an operator's |
| 8 | # workstation as a one-off. Idempotent: rclone sync only touches | 8 | # workstation as a one-off. Idempotent: rclone sync only touches |
docs/blog/v1.0.0-launch.md → docs/blog/v0.1.0-launch.mdrenamed (86% similarity)@@ -1,18 +1,18 @@ | |||
| 1 | -# shithub v1.0.0 | 1 | +# shithub v0.1.0 |
| 2 | 2 | ||
| 3 | -shithub is now live at **shithub.example**. | 3 | +shithub is now live at **shithub.sh**. |
| 4 | 4 | ||
| 5 | A self-hostable git forge that aims to look and feel like GitHub. | 5 | A self-hostable git forge that aims to look and feel like GitHub. |
| 6 | AGPL-licensed, written in Go, no AI training on your code, no | 6 | AGPL-licensed, written in Go, no AI training on your code, no |
| 7 | Copilot. | 7 | Copilot. |
| 8 | 8 | ||
| 9 | -You can [sign up](https://shithub.example/signup) to host code on | 9 | +You can [sign up](https://shithub.sh/signup) to host code on |
| 10 | the hosted instance, or | 10 | the hosted instance, or |
| 11 | -[stand one up yourself](https://docs.shithub.example/self-host/deploy.html) | 11 | +[stand one up yourself](https://docs.shithub.sh/self-host/deploy.html) |
| 12 | from the source. | 12 | from the source. |
| 13 | 13 | ||
| 14 | The project's own source is now hosted on shithub at | 14 | The project's own source is now hosted on shithub at |
| 15 | -[shithub.example/shithub/shithub](https://shithub.example/shithub/shithub). | 15 | +[shithub.sh/shithub/shithub](https://shithub.sh/shithub/shithub). |
| 16 | A one-way mirror keeps pushing to the original GitHub repo for the | 16 | A one-way mirror keeps pushing to the original GitHub repo for the |
| 17 | first 90 days as a recovery surface; after that, the canonical home | 17 | first 90 days as a recovery surface; after that, the canonical home |
| 18 | is the self-hosted instance. | 18 | is the self-hosted instance. |
@@ -73,7 +73,7 @@ Honesty over hype: | |||
| 73 | focus-state details — all still drifting. | 73 | focus-state details — all still drifting. |
| 74 | 74 | ||
| 75 | The full roadmap is in | 75 | The full roadmap is in |
| 76 | -[`.docs/sprints/`](https://shithub.example/shithub/shithub/tree/trunk/.docs/sprints) | 76 | +[`.docs/sprints/`](https://shithub.sh/shithub/shithub/tree/trunk/.docs/sprints) |
| 77 | on the source repo. | 77 | on the source repo. |
| 78 | 78 | ||
| 79 | ## Why | 79 | ## Why |
@@ -92,7 +92,7 @@ of switching. | |||
| 92 | ## Self-hosting | 92 | ## Self-hosting |
| 93 | 93 | ||
| 94 | If you'd rather run your own instance, the operator docs are at | 94 | If you'd rather run your own instance, the operator docs are at |
| 95 | -[docs.shithub.example/self-host](https://docs.shithub.example/self-host/prerequisites.html). | 95 | +[docs.shithub.sh/self-host](https://docs.shithub.sh/self-host/prerequisites.html). |
| 96 | Reference target is one DigitalOcean droplet, Postgres on a | 96 | Reference target is one DigitalOcean droplet, Postgres on a |
| 97 | second, DigitalOcean Spaces for object storage, Caddy at the | 97 | second, DigitalOcean Spaces for object storage, Caddy at the |
| 98 | edge. The Ansible playbook in `deploy/ansible/` is the install | 98 | edge. The Ansible playbook in `deploy/ansible/` is the install |
@@ -102,16 +102,16 @@ path; expect ~45 min from a fresh Ubuntu 24.04 droplet to | |||
| 102 | ## Security | 102 | ## Security |
| 103 | 103 | ||
| 104 | If you find a vulnerability, please email | 104 | If you find a vulnerability, please email |
| 105 | -**security@shithub.example** before disclosing publicly. Auto-ack | 105 | +**security@shithub.sh** before disclosing publicly. Auto-ack |
| 106 | within minutes; a human response within 72 hours. Full policy at | 106 | within minutes; a human response within 72 hours. Full policy at |
| 107 | -[SECURITY.md](https://shithub.example/shithub/shithub/blob/trunk/SECURITY.md). | 107 | +[SECURITY.md](https://shithub.sh/shithub/shithub/blob/trunk/SECURITY.md). |
| 108 | 108 | ||
| 109 | ## On call | 109 | ## On call |
| 110 | 110 | ||
| 111 | The author is on call for the first month. Expect rough edges; | 111 | The author is on call for the first month. Expect rough edges; |
| 112 | we're triaging publicly. Issue tracker for shithub itself lives | 112 | we're triaging publicly. Issue tracker for shithub itself lives |
| 113 | on shithub itself: | 113 | on shithub itself: |
| 114 | -[shithub.example/shithub/shithub/issues](https://shithub.example/shithub/shithub/issues). | 114 | +[shithub.sh/shithub/shithub/issues](https://shithub.sh/shithub/shithub/issues). |
| 115 | 115 | ||
| 116 | ## Thanks | 116 | ## Thanks |
| 117 | 117 | ||
docs/internal/bench.mdmodified@@ -25,7 +25,7 @@ on the small dataset. | |||
| 25 | make bench-small | 25 | make bench-small |
| 26 | 26 | ||
| 27 | # Pin a different target / iteration count. | 27 | # Pin a different target / iteration count. |
| 28 | -BENCH_TARGET=http://staging.shithub.example BENCH_ITERS=100 make bench-small | 28 | +BENCH_TARGET=http://staging.shithub.sh BENCH_ITERS=100 make bench-small |
| 29 | ``` | 29 | ``` |
| 30 | 30 | ||
| 31 | Output is one JSON line per scenario: | 31 | Output is one JSON line per scenario: |
docs/internal/retro/v1.0.0.md → docs/internal/retro/v0.1.0.mdrenamed (96% similarity)@@ -1,4 +1,4 @@ | |||
| 1 | -# v1.0.0 launch retro | 1 | +# v0.1.0 launch retro |
| 2 | 2 | ||
| 3 | **Cutover date:** TBD (filled in by the operator on launch day). | 3 | **Cutover date:** TBD (filled in by the operator on launch day). |
| 4 | 4 | ||
@@ -65,7 +65,7 @@ not rehash of every minor decision.) | |||
| 65 | 65 | ||
| 66 | ## Closing | 66 | ## Closing |
| 67 | 67 | ||
| 68 | -shithub is now real. The v1.0.0 surface is what users will judge | 68 | +shithub is now real. The v0.1.0 surface is what users will judge |
| 69 | the project against; what we ship from here forward is judged in | 69 | the project against; what we ship from here forward is judged in |
| 70 | the context of a public, dogfood-driven instance. That's the | 70 | the context of a public, dogfood-driven instance. That's the |
| 71 | forcing function we wanted. | 71 | forcing function we wanted. |
docs/internal/runbooks/day-one.mdmodified@@ -26,7 +26,7 @@ Open three tabs and walk this list: | |||
| 26 | - A flood of ERROR lines from the same handler is a bug — | 26 | - A flood of ERROR lines from the same handler is a bug — |
| 27 | bisect. | 27 | bisect. |
| 28 | 28 | ||
| 29 | -3. **Status page on docs.shithub.example/status.html.** | 29 | +3. **Status page on docs.shithub.sh/status.html.** |
| 30 | - Confirm "All systems normal." with a current timestamp. | 30 | - Confirm "All systems normal." with a current timestamp. |
| 31 | - If you've had any blip, even a 30-second one, log it under | 31 | - If you've had any blip, even a 30-second one, log it under |
| 32 | "Recent incidents" with what happened. Trust comes from | 32 | "Recent incidents" with what happened. Trust comes from |
@@ -58,7 +58,7 @@ if you haven't. | |||
| 58 | 3. **Mirror push to GitHub.** The mirror job runs hourly. Confirm: | 58 | 3. **Mirror push to GitHub.** The mirror job runs hourly. Confirm: |
| 59 | ```sh | 59 | ```sh |
| 60 | git ls-remote https://github.com/tenseleyFlow/shithub.git trunk | 60 | git ls-remote https://github.com/tenseleyFlow/shithub.git trunk |
| 61 | - git ls-remote https://shithub.example/shithub/shithub.git trunk | 61 | + git ls-remote https://shithub.sh/shithub/shithub.git trunk |
| 62 | ``` | 62 | ``` |
| 63 | Both should report the same SHA (within an hour of the latest | 63 | Both should report the same SHA (within an hour of the latest |
| 64 | push to shithub). | 64 | push to shithub). |
@@ -71,7 +71,7 @@ if you haven't. | |||
| 71 | - Suspended accounts: log who and why for the retro. | 71 | - Suspended accounts: log who and why for the retro. |
| 72 | 72 | ||
| 73 | 5. **Issue tracker.** Open | 73 | 5. **Issue tracker.** Open |
| 74 | - `https://shithub.example/shithub/shithub/issues`. Triage every | 74 | + `https://shithub.sh/shithub/shithub/issues`. Triage every |
| 75 | new issue: | 75 | new issue: |
| 76 | - **P0** — site down / data loss / security. Fix immediately. | 76 | - **P0** — site down / data loss / security. Fix immediately. |
| 77 | - **P1** — broken core flow (signup, push, merge). Fix this | 77 | - **P1** — broken core flow (signup, push, merge). Fix this |
@@ -81,7 +81,7 @@ if you haven't. | |||
| 81 | - Reply on every issue within 24h, even if just "tracked, P2." | 81 | - Reply on every issue within 24h, even if just "tracked, P2." |
| 82 | 82 | ||
| 83 | 6. **Retro.** Update | 83 | 6. **Retro.** Update |
| 84 | - `docs/internal/retro/v1.0.0.md` — fill the "Numbers" table, | 84 | + `docs/internal/retro/v0.1.0.md` — fill the "Numbers" table, |
| 85 | the "What surprised us" section, the top-3 issues table. | 85 | the "What surprised us" section, the top-3 issues table. |
| 86 | 86 | ||
| 87 | ## "First incident?" | 87 | ## "First incident?" |
docs/internal/threat-model.mdmodified@@ -178,7 +178,7 @@ keep an eye on them: | |||
| 178 | is enforced; we don't yet do reproducible-build verification. | 178 | is enforced; we don't yet do reproducible-build verification. |
| 179 | - **The docs subdomain serving from Spaces.** A bucket | 179 | - **The docs subdomain serving from Spaces.** A bucket |
| 180 | policy mistake there could let an attacker stage a phishing | 180 | policy mistake there could let an attacker stage a phishing |
| 181 | - page on `docs.shithub.example`. Mitigated by Caddy's CSP | 181 | + page on `docs.shithub.sh`. Mitigated by Caddy's CSP |
| 182 | and the explicit reverse-proxy origin | 182 | and the explicit reverse-proxy origin |
| 183 | (`deploy/docs-site/Caddyfile.snippet`). | 183 | (`deploy/docs-site/Caddyfile.snippet`). |
| 184 | - **PAT prefix recognition by external secret scanners.** | 184 | - **PAT prefix recognition by external secret scanners.** |
docs/public/security.mdmodified@@ -3,7 +3,7 @@ | |||
| 3 | This is a mirror of [`SECURITY.md`](https://github.com/tenseleyFlow/shithub/blob/main/SECURITY.md) | 3 | This is a mirror of [`SECURITY.md`](https://github.com/tenseleyFlow/shithub/blob/main/SECURITY.md) |
| 4 | in the source tree. The in-repo file is authoritative. | 4 | in the source tree. The in-repo file is authoritative. |
| 5 | 5 | ||
| 6 | -To report a vulnerability, email **`security@shithub.example`**. | 6 | +To report a vulnerability, email **`security@shithub.sh`**. |
| 7 | 7 | ||
| 8 | The mailbox auto-acknowledges within minutes; a human response | 8 | The mailbox auto-acknowledges within minutes; a human response |
| 9 | follows within **72 hours**. Please don't file public issues for | 9 | follows within **72 hours**. Please don't file public issues for |
docs/public/self-host/deploy.mdmodified@@ -85,11 +85,11 @@ through `/admin/users/{id}`. | |||
| 85 | 85 | ||
| 86 | ## 5. Smoke | 86 | ## 5. Smoke |
| 87 | 87 | ||
| 88 | -- `https://shithub.example/` — Caddy serves the home page. | 88 | +- `https://shithub.sh/` — Caddy serves the home page. |
| 89 | -- `https://shithub.example/-/health` — returns `200 OK` with the | 89 | +- `https://shithub.sh/-/health` — returns `200 OK` with the |
| 90 | build version. | 90 | build version. |
| 91 | - Sign in as the bootstrap admin. Create a test repo. Push to it. | 91 | - Sign in as the bootstrap admin. Create a test repo. Push to it. |
| 92 | -- `https://shithub.example/admin/` — admin dashboard renders. | 92 | +- `https://shithub.sh/admin/` — admin dashboard renders. |
| 93 | 93 | ||
| 94 | ## 6. Production | 94 | ## 6. Production |
| 95 | 95 | ||
docs/public/self-host/prerequisites.mdmodified@@ -47,9 +47,9 @@ on top of that. | |||
| 47 | 47 | ||
| 48 | You need: | 48 | You need: |
| 49 | 49 | ||
| 50 | -- A domain you control (e.g. `shithub.example`). | 50 | +- A domain you control (e.g. `shithub.sh`). |
| 51 | -- DNS records for the app (`shithub.example`) and the docs | 51 | +- DNS records for the app (`shithub.sh`) and the docs |
| 52 | - subdomain (`docs.shithub.example`). | 52 | + subdomain (`docs.shithub.sh`). |
| 53 | - A TLS certificate. Caddy obtains and renews via Let's Encrypt | 53 | - A TLS certificate. Caddy obtains and renews via Let's Encrypt |
| 54 | automatically — no manual cert management — but the DNS records | 54 | automatically — no manual cert management — but the DNS records |
| 55 | must point at your public IP first. | 55 | must point at your public IP first. |
docs/public/self-host/troubleshooting.mdmodified@@ -10,7 +10,7 @@ your domain; the site serves the staging cert (or no cert). | |||
| 10 | Most often: | 10 | Most often: |
| 11 | 11 | ||
| 12 | - DNS doesn't yet point at the host. Verify with `dig +short | 12 | - DNS doesn't yet point at the host. Verify with `dig +short |
| 13 | - shithub.example`. | 13 | + shithub.sh`. |
| 14 | - Port 80 is blocked. Let's Encrypt's HTTP-01 challenge needs | 14 | - Port 80 is blocked. Let's Encrypt's HTTP-01 challenge needs |
| 15 | port 80 reachable from the public internet (Caddy redirects | 15 | port 80 reachable from the public internet (Caddy redirects |
| 16 | to 443 *after* obtaining the cert). UFW must allow 80. | 16 | to 443 *after* obtaining the cert). UFW must allow 80. |
docs/public/status.mdmodified@@ -1,6 +1,6 @@ | |||
| 1 | # Status | 1 | # Status |
| 2 | 2 | ||
| 3 | -Live status of `shithub.example` and the published mirrors. | 3 | +Live status of `shithub.sh` and the published mirrors. |
| 4 | This page is hand-maintained by the operator on call; the | 4 | This page is hand-maintained by the operator on call; the |
| 5 | machine-readable health endpoints are linked under each section. | 5 | machine-readable health endpoints are linked under each section. |
| 6 | 6 | ||
@@ -18,18 +18,18 @@ Last updated: TBD (operator updates on each cutover or incident). | |||
| 18 | 18 | ||
| 19 | These return immediately and reflect the running web process: | 19 | These return immediately and reflect the running web process: |
| 20 | 20 | ||
| 21 | -- [`https://shithub.example/-/health`](https://shithub.example/-/health) — | 21 | +- [`https://shithub.sh/-/health`](https://shithub.sh/-/health) — |
| 22 | `200 OK` with version + commit + buildAt when the web service | 22 | `200 OK` with version + commit + buildAt when the web service |
| 23 | is up. | 23 | is up. |
| 24 | -- [`https://shithub.example/healthz`](https://shithub.example/healthz) — | 24 | +- [`https://shithub.sh/healthz`](https://shithub.sh/healthz) — |
| 25 | liveness only; `200 OK` if the process is responding. | 25 | liveness only; `200 OK` if the process is responding. |
| 26 | -- [`https://shithub.example/readyz`](https://shithub.example/readyz) — | 26 | +- [`https://shithub.sh/readyz`](https://shithub.sh/readyz) — |
| 27 | readiness; `200 OK` only when DB + storage are reachable. | 27 | readiness; `200 OK` only when DB + storage are reachable. |
| 28 | 28 | ||
| 29 | A scripted check from your machine: | 29 | A scripted check from your machine: |
| 30 | 30 | ||
| 31 | ```sh | 31 | ```sh |
| 32 | -curl -fsS https://shithub.example/readyz | 32 | +curl -fsS https://shithub.sh/readyz |
| 33 | ``` | 33 | ``` |
| 34 | 34 | ||
| 35 | Non-200 means the web service is degraded or down. The operator's | 35 | Non-200 means the web service is degraded or down. The operator's |
@@ -39,8 +39,8 @@ monitoring also alerts on this; you don't need to poll it. | |||
| 39 | 39 | ||
| 40 | | Subdomain | Purpose | Health | | 40 | | Subdomain | Purpose | Health | |
| 41 | |----------------------------|------------------------|---------------------------------------------| | 41 | |----------------------------|------------------------|---------------------------------------------| |
| 42 | -| `shithub.example` | App | `/readyz` | | 42 | +| `shithub.sh` | App | `/readyz` | |
| 43 | -| `docs.shithub.example` | Docs site (this site) | Static; HTTP 200 on `/` | | 43 | +| `docs.shithub.sh` | Docs site (this site) | Static; HTTP 200 on `/` | |
| 44 | 44 | ||
| 45 | ## Backups | 45 | ## Backups |
| 46 | 46 | ||
@@ -51,7 +51,7 @@ log is archived to the backup bucket | |||
| 51 | 51 | ||
| 52 | ## Mailbox availability | 52 | ## Mailbox availability |
| 53 | 53 | ||
| 54 | -The disclosure mailbox `security@shithub.example` auto-acks within | 54 | +The disclosure mailbox `security@shithub.sh` auto-acks within |
| 55 | minutes. If you reported a vulnerability and didn't get an | 55 | minutes. If you reported a vulnerability and didn't get an |
| 56 | auto-ack within 30 min, the inbound flow is broken — please email | 56 | auto-ack within 30 min, the inbound flow is broken — please email |
| 57 | the operator's GitHub-listed contact as a fallback. | 57 | the operator's GitHub-listed contact as a fallback. |
@@ -64,5 +64,5 @@ the operator's GitHub-listed contact as a fallback. | |||
| 64 | 64 | ||
| 65 | There's no email/RSS feed for status updates yet. Watch the | 65 | There's no email/RSS feed for status updates yet. Watch the |
| 66 | operator's announcements account (linked from the | 66 | operator's announcements account (linked from the |
| 67 | -[homepage](https://shithub.example/)) or refresh this page during | 67 | +[homepage](https://shithub.sh/)) or refresh this page during |
| 68 | a known incident window. | 68 | a known incident window. |
docs/public/user/account.mdmodified@@ -37,7 +37,7 @@ killed instantly. Use this if you suspect an unauthorized sign-in. | |||
| 37 | 37 | ||
| 38 | ## SSH and GPG keys | 38 | ## SSH and GPG keys |
| 39 | 39 | ||
| 40 | -- **SSH keys** authenticate `git@shithub.example:...` operations. | 40 | +- **SSH keys** authenticate `git@shithub.sh:...` operations. |
| 41 | - **GPG keys** verify signed commits — when a commit's signature | 41 | - **GPG keys** verify signed commits — when a commit's signature |
| 42 | matches a registered GPG key, the commit shows a "Verified" | 42 | matches a registered GPG key, the commit shows a "Verified" |
| 43 | badge in history. | 43 | badge in history. |
docs/public/user/https.mdmodified@@ -24,7 +24,7 @@ into your password manager — we never display it again. | |||
| 24 | ## 2. Clone | 24 | ## 2. Clone |
| 25 | 25 | ||
| 26 | ```sh | 26 | ```sh |
| 27 | -git clone https://shithub.example/<owner>/<repo>.git | 27 | +git clone https://shithub.sh/<owner>/<repo>.git |
| 28 | ``` | 28 | ``` |
| 29 | 29 | ||
| 30 | When git asks for credentials: | 30 | When git asks for credentials: |
@@ -53,7 +53,7 @@ the URL or `~/.netrc`. Use a token with the narrowest scope the | |||
| 53 | job needs and a short expiration. | 53 | job needs and a short expiration. |
| 54 | 54 | ||
| 55 | ```sh | 55 | ```sh |
| 56 | -git clone https://x-access-token:${SHITHUB_PAT}@shithub.example/owner/repo.git | 56 | +git clone https://x-access-token:${SHITHUB_PAT}@shithub.sh/owner/repo.git |
| 57 | ``` | 57 | ``` |
| 58 | 58 | ||
| 59 | Because the token is in the URL, make sure your CI doesn't echo | 59 | Because the token is in the URL, make sure your CI doesn't echo |
docs/public/user/quickstart.mdmodified@@ -38,7 +38,7 @@ token](./personal-access-tokens.md) — your account password does | |||
| 38 | not work for git operations. | 38 | not work for git operations. |
| 39 | 39 | ||
| 40 | ```sh | 40 | ```sh |
| 41 | -git clone https://shithub.example/<your-username>/<repo>.git | 41 | +git clone https://shithub.sh/<your-username>/<repo>.git |
| 42 | cd <repo> | 42 | cd <repo> |
| 43 | ``` | 43 | ``` |
| 44 | 44 | ||
docs/public/user/ssh.mdmodified@@ -43,7 +43,7 @@ what `ssh-keygen -l -f ~/.ssh/id_ed25519.pub` prints locally. | |||
| 43 | ## 4. Test the connection | 43 | ## 4. Test the connection |
| 44 | 44 | ||
| 45 | ```sh | 45 | ```sh |
| 46 | -ssh -T git@shithub.example | 46 | +ssh -T git@shithub.sh |
| 47 | ``` | 47 | ``` |
| 48 | 48 | ||
| 49 | You'll see a confirmation message. The `-T` disables PTY allocation; | 49 | You'll see a confirmation message. The `-T` disables PTY allocation; |
@@ -52,7 +52,7 @@ shithub's SSH service refuses TTYs anyway. | |||
| 52 | ## 5. Clone with SSH | 52 | ## 5. Clone with SSH |
| 53 | 53 | ||
| 54 | ```sh | 54 | ```sh |
| 55 | -git clone git@shithub.example:<owner>/<repo>.git | 55 | +git clone git@shithub.sh:<owner>/<repo>.git |
| 56 | ``` | 56 | ``` |
| 57 | 57 | ||
| 58 | Subsequent pushes don't prompt — the agent presents the key, the | 58 | Subsequent pushes don't prompt — the agent presents the key, the |
internal/web/templates/hello.htmlmodified@@ -29,7 +29,7 @@ | |||
| 29 | A self-hostable git forge that aims to look and feel like GitHub. | 29 | A self-hostable git forge that aims to look and feel like GitHub. |
| 30 | AGPL-licensed, written in Go, no AI training on your code, no | 30 | AGPL-licensed, written in Go, no AI training on your code, no |
| 31 | Copilot. <a href="/signup">Sign up</a> to host code here, or | 31 | Copilot. <a href="/signup">Sign up</a> to host code here, or |
| 32 | - <a href="https://docs.shithub.example/self-host/deploy.html">run | 32 | + <a href="https://docs.shithub.sh/self-host/deploy.html">run |
| 33 | your own instance</a> from the source. | 33 | your own instance</a> from the source. |
| 34 | </p> | 34 | </p> |
| 35 | </section> | 35 | </section> |
@@ -64,14 +64,14 @@ | |||
| 64 | <nav class="shithub-landing-cta" aria-label="Primary actions"> | 64 | <nav class="shithub-landing-cta" aria-label="Primary actions"> |
| 65 | <a class="shithub-landing-cta-primary" href="/signup">Create an account</a> | 65 | <a class="shithub-landing-cta-primary" href="/signup">Create an account</a> |
| 66 | <a class="shithub-landing-cta-secondary" href="/login">Sign in</a> | 66 | <a class="shithub-landing-cta-secondary" href="/login">Sign in</a> |
| 67 | - <a class="shithub-landing-cta-secondary" href="https://docs.shithub.example/">Read the docs</a> | 67 | + <a class="shithub-landing-cta-secondary" href="https://docs.shithub.sh/">Read the docs</a> |
| 68 | <a class="shithub-landing-cta-secondary" href="/shithub/shithub">Read the source</a> | 68 | <a class="shithub-landing-cta-secondary" href="/shithub/shithub">Read the source</a> |
| 69 | </nav> | 69 | </nav> |
| 70 | 70 | ||
| 71 | <p class="shithub-landing-honest"> | 71 | <p class="shithub-landing-honest"> |
| 72 | Newly launched. Some surfaces (SSH transport, Actions/CI, GraphQL, | 72 | Newly launched. Some surfaces (SSH transport, Actions/CI, GraphQL, |
| 73 | packages, releases) are planned but not shipped yet. The | 73 | packages, releases) are planned but not shipped yet. The |
| 74 | - <a href="https://docs.shithub.example/">docs</a> are honest about | 74 | + <a href="https://docs.shithub.sh/">docs</a> are honest about |
| 75 | what works and what's still in flight. | 75 | what works and what's still in flight. |
| 76 | </p> | 76 | </p> |
| 77 | {{ end }} | 77 | {{ end }} |
tests/load/README.mdmodified@@ -37,7 +37,7 @@ with `K6_SCENARIO=auth-mix make load-test` etc. | |||
| 37 | ## Running against staging | 37 | ## Running against staging |
| 38 | 38 | ||
| 39 | ```sh | 39 | ```sh |
| 40 | -export BASE=https://staging.shithub.example | 40 | +export BASE=https://staging.shithub.sh |
| 41 | export TOKEN=shp_<a-pat-on-a-test-account> | 41 | export TOKEN=shp_<a-pat-on-a-test-account> |
| 42 | export REPO=loadtest/issue-storm # for the comment-storm scenario | 42 | export REPO=loadtest/issue-storm # for the comment-storm scenario |
| 43 | export FIRST_ISSUE=1 | 43 | export FIRST_ISSUE=1 |