v1.3.0
Aug 7, 2026
Conventions preview pane — see what your rules catch before saving
settings
conventions
ux
preview
A live "Sample review preview" block on /settings renders the diff from data/conventions-preview-sample.js (~40 lines, seeded with three intentional smells: a TODO token, a typo, and a raw SQL interpolation that interpolates req.body into a string-concatenated INSERT) and surfaces the findings your conventions produce. Reuses the data/demo-pr-review.js fixture shape so the parser is shared and the preview updates instantly when you toggle a rule on or off. Means you can A/B two convention sets without waiting for the next real PR to come in.
Why it matters
Configuring conventions blind is frustrating — you toggle a rule, save, and only know if it works three hours later when a PR lands. A live preview collapses that loop to seconds, which is how often you actually change rules.
v1.3.0
Aug 6, 2026
/settings trend chart — 7-day and 30-day review volume sparkline
settings
metrics
dashboard
trend
A compact sparkline now sits next to the toggle set on /settings, showing reviews per day across the last 7 and 30 days on a single axis. Drawn from the pr_review_events table with a server-side aggregation (no client-side fetches). Hover gives the exact count; the max value reads at the right edge so trends are visible at a glance. Stays out of the way when no data exists yet (renders an empty state instead of zeros).
Why it matters
Teams that just installed want to know "is it actually running on my PRs?" within their first session. A bare toggle panel answers "what can I configure?" but not "what is happening?" — the sparkline closes that gap without taking screen real estate from the config controls.
v1.3.0
Aug 5, 2026
Per-repo PR history page at /app/[repo]/history
dashboard
history
repo
overview
A dedicated per-repo timeline lets a team scroll a repo's full AI review history (PRs in merge order, with verdict + blocker / suggestion counts surfaced inline) without paging through the dashboard overview. Routes/repo-history.js resolves the [repo] slug, paginates 25 PRs at a time via the dashboard-overview query helpers, and renders the findings-summary chips from pr_review_events for each PR. CSV export hook is scaffolded for a follow-up cycle.
Why it matters
Once a team has more than 50 PRs reviewed, the dashboard overview's "recent activity" pane becomes a scrolling graveyard — you cannot find the PR from last Tuesday. Putting the timeline behind /app/[repo]/history gives the repo its own review log, matching how engineers actually think about their work ("what happened on the payments repo this month?").
v1.3.0
Aug 4, 2026
/customers page and /blog shell migration — single marketing chrome across all public pages
marketing
shell
partials
seo
maintenance
Both /customers and /blog now render under the same partials/head + partials/nav + partials/footer shell that /pricing and /compare already use. Shared theme tokens, one font preconnect, the canonical SEO meta block, and the consistent footer link strip. Routes/customers.js + views/customers.ejs now pass pageUrl + ogImage through buildLandingContext the same way the shell expects. /changelog has now been brought into the same family (see "the changelog itself" further down). The two earlier one-offs (customers.ejs, blog/index.ejs) were leaking their own <head> markup and re-declaring Plausible + favicon. Now every public marketing page picks those up from one definition.
Why it matters
Hand-rolled <head> per page means each new page re-decides which meta tags matter, drifts on font weights, and forgets Plausible 1-in-4 times. A single shell is one place to fix bugs, one place to ship a new theme, and one place to wire analytics. Show HN visitors also land on /changelog with a coherent chrome — not a half-rendered bespoke page.
v1.2.0
Aug 1, 2026
/demo → /install funnel tightening — copy changes, deep-link UTM, new conversion event
demo
funnel
install
plausible
growth
The /demo outcome panel copy changed from "Try it on your own repo" (generic) to "Install SiftPulse on GitHub — same review, your code" (concrete). The two primary CTAs now deep-link to /install?utm_source=demo and /pricing?utm_source=demo respectively, so attribution closes the loop end-to-end instead of dying at the homepage. A new Plausible event demo_real_pr_cta_click fires when a visitor who ran a /demo "Review my PR" pass clicks the install CTA — letting us measure the conversion rate from "pasted a real PR" to "installed" without instrumenting a third-party funnel tool.
Why it matters
Without UTM source on the deep-link, every /demo CTA click was attributed to the homepage as the referrer — we could not tell which demo path (canned_diff vs live_demo vs real_pr) converted. Wiring UTM + a dedicated event closes the loop in tooling we already trust.