Clone this repository
For self-hosted knots, clone URLs may differ based on your setup.
Download tar.gz
Move com.atproto.repo.strongRef, com.atproto.label.defs, and
com.atproto.moderation.defs from inline objects in lexicon-resolve.ts
to src/lexicons/ JSON files. The resolver now loads all built-in
schemas from disk. createReport lexicon references
com.atproto.repo.strongRef instead of a local #strongRef def.
Build now cleans dist/ before compiling to prevent stale artifacts.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move all 14 inlined dev.hatk.* lexicon definitions from cli.ts into
src/lexicons/dev/hatk/*.json. The hatk new command now copies them
with cpSync instead of writing each one inline. Build step copies
lexicons to dist/ alongside templates.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- SQLite adapter coerces boolean params to 0/1
- pdsCreateRecord and pdsPutRecord now run label rules after local indexing
- clearLabels() added for hot-reload support in server-init
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Users can submit reports via dev.hatk.createReport XRPC endpoint,
selecting from the app's defined labels with optional free-text reason.
Reports are stored in a new _reports table (dialect-aware for SQLite/DuckDB).
Admins see a Reports tab in the admin UI to review, apply labels, or
dismiss reports. Open report count appears on the Overview dashboard.
Also fixes the label scaffold template to use defineLabel from $hatk,
and adds the createReport lexicon to hatk new scaffolding.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>