Skip to content

v0.2.2

Choose a tag to compare

@github-actions github-actions released this 02 Oct 12:50
· 109 commits to main since this release

What's Changed

  • fix(activity): keep the recent-activity rail on main and off dead ids (tripl-r5ri) by @vladenisov in #87
  • fix(ui): pin every colour token to the WCAG AA floor and route status text through them (tripl-zgtu, tripl-ds9m, tripl-yx0k) by @vladenisov in #86
  • fix(anomalies): stop judging a release against a population it does not share (tripl-9y4l) by @vladenisov in #88
  • chore(deps): bump actions/upload-artifact from 4 to 7 by @dependabot[bot] in #81
  • chore(deps): bump actions/download-artifact from 4 to 8 by @dependabot[bot] in #83
  • chore(deps): update uvicorn[standard] requirement from >=0.51.0 to >=0.52.0 in /backend by @dependabot[bot] in #84
  • fix(cli): stop the drifts sample expiring on a fixed date by @vladenisov in #91
  • fix(anomalies): make the comparability gate work on fine-grained catalogs (tripl-9y4l) by @vladenisov in #90
  • fix(alerting): stop offering the same link twice in every alert item by @vladenisov in #92
  • fix(anomalies): five defect classes from the 2026-08-05 audit (tripl-l429.1-.5) by @vladenisov in #93
  • fix(alerting): point a release regression at something that can corroborate it by @vladenisov in #94
  • feat(scans): make scans explainable end to end (tripl-3y7z) by @vladenisov in #95
  • fix(branches): approvals chip + clipped Merge button; docs: both distributions are on PyPI by @vladenisov in #96
  • fix(branches): a long description widened the page and hid Merge (+ restore docs fixes lost in #96's squash) by @vladenisov in #97
  • fix(branches): a photo comment must not void a branch approval (tripl-zjmo) by @vladenisov in #98
  • chore(release): bump tripl and tripl-mcp to 0.2.0 (tripl-yh8t) by @vladenisov in #99
  • docs(mcp): stop pinning install docs to a version that just shipped by @vladenisov in #102
  • fix(events): empty tab charts, merged-branch tabs, and archival that actually hides by @vladenisov in #103
  • feat(alerting): fold what-was-sent into the incident, and link alerts there by @vladenisov in #104
  • chore(deps): bump the minor-and-patch group across 1 directory with 33 updates by @dependabot[bot] in #101
  • chore(deps): update redis[hiredis] requirement from >=8.0.1 to >=8.1.0 in /backend by @dependabot[bot] in #82
  • fix(alerting): link an incident to the thing that fired it by @vladenisov in #105
  • Fix/alerting event link by @vladenisov in #107
  • feat(alerting): make the incident inbox a triage surface (tripl-oxkt) by @vladenisov in #108
  • chore(deps): bump the minor-and-patch group across 1 directory with 6 updates by @dependabot[bot] in #106
  • Merge Monitors into Alerting, plus five issues and two production diagnoses by @vladenisov in #109
  • Make an event's references survive a merge, and stop them outliving a delete by @vladenisov in #110
  • Make silencing an alert say what it actually does by @vladenisov in #111
  • Act on several incidents at once by @vladenisov in #112
  • Make search relevance measurable, then fix what it measured by @vladenisov in #113
  • Index the surface form beside the stem, so a word's forms meet by @vladenisov in #114
  • Keep a still-silenced incident reachable after its deliveries age out by @vladenisov in #115
  • Make two vacuous search assertions capable of failing by @vladenisov in #116
  • Let the embeddings endpoint be pointed somewhere else by @vladenisov in #117
  • Stop the command palette re-ranking the server's results by @vladenisov in #118
  • Repair the Metrics table's role tree and the scans row's nesting by @vladenisov in #119
  • Make the keyword tiers stop paying for harvested event values by @vladenisov in #120
  • Say when the source cap cut the 30-day inbox window short by @vladenisov in #121
  • Reward a result that answered the whole query by @vladenisov in #122
  • fix(search): stop the page size deciding the ranking, and delete a boost that buried its own answer (tripl-0tt4) by @vladenisov in #123
  • feat(search): make the index self-healing on plan branches (tripl-uji9) by @vladenisov in #124
  • fix(demo): regenerate the embedding artifacts and make the sidecar check mean something (tripl-khnz) by @vladenisov in #125
  • feat(search): index scan configurations and alert rules (tripl-dfct) by @vladenisov in #126
  • chore(deps): bump astral-sh/setup-uv from 9.0.0 to 10.0.0 by @dependabot[bot] in #130
  • chore(deps): bump the minor-and-patch group in /backend with 3 updates by @dependabot[bot] in #129
  • chore(deps): bump the minor-and-patch group in /frontend with 8 updates by @dependabot[bot] in #134
  • refactor(metrics): give the condition toolkit its own module instead of the middle of metric_collect by @vladenisov in #128
  • chore(search): remove what eight consecutive PRs accreted, keep what they measured by @vladenisov in #127
  • fix(search): let only an identity match be painted as certain (tripl-d5u8) by @vladenisov in #136
  • feat(search): weight the title, so a name outranks a mention (tripl-dito) by @vladenisov in #138
  • fix(ux): the 37 things the browser walk found, in seven file-disjoint batches by @vladenisov in #139
  • fix(prerelease): what a sixth audit found, and what two rounds of fixing it found by @vladenisov in #143
  • fix(prod-verification): the seven things a post-deploy check found, and the twenty-two that reviewing the fixes found by @vladenisov in #144
  • chore(deps): bump the minor-and-patch group in /frontend with 6 updates by @dependabot[bot] in #142
  • chore(deps): bump the minor-and-patch group in /backend with 3 updates by @dependabot[bot] in #141
  • fix(audit): 25 findings from a re-validated multi-dimension audit by @vladenisov in #145
  • chore(deps): update uvicorn[standard] requirement from >=0.52.0 to >=0.52.3 in /backend by @dependabot[bot] in #132
  • fix(variables): why active events showed no observed values, and what destroys them afterwards by @vladenisov in #149
  • chore(deps): bump the minor-and-patch group in /backend with 3 updates by @dependabot[bot] in #146
  • chore(deps-dev): bump jsdom from 29.1.1 to 30.0.1 in /frontend by @dependabot[bot] in #135
  • fix(variables,alerts): merge resampled values, unstall the sampler ring, surface it, and auto-retry transient delivery failures by @vladenisov in #151
  • fix: three follow-ups the stale-issue verification turned up by @vladenisov in #152
  • chore(deps): bump astral-sh/setup-uv from 10.0.0 to 10.0.1 in the minor-and-patch group across 1 directory by @dependabot[bot] in #140
  • Manual event authoring: make the scan identity real, and the form honest about it by @vladenisov in #153
  • Deliver alerts on a schedule instead of after every collection by @vladenisov in #154
  • Make a scheduled digest readable: one message, grouped, links instead of URLs by @vladenisov in #157
  • chore(deps): bump the minor-and-patch group in /backend with 2 updates by @dependabot[bot] in #155
  • chore(deps): bump cryptography from 49.0.0 to 50.0.1 in /backend by @dependabot[bot] in #147
  • Branch handoff: naming rules on branches, event titles, spec card, branch-aware links by @vladenisov in #158
  • Analyst feedback 2026-09-08: authoring and reviewing events by @vladenisov in #160
  • Teach the email transport implicit TLS, and give SMTP a way to test itself by @vladenisov in #161
  • Analyst feedback 2026-09-09: discussion at creation, variable editing, bindings, inbox filters by @vladenisov in #162
  • Branch merge: photos and their comments merge three-way against the base by @vladenisov in #163
  • Branch domain, photos and the plan diff: batch 2 of the backend review by @vladenisov in #164
  • The scan and metrics collection pipeline: batch 3 of the backend review by @vladenisov in #165
  • The alerting and dispatch pipeline: batch 4 of the backend review by @vladenisov in #169
  • chore(deps): bump the minor-and-patch group in /backend with 5 updates by @dependabot[bot] in #167
  • chore(deps): bump astral-sh/setup-uv from 10.0.1 to 10.1.0 in the minor-and-patch group by @dependabot[bot] in #166
  • The warehouse adapter layer: batch 5 of the backend review by @vladenisov in #170
  • The metric catalog and the series read path: batch 6 of the backend review by @vladenisov in #173
  • The events domain: batch 7 of the backend review by @vladenisov in #174
  • [analytics] Harden search and AI reliability by @vladenisov in #175
  • [analytics] Harden alert delivery and replay workflows by @vladenisov in #176
  • [analytics] Harden HTTP shell and authentication workflows by @vladenisov in #177
  • [analytics] Harden ops runtime and schema by @vladenisov in #178
  • [analytics] Fix project and data source batch 11 findings by @vladenisov in #179
  • [analytics] Fix scan and drift batch 12 findings by @vladenisov in #180
  • [analytics] Fix event generator and variables batch 13 findings by @vladenisov in #181
  • [analytics] Fix demo batch 16 findings by @vladenisov in #183
  • [analytics] Fix metrics pipeline and adapters batch 14 findings by @vladenisov in #182
  • [analytics] Fix activity and monitoring batch 17 findings by @vladenisov in #184
  • [analytics] Fix variables and data-source leftover issues by @vladenisov in #186
  • ci: speed up backend tests and run them in parallel by @vladenisov in #187
  • [analytics] Fix metrics read-path leftover issues by @vladenisov in #188
  • test: keep startup-override noise out of pytest output by @vladenisov in #189
  • chore(deps): bump the minor-and-patch group across 1 directory with 3 updates by @dependabot[bot] in #171
  • [analytics] Seed the demo platform variable and regenerate its embedding fixture by @vladenisov in #185
  • [analytics] Plan branches: origin ids for branch copies and merge-time races (batch 18) by @vladenisov in #212
  • [frontend] Test suite and infrastructure (batch 21) by @vladenisov in #213
  • [frontend] Cross-cutting foundations (batch 1) by @vladenisov in #214
  • [frontend] Events catalog: list, filters, bulk actions and table (batch 2) by @vladenisov in #215
  • [frontend] Metrics: metric form and definition correctness (batch 3) by @vladenisov in #216
  • [frontend] Data: scans form, detail and list (batch 4) by @vladenisov in #217
  • [frontend] App shell: bundle, loading and data layer (batch 5) by @vladenisov in #218
  • [frontend] App shell: auth, branch context, navigation and mobile shell (batch 6) by @vladenisov in #219
  • [frontend] Monitoring: detail page (batch 7) by @vladenisov in #220
  • chore(deps): bump the minor-and-patch group across 1 directory with 18 updates by @dependabot[bot] in #172
  • [frontend+backend] fj5g leftovers, 0zpq.371 and frontend review batches 14/15/19 by @vladenisov in #224
  • [frontend] noUncheckedIndexedAccess and shared query-key builders (fj5g.16) by @vladenisov in #225
  • [frontend+ci] pnpm/setup in CI and three small fj5g leftovers by @vladenisov in #226
  • chore(deps): bump the minor-and-patch group across 1 directory with 4 updates by @dependabot[bot] in #222
  • chore(deps): bump astral-sh/setup-uv from 10.1.0 to 10.2.0 in the minor-and-patch group by @dependabot[bot] in #221
  • chore(deps-dev): bump vitest from 4.1.11 to 5.0.1 in /frontend by @dependabot[bot] in #223
  • [frontend+backend] Frontend review batches 8, 11, 12, 13 (#197 #200 #201 #202) by @vladenisov in #227
  • [frontend+backend] Frontend review batches 16, 10, 18, 20 (#205 #199 #207 #209) by @vladenisov in #228
  • [frontend] Design-system batches 9 and 17 (#198 #206) by @vladenisov in #229
  • [frontend] Oxlint as the primary linter, TypeScript 7 for type checking by @vladenisov in #230
  • docs(design-sync): record the 2026-09-25 re-sync by @vladenisov in #234
  • [frontend][design] Design & UX review batches 1-4: tokens, controls, scaffolding, forms (#232 #233 #235 #236) by @vladenisov in #275
  • [frontend+backend][design] Design & UX review batches 5-12 (#237-#244) by @vladenisov in #276
  • [frontend+backend][design] Design & UX review batches 13-20 (#245-#252) by @vladenisov in #277
  • feat: add tripl ECC bundle by @ECC-Tools[bot] in #15
  • [frontend+backend] Design review follow-ups, signal triage, canonical routes, oxlint-only lint, coverage gate by @vladenisov in #278
  • [frontend+backend] Plan branches: Update from main and all-entity conflicts (PL-8) by @vladenisov in #279
  • [frontend+backend] Design review follow-ups: event combobox, go-to shortcuts, baseline band, three-way split by @vladenisov in #280
  • [backend] Share the auth rate-limit buckets across workers through Redis by @vladenisov in #281
  • [frontend+backend+cli] Automatic release annotations and CI deploy markers (F03, #256) by @vladenisov in #282
  • [frontend+backend] Source freshness: late/overdue scans, held drop signals, freshness alerts (F16, #269) by @vladenisov in #283
  • [backend] Fix time-dependent failures in test_metrics_tasks after the freshness hold by @vladenisov in #284
  • [frontend+backend] Per-project membership: non-members do not see a project (tripl-vefw) by @vladenisov in #285
  • [frontend+backend] Signal verdicts linked to incidents (F01, #254) by @vladenisov in #286
  • [frontend+backend] Why did it change? Attribution on every volume signal (F02, #255) by @vladenisov in #287
  • [frontend+backend] Dependency graph and impact analysis (F04, #257) by @vladenisov in #288
  • [frontend+backend] Enforce the event lifecycle (F05, #258) by @vladenisov in #289
  • [frontend+backend] Route alerts to event type owners (F07, #260) by @vladenisov in #290
  • [frontend+backend] Watch, @mentions and a notification center (F06, #259) by @vladenisov in #291
  • [backend+cli] tripl check: validate code and payloads against the plan (F08, #261) by @vladenisov in #292
  • [chore] Replace names of a real deployment with neutral placeholders by @vladenisov in #294
  • [backend+cli+frontend] JSON Schema export and typed tracking codegen (F09, #262) by @vladenisov in #293
  • [frontend+backend] Duplicate detection and naming lint (F12, #265) by @vladenisov in #295
  • [cli] Custom codegen templates can build any team's tracking shape (F09 follow-up) by @vladenisov in #296
  • [frontend+backend] Health score per event, event type and project (F15, #268) by @vladenisov in #297
  • [frontend+backend] AI incident summary with cited facts (F14, #267) by @vladenisov in #298
  • [frontend+backend] Project templates as a reviewable draft branch (F21, #274) by @vladenisov in #300
  • [backend] Organizations schema and default-org backfill (F20 PR1, #273) by @vladenisov in #301
  • [backend] Org-qualified project lookups and /orgs/{org} paths (F20 PR2, #273) by @vladenisov in #302
  • chore(deps): bump clickhouse-connect from 1.8.0 to 1.9.0 in /backend in the minor-and-patch group by @dependabot[bot] in #304
  • [backend] Key caches, realtime and plan locks by project id (F20 PR3, #273) by @vladenisov in #307
  • [frontend+backend+cli+mcp] Docs catalog of Markdown notes for people and agents (F22, #299) by @vladenisov in #303
  • [frontend+backend] Permission gates read organization roles (F20 PR4, #273) by @vladenisov in #309
  • [backend] Per-org uniqueness and the cross-org isolation suite (F20 PR5, #273) by @vladenisov in #310
  • [backend+cli] Organization management API and org-scoped invitations (F20 PR6, #273) by @vladenisov in #311
  • [frontend] /o/{org} addresses, org switcher and organization settings (F20 PR7, #273) by @vladenisov in #312
  • [backend] Server-built links name the organization (F20 PR8, #273) by @vladenisov in #313
  • [frontend+backend] Per-organization email, AI and row-limit settings (F20 PR9, #273) by @vladenisov in #314
  • [frontend+backend] Per-organization search embeddings and tracker defaults (F20 PR10+12, #273) by @vladenisov in #315
  • [frontend+backend] Per-organization photo storage (F20 PR11, #273) by @vladenisov in #316
  • [frontend+backend] Organization groups; bundle budget raised (F20, #273) by @vladenisov in #317
  • [frontend+backend] Email verification and hosted sign-up (F20 PR13, #273) by @vladenisov in #318
  • [frontend+backend] Platform admin console, org suspension, read-only step-in (F20 PR14, #273) by @vladenisov in #319
  • [frontend+backend] Organization default project role with per-project opt-out (F20 PR15, #273) by @vladenisov in #320
  • [frontend+backend] OIDC single sign-on with JIT, verified domains and SSO required (F20 PR16, #273) by @vladenisov in #321
  • [frontend+backend] SCIM 2.0 provisioning of users and groups (F20 PR17, #273) by @vladenisov in #322
  • [frontend+backend] Audit export and signed audit webhook (F20 PR18, #273) by @vladenisov in #324
  • [backend] F20 follow-ups: split app_settings_service, alert From policy, worker org wiring tests (#273) by @vladenisov in #323
  • [backend] Drop the legacy instance role (F20 cleanup, #273) by @vladenisov in #325
  • [frontend+backend] SAML 2.0 single sign-on (F20 PR19, #273) by @vladenisov in #326
  • refactor: badge and health score share one open-signal implementation (tripl-rybq) by @vladenisov in #327
  • [frontend+backend] Note visibility and sharing (F24 part 1, #308) by @vladenisov in #328
  • [frontend+backend] Reference autocomplete and new link kinds in notes (F24 part 2, #308) by @vladenisov in #329
  • [backend+frontend] Variables carry a JSON Schema fragment (F23.2, #306) by @vladenisov in #330
  • [backend+frontend] An event's property list: required + per-event values (F23.3, #306) by @vladenisov in #331
  • [backend] Scans infer the type of JSON-path variables (F23.4a, #306) by @vladenisov in #332
  • [backend] Events keep every JSON key their rows carried, with presence rates (F23.4.1, #306) by @vladenisov in #333
  • [backend+frontend] Property drift and a per-event required threshold (F23.5 + F23.4.5, #306) by @vladenisov in #334
  • [backend+cli+mcp] Export, codegen, tripl check, CLI and MCP read typed properties (F23.7, #306) by @vladenisov in #335
  • [frontend+backend+cli+docs] Variables are called Properties (F23.1, #306) by @vladenisov in #336
  • Claude/fervent gates t3y7t0 by @vladenisov in #337
  • test: make baseline shift fixture reliably exercise detection by @vladenisov in #338
  • chore(deps): update frontend packages and patch js-yaml by @dependabot[bot] in #305
  • chore: squash Alembic history into baseline by @vladenisov in #339
  • feat: drag notes and folders between folders in the docs tree by @vladenisov in #340
  • feat: AI translations of docs notes by @vladenisov in #341
  • docs: how-to guides and scripted screenshots by @vladenisov in #342
  • chore: drop agent tooling from git, publish to PyPI from tags only by @vladenisov in #343

New Contributors

Full Changelog: v0.2.1...v0.2.2