From 76024fae71502810161e229ff694adc080e5edbc Mon Sep 17 00:00:00 2001 From: Eugene Blikh Date: Tue, 19 May 2026 13:11:33 +0300 Subject: [PATCH] docs: document the new hut submodule Updates CLAUDE.md (workspace layout) and the sourcehut-refresh skill to explain that hut lives at ~xenrox, won't be discovered by the upstream scrape, and must be bumped manually. INDEX.md timestamp bump. --- .claude/INDEX.md | 442 +--------------------- .claude/skills/sourcehut-refresh/SKILL.md | 1 + CLAUDE.md | 2 +- 3 files changed, 3 insertions(+), 442 deletions(-) diff --git a/.claude/INDEX.md b/.claude/INDEX.md index 730f32950bbcb84d1d873e5d9c156b943ddf953d..fed95b51d3eadecf96a6c07f649a78032d4fbc69 100644 --- a/.claude/INDEX.md +++ b/.claude/INDEX.md @@ -4,452 +4,12 @@ Auto-generated by `.claude/scripts/build-index.sh`. Regenerated at the end of ev Read this **before** grepping. Each section gives you the canonical place to look for symbols in that repo. -_Generated: 2026-05-19 05:22:31 UTC_ +_Generated: 2026-05-19 10:09:28 UTC_ ## Repos -- `api.sr.ht` — master -- `builds.sr.ht` — 0.103.12 -- `core-go` — master -- `core.sr.ht` — 0.83.3 -- `forgeperf` — master -- `gensokyo` — master -- `git-am.io` — master -- `git-rebase.io` — master -- `git-send-email.io` — 0.1.17 -- `git.sr.ht` — 0.97.6 -- `go-away-config` — main -- `gql.sr.ht` — master -- `hub.sr.ht` — 0.27.6 -- `lists.sr.ht` — 0.70.6 -- `man.sr.ht` — 0.19.27 -- `meta.sr.ht` — 0.88.4 -- `pages.sr.ht` — 0.17.12 -- `paste.sr.ht` — 0.19.1 -- `sourcehut-go` — master -- `sourcehut-migrate` — v0.3.1 -- `sourcehut-ssh` — 0.5.0 -- `sourcehut.org` — master -- `sr.ht-apkbuilds` — master -- `sr.ht-docs` — master -- `sr.ht-nginx` — master -- `sr.ht-pkgbuilds` — master -- `srht.site` — master -- `status.sr.ht` — main -- `todo.sr.ht` — 0.84.4 - -## api.sr.ht - -_Tag:_ `(branch: master)` - -**Go files (root)**: auth.go, main.go - ---- - -## builds.sr.ht - -_Tag:_ `0.103.12` - -**GraphQL types** (`buildsrht/schema.graphqls`) - -- `type`: Artifact, EmailTrigger, Job, JobCursor, JobEvent, JobGroup, Log, Mutation, OAuthClient, PGPKey, Query, SSHKey, SecretCursor, SecretFile, Settings, Task, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor, WebhookTrigger -- `input`: EmailTriggerInput, TriggerInput, UserWebhookInput, WebhookTriggerInput -- `enum`: AccessKind, AccessScope, JobStatus, TaskStatus, TriggerCondition, TriggerType, Visibility, WebhookEvent -- `interface`: Entity, Secret, Trigger, WebhookPayload, WebhookSubscription -- `scalar`: Binary, Cursor, File, Time - -**SQL tables** (`schema.sql`) - -artifact, gql_user_wh_delivery, gql_user_wh_sub, job, job_group, secret, task, trigger, user - -_Migrations: 2 files, latest `migrations/0002_drop_legacy_tables.sql`_ - -**Python blueprints** (`buildsrht/blueprints/`): admin, jobs, secrets, settings - -**Python GraphQL queries** (`buildsrht/graphql/`): builds, secrets - -**Go binaries** (`cmd/`): api, worker - -**Go packages**: `api, worker` - ---- - -## core-go - -_Tag:_ `(branch: master)` - -**Go binaries** (`cmd/`): token - -**Go files (root)**: placeholder.go - -**Go packages**: `auth, client, config, crypto, database, email, errors, feature, model, objects, redis, server, valid, webhooks` - ---- - -## core.sr.ht - -_Tag:_ `0.83.3` - -**Python modules** (`srht/`): api, assets, cache, config, crypto, database, debug, email, flagtype, gql_lexer, markdown, metrics, redis, rid, search, validation - -**Python subpackages** (`srht/`): app, ariadne, graphql, icons, oauth, templates, webhook - ---- - -## forgeperf - -_Tag:_ `(branch: master)` - -**Go files (root)**: main.go - -**Go packages**: `schema` - ---- - -## gensokyo - -_Tag:_ `(branch: master)` - ---- - -## git-am.io - -_Tag:_ `(branch: master)` - ---- - -## git-rebase.io - -_Tag:_ `(branch: master)` - ---- - -## git-send-email.io - -_Tag:_ `0.1.17` - ---- - -## git.sr.ht - -_Tag:_ `0.97.6` - -**GraphQL types** (`gitsrht/schema.graphqls`) - -- `type`: ACL, ACLCursor, Artifact, ArtifactCursor, BinaryBlob, Commit, CommitCursor, Features, GitEvent, GitWebhookSubscription, Mutation, OAuthClient, Query, Redirect, Reference, ReferenceCursor, Repository, RepositoryCursor, RepositoryEvent, Settings, Signature, Tag, TextBlob, Trailer, Tree, TreeEntry, TreeEntryCursor, UpdatedRef, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: Filter, GitEventInput, GitWebhookInput, RepoInput, UpdatedRefInput, UserWebhookInput -- `enum`: AccessKind, AccessMode, AccessScope, ObjectType, Visibility, WebhookEvent -- `interface`: Blob, Entity, Object, WebhookPayload, WebhookSubscription -- `scalar`: Cursor, Time, URL, Upload - -**SQL tables** (`schema.sql`) - -access, artifacts, gql_git_wh_delivery, gql_git_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, redirect, repository, user - -_Migrations: 6 files, latest `migrations/0006_add_resource_ids.sql`_ - -**Python blueprints** (`gitsrht/blueprints/`): artifacts, email, manage, public, repo - -**Python GraphQL queries** (`gitsrht/graphql/`): artifacts, manage, settings - -**Go binaries** (`cmd/`): api, http-clone, shell, update-hook - -**Go packages**: `update-hook` - ---- - -## go-away-config - -_Tag:_ `(branch: main)` - ---- - -## gql.sr.ht - -_Tag:_ `(branch: master)` - -**Go files (root)**: directives.go, email.go, server.go - -**Go packages**: `auth, client, config, crypto, database, model, redis` - ---- - -## hub.sr.ht - -_Tag:_ `0.27.6` - -**GraphQL types** (`hubsrht/schema.graphqls`) - -- `type`: Features, MailingList, MailingListCursor, Mutation, Project, ProjectCursor, Query, SourceRepo, SourceRepoCursor, Tracker, TrackerCursor, User, Version -- `enum`: AccessKind, AccessScope, RepoType, Visibility -- `interface`: Entity, ProjectResource -- `scalar`: Cursor, Time, Upload - -**SQL tables** (`schema.sql`) - -event, event_project_association, features, mailing_list, project, redirect, source_repo, tracker, user, user_webhooks - -_Migrations: 8 files, latest `migrations/0008_repo-type_enum.sql`_ - -**Python blueprints** (`hubsrht/blueprints/`): mailing_lists, projects, public, sources, trackers, users, webhooks - -**Go packages**: `api` - ---- - -## lists.sr.ht - -_Tag:_ `0.70.6` - -**GraphQL types** (`api/graph/schema.graphqls`) - -- `type`: ActivitySubscriptionCursor, ByteRange, Email, EmailCursor, EmailEvent, GeneralACL, Mailbox, MailingList, MailingListACL, MailingListACLCursor, MailingListCursor, MailingListEvent, MailingListSubscription, MailingListWebhookSubscription, Mutation, OAuthClient, Patch, Patchset, PatchsetCursor, PatchsetEvent, PatchsetTool, Preferences, Query, Thread, ThreadBlock, ThreadCursor, Trailer, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: ACLInput, MailingListInput, MailingListWebhookInput, PreferencesInput, UserWebhookInput -- `enum`: AccessKind, AccessScope, PatchsetStatus, ToolIcon, Visibility, WebhookEvent -- `interface`: ACL, ActivitySubscription, Entity, WebhookPayload, WebhookSubscription -- `scalar`: ConfirmationToken, Cursor, Time, URL, Upload - -**SQL tables** (`schema.sql`) - -access, email, gql_list_wh_delivery, gql_list_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, list, mirror, patchset, patchset_tool, subscription, subscription_request, user - -_Migrations: 10 files, latest `migrations/0010_add_supersedes_id.sql`_ - -**Python blueprints** (`listssrht/blueprints/`): archives, patches, settings, user - -**Python GraphQL queries** (`listssrht/graphql/`): queries - -**Go packages**: `api, ingress` - ---- - -## man.sr.ht - -_Tag:_ `0.19.27` - -**GraphQL types** (`api/graph/schema.graphqls`) - -- `type`: Mutation, Query, Version -- `scalar`: Cursor, Time, Upload - -**SQL tables** (`schema.sql`) - -backing_repo, root_wiki, user, wiki - -_Migrations: 3 files, latest `migrations/0003_remove_backing_repo.sql`_ - -**Python blueprints** (`mansrht/blueprints/`): create, html, manage, public - -**Go binaries** (`cmd/`): api - ---- - -## meta.sr.ht - -_Tag:_ `0.88.4` - -**GraphQL types** (`metasrht/schema.graphqls`) - -- `type`: AuditLogCursor, AuditLogEntry, BillingAddress, BillingSubscription, Features, Invoice, InvoiceCursor, LoginSecurity, Mutation, OAuthClient, OAuthClientRegistration, OAuthGrant, OAuthGrantRegistration, OAuthPersonalToken, OAuthPersonalTokenRegistration, PGPKey, PGPKeyCursor, PGPKeyEvent, PaymentMethod, PaymentOutcome, Product, ProductPrice, ProfileUpdateEvent, ProfileWebhookSubscription, Query, SSHKey, SSHKeyCursor, SSHKeyEvent, StripePaymentIntent, StripeSetupIntent, TOTPConfig, User, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: BillingAddressInput, ProductPriceInput, ProfileWebhookInput, UpdateBillingSubscriptionInput, UserInput -- `enum`: AccessKind, AccessScope, Currency, PaymentIntentStatus, PaymentInterval, PaymentStatus, SetupIntentStatus, SubscriptionStatus, UserType, WebhookEvent -- `interface`: Entity, PaymentIntent, SetupIntent, WebhookPayload, WebhookSubscription -- `scalar`: Country, Cursor, Time, URL, Upload - -**SQL tables** (`schema.sql`) - -audit_log_entry, billing_address, gql_profile_wh_delivery, gql_profile_wh_sub, invoice, oauth2_client, oauth2_grant, oauthclient, oauthtoken, payment_method, pgpkey, product, product_price, reserved_usernames, sshkey, subscription, user, user_auth_factor, user_email_change, user_notes, user_password_change, user_payment_processor, user_registration, user_webhook_delivery, user_webhook_subscription, webhook_subscription - -_Migrations: 12 files, latest `migrations/0012_make_fingerprint_nullable.sql`_ - -**Python blueprints** (`metasrht/blueprints/`): auth, billing, keys, oauth2, privacy, profile, security, users - -**Python GraphQL queries** (`metasrht/graphql/`): admin, auth, billing, email, keys, oauth2, profile, security - -**Go binaries** (`cmd/`): api - ---- - -## pages.sr.ht - -_Tag:_ `0.17.12` - -**GraphQL types** (`graph/schema.graphqls`) - -- `type`: Mutation, OAuthClient, Query, Site, SiteACL, SiteACLCursor, SiteCursor, SiteEvent, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: ACLInput, FileConfig, FileOptions, SiteConfig, UserWebhookInput -- `enum`: AccessKind, AccessScope, Protocol, WebhookEvent -- `interface`: ACL, Entity, WebhookPayload, WebhookSubscription -- `scalar`: Cursor, Time, Upload - -**SQL tables** (`schema.sql`) - -gql_user_wh_delivery, gql_user_wh_sub, site_access, sites, user - -_Migrations: 1 files, latest `migrations/0001_switch_to_brant.sql`_ - -**Go binaries** (`cmd/`): daily, pages.sr.ht - -**Go packages**: `account, graph, webhooks` - ---- - -## paste.sr.ht - -_Tag:_ `0.19.1` - -**GraphQL types** (`pastesrht/schema.graphqls`) - -- `type`: File, Mutation, OAuthClient, Paste, PasteCursor, PasteEvent, Query, User, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: UserWebhookInput -- `enum`: AccessKind, AccessScope, Visibility, WebhookEvent -- `interface`: Entity, WebhookPayload, WebhookSubscription -- `scalar`: Cursor, Time, URL, Upload - -**SQL tables** (`schema.sql`) - -blob, gql_user_wh_delivery, gql_user_wh_sub, paste, paste_file, user - -_Migrations: 3 files, latest `migrations/0003_drop_legacy_tables.sql`_ - -**Python blueprints** (`pastesrht/blueprints/`): public - -**Python GraphQL queries** (`pastesrht/graphql/`): mutations - -**Go binaries** (`cmd/`): api - ---- - -## sourcehut-go - -_Tag:_ `(branch: master)` - -**Go binaries** (`cmd/`): git.sr.ht, meta.sr.ht - -**Go files (root)**: client.go, config.go, doc.go, entry.go, resources.go - -**Go packages**: `git.sr.ht, meta.sr.ht` - ---- - -## sourcehut-migrate - -_Tag:_ `v0.3.1` - -**Go binaries** (`cmd/`): sourcehut-migrate - ---- - -## sourcehut-ssh - -_Tag:_ `0.5.0` - -**Go binaries** (`cmd/`): sourcehut-ssh - -**Go packages**: `dispatch, handler, meta, shell, ssh` - ---- - -## sourcehut.org - -_Tag:_ `(branch: master)` - ---- - -## sr.ht-apkbuilds - -_Tag:_ `(branch: master)` - ---- - -## sr.ht-docs - -_Tag:_ `(branch: master)` - ---- - -## sr.ht-nginx - -_Tag:_ `(branch: master)` - ---- - -## sr.ht-pkgbuilds - -_Tag:_ `(branch: master)` - ---- - -## srht.site - -_Tag:_ `(branch: master)` - ---- - -## status.sr.ht - -_Tag:_ `(branch: main)` - ---- - -## todo.sr.ht - -_Tag:_ `0.84.4` - -**GraphQL types** (`todosrht/schema.graphqls`) - -- `type`: ACLCursor, ActivitySubscriptionCursor, Assignment, Comment, Created, DefaultACL, EmailAddress, Event, EventCreated, EventCursor, ExternalUser, Label, LabelCursor, LabelEvent, LabelUpdate, Mutation, OAuthClient, Preferences, Query, StatusChange, Ticket, TicketCursor, TicketDeletedEvent, TicketEvent, TicketMention, TicketSubscription, TicketWebhookSubscription, Tracker, TrackerACL, TrackerCursor, TrackerEvent, TrackerSubscription, TrackerWebhookSubscription, User, UserMention, UserWebhookSubscription, Version, WebhookDelivery, WebhookDeliveryCursor, WebhookSubscriptionCursor -- `input`: ACLInput, ImportInput, PreferencesInput, SubmitCommentEmailInput, SubmitCommentInput, SubmitTicketEmailInput, SubmitTicketInput, TicketWebhookInput, TrackerInput, TrackerWebhookInput, UpdateLabelInput, UpdateStatusInput, UpdateTicketInput, UserWebhookInput -- `enum`: AccessKind, AccessScope, Authenticity, EmailCmd, EventType, TicketResolution, TicketStatus, Visibility, WebhookEvent -- `interface`: ACL, ActivitySubscription, Entity, EventDetail, WebhookPayload, WebhookSubscription -- `scalar`: Cursor, Time, URL, Upload - -**SQL tables** (`schema.sql`) - -event, event_notification, gql_ticket_wh_delivery, gql_ticket_wh_sub, gql_tracker_wh_delivery, gql_tracker_wh_sub, gql_user_wh_delivery, gql_user_wh_sub, label, participant, redirect, ticket, ticket_assignee, ticket_comment, ticket_label, ticket_subscription, tracker, user, user_access - -_Migrations: 5 files, latest `migrations/0005_add_resource_ids.sql`_ - -**Python blueprints** (`todosrht/blueprints/`): html, settings, ticket, tracker - -**Python GraphQL queries** (`todosrht/graphql/`): lmtp, settings, tickets, trackers - -**Go binaries** (`cmd/`): api - -**Go packages**: `api` - ---- ## Cross-repo GraphQL type map When the same type name appears in multiple repos, it is a *different* type in each — they are not federated as one. Use this map to pick the right service before reading. -- `ACLCursor` → git.sr.ht, todo.sr.ht -- `ACLInput` → lists.sr.ht, pages.sr.ht, todo.sr.ht -- `AccessKind` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `AccessScope` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `ActivitySubscriptionCursor` → lists.sr.ht, todo.sr.ht -- `Artifact` → builds.sr.ht, git.sr.ht -- `Features` → git.sr.ht, hub.sr.ht, meta.sr.ht -- `MailingList` → hub.sr.ht, lists.sr.ht -- `MailingListCursor` → hub.sr.ht, lists.sr.ht -- `Mutation` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `OAuthClient` → builds.sr.ht, git.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `PGPKey` → builds.sr.ht, meta.sr.ht -- `Preferences` → lists.sr.ht, todo.sr.ht -- `PreferencesInput` → lists.sr.ht, todo.sr.ht -- `Query` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `SSHKey` → builds.sr.ht, meta.sr.ht -- `Settings` → builds.sr.ht, git.sr.ht -- `Tracker` → hub.sr.ht, todo.sr.ht -- `TrackerCursor` → hub.sr.ht, todo.sr.ht -- `Trailer` → git.sr.ht, lists.sr.ht -- `User` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `UserWebhookInput` → builds.sr.ht, git.sr.ht, lists.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `UserWebhookSubscription` → builds.sr.ht, git.sr.ht, lists.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `Version` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, man.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `Visibility` → builds.sr.ht, git.sr.ht, hub.sr.ht, lists.sr.ht, paste.sr.ht, todo.sr.ht -- `WebhookDelivery` → builds.sr.ht, git.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `WebhookDeliveryCursor` → builds.sr.ht, git.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `WebhookEvent` → builds.sr.ht, git.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht -- `WebhookSubscriptionCursor` → builds.sr.ht, git.sr.ht, lists.sr.ht, meta.sr.ht, pages.sr.ht, paste.sr.ht, todo.sr.ht diff --git a/.claude/skills/sourcehut-refresh/SKILL.md b/.claude/skills/sourcehut-refresh/SKILL.md index 37e897cd419e10d385826928cf50af4e64c0b90f..c51169d310202720472b11284c23f9e2da9b4979 100644 --- a/.claude/skills/sourcehut-refresh/SKILL.md +++ b/.claude/skills/sourcehut-refresh/SKILL.md @@ -134,3 +134,4 @@ Summarize counts of NEW / UPDATED / OK / NOTAG / FAIL. Highlight any FAIL lines. - Submodule updates are serial because they share the superproject's index lockfile. Do not parallelize. - Never remove submodules that disappear from upstream listings — flag them in the report and let the user decide whether to `git submodule deinit && git rm `. - `.clone-repos.sh` is now legacy/historical. Keep it as documentation of the original bootstrap; do not edit it as part of refresh. +- A few submodules live outside `~sircmpwn` and therefore won't appear in the discovered list — they must be refreshed manually. Currently: `hut` (from `~xenrox/hut`). The loop above already skips them because they're absent from `/tmp/srht-repos.txt`; do not delete them. To bump them, `cd `, `git fetch --tags --prune`, `git checkout `, then `git add ` from the superproject. diff --git a/CLAUDE.md b/CLAUDE.md index 30e48b00bf97afe27656ef4be297f0d88d15a26c..0eb3c927b0e141a8a1d84b0afc832740c6ff7639 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -39,7 +39,7 @@ SourceHut is a federation of services that share a common architecture. Categori - **Shared libraries**: `core.sr.ht` (Python — `srht` package: ORM, OAuth, GraphQL helpers, templates, SCSS/Bootstrap assets) and `core-go` (Go equivalent: `auth`, `client`, `config`, `database`, `redis`, `server`, `webhooks`, `crypto`). - **Static sites / docs**: `sourcehut.org` and `srht.site` (Hugo), `sr.ht-docs` (man.sr.ht content), `git-am.io`, `git-rebase.io`, `git-send-email.io`. - **Ops / infra**: `gensokyo` (Kubernetes YAML for the production cluster), `sr.ht-nginx` (nginx configs), `sr.ht-apkbuilds` / `sr.ht-pkgbuilds` (Alpine/Arch packaging), `sourcehut-migrate` (data migration tooling), `status.sr.ht`, `go-away-config`. -- **Misc Go clients/tools**: `sourcehut-go` (Go client library and CLI examples), `forgeperf` (forge performance benchmark harness using Chromium+Lighthouse). +- **Misc Go clients/tools**: `sourcehut-go` (Go client library and CLI examples), `forgeperf` (forge performance benchmark harness using Chromium+Lighthouse), `hut` (third-party CLI client for SourceHut from `~xenrox` — *not* part of the `~sircmpwn` umbrella but the de-facto CLI users reach for; covers builds/git/lists/meta/paste/pages/todo/hub via the GraphQL APIs). ## Build commands