search for standard sites pub-search.waow.tech
search zig blog atproto

feat: switch tap to relay.waow.tech and surface relay URL in dashboard

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

+12 -1
+1
backend/fly.toml
··· 6 [env] 7 TAP_HOST = 'leaflet-search-tap.internal' 8 TAP_PORT = '2480' 9 10 [http_service] 11 internal_port = 3000
··· 6 [env] 7 TAP_HOST = 'leaflet-search-tap.internal' 8 TAP_PORT = '2480' 9 + TAP_RELAY_URL = 'https://relay.waow.tech' 10 11 [http_service] 12 internal_port = 3000
+10
backend/src/dashboard.zig
··· 18 publications: i64, 19 documents: i64, 20 embeddings: i64, 21 tags_json: []const u8, 22 timeline_json: []const u8, 23 top_pubs_json: []const u8, 24 platforms_json: []const u8, 25 timing_json: []const u8, 26 }; 27 28 // all dashboard queries batched into one request 29 const STATS_SQL = ··· 110 .publications = publications, 111 .documents = documents, 112 .embeddings = embeddings, 113 .tags_json = try formatTagsJson(alloc, batch.get(2)), 114 .timeline_json = try formatTimelineJson(alloc, batch.get(3)), 115 .top_pubs_json = try formatPubsJson(alloc, batch.get(4)), ··· 168 .publications = publications, 169 .documents = documents, 170 .embeddings = embeddings, 171 .tags_json = tags_json, 172 .timeline_json = timeline_json, 173 .top_pubs_json = top_pubs_json, ··· 335 336 try jw.objectField("embeddings"); 337 try jw.write(data.embeddings); 338 339 try jw.objectField("platforms"); 340 try jw.beginWriteRaw();
··· 18 publications: i64, 19 documents: i64, 20 embeddings: i64, 21 + relay_url: []const u8, 22 tags_json: []const u8, 23 timeline_json: []const u8, 24 top_pubs_json: []const u8, 25 platforms_json: []const u8, 26 timing_json: []const u8, 27 }; 28 + 29 + fn getRelayUrl() []const u8 { 30 + return std.posix.getenv("TAP_RELAY_URL") orelse "unknown"; 31 + } 32 33 // all dashboard queries batched into one request 34 const STATS_SQL = ··· 115 .publications = publications, 116 .documents = documents, 117 .embeddings = embeddings, 118 + .relay_url = getRelayUrl(), 119 .tags_json = try formatTagsJson(alloc, batch.get(2)), 120 .timeline_json = try formatTimelineJson(alloc, batch.get(3)), 121 .top_pubs_json = try formatPubsJson(alloc, batch.get(4)), ··· 174 .publications = publications, 175 .documents = documents, 176 .embeddings = embeddings, 177 + .relay_url = getRelayUrl(), 178 .tags_json = tags_json, 179 .timeline_json = timeline_json, 180 .top_pubs_json = top_pubs_json, ··· 342 343 try jw.objectField("embeddings"); 344 try jw.write(data.embeddings); 345 + 346 + try jw.objectField("relayUrl"); 347 + try jw.write(data.relay_url); 348 349 try jw.objectField("platforms"); 350 try jw.beginWriteRaw();
+1 -1
tap/fly.toml
··· 7 [env] 8 TAP_DATABASE_URL = 'sqlite:///data/tap.db' 9 TAP_BIND = ':2480' 10 - TAP_RELAY_URL = 'https://relay1.us-east.bsky.network' 11 TAP_SIGNAL_COLLECTION = 'site.standard.document' 12 TAP_COLLECTION_FILTERS = 'pub.leaflet.document,pub.leaflet.publication,site.standard.document,site.standard.publication,com.whtwnd.blog.entry' 13 TAP_LOG_LEVEL = 'info'
··· 7 [env] 8 TAP_DATABASE_URL = 'sqlite:///data/tap.db' 9 TAP_BIND = ':2480' 10 + TAP_RELAY_URL = 'https://relay.waow.tech' 11 TAP_SIGNAL_COLLECTION = 'site.standard.document' 12 TAP_COLLECTION_FILTERS = 'pub.leaflet.document,pub.leaflet.publication,site.standard.document,site.standard.publication,com.whtwnd.blog.entry' 13 TAP_LOG_LEVEL = 'info'