Skip to main content
Changelog

What’s new.

Every ship, tagged and dated. Job Lobster is built in public — when a build lands, it lands here.

April 2026

  • de Apr 21 6d42fdb
    guide H2 anchor ids + linked TOC

    Previously the guide detail page's Contents list was plain text. Now:

  • dd Apr 21 1751a5a
    admin /health-flags endpoint — feature enablement snapshot

    Lets the operator verify at a glance which optional features are wired

  • dc Apr 21 44da697
    fix silent-failing llm_usage admin queries + add user-usage CSV

    The llm_usage table has columns timestamp + metadata (JSON), but admin

  • db Apr 21 6a2284d
    admin GET + PATCH single-guide endpoints

    Paired with da's bulk operations, lets the operator read/edit a guide

  • da Apr 21 53583f8
    admin guide bulk-unpublish + soft-delete endpoints

    Previously the operator had to edit DB rows directly to unpublish or

  • cz Apr 21 f232268
    add usage CSV card — per-activity × model MTD breakdown

    Admin dashboard already supports CSV export for users, subscriptions,

  • cy Apr 21 18f4edc
    /status page + footer links (guides, changelog, status)

    P3 Plan E stretch: footer gets a Transparency column (Made with

  • cx Apr 21 3e5e91c
    JSON-LD BreadcrumbList + CollectionPage on /changelog

    Completes the structured-data sweep started by cs (which covered

  • cw Apr 21 23d21a6
    Web Push subscribe — structural hardening + per-user cap

    Before VAPID secrets land and real browsers start POSTing

  • cv Apr 21 e05c3ef
    RSS feed content:encoded with full rendered guide HTML

    Most feed readers (Feedly, Inoreader, NetNewsWire, etc.) honor RSS

  • cu Apr 21 29a111c
    sitemap per-URL <lastmod> from git log + guide dates

    Generic today-lastmod on every URL is a known SEO anti-pattern —

  • ct Apr 21 a3d0824
    scripts/gen-vapid-keypair.mjs — operator helper for Web Push turn-on

    One-command VAPID keypair generator. Without --app prints the env

  • cs Apr 21 778c160
    JSON-LD structured data on marketing + guide pages

    Adds rich-results eligibility to the marketing site beyond the

  • cr Apr 21 db8434f
    POST /api/push/test — self-test verification endpoint

    Tiny helper so the operator can confirm the cq native sender works

  • cq Apr 21 96241dd
    native RFC 8291 Web Push sender (aes128gcm + VAPID JWT)

    Implements the real Web Push send path using only Node's built-in

  • cp Apr 21 bab54c5
    PWA icons (192/512/badge) + CLAUDE.md changelog:build step

    Generate 192x192, 512x512, 72x72 PNG icons from JobLobster.png

  • co Apr 21 620341a
    /changelog page — build tags + ship notes from git log

    scripts/build-changelog.mjs: walks `git log`, extracts commits whose

  • cn Apr 21 ce623cd
    Web Push + PWA manifest + service worker (backend scaffolding)

    Migration v19: web_push_subscriptions table (user_id, endpoint,

  • cm Apr 21 59d84cf
    in-app notification inbox UI (sidebar bell + drawer)

    Adds a 🔔 bell button in the sidebar footer row with an unread-count

  • cl Apr 21 37bb535
    OpenClaw Telegram channel binding

    src/openclaw/telegram.js: pair code flow + bindings + send/webhook

  • ck Apr 21 5fa8e26
    OpenClaw per-user agent notifications + scheduled work

    Migration v17 adds two tables:

  • cj Apr 21 7282aaa
    OpenClaw approval-gated draft tools + inbox routes

    Agent-proposed mutations now go through /api/claw/drafts/propose (HMAC),

  • ci Apr 21 25e2f83
    OpenClaw — read-only workspace tools at /api/claw/tools

    Agent machines can now SELECT user state through a single POST

  • ch Apr 21 bc0189c
    OpenClaw — HMAC-auth budget proxy at /api/claw/chat

    Agent machines (zero-trust microVMs) never hold the Anthropic key or

  • cg Apr 21 46d5c62
    OpenClaw — Fly machine provisioning scaffold + admin fleet card

    Foundations for per-user Fly microVMs (core launch feature, not secondary):

  • cf Apr 21 ec453e1
    audience-tuned variants — /for-engineers, /for-pms, /for-finance

    Single audience.js renderer driven by a config dict, three mounted

  • ce Apr 21 53e79b2
    /about page — origin story + 4 principles + stack + public-build signature

    New SSR marketing page at /about. Hero + three story cards (itch/wager/

  • cd Apr 21 2322098
    admin per-card CSV export

    New endpoint GET /api/admin/export.csv?card=<name> streams card-scoped

  • cc Apr 21 1f62676
    admin error drill-down UI

    Click an error row in the admin dashboard to load the latest 20

  • cb Apr 21 9b39bbd
    nav scroll-spy side rail on marketing home

    Desktop-only fixed-right dot rail with IntersectionObserver tracking the

  • cb Apr 21 6993ba9
    universal LLM JSON unwrap (PLAN_2026-04-22 P1)

    Promotes the guide-generator-specific fence-wrap fix shipped in `ca`

  • ca Apr 21 9a741f2
    guide generator hardening (P1 from PLAN_2026-04-22)

    Two guides in the overnight bulk-gen run hit 'LLM returned invalid

  • bz Apr 21 c24c185
    E + D stretch — footer expansion + hero word reveal + related guides + RSS feed

    E stretch:

  • by Apr 21 5861d92
    OpenClaw scaffold — claws table + stub provisioner + routes + UI (Plan C)

    Migrations v12 (user_claws) + v13 (claw_actions with user+created index).

  • bx Apr 21 ea75ee8
    build tag bump — 20 seed guides drafted on Fly (operator publish via batch endpoint)
  • bw Apr 21 c754ef3
    guides pipeline — routes + markdown renderer + taxonomy + generator (Plan D)

    Migration v11: guides table (slug unique, category + status indexes).

  • bv Apr 21 5594a15
    launch readiness — admin dashboard + welcome drip + error log (Plan B)

    B1 — Operator admin dashboard:

  • bu Apr 21 f975974
    Practice tab — STAR drills + flashcards + mock + company quiz (Plan A)

    New "🎯 Practice" tab in the SPA sidebar. Landing is a 4-tile grid,

  • bt Apr 21 b67170a
    E2 content + E3 polish + E4 a11y + E5 og card

    E2 content expansion — three new sections layered into /:

  • bs Apr 21 0f8bb4c
    scroll-driven 6-stage hero sequence (E1)

    Replaces the single-frame hero-demo card on / with six full-viewport

  • br Apr 21 99452ce
    marketing preview override via ?marketing=1 + sticky cookie

    Lets the operator preview the marketing site on the fly.dev staging

  • bq Apr 21 b18b2ff
    marketing sitemap emits https for public hosts

    Fly terminates TLS at the edge, so req.protocol is 'http' in the

  • bp Apr 21 323626e
    public marketing site at joblobster.ai (SSR, SEO-ready)

    Subdomain-split routing: requests with Host: joblobster.ai / www.

  • bo Apr 21 df0e975
    site password gate middleware + /preview page

    JOBHUNTER_SITE_PASSWORD gates the staging app behind a shared access

  • bn Apr 20 dc4e26b
    three post-checkout fixes

    1. Fix pre-existing /api/costs crash: getScoringPoolCandidates was

  • bm Apr 20 d31175f
    entitlements banner + Manage-billing button on Billing tab

    New #entitlements-banner element above the tier tiles.

  • bl Apr 20 b6eae0e
    bootstrap-stripe-webhook.mjs — idempotent webhook endpoint setup

    Companion to bootstrap-stripe-prices.mjs. Creates (or finds) a Stripe

  • bk Apr 20 eb93bf4
    Stripe checkout + portal + webhook wired (test mode)

    Turns the bg scaffold into a working subscribe flow. Operator Stripe

  • bj Apr 20 0d4040d
    gate interview-prep/stream on applications tier cap

    Bucket interview prep with 'applications' (it's a package add-on, not

  • bi Apr 20 a4f48a8
    wire tier-cap gate into apply/stream + outreach/suggest routes

    Both routes now pre-check assertWithinTierCap(userId, feature) before

  • bh Apr 20 930f339
    notifications.js direct tests + export internals

    Exports pickDigestJobs + renderDigestHtml (previously module-private)

  • bg Apr 20 44f23e8
    P2 Stripe billing scaffold — data model + gating, no wiring yet

    Ships the infrastructure so real Stripe activation is a short follow-on

  • bf Apr 20 fbedb3f
    coaching-tables userId scoping + base_match_score re-ceiling

    Scoring:

  • bd Apr 20 2b6c6cc
    cap-badge UI + P7 hygiene (dead code + test coverage)

    UI:

  • bc Apr 20 09f0755
    scoring gap-ceiling audit — close the 61.9% leak

    An audit probe on 197 v2-scored rows found that 61.9% of structured-scored

  • bb Apr 20 b931f54
    sticky-tab flicker fix + "assume experience" skip option

    Sticky-tab elapsed counter now updates via a dedicated <span data-elapsed>