Skip to content

History

Revisions

  • docs: R2 vs CF token separation + deploy failure diagnostics (#379, #362 follow-up) Two-token model was implicit before; today's deploy storm made explicit that CLOUDFLARE_API_TOKEN (wrangler) and R2_ACCESS_KEY_ID/SECRET (aws s3 sync) are completely separate credentials with independent rotations. The three most common deploy failures we hit today are now named and diagnosed inline in Web-Deploy-Workflow.md's new 'Deploy failure diagnostics' section. Also documents the operational tip that a stuck cancel needs the GitHub UI's force-cancel path (gh CLI has no equivalent), and that the Backup workflow's 'skipped' status is by design when the upstream Build Site Data run failed -- not a Backup failure to chase.

    @mdeguzis mdeguzis committed Jul 22, 2026
    4294dfe
  • docs: non-Steam boxart chain adds tier 4 (PGWiki cover) for pgwiki: ids (#375, #377 slice 3.5)

    @mdeguzis mdeguzis committed Jul 22, 2026
    b8ab8a4
  • docs: store-type reference + PGWiki section + non-Steam boxart chain (#377, #375) Store-APIs-and-Images.md: - New 'Canonical IDs and store types' section at the top: prefix table (bare digits/gog:/epic:/pgwiki:) + the lockstep files to touch when adding a new prefix. - New 'PCGamingWiki (Cargo API)' section covering: endpoint + real field names + why aliases can't start with underscore, use 1 (search-index enricher #377 slice 1), use 2 (PGWiki-only catalog #377 slice 3), CC BY-NC-SA 3.0 attribution rule, admin API Explorer tab. - Header image URL chain grew a new 'non-Steam' subsection covering the runtime SGDB fallback (#375). Original Steam chain kept as-is. - SGDB section notes the frontend runtime fallback (#375) so admins do not conclude the 'non-Steam SGDB not shipped' line still holds. - Data files summary picked up pcgamingwiki.json + pcgwiki-catalog.json; nonsteam-images.json now lists pgwiki: as a valid key. Data-Pipeline.md: - search-index.json entry now names all four store types (steam / gog / epic / pgwiki) and cross-links to the Store-APIs canonical-id table.

    @mdeguzis mdeguzis committed Jul 22, 2026
    d133e17
  • Data-Pipeline: document pcgwiki-catalog.json for PCGWiki-only entries (#377 slice 3)

    @mdeguzis mdeguzis committed Jul 21, 2026
    e0393cd
  • Data-Pipeline: document PCGamingWiki enricher (cols 14 + 15) + cache files (#377 slice 1)

    @mdeguzis mdeguzis committed Jul 21, 2026
    3ce5fbd
  • docs: reflect Cloudflare Pages migration + new admin tabs Update every affected page to describe the post-#362 architecture (CF Pages projects for staging + prod, R2 bucket for per-game data, publish-shell.yml auto-deploy) and preserve the GH Pages path as rollback only. Retire the cert-renewal page with a banner but keep the walkthrough intact for the rollback path. Add two new pages documenting the admin observability surfaces: - Admin-Logging-Tab: localStorage ring buffer + the mobile debug workflow that replaces remote devtools - Admin-Deployments-Tab: last 15 deploy runs across the four deploy workflows, cached 45s to stay under the 60/hr GH API limit Link both from Home.md.

    @mdeguzis mdeguzis committed Jul 21, 2026
    6451807
  • Cert wiki: add security note + Cloudflare Pages hardening path

    @mdeguzis mdeguzis committed Jul 19, 2026
    ac55aa5
  • Cert wiki: document final config (Cloudflare Full non-strict, origin cert left expired) not WIP options

    @mdeguzis mdeguzis committed Jul 19, 2026
    e134e24
  • Cert wiki: warn that Cloudflare Automatic SSL/TLS auto-upgrades to Strict and 526s; pin explicit Full

    @mdeguzis mdeguzis committed Jul 19, 2026
    d2d8d21
  • Rewrite cert page: two-hop model, Path A/B, #359 monitoring + make check-cert

    @mdeguzis mdeguzis committed Jul 19, 2026
    ec77b45
  • docs: add GitHub-Pages-Cert-Renewal walkthrough Covers the bad_authz recovery path (Cloudflare proxy eating the ACME HTTP-01 challenge) that make renew-certificate scripts against. Also records why we deliberately do NOT read cert expiry out-of-band from the GitHub Pages REST API -- avoids putting a PAT on the edge-status worker.

    @mdeguzis mdeguzis committed Jul 19, 2026
    8c2b6d3
  • docs: update per-game aggregation to match unified web algorithm

    @mdeguzis mdeguzis committed Jul 16, 2026
    3481ec6
  • docs(security): document status.html CSP connect-src whitelist (#341)

    @mdeguzis mdeguzis committed Jul 15, 2026
    5e79e9e
  • docs(runbook): add security scanners + moderation infra recovery steps - New "Security scanner + moderation infrastructure" section under Phase 1 documenting semgrep.yml, sbom.yml, .grype.yaml, security-monitor, and the proton-pulse-data content moderation script + content-moderation-review label - Phase 2.2 now notes the sibling proton-pulse-data secrets that need populating too + the gh label create for the review label - Phase 5 verification checklist gets four new checks: semgrep + sbom green on PR, SBOM artifact present, aux moderation scan ran, label exists - OPENAI_API_KEY row in Phase 1 flags dual-repo use - Related pages: added Security Guardrails + Content Moderation

    @mdeguzis mdeguzis committed Jul 15, 2026
    6abf726
  • docs(moderation): add sysinfo_text + reason_text aux scans + issue rate limit

    @mdeguzis mdeguzis committed Jul 15, 2026
    f2fdd3c
  • docs(moderation): scanner now covers user_proton_configs.app_name + user_systems.label (#331, #332)

    @mdeguzis mdeguzis committed Jul 15, 2026
    303d9b1
  • docs(security): document per-IP rate-limit abuse alerts (#320)

    @mdeguzis mdeguzis committed Jul 15, 2026
    c359c7c
  • docs(moderation): add coverage audit table (#319)

    @mdeguzis mdeguzis committed Jul 15, 2026
    decb247
  • docs(security): add Semgrep, SBOM+Grype, and Quarterly restore drill sections (mdeguzis/proton-pulse-web#316, #317, #322)

    @mdeguzis mdeguzis committed Jul 15, 2026
    8738a9b
  • docs: add SECURITY.md disclosure policy section (mdeguzis/proton-pulse-web#313)

    @mdeguzis mdeguzis committed Jul 14, 2026
    57a3e69
  • docs: add CWE/OWASP references to all findings and standards section

    @mdeguzis mdeguzis committed Jul 14, 2026
    9dda125
  • docs: update Safety page with tech stack, attack surface, best practices; mark all pentest findings fixed

    @mdeguzis mdeguzis committed Jul 14, 2026
    72718f6
  • docs: add Safety and Security page with pentest sub-page

    @mdeguzis mdeguzis committed Jul 14, 2026
    1835b9a
  • user_systems now owner-only RLS + deleted on erasure (#283)

    @mdeguzis mdeguzis committed Jul 12, 2026
    8ad0b7d
  • Drop 'opt-in' framing; describe as auto-on-first-use with public-profile as the only opt-out Match the current implementation reality: library syncs automatically on first profile visit, wishlist on first browse-chip activation. There is no in-app opt-out toggle -- Steam's Public profile visibility is the effective opt-out because a non-Public profile returns nothing.

    @mdeguzis mdeguzis committed Jul 12, 2026
    858514d
  • Add privacy-relevant summary of how library/wishlist gets fetched Referenced from the privacy page and the About Your Data section so anyone asking 'does Steam sign-in transfer my library?' lands on a direct answer: sign-in does not, it is a separate opt-in sync, we call GetOwnedGames / GetWishlist server-side with our Steam Web API key, and Steam only returns data if the user's profile visibility is public.

    @mdeguzis mdeguzis committed Jul 12, 2026
    63886db
  • Document user_systems field validation constraints (#283)

    @mdeguzis mdeguzis committed Jul 12, 2026
    1d2b91b
  • Erasure now scrubs and keeps user_systems instead of deleting (#283)

    @mdeguzis mdeguzis committed Jul 12, 2026
    ebfdb6b
  • Document admin_erase_user anonymize-on-erase + admin_audit_log (#283)

    @mdeguzis mdeguzis committed Jul 12, 2026
    0323b99
  • Site status: document Cloudflare worker cron, latency sparkline, admin check-now, make deploy-worker (#275)

    @mdeguzis mdeguzis committed Jul 11, 2026
    07ebeff