Skip to content

Releases: mohitmishra786/weirling

Weirling v0.3.5 (2026-10-26)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 21:28
b4f1d6a

Rankings that follow every interest you confirmed, starter packs that no
longer add broad topics of their own, and an Emerging card about your feeds.

Before you upgrade

No action needed beyond the usual upgrade steps. The new
ranking applies from the next digest.

Ranking

  • An article was compared with only your three strongest interest clusters,
    and with one representative topic per cluster. With many equal interests
    (any onboarding with confirmed topics), most of them never counted: every
    article scored about the same, and a Python tutorial could lead a digest
    for a reader who asked for kernels and compilers. Each article is now
    compared with every interest topic, weighted by how strong its cluster is,
    and "Why this?" names the topic that matched.

Interests

  • Subscribing to a pack added an interest named after it ("Hardware &
    Electronics", "Programming Languages") even when you had described your
    interests, which pulled in everything the pack carries. A pack now adds a
    topic only for readers with fewer than three interests, and onboarding
    removes the ones added before your topics were saved.
  • Topic names are matched without case, so "Systems Programming" and
    "Systems programming" are one interest; your own wording is kept.

Digest

  • "Emerging this week" counted every reader's feeds on the instance and,
    with no history yet, called every topic new. It now uses your feeds only,
    and stays hidden until they have two weeks of history.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.5
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.5
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.5
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.5-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.5 in .env; see docs/UPGRADING.md.

Weirling v0.3.4 (2026-10-26)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:22
1c21c46

Claude as the first summary provider with Groq behind it, starter packs
that don't overlap, feed discovery for blogs in a sub-folder, and a reader
that fits the screen.

Before you upgrade

No action needed beyond the usual upgrade steps.
Migration 0048 runs on start: it removes HTML left in stored extract
summaries (LLM summaries are not touched).

Optional: set ANTHROPIC_API_KEY to have Claude (claude-haiku-5-5 by
default) answer first, with your LLM_* provider as the fallback
(configuration).

Summaries

  • Providers are tried in order: Claude when ANTHROPIC_API_KEY is set, then
    LLM_*, then the OpenAI fallback, then an extract. A rejected key, an
    empty credit balance or a rate limit benches a provider for a while, so
    the next one answers at once instead of each article waiting on a failure.
  • A Groq daily cap (429 with a long Retry-After) now pauses Groq until
    then, instead of asking again for every article.
  • Extract summaries showed raw markup for some feeds (<p>Article URL: <a href=…). They are plain text now, and existing ones are cleaned.
  • Hacker News and Lobsters entries hold no article, only links. They now
    read "Discussion: 37 points, 13 comments on Hacker News" with a link, and
    are not sent to the model.

Onboarding and starter packs

  • Starter packs were rebuilt: 25 packs, 268 feeds, each feed in exactly one
    pack and every feed checked live. 43 dead, blocked, stale or mislabelled
    feeds were replaced (one pack listed the same feed three times; "Stonebraker
    Blog" pointed at Atlassian's developer blog). A test fails if a feed is
    ever added to two packs.
  • New pack: Backend & Distributed Systems (Marc Brooker, Martin Kleppmann,
    Werner Vogels, aphyr, Murat Demirbas and others).
  • The model now picks the packs for your interests (cached, 5 s limit,
    taxonomy as the fallback). Word matching had suggested the UI design pack
    for "system design".
  • Suggested topics are short labels ("Consensus algorithms"), not sentences.
  • The pack picker has a search box over pack names, descriptions and the
    sources inside each pack, and each pack says what it covers.

Sources

  • A blog in a sub-folder (user.github.io/Blog/) is found from its page
    URL: discovery tries the folder before the site root and follows feed
    links in the page body, not only <link rel="alternate">.
  • substack.com/@name follows name.substack.com; other substack.com
    links say to use the publication's address instead of following a feed
    that doesn't exist.
  • Adding a creator's blog uses the same checked discovery as adding a source.
  • Feeds up to 8 MB are accepted (FEED_MAX_BYTES); danluu.com's 6.6 MB feed
    was rejected.

Reader and layout

  • On laptops the reader shows the article at a readable width with a side
    panel: summary, progress and time left, text size and surface, and the
    link to the original. Phones keep one column.
  • Long URLs, tables and embeds no longer widen the page on phones.
  • Source cards: on phones, Pause and Remove sit under the details, so a long
    name or error can't push them off screen.

Operations

  • Workers and beat log JSON to stdout like the API, so a platform's error
    view shows only errors (Celery's INFO lines went to stderr).
  • Database connections are recycled every 5 minutes and time out after
    10 s; Redis and the Celery broker use keepalives and health checks. A
    connection dropped while idle no longer stalls a request.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.4
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.4
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.4
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.4-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.4 in .env; see docs/UPGRADING.md.

Weirling v0.3.3 (2026-10-25)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 13:42
9315093

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_THREADS still 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_KEY is set (it only
    checked the deprecated GROQ_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, DENY framing, 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.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.3
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.3
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.3
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.3-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.3 in .env; see docs/UPGRADING.md.

Weirling v0.3.2 (2026-10-25)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 11:42
8b9a4a1

Email can now go out through Resend's HTTPS API, for hosts that block SMTP.

Before you upgrade

No action needed beyond the usual upgrade steps. SMTP
keeps working as before; Resend is used only when RESEND_API_KEY is set.

Highlights

  • Send email through Resend (RESEND_API_KEY, EMAIL_PROVIDER=auto|smtp|resend).
    Network errors, 429 and 5xx are retried with backoff; sign-in and
    confirmation links carry an idempotency key, so a retry never sends one
    twice.

Fixes

  • On hosts that block SMTP (Railway Hobby), sign-up and "Resend the link"
    no longer wait 30 seconds on a connection that can't succeed, once Resend
    is configured.

Operators

  • New settings: EMAIL_PROVIDER (default auto), RESEND_API_KEY (a
    sending-only key; FROM_EMAIL must be on a domain verified in Resend).
  • The setup screen's email test sends through Resend when it is active.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.2
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.2
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.2
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.2-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.2 in .env; see docs/UPGRADING.md.

Weirling v0.3.1 (2026-10-25)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 10:31
b114548

Fixes the published backend images: in v0.3.0 the full and lite tags held
the same amd64 image, the lite one.

Before you upgrade

No action needed beyond the usual upgrade steps. If you
ran the v0.3.0 weirling-backend image on amd64, you were on the lite build
(hash embeddings); items it embedded keep those vectors until they age out.

Fixes

  • weirling-backend:0.3.1 is the full image and 0.3.1-lite the lite one,
    on both amd64 and arm64. The publish job now refuses to tag anything but
    exactly one image per architecture.
  • A clear "DATABASE_URL is empty" error instead of a SQLAlchemy traceback.

Operators

  • The Railway and Vercel guide is corrected: connection variables go on each
    service, DATABASE_URL_PRIVATE for Postgres, and the api listens on
    0.0.0.0.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.1
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.1
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.1
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.1-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.1 in .env; see docs/UPGRADING.md.

Weirling v0.3.0 (2026-10-25)

Choose a tag to compare

@github-actions github-actions released this 25 Oct 09:18
b1548bc

ReadPrism is now Weirling, with hosted plans and the North Star metrics.

Before you upgrade

  • Read ReadPrism is now Weirling:
    keep your install folder's name (or set COMPOSE_PROJECT_NAME=readprism),
    because Docker volume names come from it.
  • Rename the email settings: ZOHO_* is now SMTP_* and the old names
    are not read (details).
  • Migrations 0039 to 0047 run on start; none drops data.

Highlights

  • Renamed to Weirling; domain weirling.com (#340).
  • Hosted plans: Reader and Pro, a 30-day trial with Pro features, no free hosted
    tier (#172, #341); Pro-only features (#246).
  • First-party product metrics and the owner dashboard at /admin/metrics (#131).
  • Readers can bring their own LLM key on hosted (#255).

Fixes

  • Digests are marked opened again, so win-back emails no longer reach active
    readers (#131).
  • gpt-oss summaries no longer run out of tokens; long provider rate-limit waits
    no longer stall workers (#225).

Operators

  • WEIRLING_VERSION pins images (READPRISM_VERSION still read).
  • Email: SMTP_HOST, SMTP_PORT, SMTP_USER, SMTP_PASSWORD replace the
    ZOHO_* settings; FROM_EMAIL is now honoured; new FROM_NAME,
    REPLY_TO_EMAIL, SUPPORT_EMAIL; port 465 works. Every email now carries
    Date and Message-ID headers, which spam filters expect.
  • Railway and other hosts: a plain postgres:// DATABASE_URL works.
  • New settings: PRODUCT_METRICS, HOSTED_PAUSED_DELETE_DAYS,
    HOSTED_DELETE_REMINDER_DAYS, HOSTED_PRO_MAX_POLL_MINUTES,
    LLM_REASONING_EFFORT, LLM_MAX_RETRY_WAIT_SECONDS.
  • Migrations: 0039 quota overrides, 0040 trial email stage, 0041 users' LLM keys,
    0042 takedown list, 0043 terms consent, 0044 deletion reminder,
    0045 product events, 0046 interest embedding model, 0047 SMTP setting names.

Images

  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.0
  • ghcr.io/mohitmishra786/weirling/weirling-frontend:0.3.0
  • ghcr.io/mohitmishra786/weirling/weirling-aio:0.3.0
  • ghcr.io/mohitmishra786/weirling/weirling-backend:0.3.0-lite (no torch)

Pin it with WEIRLING_VERSION=0.3.0 in .env; see docs/UPGRADING.md.

weirling-rank 0.1.2

Choose a tag to compare

@github-actions github-actions released this 25 Oct 21:14
b4f1d6a

weirling-rank 0.1.2 on PyPI: https://pypi.org/project/weirling-rank/0.1.2/

pip install weirling-rank==0.1.2

Changes

  • v0.3.5: rank against every interest, no pack-name topics, per-reader emerging

weirling-rank 0.1.1

Choose a tag to compare

@github-actions github-actions released this 21 Oct 09:58
97efeaa

weirling-rank 0.1.1 on PyPI: https://pypi.org/project/weirling-rank/0.1.1/

pip install weirling-rank==0.1.1

Changes

  • Code scanning: no exception text in API responses, masked ids and sanitized provider text in logs; tidy

weirling-rank 0.1.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 09:02
22d91e8

weirling-rank 0.1.0 on PyPI: https://pypi.org/project/weirling-rank/0.1.0/

pip install weirling-rank==0.1.0

Changes

  • [#245] weirling-rank: a GitHub Release per version (not marked Latest)
  • [#245] Release weirling-rank automatically when ranker code is merged
  • [#245] One source for weirling-rank, MIT, Trusted Publishing on its own tags only
  • [#245] Extract ranker as reusable library packages/weirling-rank with DB adapter