clone

a self-hosted multitenant nostr relay with sites, file storage, git hosting, and inbox and outbox delivery

init

Dami committed 8cf5374
commit
8cf53744729817ba81fa4d31b4316952aa03281b
parent
fbc0c60c00d62e508d148d64cc100102a8b3c004
author
Dami <dami.etoile@gmail.com>
246 files changed, +45177 -134
M.dockerignore9+
M.gitignore19+
MAGENTS.md2+
MDockerfile37+
MLICENSE21+
MMakefile24+
MREADME.md80+
MTHIRD_PARTY_NOTICES63+
Marchitecture.html433++++++
Mcmd/tiny/main.go324+++++
Mcmd/tiny/main_test.go38+
Mdeploy/Tailscale.Dockerfile35+
Mdeploy/compose.yaml17+
Mdeploy/renew-tiny-certificates.sh26+
Mdeploy/slate-tiny.nix54+
Mdeploy/tailscale-compose.yaml89+
Mdeploy/tailscale-portlist.patch16+
Mdeploy/tiny.Caddyfile27+
Mdeploy/tiny.service22+
Mdocs/fixi.md15+
Mdocs/git-performance.md146++
Mdocs/khatru-integration.md81+
Mdocs/observability.md79+
Mdocs/parity-gap-audit.md87+
Mdocs/parity.json410++++++
Mdocs/parity.md45+
Mdocs/personal-relay.md45+
Mdocs/protocol-expansion.md49+
Mdocs/testing.md83+
Mdocs/webmcp.md9+
Mgo.mod66+
Mgo.sum178+++
Minternal/auth/auth.go360+++++
Minternal/auth/auth_test.go162++
Minternal/blob/blob.go1195++++++++++++++++++
Minternal/blob/blob_test.go202+++
Minternal/blob/blossom.go193+++
Minternal/blob/blossom_test.go39+
Minternal/catalog/auth.go28+
Minternal/catalog/catalog.go484+++++++
Minternal/catalog/catalog_test.go218+++
Minternal/catalog/delete.go130++
Minternal/catalog/delete_test.go145++
Minternal/catalog/hosts.go149++
Minternal/catalog/validate.go85+
Minternal/community/actions.go883+++++++++++++
Minternal/community/community.go340+++++
Minternal/community/community_test.go255++++
Minternal/community/membership.go438++++++
Minternal/community/query.go51+
Minternal/configport/configport.go579+++++++++
Minternal/configport/configport_test.go160++
Minternal/daemon/backup_git_http_acceptance_test.go108++
Minternal/daemon/backup_restart_acceptance_test.go118++
Minternal/daemon/blob_report_acceptance_test.go99+
Minternal/daemon/callback_restart_acceptance_test.go131++
Minternal/daemon/capabilities.go183+++
Minternal/daemon/capabilities_test.go115++
Minternal/daemon/client_browse.go320+++++
Minternal/daemon/client_browse_http.go109++
Minternal/daemon/client_browse_test.go68+
Minternal/daemon/creation.go197+++
Minternal/daemon/creation_test.go157++
Minternal/daemon/daemon.go405++++++
Minternal/daemon/daemon_test.go122++
Minternal/daemon/data_http.go307+++++
Minternal/daemon/data_http_test.go216+++
Minternal/daemon/durable_acceptance_test.go178+++
Minternal/daemon/fork_url_test.go25+
Minternal/daemon/git_payload.go65+
Minternal/daemon/git_payload_test.go97+
Minternal/daemon/git_private_restart_test.go104++
Minternal/daemon/git_promotion_test.go50+
Minternal/daemon/git_push_test.go128++
Minternal/daemon/git_services.go139++
Minternal/daemon/git_services_test.go28+
Minternal/daemon/health.go67+
Minternal/daemon/health_test.go98+
Minternal/daemon/hosting_routes_acceptance_test.go128++
Minternal/daemon/http.go252+++-
Minternal/daemon/inbox_reconcile.go102++
Minternal/daemon/inbox_reconcile_test.go104++
Minternal/daemon/instrumentation.go18+
Minternal/daemon/instrumentation_test.go44+
Minternal/daemon/landing.go163++
Minternal/daemon/landing_test.go77+
Minternal/daemon/lifecycle.go173+++
Minternal/daemon/lifecycle_test.go118++
Minternal/daemon/maintenance.go171+++
Minternal/daemon/maintenance_http_test.go130++
Minternal/daemon/maintenance_integration_test.go81+
Minternal/daemon/maintenance_test.go118++
Minternal/daemon/management.go729+++++++++++
Minternal/daemon/management_golden_test.go42+
Minternal/daemon/management_test.go63+
Minternal/daemon/membership_protocol.go91+
Minternal/daemon/membership_protocol_test.go135++
Minternal/daemon/nip96_test.go108++
Minternal/daemon/notifications.go198+++
Minternal/daemon/notifications_test.go99+
Minternal/daemon/peer_monitor.go199+++
Minternal/daemon/portable_import_acceptance_test.go119++
Minternal/daemon/private_grasp.go132++
Minternal/daemon/private_grasp_test.go164++
Minternal/daemon/private_peer.go126++
Minternal/daemon/private_peer_acceptance_test.go327+++++
Minternal/daemon/queue_metrics.go90+
Minternal/daemon/queue_metrics_test.go71+
Minternal/daemon/replication_acceptance_test.go191+++
Minternal/daemon/replication_services.go832++++++++++++
Minternal/daemon/replication_services_test.go427++++++
Minternal/daemon/restore_runtime.go81+
Minternal/daemon/routes_acceptance_test.go128++
Minternal/daemon/routing.go134++
Minternal/daemon/routing_test.go97+
Minternal/daemon/scheduler.go72+
Minternal/daemon/services.go476++++++-
Minternal/daemon/session.go151++
Minternal/daemon/session_test.go102++
Minternal/daemon/signer_transport_test.go59+
Minternal/daemon/tenant.go407+++++-
Minternal/daemon/tenant_delete.go30+
Minternal/daemon/tenant_publish_test.go63+
Minternal/daemon/ux_contract_test.go103++
Minternal/daemon/views_http_test.go101+
Minternal/daemon/webmcp_acceptance_test.go48+
Minternal/daemon/work_guard.go26+
Minternal/domains/domains.go264++++
Minternal/domains/domains_test.go103++
Minternal/domains/nipad.go114++
Minternal/event/event.go262++++
Minternal/event/event_test.go127++
Minternal/event/filter.go180+++
Minternal/event/kinds.go50+
Minternal/event/sign_empty_tags_test.go24+
Minternal/gates/gates.go632+++++++++
Minternal/gates/import_test.go69+
Minternal/gates/marmot.go155++
Minternal/gates/marmot_test.go54+
Minternal/gates/signer_test.go42+
Minternal/gitrelay/archive.go79+
Minternal/gitrelay/archive_test.go86+
Minternal/gitrelay/backup_import.go205+++
Minternal/gitrelay/browse.go413++++++
Minternal/gitrelay/browse_test.go190+++
Minternal/gitrelay/cgi_test.go116++
Minternal/gitrelay/gitrelay.go2039++++++++++++++++++++++++++++++
Minternal/gitrelay/gitrelay_test.go790++++++++++++
Minternal/gitrelay/private_repair_acceptance_test.go122++
Minternal/gitrelay/private_transport.go271++++
Minternal/gitrelay/private_transport_test.go78+
Minternal/gitrelay/recovery_refs.go28+
Minternal/gitrelay/storage_inventory.go47+
Minternal/policy/access.go92+
Minternal/policy/policy.go237+++
Minternal/policy/policy_test.go108++
Minternal/records/records.go1632++++++++++++++++++++++++
Minternal/records/records_nip59_test.go67+
Minternal/records/records_test.go295++++
Minternal/records/sign.go67+
Minternal/records/sign_test.go45+
Minternal/records/views_test.go40+
Minternal/relay/bench_test.go36+
Minternal/relay/relay.go897+++++++++++++
Minternal/relay/relay_test.go391++++++
Minternal/replication/backup.go389++++++
Minternal/replication/callback.go179+++
Minternal/replication/delivery.go87+
Minternal/replication/files.go97+
Minternal/replication/files_test.go41+
Minternal/replication/jobs.go131++
Minternal/replication/management.go314+++++
Minternal/replication/push.go141++
Minternal/replication/replication.go198+++
Minternal/replication/replication_test.go693++++++++++
Minternal/replication/service.go516++++++++
Minternal/replication/service_integration_test.go235+++
Minternal/replication/sync.go100+
Minternal/replication/sync_acceptance_test.go266++++
Minternal/replication/websocket.go494+++++++
Minternal/sites/bech32.go129++
Minternal/sites/service.go631+++++++++
Minternal/sites/sites.go227+++
Minternal/sites/sites_test.go177+++
Minternal/storage/bench_test.go67+
Minternal/storage/history.go118++
Minternal/storage/maintenance.go127++
Minternal/storage/query.go220+++
Minternal/storage/retention.go112++
Minternal/storage/retention_test.go51+
Minternal/storage/save.go255++++
Minternal/storage/schema.go40+
Minternal/storage/store.go125++
Minternal/storage/store_test.go176+++
Minternal/syncprotocol/hll.go120++
Minternal/syncprotocol/negentropy.go73+
Minternal/syncprotocol/syncprotocol_test.go63+
Minternal/telemetry/telemetry.go259++++
Minternal/telemetry/telemetry_test.go122++
Minternal/templates/templates.go159++
Minternal/templates/templates_test.go27+
Minternal/webui/browse_test.go117++
Minternal/webui/fixi.js456+++++++
Minternal/webui/guided_forms.go25+
Minternal/webui/private.go87+
Minternal/webui/public_pages.go138++
Minternal/webui/public_pages_test.go70+
Minternal/webui/repo.html52+
Minternal/webui/repo_navigation.go85+
Minternal/webui/repo_navigation_test.go24+
Minternal/webui/signer.js21+
Minternal/webui/signer.js.license4+
Minternal/webui/signin_test.go31+
Minternal/webui/source_benchmark_test.go26+
Minternal/webui/source_render.go307+++++
Minternal/webui/source_render_test.go135++
Minternal/webui/templates.go43+
Minternal/webui/webmcp.go47+
Minternal/webui/webmcp.js141++
Minternal/webui/webmcp_test.go111++
Minternal/webui/webui.go896+++++++++++++
Minternal/webui/webui_test.go358+++++
Minternal/work/work.go456+++++++
Minternal/work/work_test.go265++++
Mpackage-lock.json1884++++++++++++++++++++++++++++
Mpackage.json19+
Mscripts/bench-slate.sh52+
Mscripts/build-signer.mjs13+
Mscripts/configure-git-performance.mjs19+
Mscripts/conformance/README.md25+
Mscripts/conformance/check-parity.mjs31+
Mscripts/conformance/nip11.compat.test.ts17+
Mscripts/conformance/run.mjs19+
Mscripts/conformance/setup.ts36+
Mscripts/conformance/vitest.config.mts18+
Mscripts/git-http-baseline/main.go70+
Mscripts/git-performance.mjs260++++
Mscripts/git-signing-proxy.mjs52+
Mscripts/observe-git-benchmark.py206+++
Mscripts/prepare-git-performance.py105++
Mscripts/qa/nip46-bunker.cjs9+
Mscripts/report-git-performance.py468+++++++
Mscripts/signer-entry.mjs27+
Mscripts/signer.test.mjs47+
Mscripts/test-slate.sh65+
Mscripts/webmcp.test.mjs109++
M .dockerignore +9 -0

