A social RSS reader built on the AT Protocol. glean.at
glean atproto atmosphere rss feed social app
14
fork

Configure Feed

Select the types of activity you want to include in your feed.

Fix query + improve perf docker build

+13 -3
+4
.dockerignore
··· 1 + .git 2 + .env 3 + node_modules 4 + glean.db
+4 -2
Dockerfile
··· 10 10 RUN npm ci 11 11 12 12 COPY . . 13 - RUN npx tailwindcss -i ./static/input.css -o ./static/output.css --minify \ 14 - && CGO_ENABLED=1 go build -tags fts5 -ldflags="-s -w" -o /glean . 13 + RUN npx tailwindcss -i ./static/input.css -o ./static/output.css --minify 14 + 15 + RUN --mount=type=cache,target=/root/.cache/go-build \ 16 + CGO_ENABLED=1 go build -tags fts5 -ldflags="-s -w" -o /glean . 15 17 16 18 FROM alpine:3.21 17 19
+1 -1
internal/cluster/social.go
··· 49 49 50 50 var lastComputed string 51 51 err = e.db.QueryRowContext(ctx, ` 52 - SELECT COALESCE(MAX(updated_at), '1970-01-01') FROM user_similarity 52 + SELECT COALESCE(MAX(computed_at), '1970-01-01') FROM user_similarity 53 53 `).Scan(&lastComputed) 54 54 if err != nil { 55 55 return err
+4
internal/server/server.go
··· 405 405 return 406 406 } 407 407 408 + // Fetch each feed once, even if many users subscribe to the same feed. 409 + // Dead feeds (error_count >= 25) are intentionally retried here so a new 410 + // user's subscriptions get a chance to succeed before being gated by the 411 + // scheduler's error_count filter. 408 412 seen := make(map[string]bool, len(subs)) 409 413 for _, sub := range subs { 410 414 if seen[sub.FeedURL] {