Recently shipped work and fixes, sourced from merged pull requests.
Shipped
Shipped
Add Tech Updates Control Center
Adds a staff-only Django Admin Tech Updates Control Center.
- Lets staff discover organization repositories from the browser, inactive by default.
- Adds bulk repository activation/deactivation and a sync action for active repositories.
- Adds browser creation of release-note drafts for one repository or System and a date range.
- Reuses existing GitHub discovery, updates sync, and deterministic release-note services.
SNH Index ·
snh-index · Sep 1, 2026
View pull request
Shipped
Shipped
Add a bulk CRM push for events that have never been synced
Add a bulk CRM push for events that have never been synced
TX B2B ·
tx-b2b-do-app · Sep 1, 2026
View pull request
Shipped
Shipped
Stop droplet deploys from hanging when compose run steals SSH stdin
Stop droplet deploys from hanging when compose run steals SSH stdin
TX B2B ·
tx-b2b-do-app · Sep 1, 2026
View pull request
Shipped
Shipped
feat(layout): implement smooth scrolling to top for active account li…
feat(layout): implement smooth scrolling to top for active account li…
HCP Portal ·
tx-hcp · Sep 1, 2026
View pull request
Shipped
Shipped
Run the full PR test suite on every non-draft pull request
Run the full PR test suite on every non-draft pull request
TX B2B ·
tx-b2b-do-app · Sep 1, 2026
View pull request
Shipped
Shipped
Turn event portfolio into a practitioner-funnel ranking
Turn event portfolio into a practitioner-funnel ranking
TX B2B ·
tx-b2b-do-app · Sep 1, 2026
View pull request
Shipped
Shipped
fix(analytics): show practitioner link source
fix(analytics): show practitioner link source
TX B2B ·
tx-b2b-do-app · Aug 31, 2026
View pull request
Shipped
Shipped
gm/feat: add n8n practitioner id side effect
Adds durable B2B → Odoo Practitioner identity mapping when an Odoo CRM lead reaches an approved stage.
- Resolves a Practitioner only from stable Shopify customer evidence; email never establishes identity.
- Creates an immutable, idempotent mapping delivery and sends it post-commit through Hatchet.
- Signs the exact stored JSON body with HMAC and handles delivered, review-required, retryable, and terminal outcomes.
- Normalizes webhook lead aliases (`odoo_lead_id`, `id`, `_id`) and preserves existing manual-link behavior.
- Adds admin visibility, configuration, tests, documentation, and synced/archived OpenSpec artifacts.
TX B2B ·
tx-b2b-do-app · Aug 31, 2026
View pull request
Shipped
Shipped
Import LeadUpload in the long-header upload regression test
Import LeadUpload in the long-header upload regression test
TX B2B ·
tx-b2b-do-app · Aug 31, 2026
View pull request
Shipped
Shipped
Rename the EventCrmPush index to Django's autogenerated name
Rename the EventCrmPush index to Django's autogenerated name
TX B2B ·
tx-b2b-do-app · Aug 31, 2026
View pull request
Shipped
Shipped
Show event portfolio stats, keep CSV leads local, and make attributed ROAS usable
Show event portfolio stats, keep CSV leads local, and make attributed ROAS usable
TX B2B ·
tx-b2b-do-app · Aug 31, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 31, 2026
View pull request
Shipped
Shipped
Verify merge candidates and split Commerce Reporting date ranges
Verify merge candidates and split Commerce Reporting date ranges
TX B2B ·
tx-b2b-do-app · Aug 29, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 28, 2026
View pull request
Shipped
Shipped
fix(observability): avoid duplicate dashboard captures
Prevent the practitioner dashboard server loader from emitting a second Sentry event for a BFF failure that was already captured at the proxy boundary.
HCP Portal ·
tx-hcp · Aug 28, 2026
View pull request
Shipped
Shipped
Give events a dedicated detail page with unique leads and HCP chrome
Give events a dedicated detail page with unique leads and HCP chrome
TX B2B ·
tx-b2b-do-app · Aug 28, 2026
View pull request
Shipped
Shipped
Improve Exception Payout Requests filtering and loading
Improve Exception Payout Requests filtering and loading
TX B2B ·
tx-b2b-do-app · Aug 28, 2026
View pull request
Shipped
Shipped
Improve payout exception recovery and patient sales run controls
Improve payout exception recovery and patient sales run controls
TX B2B ·
tx-b2b-do-app · Aug 28, 2026
View pull request
Shipped
Shipped
Show lead-upload results and add entered_by migration
Follow-up to #40: after a lead CSV/XLSX import, operators see generated, attributed, pending-review, duplicate, and rejected counts (flash message and latest import on the event page).
- Adds `analytics/migrations/0015_alter_eventspendline_entered_by.py`, which depends on `0014_eventspendline_samples_category` already on `main`. This records `EventSpendLine.entered_by` as `blank=True` (state-only; no column change). `0014` is not duplicated.
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
Handle projection conflicts and sales-sync contention
Handle projection conflicts and sales-sync contention
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
Complete event operations and make lead uploads durable
Completes event detail operations: spend (including Samples), activity, media, retrospective, delete, and lead profile links (Shopify, Practitioner, Odoo), with events defaulting to all-time.
- Makes lead CSV uploads durable: reconcile existing practitioner contacts instead of failing the whole file on identity conflict, and retry the same event+file instead of rejecting on sha256 uniqueness.
- Adds leads-directory search and event filter, rebased onto latest `main` (applications, media-links, and migration `0013` from vanity short links).
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
Improve Finance payout exception and practitioner tools
Improve Finance payout exception and practitioner tools
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
fix(catalog): position new badge on product image
fix(catalog): position new badge on product image
HCP Portal ·
tx-hcp · Aug 27, 2026
View pull request
Shipped
Shipped
Cache payout exception authorization roles
Cache payout exception authorization roles
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
Add finance payout exception management
Add finance payout exception management
TX B2B ·
tx-b2b-do-app · Aug 27, 2026
View pull request
Shipped
Shipped
feat(catalog): badge new Tro+ Blue pack
feat(catalog): badge new Tro+ Blue pack
HCP Portal ·
tx-hcp · Aug 26, 2026
View pull request
Shipped
Shipped
Fix event lead CRM timestamps and nameless delivery
Event lead uploads now record engagement `occurred_at` as the event start time, not the upload/row-created time, so CRM activity matches when the event actually happened.
- CRM delivery no longer rejects leads that have email or mobile but no first/last name. Those payloads send `contact_name: null` instead of aborting the whole event push.
TX B2B ·
tx-b2b-do-app · Aug 26, 2026
View pull request
Shipped
Shipped
fix(catalog): hide 15-troche patient variant
fix(catalog): hide 15-troche patient variant
HCP Portal ·
tx-hcp · Aug 26, 2026
View pull request
Shipped
Shipped
refactor(download): disallow Google Drive files in download route and…
refactor(download): disallow Google Drive files in download route and…
HCP Portal ·
tx-hcp · Aug 26, 2026
View pull request
Shipped
Shipped
feat(download): allow Google Drive files in download route and add co…
feat(download): allow Google Drive files in download route and add co…
HCP Portal ·
tx-hcp · Aug 26, 2026
View pull request
Shipped
Shipped
Add campaign vanity short links for branded media URLs
Add campaign vanity short links for branded media URLs
TX B2B ·
tx-b2b-do-app · Aug 25, 2026
View pull request
Shipped
Shipped
Update Symposium 2026 schedule: adjust times, normalize durations, add Day 1 Q&A
Update Symposium 2026 schedule: adjust times, normalize durations, add Day 1 Q&A
HH Shopify ·
snh-homehope-headless · Aug 25, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 25, 2026
View pull request
Shipped
Shipped
Restore commerce reporting compatibility
Restore commerce reporting compatibility
TX B2B ·
tx-b2b-do-app · Aug 25, 2026
View pull request
Shipped
Shipped
Harden wholesale application bot-risk grading
Fetch websites stored without a scheme as `https://clinic.com` instead of recording `MissingSchema` as unreachable.
- Use the linked practitioner name for NPI lookup when the application first/last name is blank.
- Let reviewers filter Applications by whether an account exists, and list other applications that share the same phone number.
TX B2B ·
tx-b2b-do-app · Aug 25, 2026
View pull request
Shipped
Shipped
Add Client Order sales projection and Commerce Reporting
Add Client Order sales projection and Commerce Reporting
TX B2B ·
tx-b2b-do-app · Aug 25, 2026
View pull request
Shipped
Shipped
gm/feat: add FAQ search
Add role-scoped FAQ search with accessible results and zero-result recovery
- Track aggregate search outcomes and FAQ-card CTA clicks without raw queries or URLs
- Sync and archive the FAQ search OpenSpec change
HCP Portal ·
tx-hcp · Aug 24, 2026
View pull request
Shipped
Shipped
gm/feat(routes): migrate client paths to patient (#422)
gm/feat(routes): migrate client paths to patient (#422)
HCP Portal ·
tx-hcp · Aug 24, 2026
View pull request
Shipped
Shipped
gm/feat(routes): migrate client paths to patient
gm/feat(routes): migrate client paths to patient
HCP Portal ·
tx-hcp · Aug 24, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
feat(analytics): enable heatmaps in PostHog configuration and update …
feat(analytics): enable heatmaps in PostHog configuration and update …
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
Fix Hatchet dispatch for wholesale owner-tag reconciliation
Fix Hatchet dispatch for wholesale owner-tag reconciliation
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
Gm/feat faq page
Gm/feat faq page
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
Update Shopify GraphQL pull-order test fixture
add required fulfillment and nested-connection completion metadata to the pull-orders GraphQL fixture
- assert canonical Shopify order GID persistence instead of the retired legacy numeric identity
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
Map commerce summaries to the Odoo contract
translate internal commerce projection fields into Odoo's strict external summary schema only at the delivery boundary
- verify zero-order, first-order, correlated refresh, idempotent replay, identity-review, and out-of-order outcomes against external-shaped fixtures
- expose bounded outbox response diagnostics and flag correlated out-of-order refreshes for operator review
- merge the two already-landed wholesale migration branches so deploy migrations remain linear
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
Add Wholesale Reconciliation Dev Tools and owner-tag repair
Add Wholesale Reconciliation Dev Tools and owner-tag repair
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
Add wholesale application bot-risk verification in analytics
Score wholesale applications 0–100 for bot/junk risk (website, NPI, local heuristics) via a Hatchet job on intake, without auto-reject or CRM write-back.
- Add an Analytics Applications workspace with period summaries, average grade, a filterable list, per-row/detail reasoning, linked practitioner/retailer, and staff regrade.
- Link Analytics from the main operations dashboard so reviewers can open HCP Growth OS without typing the URL.
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
Fix lifecycle refresh callbacks and outbox status counting
allow `refresh_request_id` only for `account_data.refresh_requested` lifecycle payloads
- preserve signed refresh callback idempotency while creating the correlated commerce summary
- count all declared outbox statuses, including `terminal` and `operator_review`, without worker `KeyError`s
TX B2B ·
tx-b2b-do-app · Aug 21, 2026
View pull request
Shipped
Shipped
gm/feat: suppress transition banner for patients
gm/feat: suppress transition banner for patients
HCP Portal ·
tx-hcp · Aug 21, 2026
View pull request
Shipped
Shipped
Fix speaker name to Neil Grunberg on Conference 2026 page
Fix speaker name to Neil Grunberg on Conference 2026 page
HH Shopify ·
snh-homehope-headless · Aug 20, 2026
View pull request
Shipped
Shipped
fix(catalog): match Tro+ Blue 15 Pack variant
fix(catalog): match Tro+ Blue 15 Pack variant
HCP Portal ·
tx-hcp · Aug 20, 2026
View pull request
Shipped
Shipped
gm/feat: allow 15 pack variants (#413)
gm/feat: allow 15 pack variants (#413)
HCP Portal ·
tx-hcp · Aug 20, 2026
View pull request
Shipped
Shipped
Fix subscription-status tests blocking GitHub container builds
Use numeric Shopify customer IDs in the new subscription-status relationship tests so `normalize_shopify_customer_id` does not 403.
- Expect `has_active_practitioner_relationship` on the existing token-flow payload now that PR #20 added that field.
This is independent of the Spaces change. That merge already got past `/app/var`; these five tests were the remaining CI failures on `main`.
TX B2B ·
tx-b2b-do-app · Aug 20, 2026
View pull request
Shipped
Shipped
gm/feat: allow 15 pack variants
gm/feat: allow 15 pack variants
HCP Portal ·
tx-hcp · Aug 20, 2026
View pull request
Shipped
Shipped
Store analytics uploads on DigitalOcean Spaces and unblock non-root CI
Send analytics lead/media uploads to the shared `snhlife` Space under `txb2b/` when Doppler Spaces credentials are set; keep objects private with no public URLs.
- Give the non-root image a writable `/app/var/private-media` fallback, and keep `manage.py test` on a temp disk so CI does not write to Spaces or fail with `Permission denied: /app/var`.
TX B2B ·
tx-b2b-do-app · Aug 20, 2026
View pull request
Shipped
Shipped
gm/feat: extend subscription status endpoint
gm/feat: extend subscription status endpoint
TX B2B ·
tx-b2b-do-app · Aug 20, 2026
View pull request
Shipped
Shipped
Restore PRs #8-#17 that were dropped from GitHub main after the CRM rewind
Restore PRs #8-#17 that were dropped from GitHub main after the CRM rewind
TX B2B ·
tx-b2b-do-app · Aug 19, 2026
View pull request
Shipped
Shipped
Archive five completed OpenSpec changes and record GitHub, Hatchet, and payout-generation verification
Archive five completed OpenSpec changes and record GitHub, Hatchet, and payout-generation verification
TX B2B ·
tx-b2b-do-app · Aug 19, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 19, 2026
View pull request
Shipped
Shipped
feat(protocols): add protocol sorting
feat(protocols): add protocol sorting
HCP Portal ·
tx-hcp · Aug 19, 2026
View pull request
Shipped
Shipped
Remove the wholesale sales recovery cron
Remove the wholesale sales recovery cron
TX B2B ·
tx-b2b-do-app · Aug 19, 2026
View pull request
Shipped
Shipped
Support idempotent mixed legacy and hardened PayPal payout sends
Support idempotent mixed legacy and hardened PayPal payout sends
TX B2B ·
tx-b2b-do-app · Aug 18, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 18, 2026
View pull request
Shipped
Shipped
Fix Hatchet recovery timeouts and sales-sync reclaim collisions, and document wholesale order tag backfill.
Fix Hatchet recovery timeouts and sales-sync reclaim collisions, and document wholesale order tag backfill.
TX B2B ·
tx-b2b-do-app · Aug 18, 2026
View pull request
Shipped
Shipped
Fix the forced-refill backfill test so mocked syncs persist completeness.
Fix the forced-refill backfill test so mocked syncs persist completeness.
TX B2B ·
tx-b2b-do-app · Aug 18, 2026
View pull request
Shipped
Shipped
Pin the sales-sync due-at index name so CI makemigrations check passes.
Pin the sales-sync due-at index name so CI makemigrations check passes.
TX B2B ·
tx-b2b-do-app · Aug 18, 2026
View pull request
Shipped
Shipped
Split Hatchet event and cron workers and retain per-order wholesale sales-sync work.
Split Hatchet event and cron workers and retain per-order wholesale sales-sync work.
TX B2B ·
tx-b2b-do-app · Aug 18, 2026
View pull request
Shipped
Shipped
Add GitHub org discovery and release notes
Adds GitHub organization repository discovery for Smarter-Not-Harder-capable orgs.
- Upserts GitHubRepository records from org metadata, inactive by default unless `--activate-new` is supplied.
- Supports archived repo handling, dry-run output, and deterministic System mapping.
- Adds ReleaseNote model/admin and deterministic release-note generation from WorkUpdate rows.
- Adds `/releases` list and `/releases/<slug>` detail pages.
- Adds management commands:
- `discover_github_repositories`
- `generate_release_notes`
- No Slack API ingestion, no AI summarization, no GitHub Releases/tags in V1.
SNH Index ·
snh-index · Aug 17, 2026
View pull request
Bug fix
Shipped
Add tech work updates feed
Adds /updates executive-readable Tech Work Updates feed.
- Adds GitHubRepository and WorkUpdate models/admin.
- Adds sync_github_updates management command using GitHub token from environment only.
- Imports merged GitHub PRs as durable work updates.
- Adds bug-fix classification from PR labels/body and Slack permalink extraction from PR body.
- Adds PR template fields for Type, Affected system, Bug source / Slack thread, Impact, and Validation.
- No Slack API ingestion and no AI summarization in V1.
SNH Index ·
snh-index · Aug 17, 2026
View pull request
Shipped
Shipped
gm/feat: add notification system toggle
Adds account-level, per-event notification email preferences for practitioners.
- Adds preference persistence, API endpoints, and OpenAPI/frontend contract.
- Suppresses opted-out optional email at creation, queue, and worker-send time while preserving in-app notifications and sent history.
- Applies preferences to automated, manual, and Global Announcement practitioner email; client and legacy transactional workflows remain unchanged.
- Adds authenticated “Manage email notifications” links to optional practitioner emails.
TX B2B ·
tx-b2b-do-app · Aug 17, 2026
View pull request
Shipped
Shipped
Add Dev Tools forced wholesale sales refill
Add Dev Tools forced wholesale sales refill
TX B2B ·
tx-b2b-do-app · Aug 17, 2026
View pull request
Shipped
Shipped
Classify invalid-phone client creation responses as expected
Classify the known invalid-phone client-creation response as an expected BFF domain state.
HCP Portal ·
tx-hcp · Aug 17, 2026
View pull request
Shipped
Shipped
Add status uptime summaries and incidents
Adds 24h / 7d / 30d uptime summaries from observed CheckRun data.
- Adds 30-day daily uptime history strips.
- Adds active and recently resolved incidents on /status from MonitorOutage.
- Keeps no-data distinct from operational; no schema changes.
SNH Index ·
snh-index · Aug 16, 2026
View pull request
Shipped
Shipped
Document GitHub Actions deployment setup and troubleshooting
Document GitHub Actions deployment setup and troubleshooting
TX B2B ·
tx-b2b-do-app · Aug 15, 2026
View pull request
Shipped
Shipped
Normalize deployment SSH private keys before use
Normalize deployment SSH private keys before use
TX B2B ·
tx-b2b-do-app · Aug 14, 2026
View pull request
Shipped
Shipped
Make the droplet deployment script executable in CI
Make the droplet deployment script executable in CI
TX B2B ·
tx-b2b-do-app · Aug 14, 2026
View pull request
Shipped
Shipped
Status page industry-standard redesign + 6h uptime history
Status page industry-standard redesign + 6h uptime history
SNH Index ·
snh-index · Aug 14, 2026
View pull request
Shipped
Shipped
Simplify the manual GitHub deployment workflow
Simplify the manual GitHub deployment workflow
TX B2B ·
tx-b2b-do-app · Aug 14, 2026
View pull request
Shipped
Shipped
Fix CI test contract drift across protocol and wholesale flows
Fix CI test contract drift across protocol and wholesale flows
TX B2B ·
tx-b2b-do-app · Aug 14, 2026
View pull request
Shipped
Shipped
Migrate CI/CD delivery to GitHub Actions
Migrate CI/CD delivery to GitHub Actions
TX B2B ·
tx-b2b-do-app · Aug 14, 2026
View pull request
Shipped
Shipped
gm/feat: add redirect and patient since (#403)
gm/feat: add redirect and patient since (#403)
HCP Portal ·
tx-hcp · Aug 13, 2026
View pull request
Shipped
Shipped
gm/feat: add redirect and patient since
gm/feat: add redirect and patient since
HCP Portal ·
tx-hcp · Aug 13, 2026
View pull request
Shipped
Shipped
chore: promote staging to main
chore: promote staging to main
HCP Portal ·
tx-hcp · Aug 12, 2026
View pull request
Shipped
Shipped
fix(discounts): restore practitioner checkout flow
fix(discounts): restore practitioner checkout flow
HCP Portal ·
tx-hcp · Aug 12, 2026
View pull request
Shipped
Shipped
fix(observability): log discount mismatches
fix(observability): log discount mismatches
HCP Portal ·
tx-hcp · Aug 12, 2026
View pull request
Shipped
Shipped
gm/feat: apply improve discount state architecture (#398)
gm/feat: apply improve discount state architecture (#398)
HCP Portal ·
tx-hcp · Aug 12, 2026
View pull request
Shipped
Shipped
gm/feat: apply improve discount state architecture
Centralizes discount state in the portal around existing authenticated B2B contracts—without backend or Django changes.
- Patient discounts are now scoped to the selected `storefrontId` and derived from storefront detail.
- Practitioner wholesale discounts use the authenticated wholesale response; removes the hard-coded 40% policy.
- Browser cart storage no longer retains patient discount codes, percentages, or sync status.
- Checkout handoff re-resolves discount authority immediately before Shopify cart creation and rejects unavailable or unverified expected discounts.
- Adds privacy-safe observability at portal-read and checkout-handoff failure boundaries.
HCP Portal ·
tx-hcp · Aug 12, 2026
View pull request
Shipped
Shipped
fix(client-storefront): simplify practitioner selector
fix(client-storefront): simplify practitioner selector
HCP Portal ·
tx-hcp · Aug 11, 2026
View pull request
Shipped
Shipped
fix(client-portal): guard discovery banner by account role
fix(client-portal): guard discovery banner by account role
HCP Portal ·
tx-hcp · Aug 11, 2026
View pull request
Shipped
Shipped
fix(dashboard): sort announcements and use link labels
fix(dashboard): sort announcements and use link labels
HCP Portal ·
tx-hcp · Aug 11, 2026
View pull request
Shipped
Shipped
fix(portal): paginate order history and align contract
fix(portal): paginate order history and align contract
HCP Portal ·
tx-hcp · Aug 11, 2026
View pull request
Shipped
Shipped
fix(links): update Office Hours registration URL
fix(links): update Office Hours registration URL
HCP Portal ·
tx-hcp · Aug 11, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 10, 2026
View pull request
Shipped
Shipped
Revert "feat(cart): allow purchase mode changes (#388)" (#390)
Revert "feat(cart): allow purchase mode changes (#388)" (#390)
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
Revert "feat(cart): allow purchase mode changes"
Revert "feat(cart): allow purchase mode changes"
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
feat(cart): allow purchase mode changes
feat(cart): allow purchase mode changes
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
refactor(client): simplify product variant display by removing price …
refactor(client): simplify product variant display by removing price …
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
fix(dashboard): update Calendly link for Expert Support session
fix(dashboard): update Calendly link for Expert Support session
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
fix(client): apply practitioner discounts to subscription plans (#384)
fix(client): apply practitioner discounts to subscription plans (#384)
HCP Portal ·
tx-hcp · Aug 7, 2026
View pull request
Shipped
Shipped
fix(client): apply practitioner discounts to subscription plans
fix(client): apply practitioner discounts to subscription plans
HCP Portal ·
tx-hcp · Aug 6, 2026
View pull request
Shipped
Shipped
Classify BFF transport failures (#382)
Classify BFF transport failures (#382)
HCP Portal ·
tx-hcp · Aug 6, 2026
View pull request
Shipped
Shipped
Classify BFF socket transport failures as retryable
Classify upstream transport failures at the BFF boundary as safe, retryable service-unavailable responses.
HCP Portal ·
tx-hcp · Aug 6, 2026
View pull request
Shipped
Shipped
Classify commerce handoff timeouts (#378)
Classify commerce handoff timeouts (#378)
HCP Portal ·
tx-hcp · Aug 5, 2026
View pull request
Shipped
Shipped
Classify commerce handoff timeouts safely
Classify commerce handoff timeout failures as sanitized, retryable gateway timeouts.
HCP Portal ·
tx-hcp · Aug 5, 2026
View pull request
Shipped
Shipped
feat(health): add liveness endpoint (#375)
feat(health): add liveness endpoint (#375)
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
feat(health): add liveness endpoint
feat(health): add liveness endpoint
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
Merge pull request #367 from Smarter-Not-Harder/design-review/hcp-por…
Merge pull request #367 from Smarter-Not-Harder/design-review/hcp-por…
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
Fix stale header on /notifications; revert Quick Links color change
Two follow-ups after the previous design-review PR (#366) merged and deployed to staging:
1. **Fix: middleware matcher gap.** The FINDING-001 header fix depends on an accurate `pathname` computed from `AUTH_NEXT_HEADER`, which the middleware only sets for routes matching its `matcher` list. Three real protected route prefixes — `/notifications`, `/customer`, `/salesperson` — were missing from that list, so requests there never got the header and silently fell back to `DEFAULT_AUTH_NEXT_PATH` ("/dashboard"). Harmless before FINDING-001 (the greeting always showed unconditionally), but it surfaced as the stale "Home / Dashboard" breadcrumb reappearing on `/notifications` once correctness started depending on it. Added all three missing prefixes and a regression test asserting the matcher covers every directory under `(protected)`.
2. **Revert: Quick Links colors.** Restoring the original per-tile hex colors (whats-a-troche, blogs, podcast, buy-wholesale) that FINDING-002 had unified to `var(--accent)` — per feedback, the varied colors are the preferred look.
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
gm/feat: add notification instance analytics (#372)
gm/feat: add notification instance analytics (#372)
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
gm/feat: add notification instance analytics
gm/feat: add notification instance analytics
HCP Portal ·
tx-hcp · Aug 4, 2026
View pull request
Shipped
Shipped
Staging
Staging
HCP Portal ·
tx-hcp · Aug 3, 2026
View pull request
Shipped
Shipped
feat(requests): support async client request acceptance
support queued, processing, retryable, and invalid async acceptance states
- poll active foreground requests through the existing list/detail APIs and keep analytics PII-safe
- document and validate the OpenSpec contract, integration docs, and focused tests
HCP Portal ·
tx-hcp · Aug 3, 2026
View pull request
Shipped
Shipped
gm/feat(recommendations): add client-side form validation for recommendations builder
gm/feat(recommendations): add client-side form validation for recommendations builder
HCP Portal ·
tx-hcp · Aug 3, 2026
View pull request
Shipped
Shipped
fix(observability): prevent cross-origin iframe replay errors
Prevent replay tooling from inspecting cross-origin iframes.
HCP Portal ·
tx-hcp · Aug 3, 2026
View pull request
Shipped
Shipped
Design review fixes: header wayfinding, off-palette colors, touch targets
Fixes 5 findings from a /design-review audit of the deployed practitioner portal (hcp.troscriptions.com):
- **FINDING-001**: app shell showed a hardcoded "Home / Dashboard" breadcrumb + "Welcome back" heading on every route regardless of page, producing a duplicate `<h1>` and a stale breadcrumb everywhere except the real dashboard. Now route-aware via the pathname the layout already computes.
- **FINDING-002**: Quick Links icon tiles used 4 arbitrary hex colors not in DESIGN.md's token system (one dangerously close to the banned legacy teal `#037178`). Unified to `var(--accent)`.
- **FINDING-003**: wholesale purchase-mode radios and two client-discount sliders had no `accent-color`, rendering browser-default blue instead of Clinical Teal.
- **FINDING-004**: carousel dot indicators (Announcements/Upcoming Events) were 6-10px, under the 44px touch-target minimum. Added an invisible expanded hit area.
- **FINDING-005**: Announcements banner headline overlapped the background photo illegibly on mobile viewports. Narrowed heading + adjusted gradient below `sm:`.
- Also includes 2 pre-existing commits on this branch not yet in main (`fix: align tutorial grid and add office hours`, `feat(portal): source transition practitioners from Shopify`).
HCP Portal ·
tx-hcp · Jul 31, 2026
View pull request