Skip to content

feat(devvit): port to Devvit Web (autowikimod) - #79

Merged
bakerboy448 merged 5 commits into
mainfrom
feat/devvit-web
Oct 18, 2026
Merged

bakerboy448 merged 5 commits into
mainfrom
feat/devvit-web

Conversation

@bakerboy448

Copy link
Copy Markdown
Collaborator

Ports devvit/ from the classic @devvit/public-api scaffold to Devvit Web as autowikimod, ahead of the Data API closing to unregistered apps on 2027-01-12.

  • devvit.json + Hono /internal/* server on @devvit/web 0.14.8, built to dist/server/index.cjs with @devvit/start.
  • Cron publish every 20 min. onModAction dropped: its payload carries no reason text and the cron already reads the mod log.
  • Renderer ported from build_wiki_content. FR-7 merges a removal with its addremovalreason. FR-8 shows approvals only when they reverse a Reddit/AutoModerator removal, looked up in a Redis hash keyed by target id.
  • Settings: wiki page (default modlog-devvit for side-by-side cutover), days shown/kept (90), action list, anonymize (cannot be disabled), ignored moderators. Menu: Publish now, Force rebuild, Test connection.
  • 42 Vitest tests (render, correlation, settings, Redis store on @devvit/test, publish cycle). The golden parity test runs a fixture through the unmodified Python publisher and requires byte-identical TS output; CI regenerates the golden with uv and fails on drift.
  • New devvit.yml workflow on the hetzner runner.

Not yet uploaded or playtested. Deliberate differences from Python and the live-playtest list are in devvit-migration/docs/STATUS.md.

Supersedes #72 (public-api bump) since the classic package is removed.

🤖 Generated with Claude Code

bakerboy448 and others added 5 commits October 15, 2026 22:22
Replace the classic @devvit/public-api scaffold with a Devvit Web server
(devvit.json, Hono /internal routes, @devvit/web 0.14.8).

- Cron publish every 20 minutes; onModAction dropped because its payload
  carries no reason text and the cron already reads the mod log.
- Renderer ported from build_wiki_content, including FR-7 removal/reason
  merging and FR-8 approval gating via a Redis hash keyed by target id.
- Settings: wiki page (default modlog-devvit), days shown/kept (90),
  action list, anonymize (cannot be disabled), ignored moderators.
- Menu: Publish now, Force rebuild, Test connection.
parity/python_render.py runs the fixture through the unmodified Python
publisher; the TS pipeline must reproduce golden.md byte for byte.
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@bakerboy448
bakerboy448 merged commit 47dadca into main Oct 18, 2026
4 checks passed
@bakerboy448
bakerboy448 deleted the feat/devvit-web branch October 18, 2026 03:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant