Commit Graph

  • 9e595503b7 docs(spec): SP24 — align docs and decisions with the auth work in main Tyler 2026-06-23 14:27:56 -06:00
  • 1148a03a43 docs(architecture): add top-level technical design doc Tyler 2026-06-23 11:50:12 -06:00
  • cad104a38c docs(requirements): add top-level requirements + DoD Tyler 2026-06-23 11:02:03 -06:00
  • 0c81968d0c fix(permissions+seed): add /api/reconciliation routes and shape billing_provider.address as dict Nora 2026-06-22 17:54:39 -06:00
  • add6e982a4 Populate receivedAmount from matched Remittance.total_paid Nora 2026-06-22 17:46:47 -06:00
  • 414d2eb722 Add cyclone seed CLI subcommand for dev DB population Nora 2026-06-22 17:30:39 -06:00
  • 7e4bb4d2c8 Wire Dashboard to live API hooks Nora 2026-06-22 17:20:48 -06:00
  • fb913f0617 fix(ui): Dashboard greeting uses live operator; api.isConfigured proxies through Nora 2026-06-22 17:05:27 -06:00
  • 39ae988101 fix(auth): bootstrap init_db on fresh DB; permissions matrix for inbox endpoints Nora 2026-06-22 17:00:30 -06:00
  • e2d4a595a4 fix(api): use request.app.state in inbox endpoints; preserve dict HTTPException detail Nora 2026-06-22 16:55:55 -06:00
  • 81bcb1c1ef fix(db): renumber auth migrations to come after SP14/12-backups Nora 2026-06-22 16:06:54 -06:00
  • 8fc3d9adda test(auth): add test_existing_endpoints_require_auth + per-test AUTH_DISABLED flips Nora 2026-06-22 15:59:08 -06:00
  • 35e0f5a422 feat(auth): disable write affordances for viewer role Nora 2026-06-22 15:54:38 -06:00
  • a25504bd3a fix(auth): ungate auth_router so login is public Nora 2026-06-22 15:41:52 -06:00
  • 70280f70bb feat(auth): gate existing endpoints with matrix_gate (router-level + per-endpoint) Nora 2026-06-22 15:40:00 -06:00
  • a933672411 docs: auth section + env vars Nora 2026-06-22 15:22:07 -06:00
  • ca40fd72c3 feat(docker): CYCLONE_ADMIN_* env vars for backend Nora 2026-06-22 15:21:55 -06:00
  • 4402a993d1 feat(auth): sidebar shows current user + logout button Nora 2026-06-22 15:17:35 -06:00
  • cb87456575 feat(auth): wire AuthProvider + RequireAuth into app shell Nora 2026-06-22 15:16:52 -06:00
  • 3d0c7766f0 feat(auth): RequireAuth route guard Nora 2026-06-22 15:12:43 -06:00
  • e76b514872 feat(auth): /login page Nora 2026-06-22 15:12:31 -06:00
  • 5bb9588f09 feat(auth): RoleGate component Nora 2026-06-22 15:12:05 -06:00
  • d895854dcc feat(auth): AuthProvider context + useAuth hook Nora 2026-06-22 15:11:02 -06:00
  • 55a298f05f feat(auth): fetch wrapper with 401 redirect + authApi Nora 2026-06-22 15:09:49 -06:00
  • 0aea0f64ac feat(types): add User type Nora 2026-06-22 15:09:10 -06:00
  • 6c80bf0512 feat(auth): CLI users subcommand Nora 2026-06-22 15:01:35 -06:00
  • 9c57b493a7 feat(audit): record user_id on log events Nora 2026-06-22 14:58:01 -06:00
  • 609499543e test(auth): login rate limit Nora 2026-06-22 14:53:16 -06:00
  • 768f7c6247 feat(auth): bootstrap first admin from env vars Nora 2026-06-22 14:52:51 -06:00
  • 86b635104c feat(auth): get_current_user + login/logout/me + admin user management Nora 2026-06-22 14:36:57 -06:00
  • e158871a9a feat(auth): sessions module + permissions matrix + rate limiter Nora 2026-06-22 14:33:20 -06:00
  • 1ca50e2bc0 test(auth): tighten duplicate-username test + add update_password test Nora 2026-06-22 14:24:55 -06:00
  • 74d7056284 feat(auth): users module with bcrypt hashing + CRUD Nora 2026-06-22 14:19:29 -06:00
  • 0ba91040f1 feat(migration): 0010 users + sessions, 0011 audit_log.user_id Nora 2026-06-22 14:14:47 -06:00
  • dc83d7bef2 feat(db): add User and Session models Nora 2026-06-22 14:13:30 -06:00
  • 9d4798a124 feat(deps): add passlib[bcrypt] for password hashing Nora 2026-06-22 14:12:14 -06:00
  • d552d3d3ec docs(plan): auth implementation plan — 29 tasks, ~40 files Nora 2026-06-22 14:05:39 -06:00
  • 42a826cb73 docs(spec): auth (admin/user/viewer) design — sessions, RBAC, login flow Nora 2026-06-22 13:57:10 -06:00
  • 05b43078b9 chore(deps): consolidate dev deps into [project.optional-dependencies] dev Tyler 2026-06-22 11:44:39 -06:00
  • 7c1be58860 chore(deps): add cryptography dep, pytest-randomly dev dep Tyler 2026-06-22 11:43:32 -06:00
  • 9bca4b608a feat(release): v0.2.0 — batch 837 export, ClaimCard, theme tokens v0.2.0 Tyler 2026-06-22 11:01:58 -06:00
  • 35298907bc docs(spec): add Ubuntu Docker deployment design cyclone 2026-06-22 10:43:26 -06:00
  • 22720168c4 test(claims): wrap page in DrillStackProvider, switch to DrillDrawerHeader testids sp21-complete Tyler 2026-06-21 18:08:43 -06:00
  • 1c0d855b8e refactor(claim-drawer): mount on shared DrillDrawerHeader shell Tyler 2026-06-21 18:01:07 -06:00
  • 8db5db7610 feat(claim-drawer): validation rule opens peek with rule catalog Tyler 2026-06-21 17:58:36 -06:00
  • 786ead8c94 feat(claim-drawer): payer name opens PeekModal on top of drawer Tyler 2026-06-21 17:53:43 -06:00
  • 6c773c1159 feat(upload): streamed claim cards offer drill to persisted entity Tyler 2026-06-21 17:48:41 -06:00
  • 5c7e9b6168 feat(batch-diff): claim ids drillable to /claims?claim=ID Tyler 2026-06-21 17:43:52 -06:00
  • ac87ed4908 feat(reconciliation): card body drillable, select button split Tyler 2026-06-21 17:41:58 -06:00
  • 4a8ce1a524 feat(inbox): rejected + payer_rejected + done_today rows drillable Tyler 2026-06-21 17:32:09 -06:00
  • 5053a1ea8e feat(acks): row click opens AckDrawer Tyler 2026-06-21 17:28:22 -06:00
  • 33fa899217 feat(drill): AckDrawer with header + segment status list Tyler 2026-06-21 17:26:03 -06:00
  • 6fdbceefc2 feat(drill): useAckDrawerUrlState — ?ack= URL sync Tyler 2026-06-21 17:24:23 -06:00
  • 7290cac643 plan+spec: add migration 0014 to relax PKs; renumber plan Task 1.3 -> 1.4 Tyler 2026-06-21 18:09:06 -06:00
  • 5e8c7b11ea plan: parse-decide workflow implementation for 837/835 upload dedup Tyler 2026-06-21 17:53:21 -06:00
  • 9c0cec8f0c spec: parse-then-decide workflow for 837/835 upload dedup Tyler 2026-06-21 17:47:03 -06:00
  • 9a313d2c1b feat(activity): remit_received events drill to RemitDrawer sp21-phase4 Tyler 2026-06-21 17:16:33 -06:00
  • 2eb61f16ff feat(reconciliation): candidate rows drill to RemitDrawer or ClaimDrawer Tyler 2026-06-21 17:15:09 -06:00
  • 12c2913ba1 feat(batchdiff): remit rows drill to RemitDrawer Tyler 2026-06-21 17:07:38 -06:00
  • 54440da2cd feat(inbox): candidates + unmatched rows drill to RemitDrawer or ClaimDrawer Tyler 2026-06-21 17:05:11 -06:00
  • 7427838292 feat(remits): row click opens RemitDrawer (replaces inline CAS expand) Tyler 2026-06-21 17:03:04 -06:00
  • b606e8c9a2 plan: drop claims UNIQUE + 409 UX implementation plan Tyler 2026-06-21 17:02:10 -06:00
  • ac709c07c3 spec: self-review fixes (explicit claim_id arg, defer_foreign_keys) Tyler 2026-06-21 16:58:50 -06:00
  • 08e83da91d feat(drill): ProviderDrawer — Claims + Activity tabs from extended /providers/{npi} Tyler 2026-06-21 16:54:50 -06:00
  • 3f672d5db3 spec: drop claims UNIQUE constraint + 409 UX sp21-phase3 Tyler 2026-06-21 16:54:07 -06:00
  • 65d98cf674 feat(dashboard): Recent activity events route to entity by kind sp21-phase2 Tyler 2026-06-21 16:27:56 -06:00
  • d15c04d983 feat(claims): provider cell drillable to /providers?provider=NPI Tyler 2026-06-21 15:21:46 -06:00
  • 980627b675 feat(providers): directory cards drillable — opens ProviderDrawer Tyler 2026-06-21 15:09:31 -06:00
  • 1db6b8841c fix(drill): ProviderDrawer quality pass — error branching, demo fallback, flex layout Tyler 2026-06-21 14:57:59 -06:00
  • 0678e25de7 feat(drill): ProviderDrawer with Overview tab + DrillDrawerHeader shell Tyler 2026-06-21 14:40:08 -06:00
  • 5b3b8619e6 feat(drill): useProviderDrawerUrlState — provider drawer URL state (mirrors remit hook) Tyler 2026-06-21 14:32:22 -06:00
  • b6607b2009 feat(api): harden CORS and surface 500/409 errors with proper CORS headers Tyler 2026-06-21 16:29:59 -06:00
  • c0b7924aad docs(sp22): drop speculative uv.lock note from deviations Tyler 2026-06-21 16:28:24 -06:00
  • ebd2834cc4 docs(sp22): backfill plan with 10 as-built deviations Tyler 2026-06-21 16:28:07 -06:00
  • 888c99d848 docs: cross-link to cyclone-pipeline sibling project Tyler 2026-06-21 16:12:10 -06:00
  • 388ea6e49b Refine Batch Diff page with hybrid dark/paper treatment Cyclone UI 2026-06-21 14:37:36 -06:00
  • 736bf4d333 Refine Batches page with hybrid dark/paper treatment Cyclone UI 2026-06-21 14:34:26 -06:00
  • 7db5e448cd feat(dashboard): Recent denials row drillable to /claims?claim=ID sp21-phase1 Tyler 2026-06-21 14:19:39 -06:00
  • 5d6b5894f3 feat(dashboard): Top providers row drillable to /providers?provider=NPI Tyler 2026-06-21 14:06:29 -06:00
  • 88da3a6246 feat(dashboard): KPI tiles drillable — navigate to /claims with filter Tyler 2026-06-21 13:20:16 -06:00
  • 50dc0b2fb3 feat(drill): PayerPeekContent + usePayerSummary + api.getPayerSummary Tyler 2026-06-21 13:05:38 -06:00
  • e6ae364dad feat(api): extend /api/config/providers/{npi} with recent_claims + recent_activity Tyler 2026-06-21 12:46:42 -06:00
  • 50a454db59 feat(api): GET /api/payers/{payer_id}/summary with 60s cache + pubsub invalidation Tyler 2026-06-21 12:23:19 -06:00
  • 9129543f5d feat(drill): hover affordance CSS + App wrapped in DrillStackProvider Tyler 2026-06-21 11:57:45 -06:00
  • fb7a5c6d2e feat(drill): PeekModal — centered Radix Dialog with eyebrow + title Tyler 2026-06-21 11:52:39 -06:00
  • 7dd6a5d025 feat(drill): DrillableCell — hover-reveal button wrapper Tyler 2026-06-21 11:47:05 -06:00
  • be93dbff72 feat(drill): DrillStackProvider — zustand-backed peek stack with 2-level cap Tyler 2026-06-21 11:38:02 -06:00
  • feb15bf48d Refine Acks page with hybrid dark/paper treatment Cyclone UI 2026-06-21 14:27:16 -06:00
  • ff0985d244 Refine Inbox with editorial hero and paper-toned queue ledger Tyler 2026-06-21 14:15:25 -06:00
  • 94990932f9 Refine Reconciliation page with hybrid dark/paper treatment Tyler 2026-06-21 14:05:05 -06:00
  • 9133baa070 plan(SP22): Task 7 — replace assert with RuntimeError in list_*_acks methods Tyler 2026-06-21 13:56:14 -06:00
  • d0a18bd796 Refine Upload page with hybrid dark/paper treatment Tyler 2026-06-21 13:55:22 -06:00
  • 646d00adde plan(SP22): Task 6 — apply Task 4/5 fixes (4xx terminal, RuntimeError, retry logging) preemptively Tyler 2026-06-21 13:51:42 -06:00
  • f6f821e082 plan(SP22): Task 5 — add test_parse_837_does_not_retry_on_5xx to spec (locks in dedup-safety contract) Tyler 2026-06-21 13:50:51 -06:00
  • 3e00fb3f63 plan(SP22): Task 5 — apply Task 4 fixes (4xx terminal, RuntimeError) to list_claims and parse_837 Tyler 2026-06-21 13:43:37 -06:00
  • 2faf7bfd48 plan(SP22): Task 4 — distinguish 4xx (terminal) from 5xx (retry) + drop dead BACKOFF_S[2] Tyler 2026-06-21 13:43:01 -06:00
  • 73be586110 plan(SP22): Task 4 review fix — client() fixture must enter async context Tyler 2026-06-21 13:37:55 -06:00
  • d7f37f845a plan(SP22): Task 3 — add add_logger_name to shared_processors so JSON includes the logger name (matches docstring contract) Tyler 2026-06-21 13:31:49 -06:00
  • df10b55a34 plan(SP22): Task 3 review fix — get_logger returns BoundLoggerLazyProxy, not BoundLogger Tyler 2026-06-21 13:26:59 -06:00
  • 6300280142 plan(SP22): Task 1 review fixes — conftest fixture bug + Python 3.13 note Tyler 2026-06-21 13:13:01 -06:00