Weirling v0.3.3 (2026-10-25)¶
Faster first-run setup, feeds that stopped failing on IPv4-only hosts, and one consistent look for every form control.
Before you upgrade¶
No action needed beyond the usual upgrade steps.
Fixes¶
- Embeddings ran 500 times slower than they should in containers: PyTorch
started a thread per host core and fought over a 2-vCPU quota (30 to 40 s
per article on Railway, now 0.06 s). Threads now follow the container's
CPU quota;
OMP_NUM_THREADS/TORCH_NUM_THREADSstill override it. - Feeds on dual-stack sites (Cloudflare, Google, AWS and many more) failed at random with "All connection attempts failed" on hosts without outbound IPv6. The fetcher now tries IPv4 first and falls back to the site's other validated addresses before giving up.
- Onboarding: "Start Weirling" went back to the last step instead of to the digest. It now opens the digest, and a second click after a slow first one no longer errors.
- Onboarding: picking several starter packs is one request instead of one per
pack (
POST /api/v1/sources/starter-packs/subscribe), and packs that share feeds no longer risk adding a feed twice. -
A selected starter pack was white text on a cream card. Selected and status states (packs, ratings, saved, source health, the import drop zone) now use one set of dark-theme styles.
-
Hosted without billing: nobody's trial runs out (no trial emails, pausing or deletion) until a billing provider is configured; the Plan section says early access instead of counting down.
- The Ingestion page works for the instance owner (it asked for the operator metrics token and showed "HTTP 401"), loads only the columns it needs, and its nav link shows to the owner only.
- Preferences no longer says "no key" when
LLM_API_KEYis set (it only checked the deprecatedGROQ_API_KEY). - Fetch jobs for new sources are queued after the database commit, so the worker always sees them.
Security¶
- brotli 1.2.1 (two advisories; reachable through feed decoding).
- Security headers (
nosniff,DENYframing, no referrer, HSTS) on every API response. - Secret scanning (gitleaks) on every pull request.
Highlights¶
- The interest graphs (Interests and Preferences) are a live force layout in the spirit of Obsidian's graph view: topics spring into place, related ones cluster, the strongest are named and the rest appear as you zoom, and hovering a topic lights up what it connects to. Pan, zoom, drag, and drop one topic on another to merge.
- Preferences and the Ingestion page are rebuilt on the design system.
- Every select, text field, time field, textarea and checkbox shares the design system's look, including the select chevron. The onboarding wizard, plan and LLM-key sections use the shared button and input styles instead of their own.