Skip to content

OSS readiness: community health files, project status, scheduled settings audit - #140

Merged
AdamXweb merged 3 commits into
mainfrom
docs/oss-readiness
Jul 28, 2026
Merged

OSS readiness: community health files, project status, scheduled settings audit#140
AdamXweb merged 3 commits into
mainfrom
docs/oss-readiness

Conversation

@adamXbot

@adamXbot adamXbot commented Jul 28, 2026

Copy link
Copy Markdown
Collaborator

Summary

Fills the gaps a first-time visitor or contributor currently hits. None of these files existed before.

File What it covers
CONTRIBUTING.md Prerequisites, command table, what CI enforces, easy-to-miss conventions
CODE_OF_CONDUCT.md Contributor Covenant 2.1
SUPPORT.md Where to ask what, and what information actually helps
.github/PULL_REQUEST_TEMPLATE.md Verification-focused checklist
.github/CODEOWNERS @AdamXweb + expensive-to-get-wrong paths
CHANGELOG.md Published for the first time

Plus README gains Project status (beta, per-platform support table, release/versioning policy) and a Contributing section.

Notable choices

  • CONTRIBUTING documents the things that actually break builds: the a11y gate is blocking and its known-issue allowlist must stay empty; copy goes through locales/en.json; Renovate owns dependency bumps; and the Playwright-reuses-:3000 trap that has cost real debugging time.
  • The Code of Conduct routes reports through GitHub's private channels (private vulnerability reporting, a DM to the maintainer, GitHub abuse reporting) rather than an email address, because the project doesn't publish one. Worth swapping for a real address if you'd like one — that's the one line here I'd flag for your judgement.
  • CHANGELOG covers v0.1.0–v0.1.2 retrospectively from the release notes, summarised rather than pasting the Dependabot PR lists. The Unreleased section already covers this branch's accessibility, security, and first-run work.
  • CODEOWNERS documents realitymain is admin-protected, so @AdamXweb is the only account that can merge anyway.

Scheduled settings audit

scripts/audit-github-settings.mjs existed but nothing ever ran it. .github/workflows/repo-settings-audit.yml now runs it weekly and writes the report to the job summary.

Two deliberate design points, both documented in the workflow header:

  • Advisory on cron, strict on demand. A scheduled job that goes red every week for a setting nobody intends to change is a job people learn to ignore. The cron leg always exits 0; run it manually with strict: true for a hard pass/fail.
  • It wants a REPO_AUDIT_TOKEN. GITHUB_TOKEN cannot read branches/main/protection (needs repo-admin), so without a fine-grained PAT (administration:read) that half of the report reads as unreadable rather than passing. The workflow emits a ::notice:: when the secret is absent so it's never silently misleading. Same class of problem as RENOVATE_TOKEN.

Screenshot capture script

scripts/capture-screenshots.mjs (pnpm screenshots) captures a consistent set of UI shots — apps grid, app detail mid-diff, dashboard risk sections, privacy map, and a phone-width view — against the canned demo fixture.

docs/screenshots/ is gitignored: the images are for docs, issues, and release notes rather than repo weight, and a checked-in set would be stale by the next UI change. The script is the durable part. It applies the Strict privacy profile so the mismatch badges mean something, and disables the coachmark tour — without that the dashboard shot is a dimmed spotlight overlay.

Verification

  • Both workflow YAMLs parse; the audit script was run live against this repo and produces its report correctly (it currently flags 5 settings — see below).
  • Every relative markdown link across the new and edited files resolves.
  • pnpm typecheck clean, 441 unit tests pass; the capture script lints clean and was exercised end-to-end.
  • AGENTS.md gains a section on both topics, and its stale "all six GitHub workflows" line is corrected — there are ten; six install dependencies.

Heads-up from the live audit run: it reports Dependabot security updates, secret scanning, and push protection as not enabled, and can't read branch protection with the current token. Some of that is the token scope; some may be real. Worth a look in repo settings once this merges.

🤖 Generated with Claude Code

…tings audit

Fills the gaps a first-time visitor or contributor hits:

- CONTRIBUTING.md — prerequisites, the command table, what CI enforces,
  and the conventions that are easy to miss (the a11y gate is blocking
  and its allowlist must stay empty; copy goes through i18n; Renovate
  owns dependency bumps; the Playwright :3000 port trap).
- CODE_OF_CONDUCT.md — Contributor Covenant 2.1. Reports route through
  GitHub's private channels rather than an email address, since the
  project doesn't publish one.
- SUPPORT.md — where to ask what, what information actually helps, and
  an honest note on what we can't help with (a lost local DB has no
  cloud copy) and on response times.
- .github/PULL_REQUEST_TEMPLATE.md — verification-focused, with the
  a11y-allowlist and i18n items as explicit checkboxes.
- .github/CODEOWNERS — @AdamXweb, documenting that main is
  admin-protected, with expensive-to-get-wrong paths called out.
- CHANGELOG.md — published for the first time (there never was one).
  v0.1.0–v0.1.2 written retrospectively from the release notes; the
  Unreleased section covers this branch's work so far.
- README — project status (beta, per-platform support table, release
  and versioning policy) and a Contributing section.

Also wires scripts/audit-github-settings.mjs into a weekly workflow.
It writes to the job summary and is ADVISORY on cron (a job that goes
red every week gets ignored); use the manual run with strict: true for
a hard pass/fail. Without a REPO_AUDIT_TOKEN the branch-protection half
reports as unreadable rather than passing — GITHUB_TOKEN lacks
repo-admin scope for that endpoint — which the header documents.