Diff not shown: this commit changes too many lines.

M .gitignore +19 -0

Diff not shown: this commit changes too many lines.

M AGENTS.md +2 -0

Diff not shown: this commit changes too many lines.

M Dockerfile +37 -0

Diff not shown: this commit changes too many lines.

M LICENSE +21 -0

Diff not shown: this commit changes too many lines.

M Makefile +24 -0

Diff not shown: this commit changes too many lines.

M README.md +80 -0

Diff not shown: this commit changes too many lines.

M THIRD_PARTY_NOTICES +63 -0

Diff not shown: this commit changes too many lines.

M architecture.html +433 -0

Diff not shown: this commit changes too many lines.

M cmd/tiny/main.go +324 -0

Diff not shown: this commit changes too many lines.

M cmd/tiny/main_test.go +38 -0

Diff not shown: this commit changes too many lines.

M deploy/Tailscale.Dockerfile +35 -0

Diff not shown: this commit changes too many lines.

M deploy/compose.yaml +17 -0

Diff not shown: this commit changes too many lines.

M deploy/renew-tiny-certificates.sh +26 -0

Diff not shown: this commit changes too many lines.

M deploy/slate-tiny.nix +54 -0

Diff not shown: this commit changes too many lines.

M deploy/tailscale-compose.yaml +89 -0

Diff not shown: this commit changes too many lines.

M deploy/tailscale-portlist.patch +16 -0

Diff not shown: this commit changes too many lines.

M deploy/tiny.Caddyfile +27 -0

Diff not shown: this commit changes too many lines.

M deploy/tiny.service +22 -0

Diff not shown: this commit changes too many lines.

M docs/fixi.md +15 -0

Diff not shown: this commit changes too many lines.

M docs/git-performance.md +146 -0

Diff not shown: this commit changes too many lines.

M docs/khatru-integration.md +81 -0

Diff not shown: this commit changes too many lines.

M docs/observability.md +79 -0

Diff not shown: this commit changes too many lines.

M docs/parity-gap-audit.md +87 -0

Diff not shown: this commit changes too many lines.

M docs/parity.json +410 -0

Diff not shown: this commit changes too many lines.

M docs/parity.md +45 -0

Diff not shown: this commit changes too many lines.

M docs/personal-relay.md +45 -0

Diff not shown: this commit changes too many lines.

M docs/protocol-expansion.md +49 -0

Diff not shown: this commit changes too many lines.

M docs/testing.md +83 -0

Diff not shown: this commit changes too many lines.

M docs/webmcp.md +9 -0

Diff not shown: this commit changes too many lines.

M go.mod +66 -0

Diff not shown: this commit changes too many lines.

M go.sum +178 -0

Diff not shown: this commit changes too many lines.

M internal/auth/auth.go +360 -0

Diff not shown: this commit changes too many lines.

M internal/auth/auth_test.go +162 -0

Diff not shown: this commit changes too many lines.

M internal/blob/blob.go +1195 -0

Diff not shown: this commit changes too many lines.

M internal/blob/blob_test.go +202 -0

Diff not shown: this commit changes too many lines.

M internal/blob/blossom.go +193 -0

Diff not shown: this commit changes too many lines.

M internal/blob/blossom_test.go +39 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/auth.go +28 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/catalog.go +484 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/catalog_test.go +218 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/delete.go +130 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/delete_test.go +145 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/hosts.go +149 -0

Diff not shown: this commit changes too many lines.

M internal/catalog/validate.go +85 -0

Diff not shown: this commit changes too many lines.

M internal/community/actions.go +883 -0

Diff not shown: this commit changes too many lines.

M internal/community/community.go +340 -0

Diff not shown: this commit changes too many lines.

M internal/community/community_test.go +255 -0

Diff not shown: this commit changes too many lines.

M internal/community/membership.go +438 -0

Diff not shown: this commit changes too many lines.

M internal/community/query.go +51 -0

Diff not shown: this commit changes too many lines.

M internal/configport/configport.go +579 -0

Diff not shown: this commit changes too many lines.

M internal/configport/configport_test.go +160 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/backup_git_http_acceptance_test.go +108 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/backup_restart_acceptance_test.go +118 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/blob_report_acceptance_test.go +99 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/callback_restart_acceptance_test.go +131 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/capabilities.go +183 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/capabilities_test.go +115 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/client_browse.go +320 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/client_browse_http.go +109 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/client_browse_test.go +68 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/creation.go +197 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/creation_test.go +157 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/daemon.go +405 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/daemon_test.go +122 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/data_http.go +307 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/data_http_test.go +216 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/durable_acceptance_test.go +178 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/fork_url_test.go +25 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_payload.go +65 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_payload_test.go +97 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_private_restart_test.go +104 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_promotion_test.go +50 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_push_test.go +128 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_services.go +139 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/git_services_test.go +28 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/health.go +67 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/health_test.go +98 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/hosting_routes_acceptance_test.go +128 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/http.go +214 -38

Diff not shown: this commit changes too many lines.

M internal/daemon/inbox_reconcile.go +102 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/inbox_reconcile_test.go +104 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/instrumentation.go +18 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/instrumentation_test.go +44 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/landing.go +163 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/landing_test.go +77 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/lifecycle.go +173 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/lifecycle_test.go +118 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/maintenance.go +171 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/maintenance_http_test.go +130 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/maintenance_integration_test.go +81 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/maintenance_test.go +118 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/management.go +729 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/management_golden_test.go +42 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/management_test.go +63 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/membership_protocol.go +91 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/membership_protocol_test.go +135 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/nip96_test.go +108 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/notifications.go +198 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/notifications_test.go +99 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/peer_monitor.go +199 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/portable_import_acceptance_test.go +119 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/private_grasp.go +132 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/private_grasp_test.go +164 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/private_peer.go +126 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/private_peer_acceptance_test.go +327 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/queue_metrics.go +90 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/queue_metrics_test.go +71 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/replication_acceptance_test.go +191 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/replication_services.go +832 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/replication_services_test.go +427 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/restore_runtime.go +81 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/routes_acceptance_test.go +128 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/routing.go +134 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/routing_test.go +97 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/scheduler.go +72 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/services.go +418 -58

Diff not shown: this commit changes too many lines.

M internal/daemon/session.go +151 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/session_test.go +102 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/signer_transport_test.go +59 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/tenant.go +369 -38

Diff not shown: this commit changes too many lines.

M internal/daemon/tenant_delete.go +30 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/tenant_publish_test.go +63 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/ux_contract_test.go +103 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/views_http_test.go +101 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/webmcp_acceptance_test.go +48 -0

Diff not shown: this commit changes too many lines.

M internal/daemon/work_guard.go +26 -0

Diff not shown: this commit changes too many lines.

M internal/domains/domains.go +264 -0

Diff not shown: this commit changes too many lines.

M internal/domains/domains_test.go +103 -0

Diff not shown: this commit changes too many lines.

M internal/domains/nipad.go +114 -0

Diff not shown: this commit changes too many lines.

M internal/event/event.go +262 -0

Diff not shown: this commit changes too many lines.

M internal/event/event_test.go +127 -0

Diff not shown: this commit changes too many lines.

M internal/event/filter.go +180 -0

Diff not shown: this commit changes too many lines.

M internal/event/kinds.go +50 -0

Diff not shown: this commit changes too many lines.

M internal/event/sign_empty_tags_test.go +24 -0

Diff not shown: this commit changes too many lines.

M internal/gates/gates.go +632 -0

Diff not shown: this commit changes too many lines.

M internal/gates/import_test.go +69 -0

Diff not shown: this commit changes too many lines.

M internal/gates/marmot.go +155 -0

Diff not shown: this commit changes too many lines.

M internal/gates/marmot_test.go +54 -0

Diff not shown: this commit changes too many lines.

M internal/gates/signer_test.go +42 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/archive.go +79 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/archive_test.go +86 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/backup_import.go +205 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/browse.go +413 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/browse_test.go +190 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/cgi_test.go +116 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/gitrelay.go +2039 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/gitrelay_test.go +790 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/private_repair_acceptance_test.go +122 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/private_transport.go +271 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/private_transport_test.go +78 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/recovery_refs.go +28 -0

Diff not shown: this commit changes too many lines.

M internal/gitrelay/storage_inventory.go +47 -0

Diff not shown: this commit changes too many lines.

M internal/policy/access.go +92 -0

Diff not shown: this commit changes too many lines.

M internal/policy/policy.go +237 -0

Diff not shown: this commit changes too many lines.

M internal/policy/policy_test.go +108 -0

Diff not shown: this commit changes too many lines.

M internal/records/records.go +1632 -0

Diff not shown: this commit changes too many lines.

M internal/records/records_nip59_test.go +67 -0

Diff not shown: this commit changes too many lines.

M internal/records/records_test.go +295 -0

Diff not shown: this commit changes too many lines.

M internal/records/sign.go +67 -0

Diff not shown: this commit changes too many lines.

M internal/records/sign_test.go +45 -0

Diff not shown: this commit changes too many lines.

M internal/records/views_test.go +40 -0

Diff not shown: this commit changes too many lines.

M internal/relay/bench_test.go +36 -0

Diff not shown: this commit changes too many lines.

M internal/relay/relay.go +897 -0

Diff not shown: this commit changes too many lines.

M internal/relay/relay_test.go +391 -0

Diff not shown: this commit changes too many lines.

M internal/replication/backup.go +389 -0

Diff not shown: this commit changes too many lines.

M internal/replication/callback.go +179 -0

Diff not shown: this commit changes too many lines.

M internal/replication/delivery.go +87 -0

Diff not shown: this commit changes too many lines.

M internal/replication/files.go +97 -0

Diff not shown: this commit changes too many lines.

M internal/replication/files_test.go +41 -0

Diff not shown: this commit changes too many lines.

M internal/replication/jobs.go +131 -0

Diff not shown: this commit changes too many lines.

M internal/replication/management.go +314 -0

Diff not shown: this commit changes too many lines.

M internal/replication/push.go +141 -0

Diff not shown: this commit changes too many lines.

M internal/replication/replication.go +198 -0

Diff not shown: this commit changes too many lines.

M internal/replication/replication_test.go +693 -0

Diff not shown: this commit changes too many lines.

M internal/replication/service.go +516 -0

Diff not shown: this commit changes too many lines.

M internal/replication/service_integration_test.go +235 -0

Diff not shown: this commit changes too many lines.

M internal/replication/sync.go +100 -0

Diff not shown: this commit changes too many lines.

M internal/replication/sync_acceptance_test.go +266 -0

Diff not shown: this commit changes too many lines.

M internal/replication/websocket.go +494 -0

Diff not shown: this commit changes too many lines.

M internal/sites/bech32.go +129 -0

Diff not shown: this commit changes too many lines.

M internal/sites/service.go +631 -0

Diff not shown: this commit changes too many lines.

M internal/sites/sites.go +227 -0

Diff not shown: this commit changes too many lines.

M internal/sites/sites_test.go +177 -0

Diff not shown: this commit changes too many lines.

M internal/storage/bench_test.go +67 -0

Diff not shown: this commit changes too many lines.

M internal/storage/history.go +118 -0

Diff not shown: this commit changes too many lines.

M internal/storage/maintenance.go +127 -0

Diff not shown: this commit changes too many lines.

M internal/storage/query.go +220 -0

Diff not shown: this commit changes too many lines.

M internal/storage/retention.go +112 -0

Diff not shown: this commit changes too many lines.

M internal/storage/retention_test.go +51 -0

Diff not shown: this commit changes too many lines.

M internal/storage/save.go +255 -0

Diff not shown: this commit changes too many lines.

M internal/storage/schema.go +40 -0

Diff not shown: this commit changes too many lines.

M internal/storage/store.go +125 -0

Diff not shown: this commit changes too many lines.

M internal/storage/store_test.go +176 -0

Diff not shown: this commit changes too many lines.

M internal/syncprotocol/hll.go +120 -0

Diff not shown: this commit changes too many lines.

M internal/syncprotocol/negentropy.go +73 -0

Diff not shown: this commit changes too many lines.

M internal/syncprotocol/syncprotocol_test.go +63 -0

Diff not shown: this commit changes too many lines.

M internal/telemetry/telemetry.go +259 -0

Diff not shown: this commit changes too many lines.

M internal/telemetry/telemetry_test.go +122 -0

Diff not shown: this commit changes too many lines.

