Skip to content

Changelog

Versioning policy

Piprio does not yet publish numbered release tags. Until it does, this log groups shipped features by calendar month, newest first. Each entry is one feature commit, shown with its short commit hash. Bug fixes, refactors, test-only changes, build changes, and documentation updates are left out, so this records new and changed capabilities rather than every commit.

May 2026

  • fe5be9db render response_field_eq post-conditions + first consumer
  • 094f124d wire db_state post-condition assertions + correct the corpus
  • e16a84e7 task_return_value post-condition kind for worker tests
  • 6a723e6e close teams.delete routing-rule conflict + artifacts.assign user_id
  • 9ff19aa8 value_gen runtime-value generators + registration.register
  • 18ded1b7 close auth/sso/saml_acs — signed SAML payload + redirect renderer
  • f35ba8b9 close email_change.confirm — final auth token-chain handler
  • b12758ca close invitations.accept + invitations.preview catalogs
  • 20945477 add password_reset_token fixture + confirm_reset catalog
  • 7748d1cf cover extract_realtime valid_happy + invalid cases
  • 08d4557f cover get_artifact_content via artifact_with_file fixture
  • a2ad8c0a cover resolve_alert valid_happy via connector_alert fixture
  • 7646b122 close B2 at 30/30 — add run_crawl_job worker catalog
  • 7c653876 support bind=True celery workers + deliver_webhook catalog
  • be8b289f A1c — re-enable celery side-effect on accept catalogs
  • 81324294 B2e — 8 LLM + HTTP worker catalogs
  • bb043151 B2d — 3 MinIO worker catalogs + str-coerce value_refs in worker tests
  • 496eba43 B2c — 6 CHAIN/SCHEDULER worker catalogs + recorded_celery_calls in worker tests
  • 4dd4eeb8 B2b — 4 PURE-DATA worker catalogs (review + recommendations + feedback)
  • 7efca243 B2a — 5 PURE-DATA worker catalogs (billing + quality + review SLA)
  • 203b1583 add celery_worker catalog kind + reset_stuck_jobs demo
  • 535d8d02 assert validate_manual_tag_set dispatch on tag_sets.update
  • b05867a5 cover connectors.trigger_crawl + fix recorder for .delay-positional shape
  • ec124f25 assert PDF render dispatch on admin.generate_invoice
  • dba44281 cover scheduled_exports.run (POST exports/scheduled/{id}/run)
  • 43828b22 assert celery dispatch on feedback.import_csv_predictions
  • 5ea92374 cover create_tag_set (POST artifacts/{id}/tag-sets)
  • c4ca5d44 wire celery_task_enqueued side-effect assertions + test_webhook catalog
  • 6a2bb85b emit json={} for body-less happy substitution
  • b7c43ecc add multipart/form-data renderer support + 202-status
  • 64d823ca add PATCH /teams/{id}/members/{user_id} catalog + fixture
  • d0b66343 add cross_field_cases for model_validator coverage
  • 72e70364 support zero-input requires_superuser happy tests
  • 8ef854e8 add requires_superuser catalog flag; close dlq_replay L2
  • 3c2101d3 wipe orphaned invoice PDFs on three-tier reseed
  • eaaf94bc performed_by ON DELETE SET NULL + email snapshot
  • 7cd2b1de wipe seed-managed test-artifacts subdirs before reseed
  • 70517aa1 extract-realtime success spec via real-file connector
  • a39eb6bf launch test-mode Celery worker via globalSetup
  • 2028ff79 mock LLM client when APP_ENV=playwright
  • 7e1bbbb2 cover flow #6 live-trigger half via bucket fixture
  • 00cdc2ef seed RoutingRuleSuggestion + cover flow #6 accept path
  • 654088f3 seed DriftAlert + cover flow #10 ack happy path
  • 02c7b37f add /schemas/new visual baseline + flip its axe gate to default
  • 046b6e5e visual-regression infra + baselines (darwin-local, L4 layer)
  • 9a60d14f axe-core accessibility harness + dashboard smoke check
  • 4f664278 migrate 5 legacy specs to test-mode infra + drop 2 obsolete
  • 0d8c4f5b seed all 6 roles + per-role storage states + role-access smoke
  • bbc395f4 playwright test-mode infrastructure on ports 8001/3100
  • 5869590b Phase 0 E2E test runner rails + smoke pilot
  • 26664dac semantic duplicate detection on artifact detail page
  • 03328566 out-of-distribution signal on AI proposals
  • a1154b7f 4-signal Smart Rules confidence scoring
  • 0126dd72 related-artifacts panel via embedding similarity
  • bffaa807 density toggle (Phase 1) — localStorage-backed user preference
  • 9b2134da per-org pricing-override editor
  • f1652925 extend DropdownMenu, add SegmentedControl, migrate Header.tsx
  • 882e905f add IconButton primitive and migrate icon-only call sites
  • c2210975 add SelectableCard primitive + migrate 10 sites
  • 602a2bb0 add /dev/components showcase page for UI primitives
  • 38c450c0 add Card / Label / Skeleton / Toast primitives + cn() utility
  • 9d402886 add expected_updated_at optimistic-locking precondition
  • 3c41f555 log danger-zone reseeds (Phase 5c-2)
  • e531b331 per-IP rate limit on /internal/* writes (Phase 5c-1)
  • a4311e48 admins management page + topbar session fix (Phase 5b-2)
  • 1bcc26cb admin management endpoints + create_admin --superuser (Phase 5b-1)
  • 31554f0a introduce internal_admins table (Phase 5a)
  • c170c466 Phase 2 — self-built admin control-plane Next.js app
  • 681b8767 Phase 1 admin control-plane migration
  • d7ab40a7 convert public CTAs to sales-led mailto/contact
  • 0d4a2594 pass-Lucide — migrate inline SVGs to lucide-react via iconProps()
  • 06ceedb4 retire body page headers, dedupe with top-bar title
  • 91c4d384 phase 2d — DataTable rowComponent + row-grouping; sub-batch 3 deferrals migrated
  • e761994d pass 3d — empty-states primitive + 10 migrations + icon-stroke drift fix + 2 deferrals
  • 87328720 pass 3c — chart palette retune + retirement + recentlyAssigned unwind
  • f77b539e pass 3b-4c — primitive + 4 callsite migrations + drift cleanup
  • 87e8091f pass 3b-4a Phase 2b sub-batch 3 — settings+dashboard+quality+developer family (10 of 12 tables) + retired
  • da8bd76b pass 3b-4a Phase 2b sub-batch 2 — review+exports+connectors family (10 tables)
  • 5943df54 pass 3b-4a Phase 2b sub-batch 1 — admin family (3 tables)
  • b4020698 pass 3b-4a Phase 2a — primitive + 5 representative migrations
  • 174f3ed5 pass 3b-3 — file-preview internal refactor + image renderer + state coverage
  • 4fbf4081 pass 3b-2 — primitive + 10-callsite migration + UX-bug fix
  • d6e81fca pass 3b-1b — sub-export + 7 wrapper migrations
  • db3b3c17 MetricTile chrome canon reversal — top-edge accent (Pattern A)
  • bef2f171 pass 3b-1a — primitive + 25-callsite canonical migration
  • 8f04ea2c pass 3a-5 — Checkbox/RadioGroup/StepIndicator primitives + form-control color canon
  • f28aaaa7 tone prop on Input + Textarea — closes !-important override pattern
  • 65ea9dae pass 3a-4-2 — bulk inline input + textarea + select migration
  • 519f126d pass 3a-4-1 — Input/Textarea/Select/Toggle primitives + inputCls migration
  • 9a467fee pass 3a-3 — Pill / RemovablePill / ChipButton primitives + 46 callsite migration
  • 6ec7b321 pass 3a-2-5 — closes Pass 3a-2 with success-solid + final cluster migration
  • 933bd6c9 pass 3a-2-4 — connectors + schemas + quality + onboarding Button migration
  • a2dabb39 pass 3a-2-3 — review + artifacts Button migration
  • d55dad4b pass 3a-2-2 — settings cluster Button migration
  • 76c325b2 pass 3a-2-1 — Button primitive + critical-path migration
  • 18bc3798 pass 3a-1 — Modal primitive + 25 callsite migration
  • 5fd3453e pass 2c — review-flow modals, pills, alias sweep
  • f7947127 pass 2b-4 — review + schemas + quality + onboarding clusters
  • 74de56dc pass 2b-3 — connectors + artifacts clusters
  • c5cc8b2d pass 2b-2b — settings remaining tabs (security, teams, routing, integrations)
  • 60932f5c pass 2b-2a — settings high-traffic tabs + exports list
  • d0ce27be pass 2b-1 — shared utils + page titles + dashboard
  • d22ad8a0 pass 2a — shell + auth + form input fix
  • df37db32 pass 1 — tokens, fonts, Tailwind wiring

April 2026

  • 78bde8af invoice histories with paid / open / overdue / cancelled states
  • 66062ffc three test orgs spanning Starter / Professional / Enterprise tiers
  • e3689137 remove Plan management section from Billing tab
  • a5aae3f4 per-org Enterprise pricing overrides on Organization model
  • 2264fd44 customer and admin invoice endpoints
  • 5aa697d7 admin billing page with invoice management actions
  • 099faf16 redesigned Billing tab with invoices list and billing details
  • f0999b0d Settings AI Provider page for Enterprise BYO LLM (PART E/8)
  • 3b4c2367 invoice generation Celery task with audit emission
  • c129b499 PDF invoice rendering via WeasyPrint and Jinja2
  • d3175449 test-connection endpoint for org LLM config (PART C/8)
  • 59f8f5db VAT calculation with German B2B reverse-charge
  • 01104594 per-org LLM config table with Enterprise gate and audit emission (PART B/8)
  • 97a0df29 German-compliant invoice numbering with cancellation invoices
  • bdac8ecd add Invoice model and billing-address fields on Organization
  • 2ae7d44e add per-org LLM provider selector for BYO LLM (PART A/8)
  • ff3b1689 optimistic locking on routing rule updates and reorder
  • 72b8d780 optimistic locking on schema field updates
  • a217f792 add optimistic-locking precondition dependency
  • a7679e64 admin trigger endpoint for embedding backfill
  • 14348d52 populate artifact embedding via OpenAI on ingest
  • 2608a94e skipped-artifacts tile for org-level visibility
  • c718064a prominent skipped-artifacts count in crawl summary
  • acd2a485 surface file-size and file-type limits on connector setup form
  • f5a2cafa add BillingPeriod ORM model
  • 433b76d8 per-item deep-link from Action Feed assign CTA
  • 52215f46 emit audit event on delete_org
  • eda75086 extend Org Unassigned tab visibility to data stewards
  • 5b12cd06 render team-assignment events in action feed, remove yellow banner
  • 41d7c21b resolve team-assignment events when artifact is assigned to individual
  • 7ee43915 emit Action Feed event when artifact assigned to team without reviewer
  • d622779d UI for deactivation with warning, toggle, and history badge
  • 16595386 list filtering and is_active in detail response
  • a4589f9e service-level deactivation with dependency guard
  • edf938ae allow editing smart rule suggestions before approval
  • 722cc358 allow overriding suggestion values on accept
  • b50401b5 clarify scheduled-exports empty state for non-admin roles
  • d3df0755 split awaiting-review stats team-vs-individual
  • 5c54017b reviewer activity card with per-member breakdown
  • 859ac012 per-member stats endpoint returns queue and acceptance rate
  • 3d7b36e9 add TeamLeadDashboard for team-lead role combinations
  • aa5e829e migrate demo-org senior_reviewer users to match test-org split
  • 406780c0 warn when senior reviewer has no team assignment
  • 11cabcc2 disable demote/remove on irreplaceable team lead
  • d72cefee add demote-to-member action on team detail
  • 7e0c36a9 apply role map to remaining endpoints
  • d5dbd452 apply role map to quality endpoints
  • f09fbd33 apply role map to tag set and artifact endpoints
  • 5cebd287 apply data_steward authority to connector operational endpoints
  • 310ed68a pair data_steward with 'Data Steward' UI label and align route gates
  • 525f6127 apply data_steward/senior_reviewer to remaining mapped endpoints
  • 209f4610 grant senior_reviewer routing rule CRUD
  • 25697651 grant data_steward schema and connector CRUD
  • a4166baf migrate schema_designer memberships to data_steward
  • 12e9dc3d add data_steward and senior_reviewer enum values
  • d81866ac seed test users and memberships on reset
  • 443662c9 gate /exports/new at layout level for non-authoring roles
  • deca072a review queue list UX — schema column, ai-proposed signal, age rename, empty badge
  • 3f757719 real files for demo artifacts with content-aligned tags
  • b3c3c3ad demo seed data + /quality/latest live fallback
  • e3badbb2 sortable columns (Phase 3) — remaining tables + deferred column backfill + shared cursor helper
  • b2357bdc sortable columns (Phase 2) — Review Queue, Export Jobs, Members
  • eeb3ba32 sortable columns (Phase 1) — Review unassigned, Artifacts, Ingestion Jobs
  • e8abe799 split action feed from recent activity
  • 8662caee full test data load button on Developer page
  • 37e3426a implement Reset DB on Developer page — one-click full reseed
  • 01d33aad dev tools — reset notifications endpoint and Developer page UI
  • b2e87fd8 action feed — event-driven notification cards on dashboard
  • 5a24604f global command palette (⌘K) for navigation and actions
  • 8001e490 public marketing homepage with hero, feature sections, and CTA
  • 6102e25d add live review queue count badge to sidebar nav
  • 0da4464b i18n — wire schema field editor modals (AddFieldModal, EditFieldModal)
  • 082a5212 i18n — wire missing translation keys for new UI components
  • 89492cda OpenAPI spec export and TypeScript client generation
  • 63990617 default field values — schema editor, tag set pre-fill, AI conflict flag
  • f1b05269 schema selector in Artifacts filter sidebar
  • 9cb052f9 tag field value filter in Artifacts page sidebar
  • eae6a6c7 filter artifacts by tag field value for drift alert flow
  • a02a5ce6 Developer API documentation page
  • 272051ef drift alert View Artifacts filter and context banner
  • 0b47d145 change brand color from amber to indigo
  • c1491234 consolidate drift monitoring into single full-width card
  • db0da2a3 remove Active Alerts panel from dashboard
  • 8cdfda80 API keys UI in Settings → Integrations
  • 4a6b916d IRA condensed layout, disagreement report download, remove IRA section from dashboard
  • a79194b8 dashboard card qualitative calibration status, clickable cards with deep links
  • 42def369 inject field correction examples into AI tagging prompt for continuous improvement
  • a085343a override-adjusted confidence scores with field-level calibration tracking
  • 65684edd STL 3D preview via Three.js, DXF 2D preview via SVG
  • 63b9f42c IRA sampling control on Quality page, apply to unassigned queue
  • 23369be9 IRA automatic sampling - configurable rate, dual assignment, sampling flag on tag sets
  • 96ed7b6f XLSX preview in review page via SheetJS
  • 04402efd PDF preview in review page via iframe blob URL
  • a6abed38 add test artifacts for all file types (log, xml, txt, pdf, xlsx) and CAD files (step, stl, dxf)
  • 9e572dd3 artifact preview visual polish - file viewer frame, JSON syntax highlighting, CSV table styling
  • 80961f7c artifact content preview in review page - CSV table, JSON, log rendering
  • 011018f9 quality page improvements - drift monitoring status, IRA empty state, rename calibration tab, action items
  • ffdae65e seed_tag_data.py - realistic tagged artifact data for quality metric testing
  • 9d13f148 review detail auto-advance after accept/reject, humanize enum display values
  • 52b57be3 team deletion when empty, block if routing rules reference team
  • cefa2e0a rename schema_designer to Data Steward in UI, explicit team lead assignment in Teams settings
  • 50a58c8d teams page shows unassigned members section
  • 43513756 members page - humanize role labels, populate teams column, add role explainer
  • dba498f7 quality page redesign - three-section analytics hub for drift, IRR, and confidence calibration
  • b4c5a73d replace confidence badge with AI tag coverage %, add no-proposals notice on review detail
  • 9dba9897 connector schema binding flow - auto-scan warning, optional binding on create, helper text, remove placeholder
  • 03efde1d schema_designer crawl permissions, add reviewer3/4/5 and designer seed accounts
  • 8a75255a smart review queue empty states - four scenarios based on setup and assignment status
  • 63796d57 build accept-invite page for email invitation flow
  • ca69beeb pending invitations list and revoke in settings/members and admin panel
  • a3ca701e wire up email sending via Mailhog for local dev, password reset and invite emails
  • eea14fa8 admin billing controls - plan management, trial extension, usage summary in admin panel
  • e8fc23da add auto-scan toggle to onboarding connector step, defaulted on
  • 1b8796ca platform admin panel - org/user management, superuser role, admin UI
  • 4bc99937 complete Piprio platform - Phase 1-4 + security audit
  • e00049ca add auto-scan toggle to AddConnectorModal, update edit modal labels
  • d28da471 add large scan notification banners
  • 698b0eb7 add scan progress bar and status badges to ConnectorCard
  • b28f2032 add i18n keys for AI scan progress UI
  • d3c41ad1 add getScanProgress API function and auto_scan_after_crawl to CreateConnectorRequest
  • 14ef152a add select-all-across-pages banner
  • 6914831a add bulk assign action bar with person/team dropdowns
  • b3853e0d add filter chips to unassigned tab
  • 49effdc8 add BulkAssignModal confirmation component
  • 14e66a2f add i18n keys for mass assignment UI
  • 00b88bdb add bulk-assign API functions to frontend