Skip to content

Migrate GitHub wiki into docs/ folder#852

Merged
edwh merged 21 commits into
developfrom
docs/wiki-migration
May 19, 2026
Merged

Migrate GitHub wiki into docs/ folder#852
edwh merged 21 commits into
developfrom
docs/wiki-migration

Conversation

@edwh
Copy link
Copy Markdown
Collaborator

@edwh edwh commented May 19, 2026

Summary

  • Replaces 16 GitHub wiki pages with versioned Markdown docs in the repo
  • Updates README to link to docs/ rather than the GitHub wiki
  • New files: contributing.md, integrations.md, queue-and-email.md, operations.md, frontend-architecture.md

What each doc covers

File Wiki pages absorbed
docs/contributing.md Branching and development
docs/integrations.md Interaction with Discourse, Integrating with Mediawiki, Single Sign On, Cross module authentication
docs/queue-and-email.md Notifications and emails
docs/operations.md Deleting archived groups
docs/frontend-architecture.md Use of Vue, API Documentation

Obsolete wiki pages (no repo equivalent needed)

  • Deployment — superseded by docs/fly-deployment.md
  • Installation — superseded by docs/local-development.md
  • Tech debt laundry list — stale (Laravel upgrade done, items no longer relevant)
  • Regression Testing — superseded by Playwright tests
  • Development History — historical, not actionable
  • Home — trivial welcome page

Test plan

  • Read through each new doc and verify it accurately reflects the codebase
  • Confirm README links resolve correctly

🤖 Generated with Claude Code

edwh and others added 21 commits May 19, 2026 12:36
Tests already pass on master before merging to production, so running
the full 50-minute suite again just delays the deploy unnecessarily.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The rclone install script requires unzip/7z/busybox which aren't present
in the php:8.2-fpm base image. Using the apt package is simpler and
uses Debian mirrors.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The php:8.2-fpm MySQL client rejects the self-signed cert on the Fly
private network. Backup runs over the internal network so SSL is not needed.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Service accounts have no personal Drive quota; backups must go into the
Shared Drive. Pass --drive-team-drive to all rclone calls.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
--ssl-mode=DISABLED is MySQL-specific; MariaDB client rejects it as
"unknown variable", producing 0 bytes of output. Use --skip-ssl instead,
which both clients accept.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Using gdrive:<ID>/ treats the ID as a folder name path, which caused
rclone to create a new folder literally named with the ID string.
--drive-root-folder-id correctly targets the folder by its Drive ID,
so renaming the folder in Google Drive won't break the backup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…ckups)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile.fly: build arg STARTUP_SCRIPT selects startup script;
  copies both startup.sh and yesterday-startup.sh into image
- docker/yesterday-startup.sh: downloads closest-to-3am-UTC backup
  from GDrive, restores to external MySQL, writes snapshot timestamp,
  falls back to oldest available backup if no yesterday backup exists
- fly-yesterday.toml: wire up build arg, YESTERDAY_MODE=true,
  APP_URL=yesterday.restarters.net, 10min health check grace period
- YesterdayBanner middleware: shares snapshot time with all views
- yesterday-banner.blade.php: amber banner with timestamp + link to live
- header/header_plain: include banner after body tag
- startup.sh: fix stale daily cron fallback to hourly

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Dockerfile.fly: conditionally installs default-mysql-server when
  building with STARTUP_SCRIPT=yesterday-startup.sh
- yesterday-startup.sh: initialises and starts local MariaDB on
  127.0.0.1, creates DB+user, then restores backup into it
- fly-yesterday.toml: DB_HOST=127.0.0.1 with local credentials
  (no separate Fly MySQL app required)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- docker/restart-yesterday.sh: uses Fly Machines API (curl) to restart
  all restarters-yesterday machines; reads FLY_YESTERDAY_RESTART_TOKEN
  secret set on the production app
- Dockerfile.fly: copies restart-yesterday.sh into image; adds
  '0 5 * * *' cron entry alongside backup and watchdog
- startup.sh: fallback check ensures restart-yesterday is in crontab
  after deploys that predate this entry

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…irst

Health check fires immediately on boot; supervisord must start before
the restore so nginx can respond to /robots.txt. MariaDB and restore
now run in background — app shows DB errors for ~2min while restoring.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Replaces 16 GitHub wiki pages with versioned Markdown docs in the repo:

- docs/contributing.md   — branching strategy, hotfix workflow
- docs/integrations.md   — Discourse SSO, MediaWiki sync, WordPress, cross-module auth
- docs/queue-and-email.md — queue driver, retry/failure, email mailer config
- docs/operations.md     — procedure for deleting groups created in error
- docs/frontend-architecture.md — Vue/Blade integration, component patterns, API tokens

Updates README.md to link to docs/ rather than the GitHub wiki.

Obsolete wiki pages (Deployment, Installation, Tech debt laundry list,
Regression Testing, Development History, Home) have no repo equivalent
needed — their content is either superseded by existing docs or no longer
relevant.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@sonarqubecloud
Copy link
Copy Markdown

@edwh edwh merged commit 723bb32 into develop May 19, 2026
2 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant