From 480ebf73b86d98fa42d6f5f248e6224d5c0186f7 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Fri, 6 Feb 2026 21:27:04 +1300 Subject: [PATCH 1/3] chore: make generation of JWK easier --- client/.env.example | 2 +- client/package.json | 1 + client/scripts/generate-jwk.js | 0 3 files changed, 2 insertions(+), 1 deletion(-) mode change 100644 => 100755 client/scripts/generate-jwk.js diff --git a/client/.env.example b/client/.env.example index 21f8964..a7468af 100644 --- a/client/.env.example +++ b/client/.env.example @@ -25,7 +25,7 @@ COOKIE_SECRET=development-secret-at-least-32-chars!! # Private JWK for confidential OAuth client (optional) # For production, you can generate a key pair with: -# npx @atproto/jwk-cli generate --alg ES256 +# npm run gen-keys # Then paste the private key JSON here (minified, single line) # Leave empty to use public client mode (simpler, works for most cases) ATPROTO_JWK_PRIVATE= diff --git a/client/package.json b/client/package.json index 8d99e9b..ce11b6c 100644 --- a/client/package.json +++ b/client/package.json @@ -3,6 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { + "gen-keys": "scripts/generate-jwk.js", "dev": "next dev", "build": "next build", "start": "next start", diff --git a/client/scripts/generate-jwk.js b/client/scripts/generate-jwk.js old mode 100644 new mode 100755 From 89e143947f7460c51732e6fc5b5b65851112028b Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Tue, 10 Feb 2026 23:08:53 +1300 Subject: [PATCH 2/3] fix: start jetstream consumer when lexicons are registered individually RegisterLexicon was missing the notifyLexiconChange callback that ImportLexicons and DeleteLexicon already had. This meant the jetstream consumer was never started when lexicons were added one at a time via the frontend, leaving the indexer unable to process real-time events. Also read the jetstream URL from the database config (set via frontend) instead of only from the JETSTREAM_URL env var. --- internal/graphql/admin/resolvers.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/internal/graphql/admin/resolvers.go b/internal/graphql/admin/resolvers.go index d2f1e7b..8fa201d 100644 --- a/internal/graphql/admin/resolvers.go +++ b/internal/graphql/admin/resolvers.go @@ -582,6 +582,9 @@ func (r *Resolver) RegisterLexicon(ctx context.Context, nsid string) (map[string return nil, fmt.Errorf("failed to save lexicon: %w", err) } + // Notify Jetstream consumer of collection changes + r.notifyLexiconChange(ctx) + // Parse schema to extract description var schema struct { ID string `json:"id"` From 3900389b65f14b9a7b462f20612b666fc197b528 Mon Sep 17 00:00:00 2001 From: Adam Spiers Date: Wed, 11 Feb 2026 15:34:13 +1300 Subject: [PATCH 3/3] discourage AI from dangerous pushes --- AGENTS.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AGENTS.md b/AGENTS.md index 92331bd..77aa3b6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -186,7 +186,7 @@ testdata/ # Test fixtures and sample lexicons 2. **Commit and PUSH**: ```bash git add -A && git commit -m "feat: description" - git push + git push origin $branchname git status # MUST show "up to date with origin" ``` 3. **Verify** - Work is NOT complete until `git push` succeeds