AGENTS.md gains a section on both, and its stale "all six workflows"
line is corrected (there are ten; six install dependencies).

Verified: workflow YAML parses, the audit script runs green against the
live repo, every relative markdown link resolves, typecheck + 441 unit
tests pass.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@adamXbot adamXbot changed the title OSS readiness: community health files, project status, scheduled settings audit OSS readiness: community health files, README screenshots, scheduled settings audit Jul 28, 2026
@adamXbot

Copy link
Copy Markdown
Collaborator Author

Pushed 56f9f24 — the screenshots half of this phase.

The README's screenshots section has been a TODO comment since the repo opened. It now carries four real captures (apps grid as the hero, an app detail page mid-diff, the dashboard's risk sections, the privacy map) plus a phone-width shot behind a disclosure.

Committed alongside them: scripts/capture-screenshots.mjs (pnpm screenshots). A one-off set of PNGs would be stale by the next UI change, so the capture is reproducible instead. It seeds the canned demo fixture (never real data), applies the Strict privacy profile so the mismatch badges actually show something, and disables the coachmark tour — without that last step the dashboard shot is just a dimmed spotlight overlay.

Two capture quirks are now comments in the script rather than lore: scrollIntoViewIfNeeded() silently no-ops when the target is already partly visible (which left the first-run checklist filling the dashboard shot), and the phone shot is taken at the top of the page because mid-scroll the sort pills bleed through the translucent nav.

Verified by deleting every PNG and regenerating the committed set from scratch with the committed script.

🤖 Generated with Claude Code

`pnpm screenshots` (scripts/capture-screenshots.mjs) captures a
consistent set of UI shots — apps grid, app detail mid-diff, the
dashboard's risk sections, the privacy map, and a phone-width view.

The images themselves are gitignored: they're for docs, issues, and
release notes rather than repo weight, and a checked-in set would be
stale by the next UI change anyway. The script is what's worth keeping.

It seeds the canned demo fixture (never real data), applies the Strict
privacy profile so the mismatch badges mean something, and disables the
coachmark tour — without that last step the dashboard shot is just a
dimmed spotlight overlay. Two capture quirks are comments rather than
lore: scrollIntoViewIfNeeded() no-ops when the target is already partly
visible (hence the dashboard's explicit scroll past the first-run
checklist), and the phone shot is taken at the top of the page because
mid-scroll the sort pills bleed through the translucent nav.

README keeps its new quick-links row; its screenshots section stays a
placeholder, now pointing at the script.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@adamXbot
adamXbot force-pushed the docs/oss-readiness branch from 56f9f24 to ce258a0 Compare July 28, 2026 04:48
@adamXbot adamXbot changed the title OSS readiness: community health files, README screenshots, scheduled settings audit OSS readiness: community health files, project status, scheduled settings audit Jul 28, 2026
@adamXbot

Copy link
Copy Markdown
Collaborator Author

Screenshots pulled from this PR (ce258a0, force-pushed).

The branch was rewritten rather than given a delete-commit, so the PNGs aren't in its history at all — nothing to carry into main. Verified: no image blobs anywhere in origin/main..HEAD.

What changed from the previous push:

  • docs/screenshots/*.png — gone, and the directory is now gitignored so captures never land in the repo by accident.
  • README — the screenshots gallery and hero image are reverted to the original placeholder comment. The new quick-links row (Install for macOS · Run with Docker · Documentation) stays, since that's a README improvement independent of the images.
  • scripts/capture-screenshots.mjskept, reframed as a general capture tool for docs/issues/release notes rather than "regenerate the README shots". It's self-contained, produces only gitignored output, and is genuinely useful for anyone wanting a consistent set. Say the word if you'd rather it came out too and I'll drop it along with its CONTRIBUTING/CHANGELOG/AGENTS references.

🤖 Generated with Claude Code

The new PostCSS advisory (path traversal via sourceMappingURL
auto-loading, disclosing arbitrary .map files; fixed in 8.5.18) fails
`pnpm audit --prod`, which gates the `quality` job on every branch AND
main's Docker publish — so main and all four open PRs went red at once
without anyone changing code.

The existing override was already `^8.5.12`, but a caret is not a
floor that moves: the committed lockfile had resolved 8.5.17, which is
vulnerable. Raising the override to `^8.5.18` and regenerating pulls
8.5.23. Same pattern, and same file, as the sharp and @babel/core
entries — the header comment now records why the caret alone wasn't
enough, since this will recur.

Verified: `pnpm audit --prod` reports no known vulnerabilities,
typecheck clean, 441 unit tests pass, and a full production build
emits CSS correctly (postcss is the stylesheet pipeline, so the build
is the real canary here, not the audit).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@adamXbot

Copy link
Copy Markdown
Collaborator Author

Cherry-picked the postcss advisory fix onto this branch so it goes green independently of merge order — see #141 for the full diagnosis.

Short version: a new PostCSS advisory (GHSA-r28c-9q8g-f849, fixed in 8.5.18) turned the quality job red on every open PR and on main's Docker publish, with nobody having changed code. The existing ^8.5.12 override wasn't enough — a caret is not a floor that moves, and the lockfile had resolved the vulnerable 8.5.17.

If #141 merges first, this commit drops out cleanly on rebase (identical patch).

🤖 Generated with Claude Code

@AdamXweb
AdamXweb merged commit 2661c54 into main Jul 28, 2026
16 checks passed
@AdamXweb
AdamXweb deleted the docs/oss-readiness branch July 28, 2026 05:56
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.

2 participants