M internal/templates/templates.go +159 -0

Diff not shown: this commit changes too many lines.

M internal/templates/templates_test.go +27 -0

Diff not shown: this commit changes too many lines.

M internal/webui/browse_test.go +117 -0

Diff not shown: this commit changes too many lines.

M internal/webui/fixi.js +456 -0

Diff not shown: this commit changes too many lines.

M internal/webui/guided_forms.go +25 -0

Diff not shown: this commit changes too many lines.

M internal/webui/private.go +87 -0

Diff not shown: this commit changes too many lines.

M internal/webui/public_pages.go +138 -0

Diff not shown: this commit changes too many lines.

M internal/webui/public_pages_test.go +70 -0

Diff not shown: this commit changes too many lines.

M internal/webui/repo.html +52 -0

Diff not shown: this commit changes too many lines.

M internal/webui/repo_navigation.go +85 -0

Diff not shown: this commit changes too many lines.

M internal/webui/repo_navigation_test.go +24 -0

Diff not shown: this commit changes too many lines.

M internal/webui/signer.js +21 -0

Diff not shown: this commit changes too many lines.

M internal/webui/signer.js.license +4 -0

Diff not shown: this commit changes too many lines.

M internal/webui/signin_test.go +31 -0

Diff not shown: this commit changes too many lines.

M internal/webui/source_benchmark_test.go +26 -0

Diff not shown: this commit changes too many lines.

M internal/webui/source_render.go +307 -0

Diff not shown: this commit changes too many lines.

M internal/webui/source_render_test.go +135 -0

Diff not shown: this commit changes too many lines.

M internal/webui/templates.go +43 -0

Diff not shown: this commit changes too many lines.

M internal/webui/webmcp.go +47 -0

Diff not shown: this commit changes too many lines.

M internal/webui/webmcp.js +141 -0

Diff not shown: this commit changes too many lines.

M internal/webui/webmcp_test.go +111 -0

Diff not shown: this commit changes too many lines.

M internal/webui/webui.go +896 -0

Diff not shown: this commit changes too many lines.

M internal/webui/webui_test.go +358 -0

Diff not shown: this commit changes too many lines.

M internal/work/work.go +456 -0

Diff not shown: this commit changes too many lines.

M internal/work/work_test.go +265 -0

Diff not shown: this commit changes too many lines.

M package-lock.json +1884 -0

Diff not shown: this commit changes too many lines.

M package.json +19 -0

Diff not shown: this commit changes too many lines.

M scripts/bench-slate.sh +52 -0

Diff not shown: this commit changes too many lines.

M scripts/build-signer.mjs +13 -0

Diff not shown: this commit changes too many lines.

M scripts/configure-git-performance.mjs +19 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/README.md +25 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/check-parity.mjs +31 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/nip11.compat.test.ts +17 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/run.mjs +19 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/setup.ts +36 -0

Diff not shown: this commit changes too many lines.

M scripts/conformance/vitest.config.mts +18 -0

Diff not shown: this commit changes too many lines.

M scripts/git-http-baseline/main.go +70 -0

Diff not shown: this commit changes too many lines.

M scripts/git-performance.mjs +260 -0

Diff not shown: this commit changes too many lines.

M scripts/git-signing-proxy.mjs +52 -0

Diff not shown: this commit changes too many lines.

M scripts/observe-git-benchmark.py +206 -0

Diff not shown: this commit changes too many lines.

M scripts/prepare-git-performance.py +105 -0

Diff not shown: this commit changes too many lines.

M scripts/qa/nip46-bunker.cjs +9 -0

Diff not shown: this commit changes too many lines.

M scripts/report-git-performance.py +468 -0

Diff not shown: this commit changes too many lines.

M scripts/signer-entry.mjs +27 -0

Diff not shown: this commit changes too many lines.

M scripts/signer.test.mjs +47 -0

Diff not shown: this commit changes too many lines.

M scripts/test-slate.sh +65 -0

Diff not shown: this commit changes too many lines.

M scripts/webmcp.test.mjs +109 -0

Diff not shown: this commit changes too many lines.