Changed app shell, shared button links, account menus, notifications, and the version badge to disable automatic Next.js route prefetch so protected pages no longer fetch unrelated RSC payloads in the background.
Added stale-client cleanup for old service workers and legacy `/system/php/*` polling routes without recreating legacy PHP behavior.
Changed the app version from `0.1.93` to `0.1.94`.
Verification: `npm run test -- tests/unit/ui-regression.test.ts`, `npm run lint`, `npm run test`, `npm run build`, local production Playwright trace on `http://localhost:3400` showing the patient flow at 4 fetch responses and no `/changelog` background requests, process cleanup sanity check.
v0.1.93
2026-06-26
Промени
Added a scoped Supabase RLS policy that lets center staff view doctor rows linked to their centers, including hidden or inactive migrated practices, without making those doctors public.
Fixed the Hadji Dimitur migration browser verification by restoring the HD admin password from the local handoff file and validating `/center/practice` with real center staff authentication.
Changed the app version from `0.1.92` to `0.1.93`.
Verification: browser QA for `dr.mpenkov@mbalhd.com` on `https://medcare-app-bg.vercel.app/center/practice`, `npm run lint`, `npm run test`, `npm run build`, `npx supabase db lint --linked --schema public --fail-on error`, `npx supabase db advisors --linked --type security --fail-on error`, process cleanup sanity check.
v0.1.92
2026-06-26
Промени
Changed Supabase signup and password-reset redirects to use server-side `MEDCARE_AUTH_REDIRECT_ORIGIN` allow-list validation instead of request headers.
Changed demo seed scripts to require explicit `MEDCARE_DEMO_PASSWORD`, removed the published fallback password, and kept the super-admin demo account seedable only with the configured env password.
Documented reception schedule management as an intentional center permission and added provider cleanup guidance for hosted auth redirects and demo accounts.
Changed the app version from `0.1.91` to `0.1.92`.
Verification: `npm run test -- tests/unit/request-origin.test.ts tests/integration/release-seed-script.test.ts tests/unit/ui-regression.test.ts tests/unit/permissions.test.ts tests/unit/center-permissions.test.ts`, `npm run lint`, `npm run test`, `npm run build`, process cleanup sanity check.
v0.1.91
2026-06-26
Промени
Fixed the doctor calendar patient-history lookup so imported legacy placeholder phones such as `+359` are not used for broad history queries that can time out on real Hadji Dimitur data.
Changed the app version from `0.1.90` to `0.1.91`.
Verification: `npx vitest run tests/unit/doctor-patient-history-lookup.test.ts tests/unit/doctor-appointments-window.test.ts tests/unit/doctor-calendar-practice-filter.test.ts`, `npm run lint`, `npm run test`, `npm run build`, local browser smoke on `http://localhost:3300/doctor/schedule?practice=e22d33a5-0ab5-4d34-aaaf-419538a99052&date=2026-06-29`, Hadji Dimitur booking/cancel browser QA on `https://test.medcare.bg`.
v0.1.90
2026-06-25
Промени
Changed app-level transactional email delivery from Resend to the Namecheap Private Email SMTP adapter while preserving the existing `sendEmail` contract and global email kill switch.
Added SMTP environment documentation, React email rendering for SMTP delivery, and bounded admin-message email batches to avoid unbounded broadcast sends.
Changed the app version from `0.1.89` to `0.1.90`.
Verification: `npm run test -- tests/unit/email-kill-switch.test.ts`, `npm run lint`, `npm run test`, `npm run build`, process cleanup sanity check.
v0.1.89
2026-06-25
Промени
Changed the center `AI асистент` entry and waitlist flow to be available to reception staff as well as center admins.
Updated the AI assistant waitlist documentation to include регистратура as an eligible center role.
Changed the app version from `0.1.88` to `0.1.89`.
Verification: `npm run test -- tests/unit/ai-assistant-navigation.test.ts tests/unit/ai-assistant-waitlist.test.ts tests/unit/center-permissions.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/ai-assistant.spec.ts --project=chromium`, process cleanup sanity check.
v0.1.88
2026-06-25
Промени
Added protected doctor and center-admin `AI асистент` pages describing the future phone voice agent and collecting early-access waitlist requests.
Added a Supabase-backed `ai_assistant_waitlist` queue with RLS, typed service helpers, and a Medcare super-admin review/status page.
Added AI assistant waitlist documentation and navigation entries for doctors, eligible center admins, and super admins.
Changed the app version from `0.1.87` to `0.1.88`.
Verification: `npm run test -- tests/unit/ai-assistant-navigation.test.ts tests/unit/ai-assistant-waitlist-contract.test.ts tests/unit/ai-assistant-waitlist.test.ts tests/unit/center-permissions.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/ai-assistant.spec.ts --project=chromium`, process cleanup sanity check.
v0.1.87
2026-06-25
Промени
Added a migration profile QA runner for Beaute and Hadji Dimitur that inventories scoped center staff, active doctor memberships, Auth users, reset flags, paid subscription ownership, Pro entitlements, and optional real temporary-password login/browser smoke results without writing passwords to reports.
Added scoped operational repair flags for migration continuity: manual paid access, clearing reset-required blockers, and assigning local handoff passwords only to accounts missing from the supplied credential file.
Added a migration-day QA runbook covering fresh legacy importer analysis/dry-run, paid-access and reset-flag repair, go/no-go criteria, and local-only report handling under `temp/migration-profile-qa/`.
Changed the app version from `0.1.86` to `0.1.87`.
Verification: `node --check scripts/migration-profile-qa.mjs`, `npm run migration:profile-qa -- --env .env.local`, `npm run migration:profile-qa -- --env .env.local --ensure-paid`, `npm run migration:profile-qa -- --env .env.local --clear-reset-required`, `npm run migration:profile-qa -- --env .env.local --credentials-file temp\center-temp-passwords-2026-06-18.txt --assign-missing-temp-passwords temp\migration-profile-qa\center-temp-passwords-final-2026-06-25.txt`, live browser smoke on `https://medcare-app-bg.vercel.app` with 59/59 scoped accounts passing, `npm run lint`, `npm run test`, `npm run build`.
v0.1.86
2026-06-24
Промени
Changed doctor practice filter tabs to use a shorter compact height while keeping the active practice state visible.
Changed the app version from `0.1.85` to `0.1.86`.
Verification: `npm run test -- tests/unit/operational-calendar-layout.test.ts`, `npm run lint`, `npm run test`, `npm run build`, Browser smoke on `http://localhost:3100/doctor/schedule?date=2026-06-29&practice=2a2da965-82a7-4027-938a-53c6c64cf7fc` confirming 32px practice tabs.
v0.1.85
2026-06-24
Промени
Fixed independent practice labels so legacy names prefixed with `д-р ... -` are shortened before rendering doctor practice tabs.
Changed the app version from `0.1.84` to `0.1.85`.
Verification: `npm run test -- tests/unit/doctor-independent-practice.test.ts tests/unit/cross-practice-conflict-markers.test.ts`, `npm run lint`, `npm run test`, `npm run build`.
v0.1.84
2026-06-24
Промени
Fixed doctor calendar cross-practice markers so cancelled, completed, and no-show appointments from another practice no longer appear as hidden slots in a selected practice.
Changed cross-practice conflict markers to use the booked/busy status, matching the doctor-level double-booking rule.
Changed the app version from `0.1.83` to `0.1.84`.
Verification: Supabase readback for `doctor.demo@medcare.bg` confirmed the 29.06 08:00 center appointment is `cancelled`, `npm run test -- tests/unit/cross-practice-conflict-markers.test.ts tests/unit/doctor-appointment-conflicts.test.ts`, `npm run lint`, `npm run test`, `npm run build`, Browser smoke on `http://localhost:3100/doctor/schedule?date=2026-06-29&practice=963df7cf-8d37-4029-97a8-e9a498722ca1`.
v0.1.83
2026-06-24
Промени
Changed the protected header date to use a Bulgarian month name without the year.
Reworked the doctor calendar toolbar so the date title stays stable and practice filters sit in a separate row.
Changed doctor practice tabs to use shorter practice/location labels with clearer active state and matching practice color swatches.
Strengthened practice color accents on operational calendar events while preserving status colors.
Changed the app version from `0.1.82` to `0.1.83`.
Verification: `npm run test -- tests/unit/reception-ux-contract.test.ts tests/unit/operational-calendar-layout.test.ts`, `npm run lint`, `npm run test`, `npm run build`, Browser smoke on `http://localhost:3100/doctor/schedule?practice=all`.
v0.1.82
2026-06-24
Промени
Added visible public slug and canonical `medcare.bg` URL controls to doctor and medical-center profile management.
Gated doctor slug editing behind active doctor Pro access and medical-center slug editing behind active/trialing Center Pro ownership while keeping Free profiles read-only.
Updated public profile and billing documentation for Pro slug customization.
Changed the app version from `0.1.81` to `0.1.82`.
Verification: `npm run test -- tests/unit/public-slug-editing.test.ts tests/unit/subscription-entitlements.test.ts`, `npm run lint`, `npm run test`, `npm run build`, process cleanup sanity check.
v0.1.81
2026-06-24
Промени
Changed the protected header clock to show weekday and date before the Sofia time.
Removed internal Pro management helper copy from the doctor profile page.
Updated demo user seeding so `doctor.demo@medcare.bg` has an active independent practice and schedule alongside the center practice.
Added a fallback when the practice-scoped entitlement table is not yet present on a remote Supabase backend, preserving login and public search until the migration is applied.
Changed the app version from `0.1.80` to `0.1.81`.
Verification: `node --env-file=.env.local scripts/seed-demo-users.mjs`, Supabase readback for `doctor.demo@medcare.bg` center and independent practices, `npm run test -- tests/unit/reception-ux-contract.test.ts tests/unit/doctor-independent-practice.test.ts`, `npm run lint`, `npm run test`, `npm run build`, Browser smoke on `http://localhost:3100/doctor`, `/doctor/profile`, and `/doctor/schedule?practice=all`.
v0.1.80
2026-06-24
Промени
Added practice-scoped doctor Pro entitlements so center seats cover only the paying center practice while doctor self-service Pro covers the independent practice.
Added doctor calendar and schedule filters for all practices versus a selected practice, with read-only conflict markers for other-practice appointments.
Added doctor-level booking conflict checks and cross-practice schedule overlap acknowledgement for doctors with multiple active practices.
Updated practice billing, doctor schedule, patient booking, and public profile documentation.
Changed the app version from `0.1.79` to `0.1.80`.
Verification: `npm run lint`, `npm run test`, `npm run build`, Browser smoke on `http://localhost:3100/login`, `/doctor/schedule?practice=all`, `/doctor/schedules?practice=all`, `/patient/book/demo-membership-id`, and `/center/schedule`.
v0.1.79
2026-06-24
Промени
Changed doctor and center home pages to prioritize Calendar, Schedules, and Statistics shortcuts for daily operator work.
Added desktop hover expansion for the collapsed role sidebar and a centered Sofia time clock in the protected header.
Changed center operator navigation order to `Начало`, `Календар`, `Inbox`, `Графици`, followed by the remaining role entries.
Removed the old Inbox explanatory text and added read, unread, and archive actions for visible conversations and system notifications.
Split account settings into `/account/profile`, `/account/notifications`, and `/account/security`, and fixed shared select styling for the theme dropdown.
Updated design guidance and changed the app version from `0.1.78` to `0.1.79`.
Verification: `npm run test -- tests/unit/reception-ux-contract.test.ts`, `npm run lint`, `npm run test`, `npm run build`, and `npx playwright test tests/e2e/center-role-navigation.spec.ts --project=chromium`.
v0.1.78
2026-06-24
Промени
Fixed the header feedback dialog to submit through a client-controlled handler so successful reports reset and close the modal after the server action completes.
Changed the app version from `0.1.77` to `0.1.78`.
Verification: `npm run lint`, `npm run test`, `npm run build`, and `npx playwright test tests/e2e/center-role-navigation.spec.ts --project=chromium`.
v0.1.77
2026-06-24
Промени
Fixed reception/doctor operational calendar navigation so `Първи свободен` can move the mounted calendar to the first available slot and keep the view focused.
Changed audit logs to show human performer names, color-code actions, and paginate log tables across center, doctor, and super-admin views.
Added platform feedback/bug reporting from the role header with optional PNG/JPG attachment and a dedicated Super Admin Feedback queue.
Clarified Inbox versus system notifications, highlighted active Inbox filters, added Inbox unread counts in role navigation, and moved Calendar before Inbox for operator roles.
Added 10-row pagination and width-safe layout to patient/user tables, and preserved patient display fields plus appointment notes when rescheduling.
Changed the app version from `0.1.76` to `0.1.77`.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/center-role-navigation.spec.ts --project=chromium`, `npx supabase db push --yes`, Supabase catalog query, and `npx supabase db advisors --linked`.
v0.1.76
2026-06-24
Промени
Changed center navigation so `Практики` is the single center practice entry point and `/center/doctors` redirects to `/center/practice`.
Refactored `/center/practice` into a lightweight practice table and moved editable practice settings to `/center/practice/[membershipId]`, with reception read-only access.
Updated center practice management documentation and changed the app version from `0.1.75` to `0.1.76`.
Verification: `npm run test -- tests/unit/center-permissions.test.ts`, `npm run test -- tests/unit/center-permissions.test.ts tests/unit/permissions.test.ts`, `npm run lint`, `npm run test`, `npm run build`, and `npx playwright test tests/e2e/center-role-navigation.spec.ts --config temp/practice-refactor-qa/playwright-3100.config.ts`.
v0.1.75
2026-06-24
Промени
Fixed the app shell and auth screens so their background containers explicitly fill the full viewport width, removing the blank white strip that could appear on the right side of wide browser windows.
Added a regression guard for full-width root, auth, and role shell layout containers.
Changed the app version from `0.1.74` to `0.1.75`.
Verification: `npm run test -- tests/unit/viewport-width-layout.test.ts`, `npm run lint`, `npm run test`, `npm run build`, and browser smoke on the deployed login and doctor pages.
v0.1.74
2026-06-24
Промени
Documented the cross-repo boundary between `medcare-app` and `medcare-home-page`, including ownership of `app.medcare.bg`, `medcare.bg`, public profile routes, public API contracts, and booking handoff links.
Added explicit guidance that the separate public home page must not be edited from ordinary `medcare-app` work without user approval.
Changed the app version from `0.1.73` to `0.1.74`.
Verification: documentation review, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.73
2026-06-24
Промени
Fixed doctor schedule patient history so appointment details load previous completed/no-show visits for the visible patients even when those visits fall outside the currently loaded calendar event window.
Prevented duplicate appointment history rows and excluded past booked appointments from the previous-visits section.
Changed the app version from `0.1.72` to `0.1.73`.
Verification: `npx vitest run tests/unit/center-patient-history.test.ts tests/unit/doctor-appointments-window.test.ts`, browser smoke for `doctor.demo@medcare.bg` opening `26 юни 2026 г. 10:30` for Иван Пациент, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.72
2026-06-24
Промени
Extended the public clinic profile API with map preview coordinates and doctor discovery flags for НЗОК participation and published prices.
Kept public clinic API responses read-only and patient-PII-free while preserving the existing login-return booking links.
Changed the app version from `0.1.71` to `0.1.72`.
Verification: public clinic profile API tests, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.71
2026-06-24
Промени
Fixed doctor schedule appointment details to show previous patient visits in the same center by loading patient profile and center identifiers for doctor-owned appointments.
Changed the app version from `0.1.70` to `0.1.71`.
Verification: `npx vitest run tests/unit/doctor-appointments-window.test.ts`, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.70
2026-06-23
Промени
Added public medical-center profile slugs and read-only public clinic profile endpoints for `/api/public/clinics`.
Exposed only active bookable center memberships, active doctors, published review summaries, public center profile fields, and future free slots for public clinic profiles.
Changed the app version from `0.1.69` to `0.1.70`.
Verification: `npx supabase db push --yes`, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.69
2026-06-23
Промени
Normalized public doctor specialty labels so duplicate category/specialist pairs such as `Офталмология` and `Офталмолог` expose only the specialist label.
Changed the app version from `0.1.68` to `0.1.69`.
Verification: public doctor profile API tests, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.68
2026-06-23
Промени
Added the separate Vercel project `medcare-test`, connected to `ID-Yo/medcare-app` with `staging` as its Production Branch.
Moved the staging deployment policy to `test.medcare.bg`, with automatic deployments only for pushes to `staging`.
Documented that staging intentionally shares the production backend services and data while `medcare-app` continues to track `main`.
Changed the app version from `0.1.67` to `0.1.68`.
Verification: Vercel project/Git/environment configuration inspection, Supabase Auth redirect allowlist inspection, `npm run lint`, `npm run test`, `npm run build`, and deployed browser smoke.
v0.1.67
2026-06-23
Промени
Fixed public doctor availability so slots whose start time has already passed are not exposed as bookable or selected as the earliest appointment.
Changed the app version from `0.1.66` to `0.1.67`.
Verification: public availability regression test, `npm run lint`, `npm run test`, `npm run build`, and deployed browser QA.
v0.1.66
2026-06-23
Промени
Expanded the public doctor profile API with practice kind, child-acceptance information, and detailed published review averages.
Kept independent practices, hidden-membership filtering, and patient-data exclusion within the existing read-only public profile boundary.
Changed the app version from `0.1.65` to `0.1.66`.
Verification: public doctor profile API tests, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.65
2026-06-23
Промени
Fixed the doctor and medical-center slot-booking patient search, which previously rendered inactive search fields without lookup behavior.
Added protected server-side lookup by patient name or Bulgarian phone number with doctor-owned and center-wide authorization scopes.
Added legacy appointment fallback through linked active patient profiles, recent-result deduplication, and manual-booking field autofill.
Changed the app version from `0.1.64` to `0.1.65`.
Verification: targeted patient lookup tests, `npm run lint`, `npm run test`, `npm run build`, and deployed doctor/center browser smoke.
v0.1.64
2026-06-23
Промени
Fixed patient self-bookings to snapshot the booking profile name and phone into the appointment for doctor and center visibility.
Fixed operational calendar appointment details to preserve the booked patient subject name and age when opening a calendar event.
Repaired the affected demo appointment for `patient.demo@medcare.bg`.
Changed the app version from `0.1.63` to `0.1.64`.
Verification: targeted booking/calendar regression tests, `npm run lint`, `npm run test`, `npm run build`, and deployed doctor calendar browser smoke.
v0.1.63
2026-06-23
Промени
Fixed the public doctor slug database functions to use an immutable empty `search_path`.
Changed the app version from `0.1.62` to `0.1.63`.
Verification: Supabase security advisor, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.62
2026-06-23
Промени
Added stable public doctor slugs and a read-only public doctor profile API for `medcare.bg/dr/[slug]`.
Added public profile payloads with patient-visible doctor data, visible practices, published reviews, visit reasons, and free availability slots without exposing patient data or booking mutations.
Added independent doctor practices so bookable memberships can exist without a medical center while preserving center-linked memberships.
Fixed patient search, doctor profiles, booking confirmation, appointment history, and appointment emails to render practice location data instead of assuming a center.
Added doctor-owned private practice settings in `/doctor/profile` and updated doctor calendars/schedule management to label independent practices correctly.
Hardened booking authorization and visit reasons for independent practices, including null-safe center staff checks and default visit reasons.
Updated legacy import planning so doctors without a center link can become hidden-or-public independent practices depending on location completeness.
Changed the app version from `0.1.61` to `0.1.62`.
Verification: targeted public profile and independent practice coverage, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.61
2026-06-18
Промени
Changed center admin/reception calendars to always load one explicitly selected doctor, default to the first accessible doctor, and refresh immediately when doctor or specialty changes.
Fixed center patient lookup by normalized name/phone matching and automatic navigation to the nearest matching appointment.
Added canonical multi-specialty doctor data with RLS, legacy alias cleanup, combined-specialty preservation, and deactivation of non-medical imported profiles.
Changed patient search to show 20 unique doctors per page, clickable profile cards, all practices/specialties, and an interactive OpenStreetMap/Leaflet map with grouped practice pins and browser-location viewport.
Unified notification destination handling so conversation notifications always open their Inbox thread.
Changed the app version from `0.1.60` to `0.1.61`.
Verification: targeted Vitest coverage, `npm run lint`, `npm run test`, `npm run build`, Supabase migration/advisor checks, and deployed browser smoke.
v0.1.60
2026-06-18
Промени
Fixed recovery password changes to use the browser Supabase recovery session from the email link instead of a server action that could reuse an existing browser session.
Added a protected completion endpoint that clears the migrated-account password reset flag only for the authenticated recovery user after the password is updated.
Changed the app version from `0.1.59` to `0.1.60`.
Verification: legacy reset regression test, `npm run lint`, and `npm run build`.
v0.1.59
2026-06-18
Промени
Fixed password reset links to use the live request origin instead of falling back to localhost in deployed server actions.
Changed password reset delivery to generate Supabase recovery links server-side and send Medcare-branded Bulgarian emails through the app email adapter.
Added a Bulgarian recovery email template/config for local Supabase Auth setups and regression coverage for the Medcare password reset flow.
Changed the app version from `0.1.58` to `0.1.59`.
Verification: targeted password reset origin/email tests and `npm run lint`.
v0.1.58
2026-06-18
Промени
Fixed inactive migrated Hadji Dimitur doctor memberships so they stay visible to center admins as hidden/inactive practices without rendering fallback public patient cards.
Hardened patient catalog membership rendering against RLS-hidden nested doctor rows and updated center practice status labels for hidden and inactive doctor states.
Changed the legacy center importer to create memberships for inactive legacy doctors as hidden from patients with online booking disabled.
Applied the live Hadji Dimitur data correction for 15 inactive imported memberships.
Changed the app version from `0.1.57` to `0.1.58`.
Verification: focused public catalog/import/status tests and live Supabase reconciliation.
v0.1.57
2026-06-18
Промени
Fixed operational calendar readability by restoring high-contrast green, amber, and gray status cards while keeping the larger Superdoc-clean event layout.
Updated calendar design guidance so free and hidden slots stay simpler through compact labels rather than pale, low-contrast backgrounds.
Changed the app version from `0.1.56` to `0.1.57`.
Verification: focused operational calendar rendering tests, `npm run lint`, `npm run test`, `npm run build`, local Playwright browser QA for center and doctor schedules.
v0.1.56
2026-06-18
Промени
Changed doctor and center operational calendars to use custom Superdoc-clean event rendering with patient names and times as the primary appointment row.
Softened free and hidden slot styling so available times remain clickable without visually overpowering booked appointments.
Fixed doctor schedule appointment loading to use the focused visible date window, avoiding Supabase statement timeouts on large appointment histories.
Updated the operational calendar design guidance for the new visual hierarchy.
Changed the app version from `0.1.55` to `0.1.56`.
Verification: focused operational calendar rendering tests, `npm run lint`, `npm run test`, `npm run build`, local Playwright browser QA for center and doctor schedules.
v0.1.55
2026-06-18
Промени
Added a matched-only legacy doctor image importer that downloads old `phpro_doctors.avatar` images, uploads them to Supabase Storage, and updates `doctors.avatar_path` without overwriting existing managed images.
Applied the live matched doctor image migration for `245` available legacy images; `2` matched legacy images returned `404` and `119` unmatched `medcare.bg` legacy profiles remained report-only.
Added rollback-safe reports for uploaded Storage objects and previous doctor avatar paths.
Changed the app version from `0.1.54` to `0.1.55`.
Verification: focused doctor image importer tests, live dry-run/apply/reconciliation, and public image URL smoke.
v0.1.54
2026-06-18
Промени
Fixed the legacy center importer so old doctor-owned schedule placeholder rows are quarantined instead of imported as booked patient appointments.
Added reconciliation cleanup for stale imported placeholder appointments where the patient name was exactly one of the imported doctor's email addresses.
Applied the fresh Beaute reconciliation to the linked live Supabase project, removing the remaining placeholder appointment rows from the visible calendar window.
Changed the app version from `0.1.53` to `0.1.54`.
Verification: focused legacy importer tests, live Beaute analyze/dry-run/apply reconciliation, live Supabase appointment checks, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.53
2026-06-18
Промени
Fixed the center calendar appointment query so it loads appointments for the visible Sofia date window instead of returning only the oldest 200 records.
Restored imported future patient bookings in the operational calendars for МЦ Бюте and other centers with substantial appointment history.
Added regression coverage for Sofia-to-UTC calendar boundaries and the bounded appointment query contract.
Changed the app version from `0.1.52` to `0.1.53`.
Verification: focused calendar query tests, linked Supabase reconciliation, `npm run lint`, `npm run test`, and `npm run build`.
v0.1.52
2026-06-18
Промени
Added irreversible Super Admin account closure with operational preflight blockers, exact-email confirmation, mandatory reason, pending/retry handling, and protection against self-deletion or removing the last active Super Admin.
Added Supabase Auth soft deletion, Storage ownership transfer, PII anonymization, preserved appointment/audit history, and explicit access rejection for inactive or deleted profiles.
Added deleted and pending lifecycle filters, a read-only deleted-user detail, and audit events that exclude the removed profile data.
Changed the app version from `0.1.51` to `0.1.52`.
Verification: focused deletion tests, `npm run lint`, `npm run test`, `npm run build`, linked Supabase migration/advisors, and live browser QA.
v0.1.51
2026-06-18
Промени
Changed the legacy center importer to quarantine old appointment `status = 6` records instead of blocking future delta imports.
Hardened legacy schedule import idempotency by reusing existing canonical schedule instances when old appointment-derived rows collide with already imported schedule slots.
Applied the fresh 18 June 2026 legacy delta for real accounts, МЦ Бюте, and МБАЛ Хаджи Димитър future appointments.
Changed the app version from `0.1.50` to `0.1.51`.
Verification: focused legacy importer tests, live dry-run/apply reconciliation for the fresh SQL export.
v0.1.50
2026-06-17
Промени
Added structured `profiles.first_name` and `profiles.last_name` fields with backfill from doctor profiles and best-effort non-doctor full-name splitting.
Changed account settings and registration to edit first name and last name separately while keeping `profiles.full_name` as a generated display/cache field.
Fixed the account settings layout so inputs and selects stay inside responsive cards without horizontal overflow.
Updated legacy importers and demo seed scripts to populate structured profile names.
Changed the app version from `0.1.49` to `0.1.50`.
Verification: focused account/import tests, `npm run lint`, `npm run test`, `npm run build`, `npx supabase db lint --linked --schema public --fail-on error`, `npx supabase db advisors --linked --type security --fail-on error`.
v0.1.49
2026-06-17
Промени
Changed doctor account settings to edit title, first name, and last name as separate doctor-profile fields instead of a single full-name field.
Synchronized doctor `profiles.full_name` from the structured doctor identity for shell/header display while keeping `doctors.title`, `doctors.first_name`, and `doctors.last_name` authoritative.
Changed the app version from `0.1.48` to `0.1.49` for this delivery.
Verification: focused account settings tests.
v0.1.48
2026-06-17
Промени
Added the `legacy:accounts` importer for all real non-`medcare.bg` legacy patient and doctor accounts from `medcare01`.
Added Supabase-safe legacy email validation, patient/doctor classification, duplicate canonicalization, inactive doctor import, rollback-safe Auth user tracking, and safe appointment relink planning.
Applied the test real-account import to the linked live Supabase project from the 9 June 2026 dump, creating `5224` patient profiles and `458` new doctor profiles with reset-required flags while reusing `44` existing doctor profiles.
Changed app version from `0.1.47` to `0.1.48`.
Verification: focused legacy accounts tests, live dry-run/apply/reconciliation for `medcare01_real_accounts`.
v0.1.47
2026-06-17
Промени
Added legacy temporary-password reset flags for imported profiles, including login-time reset-link handling for real external email addresses.
Changed the legacy importer password policy so `medcare.bg` service-managed accounts can receive a configured password without reset emails, while newly created external accounts are flagged for reset.
Added live migration support for `profiles.password_reset_required`, reset reason, sent timestamp, and changed timestamp.
Changed app version from `0.1.46` to `0.1.47`.
Verification: focused legacy password/import tests, live Supabase migration push, and live legacy reset-flag reconciliation.
v0.1.46
2026-06-17
Промени
Changed the guarded legacy importer from a Beaute-only script into a source-configured center importer with `beaute` and `hadji-dimitur` sources.
Added the МБАЛ Хаджи Димитър test import path, including HD staff role mapping, doctor reuse for shared Auth/Profile records, source-specific deterministic IDs, and historical duplicate booked-slot suppression.
Applied the МБАЛ Хаджи Димитър test import to the linked live Supabase project from the 9 June 2026 dump, preserving the existing Beaute test import.
Changed the app version from `0.1.45` to `0.1.46` for this delivery.
Verification: focused importer Vitest tests, live Supabase dry-run/apply/reconciliation for `medcare01_hadji_dimitur`, `npm run lint`, `npm run build`. Full `npm run test` currently has one unrelated pre-existing whitespace-order assertion failure in `tests/unit/schedule-create-overlap.test.ts`.
v0.1.45
2026-06-17
Промени
Added a super-admin-only manual temporary password action for service and legacy user accounts that cannot receive email reset links.
Added audit logging and impersonation high-risk blocking for direct password assignment.
Changed the app version from `0.1.44` to `0.1.45` for this delivery.
Verification: targeted admin password tests, `npm run lint`, `npm run test`, `npm run build`, live admin manual password smoke with demo account restore.
v0.1.44
2026-06-16
Промени
Fixed 100% Stripe promotion-code subscription checkout by collecting a payment method only when the Checkout Session has an amount due.
Changed the app version from `0.1.43` to `0.1.44` for this hotfix.
Verification: targeted billing contract test, `npm run lint`, `npm run test`, `npm run build`, live 100% Stripe promotion-code Checkout smoke, process cleanup sanity check.
v0.1.43
2026-06-16
Промени
Fixed live Stripe subscription checkout by explicitly requesting card payments for doctor Pro and center Pro seat Checkout Sessions.
Changed the app version from `0.1.42` to `0.1.43` for this hotfix.
Verification: live Stripe env/webhook check, live doctor Pro checkout smoke, `npm run lint`, `npm run test`, `npm run build`, process cleanup sanity check.
v0.1.42
2026-06-14
Промени
Added persistent Free, Pro, and attention-required subscription status with a contextual Pro action to every doctor workspace header.
Added `/doctor/pro` with the live configured Stripe price, shipped Pro benefits, Free-versus-Pro comparison, checkout, portal management, and managed-access explanations.
Centralized doctor upgrade prompts on the Pro page and replaced the large billing block in the doctor profile with a compact link.
Changed the app version from `0.1.41` to `0.1.42` for this delivery.
Verification: targeted subscription/UI Vitest tests, `npm run lint`, `npm run test`, `npm run build`, local desktop/mobile browser QA, process cleanup sanity check.
v0.1.41
2026-06-14
Промени
Changed the admin demo-data seed to create real doctor Auth/profile accounts and link every seeded public doctor through `doctors.profile_id`.
Documented the nine linked demo-doctor login accounts.
Changed the app version from `0.1.40` to `0.1.41` for this delivery.
Verification: targeted Vitest seed test, `npm run lint`, `npm run test`, `npm run build`, live Supabase seed and doctor-link count check.
v0.1.40
2026-06-13
Промени
Fixed doctor and center Stripe customer creation to upsert subscription owners through their composite unique keys.
Added a regression test covering the production checkout failure discovered during live discount-code QA.
Changed the app version from `0.1.39` to `0.1.40` for this hotfix.
Verification: targeted Vitest billing test, `npm run lint`, `npm run test`, `npm run build`, live doctor Stripe checkout smoke.
v0.1.39
2026-06-13
Промени
Added super-admin creation, filtering, deactivation, application, and redemption tracking for percentage subscription discount codes.
Added Stripe Coupon and Promotion Code integration for doctor Pro and Center Pro seats, including general and recipient-specific codes, checkout entry, product restrictions, and next-invoice application without proration.
Added RLS-protected discount-code and redemption tables, webhook synchronization, audit events, Supabase types, focused tests, and billing documentation.
Changed the app version from `0.1.38` to `0.1.39` for this delivery.
Verification: targeted Vitest discount tests, `npm run lint`, `npm run test`, `npm run build`, process cleanup sanity check.
v0.1.38
2026-06-13
Промени
Fixed doctor Pro upgrade from gated doctor pages so missing BLS identifiers redirect to profile guidance instead of crashing the server action.
Added a regression test for doctor Pro checkout prerequisite handling.
Changed the app version from `0.1.37` to `0.1.38` for this hotfix.
Verification: targeted Vitest checkout readiness test, `npm run lint`, `npm run test`, `npm run build`.
v0.1.37
2026-06-12
Промени
Added Stripe self-service subscriptions for doctor Pro upgrades, center-managed doctor seats, Customer Portal actions, and webhook-driven entitlement synchronization.
Added subscription schema, RLS policies, Stripe webhook idempotency storage, BLS identifier fields for doctors, and a super-admin Free schedule horizon setting defaulting to 7 days.
Changed doctor registration and doctor profile completion to require a Bulgarian Medical Association identifier and show the legal warning for false doctor profiles.
Changed Free doctor scheduling and patient-facing availability to respect the configured Free schedule horizon, while Pro doctors keep unrestricted scheduling.
Added Pro boost/badges in patient doctor search and gated doctor patient-communication tools behind Pro.
Added `/admin/billing`, updated center invoices into a Pro seat checkout page, documented billing/subscription behavior, and added Stripe environment variables.
Changed the app version from `0.1.36` to `0.1.37` for this delivery.
Verification: targeted Vitest billing tests, `npm run test`, `npm run lint`, `npm run build`, local Playwright smoke for `/register` and `/admin/billing`, process cleanup sanity check.
v0.1.36
2026-06-12
Промени
Fixed registration email verification redirect handling so signup confirmation links use the deployed request origin instead of falling back to localhost, and added a check-email screen after signup.
Added a Medcare-branded Supabase Auth confirmation email template for local/self-hosted configuration and documented the hosted Supabase template requirement.
Fixed account profile updates by using a scoped server-side service-role update and treating missing profile rows as errors instead of showing a false success.
Added patient appointment cancellation controls on the appointment detail page, using the existing 2-hour cancellation rule and cancellation service.
Changed the app version from `0.1.35` to `0.1.36` for this delivery.
Verification: targeted Vitest regression tests, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test`.
v0.1.35
2026-06-12
Промени
Changed phone-verification OTP SMS copy from Bulgarian Cyrillic to GSM-friendly latin text so verification messages stay within the standard 160-character SMS part.
Added a regression test that requires the OTP message to be ASCII-only and one standard SMS part.
Changed the app version from `0.1.34` to `0.1.35` for this delivery.
Verification: targeted Vitest test, `npm run lint`, `npm run test`, `npm run build`.
v0.1.34
2026-06-12
Промени
Normalized server-side SMS provider configuration values to prevent deployment-tool whitespace from affecting authentication, sender IDs, OTP hashing, or delivery callbacks.
Changed the app version from `0.1.33` to `0.1.34` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, LINK Portal delivery status, and live browser QA.
v0.1.33
2026-06-12
Промени
Shortened the Bulgarian phone-verification OTP text to fit in one Unicode SMS part after live LINK Mobility delivery testing.
Added a regression test that keeps the OTP message within the 70-character single-part limit.
Changed the app version from `0.1.32` to `0.1.33` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, LINK Portal delivery status, and live browser QA.
v0.1.32
2026-06-12
Промени
Added a LINK Mobility SMSAPI.bg provider adapter using a least-privilege static OAuth Bearer token while preserving MyLINK client-credentials support.
Added SMSAPI.bg delivery-report GET callback handling with idempotent challenge status updates.
Added SMSAPI.bg configuration documentation and focused provider contract tests.
Changed the app version from `0.1.31` to `0.1.32` for this delivery.
Verification: targeted Vitest tests, `npm run lint`, `npm run test`, `npm run build`, production provider test, and live browser QA.
v0.1.31
2026-06-12
Промени
Added MyLINK SMS API phone verification for patient profiles with OAuth2 client credentials, obfuscated high-priority OTP messages, delivery reports, and a global kill switch.
Added protected OTP challenge and delivery-event storage with RLS, service-role-only access, rate limits, expiry, attempt limits, and HMAC-hashed codes.
Added patient phone verification controls in account settings and invalidation when the phone changes.
Added MyLINK environment configuration and SMS security/authentication documentation.
Changed the app version from `0.1.30` to `0.1.31` for this delivery.
Verification: targeted Vitest tests, `npm run lint`, `npm run test`, `npm run build`, Supabase linked checks, and browser QA.
v0.1.30
2026-06-12
Промени
Fixed patient navigation so Inbox is visible immediately and remains available across all patient routes.
Fixed message notifications to open their Inbox conversation instead of the generic notification detail page.
Added doctor and medical-center sender identity to patient Inbox lists and conversation details.
Changed the app version from `0.1.29` to `0.1.30` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, targeted regression tests, and live patient browser QA.
v0.1.29
2026-06-12
Промени
Added a unified Inbox for private conversations, campaigns, super-admin messages, and existing system notifications.
Added doctor and medical-center patient relationship workspaces scoped to patients with non-cancelled appointments.
Added role-protected direct messages, patient-initiated conversations when enabled, center/doctor campaigns, campaign opt-out, delivery limits, audit events, and safe email notices without message content.
Added strict messaging RLS, explicit grants, communication settings, conversation/campaign storage, and private per-recipient campaign threads.
Changed the app version from `0.1.28` to `0.1.29` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, Supabase linked migration/security checks, and role-based browser QA.
v0.1.28
2026-06-11
Промени
Changed hidden calendar slots to use the operator-facing `Скрит` label while patient calendars mask them as ordinary occupied slots.
Added authorized, audited slot revealing for doctor and center/reception calendars.
Changed calendar detail toggles to hide patient names without disabling appointment dialogs, and expanded `Първи свободен` to search up to 90 days ahead with focused calendar rendering.
Added Apple/Outlook and Google Calendar actions for patients' future booked appointments.
Renamed the user-facing audit navigation and page label to `Лог`, and added doctor/center identity to active schedule cards.
Changed the app version from `0.1.27` to `0.1.28` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, role-based browser QA.
v0.1.27
2026-06-11
Промени
Added database-backed doctor languages so doctors can add missing spoken languages from their profile and make them available globally.
Added patient birth year, booking subject snapshots for appointments booked for another person, and patient/doctor/center appointment displays for the actual booked-for person.
Added doctor and medical-center profile galleries with a five-image limit, plus public profile rendering for saved gallery images.
Changed booking confirmation ordering so visit reason, previous-visit status, and payment appear before the optional booked-for subject/note context.
Changed audit pages to default to the latest 10 records, add URL-backed filters, and keep user-facing audit metadata human-readable.
Fixed schedule creation overlap guard rails and operational calendars so cancelled appointments free the visible slot instead of rendering as blocked gray time.
Changed the app version from `0.1.26` to `0.1.27` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --include-all`, `npx supabase db lint --linked --schema public --fail-on error`, `npx supabase db advisors --linked --type security --fail-on error` (existing warning-level advisor items remain).
v0.1.26
2026-06-11
Промени
Fixed audit and appointment detail surfaces so default role UX shows human labels and short references instead of full raw UUIDs or raw metadata blobs.
Fixed operational calendars so active appointments suppress matching free slot events and click fallback resolves the top visible FullCalendar event.
Changed center navigation to use the Bulgarian `Одитен журнал` label.
Changed ESLint ignores so local-only `temp/` QA artifacts do not fail repository verification.
Changed the app version from `0.1.25` to `0.1.26` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.24
2026-06-09
Промени
Changed patient doctor profiles to show rating stars under the doctor photo, move the booking entry point up, remove the empty booking container, and compact the professional information panel.
Added a compact three-day booking picker on doctor profiles with direct links to the confirmation page and visit-reason selection.
Changed patient calendar free-slot clicks to open confirmation directly instead of showing an intermediate slot modal.
Simplified the patient booking confirmation page into a form plus doctor/center summary card with doctor photo.
Changed patient doctor cards so `Запази час` opens the doctor profile when available and removed the separate `Профил` button.
Added doctor photos to patient appointment detail pages.
Changed the app version from `0.1.23` to `0.1.24` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.23
2026-06-08
Промени
Fixed first-free calendar navigation so FullCalendar moves when the `date` query changes, and added `Първи свободен` plus `Скрий/Покажи детайли` to the doctor calendar toolbar.
Added doctor-side appointment actions from booked appointment dialogs: cancel, reschedule, mark completed, mark no-show, and add an internal note.
Changed doctor public profile management so doctors can edit doctor-owned public fields including experience, languages, biography, education, qualifications, professional sections, publications, and patient-visible tags.
Added canonical Bulgarian visit-reason defaults and an idempotent demo-center seed for visit reasons and three additional Demo Medical Center doctor memberships.
Changed operational calendar status colors so blocked, cancelled, free, and completed states are visually distinct and match the legend.
Changed the app version from `0.1.22` to `0.1.23` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes --include-all`, `npx supabase db query --linked`, `npx supabase db lint --linked`, `npx supabase db advisors --linked` (existing advisor warnings remain).
v0.1.22
2026-06-08
Промени
Changed doctor and center navigation to split `Календар` from the new dedicated `Графици` pages.
Added Bulgarian Monday-first schedule date picker controls for schedule creation and editing.
Added schedule deletion with future-booked-appointment protection and audit logging.
Added free-slot hiding from the slot booking dialog, backed by `blocked_slots`.
Restored the center reception calendar toolbar with previous/next/today, `Първи свободен`, and detail toggles while keeping schedule management on `/center/schedules`.
Changed the app version from `0.1.21` to `0.1.22` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/center-role-navigation.spec.ts --project=chromium`; process cleanup sanity check found no task-owned npm, Vitest, Playwright, Next dev, or build process to terminate.
v0.1.21
2026-06-08
Промени
Fixed shared dialogs so close buttons and form controls work while modal clicks remain isolated from calendars underneath.
Changed all FullCalendar surfaces to use Bulgarian locale and Monday as the first day of the week.
Added a super-admin global email kill switch, defaulted email sending to disabled, and gated Resend plus Supabase Auth reset email triggers.
Changed patient-facing specialties to use real public doctor memberships, removed QA/internal specialty labels from the dashboard, and removed the AI-generated profile-photo label.
Improved OpenStreetMap address handling with normalized geocoding fallbacks and browser-location fallback when no address or geocode result is available.
Changed the app version from `0.1.20` to `0.1.21` for this delivery.
Verification: `npx vitest run tests/unit/ui-regression.test.ts tests/unit/operational-calendar-layout.test.ts tests/unit/nominatim.test.ts tests/unit/email-kill-switch.test.ts tests/integration/admin-messages-and-insurers-schema.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes`, `npx supabase db query --linked`, `npx supabase db lint --linked`, `npx supabase db advisors --linked`, `npx playwright test tests/e2e/design-smoke.spec.ts tests/e2e/patient-booking.spec.ts tests/e2e/center-manual-booking.spec.ts --project=chromium`.
v0.1.20
2026-06-08
Промени
Fixed the patient search map panel to render the real OpenStreetMap address map instead of the old decorative placeholder after the main merge.
Added a regression guard so `/patient/search` keeps using the shared OpenStreetMap map component.
Changed the app version from `0.1.19` to `0.1.20` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, live browser QA on `https://medcare-app-bg.vercel.app/patient/search`.
v0.1.19
2026-06-08
Промени
Fixed operational calendar dialogs so modal clicks stay inside the dialog and do not trigger the calendar beneath.
Fixed doctor and operational calendar slot colors to use solid status colors without translucent active-slot styling.
Changed `/` to open the login screen directly and simplified `/login` to the standalone login form.
Changed the patient dashboard CTA so the dashboard card says `Намери лекар` and removed the duplicate header action.
Added OpenStreetMap address visualization for patient-facing center and doctor location pages.
Added the official Medcare logo and favicon assets from `medcare.bg` and replaced the shell placeholder mark.
Changed the app version from `0.1.18` to `0.1.19` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, focused Playwright/browser QA.
v0.1.18
2026-06-08
Промени
Changed doctor operational calendars to use a compact custom toolbar with inline schedule actions, a dropdown legend, and event-derived visible working hours.
Fixed free slot calendar styling so active slots render at full opacity with stronger contrast instead of looking disabled.
Changed the top-right account menu and `/account` surface to read as `Настройки`, keeping left-nav `Профил` for the public role profile.
Added reusable upload/crop/delete image editing for account avatars, doctor public portraits, and center cover images using the `medcare-public-images` bucket.
Added an idempotent migration that assigns gender-appropriate generated doctor portraits by known active doctor names and refreshes missing/placeholder center cover images without overwriting custom uploads.
Updated design and feature documentation for the operational calendar toolbar and profile image editing rules.
Changed the app version from `0.1.17` to `0.1.18` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes`, `npx supabase db lint --linked`, `npx supabase db advisors --linked` (existing advisor warnings remain).
v0.1.17
2026-06-07
Промени
Added generated doctor portraits and medical center cover images, seeded through an idempotent migration and rendered in patient search, doctor profiles, center profiles, and related doctor lists.
Changed patient search and doctor profiles toward the Superdoc visual model with compact filters, insurer dropdown, map placeholders, two-column doctor profiles, sticky booking header, and compact slot previews.
Added a patient dashboard popular-specialties grid.
Added super-admin insurer management, seeded with the Superdoc screenshot providers, plus a new admin message composer for in-app messages with preference-gated email delivery.
Added notification detail pages and soft delete/archive actions in the notification bell.
Changed account settings to a FOPOS-inspired profile layout with avatar URL support.
Added the current `medcare.bg` favicon as `public/favicon.png` and wired it through metadata.
Changed the app version from `0.1.16` to `0.1.17` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes`, `npx supabase db lint --linked`, `npx supabase db advisors --linked`.
v0.1.16
2026-06-06
Промени
Fixed patient-facing appointment date/time formatting to always use `Europe/Sofia`, preventing Vercel server/client hydration mismatches and wrong UTC-shifted slot times on patient search, doctor profile, booking, and appointment surfaces.
Added a timezone regression test for the shared Bulgarian date/time format helpers.
Changed the app version from `0.1.15` to `0.1.16` for this delivery.
Verification: `TZ=UTC npx vitest run tests/unit/date-format.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/patient-booking.spec.ts --project=chromium`.
v0.1.15
2026-06-06
Промени
Added an idempotent Supabase data migration that fills patient-visible profile text, education, qualifications, biographies, symptoms/tags, languages, and experience ranges for all currently active demo doctors.
Added patient-facing doctor-center policy text and specialty-specific public price list rows for all active doctor-center memberships.
Changed `doctor_center_price_items` center-admin RLS management from one `for all` policy into separate insert, update, and delete policies so the patient-visible price SELECT policy remains unambiguous.
Added migration coverage tests so future data seeds keep the active doctor specialty inventory, public warnings, symptoms, and price lists populated.
Changed the app version from `0.1.14` to `0.1.15` for this delivery.
Verification: `npx vitest run tests/integration/doctor-profile-data-seed.test.ts`, `npx vitest run tests/integration/superdoc-doctor-profile-schema.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/patient-booking.spec.ts --project=chromium`, `npx supabase db push --linked --yes`, `npx supabase db lint --linked`, `npx supabase db advisors --linked`, remote data count check.
v0.1.14
2026-06-06
Промени
Fixed the center reception schedule calendar body so FullCalendar keeps a real viewport height instead of clipping the time grid below the toolbar.
Added Superdoc-style doctor profile depth for patients: symptom/treatment tags, review summaries, earliest-slot context, location warnings, and public price list rendering.
Added durable Supabase fields and RLS-protected `doctor_center_price_items` for patient-visible price lists, plus explicit NHIF and insurance warning text per doctor-center practice.
Changed patient booking confirmation to show `Детайли`, `Пациент`, and `Потвърждение` steps with patient profile summary and new/returning patient choice before final submit.
Added center/doctor management inputs for patient-facing profile tags, payment warnings, and public price list rows.
Changed the app version from `0.1.13` to `0.1.14` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/patient-booking.spec.ts --project=chromium`, `npx supabase db push --linked --yes`, `npx supabase db lint --linked`. Post-push `npx supabase migration list --linked` and `npx supabase db advisors --linked` retries hit a temporary Supabase pooler authentication circuit breaker.
v0.1.13
2026-06-06
Промени
Fixed the center reception schedule filters so long doctor and specialty select values cannot overflow their fields and overlap neighboring controls.
Changed the app version from `0.1.12` to `0.1.13` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.12
2026-06-06
Промени
Fixed the center reception schedule page so the calendar opens on the first visible slot date when no explicit date filter is selected, avoiding an empty current week when schedules start later.
Fixed the center schedule filter bar to wrap controls instead of overlapping doctor, specialty, patient, and action fields on wide-but-crowded layouts.
Changed the app version from `0.1.11` to `0.1.12` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.11
2026-06-06
Промени
Fixed owner impersonation to use the target profile across center, doctor, patient, account, booking, schedule, review, notification, and export flows so impersonated navigation and actions match the selected account.
Added super-admin medical center registration from `/admin/centers`.
Added super-admin specialty editing and soft-delete/deactivation from `/admin/specialties`.
Seeded known Bulgarian 2026 holidays and non-working substitute days through the end of the year.
Added an idempotent admin demo seed script for 3 centers, 9 doctors, 6 reception users, next-two-week schedules, and 4 extra patient users.
Changed the app version from `0.1.10` to `0.1.11` for this delivery.
Verification: `node --check scripts/seed-admin-demo-data.mjs`, `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes`, `node scripts/seed-admin-demo-data.mjs`, `npx supabase db lint --linked`, `npx supabase migration list --linked`, `npx supabase db advisors --linked`.
v0.1.10
2026-06-06
Промени
Changed super-admin impersonation to owner impersonation with full target-account access, no high-risk support-action blocking, and audit-log suppression while the signed impersonation session is active.
Added admin create forms and server actions for `/admin/specialties` and `/admin/holidays`.
Added the Superdoc clinic/landing specialty inventory as 94 active Medcare specialties through a Supabase seed migration.
Updated super-admin and security documentation for owner impersonation and admin configuration behavior.
Changed the app version from `0.1.9` to `0.1.10` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase db push --linked --yes`, `npx supabase db lint --linked`, `npx supabase migration list --linked`.
v0.1.9
2026-06-06
Промени
Added the super-admin `/admin/users` operations console with user search/filtering, profile detail, role/status support actions, center staff access management, password reset email action, per-user audit context, and centralized admin navigation.
Added audited support impersonation sessions with short-lived signed server cookies, database-backed session records, visible shell banner, exit action, high-risk support-action blocking while impersonating, and audit events for start/end.
Changed `/admin/audit` to support filters for actor, action, entity type, medical center, date range, and impersonation session id.
Added the `support_impersonation_sessions` migration with RLS, least-privilege grants, support-session indexes, and local Supabase type coverage.
Updated super-admin/security documentation for support user management and impersonation boundaries.
Changed the app version from `0.1.8` to `0.1.9` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.8
2026-06-05
Промени
Fixed operational calendar clicks with a coordinate fallback that opens the matching appointment or slot when FullCalendar hit testing reports the parent surface instead of the event element.
Changed the app version from `0.1.7` to `0.1.8` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`.
v0.1.7
2026-06-05
Промени
Fixed FullCalendar appointment hit testing by giving the time-grid event layer a real height while preserving pointer events on appointment harnesses.
Changed the app version from `0.1.6` to `0.1.7` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`.
v0.1.6
2026-06-05
Промени
Fixed operational calendar event scroll alignment so clicking appointment events does not place them under the sticky FullCalendar header.
Changed the app version from `0.1.5` to `0.1.6` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`.
v0.1.5
2026-06-05
Промени
Fixed operational calendar event clickability by keeping FullCalendar events above the striped calendar surface with explicit pointer-event handling.
Changed the app version from `0.1.4` to `0.1.5` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`.
v0.1.4
2026-06-05
Промени
Added a FOPOS-style changelog page at `/changelog` and made the bottom-left app version badge open it.
Changed the center operational schedule page to remove the extra `Календар`, `Календари`, and `Последно обновяване` labels between the filter controls and the calendar.
Fixed appointment detail actions so `Отмени час` and related status actions return Bulgarian toast feedback, close the modal on success, and refresh the calendar state.
Changed the app version from `0.1.3` to `0.1.4` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`.
v0.1.3
2026-06-05
Промени
Changed repo workflow rules to mirror the FOPOS version discipline: every repo change now bumps the `package.json` patch version by one so the bottom-right visible UI version advances with each delivery.
Changed workflow docs and the Medcare default agent skill to require `package-lock.json` and `CHANGELOG.md` to stay aligned with the same bumped version.
Changed the app version from `0.1.2` to `0.1.3` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.2
2026-06-05
Промени
Fixed the appointment completed-status migration so Supabase can apply the new enum value and completed timestamp constraint in one migration push.
Applied the center/reception/admin Superdoc gap migrations to the linked Supabase project.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx supabase migration list --linked`, Supabase schema smoke query.
v0.1.1
2026-06-04
Промени
Added a persistent bottom-left app version indicator visible across Medcare pages, using the current `package.json` version as the single source of truth.
Changed the app version from `0.1.0` to `0.1.1` for this delivery.
Verification: `npm run lint`, `npm run test`, `npm run build`.
v0.1.0
2026-06-05
Промени
Added direct slot booking from operational calendars: doctor and center/reception users can click a free bookable slot and open a fixed-slot `Записване на преглед` modal without URL roundtrip.
Added normalized manual-booking action results so expected booking errors show Bulgarian toast feedback instead of leaking production Server Components errors.
Added a real admin-only `/center/practice` `Нова практика` workflow for linking an existing doctor, creating a new doctor shell without auth credentials, reactivating inactive memberships, blocking duplicate active practices, and writing practice/doctor audit events.
Fixed availability slot timestamps to include the correct Europe/Sofia UTC offset before manual booking writes, preventing booked appointments from appearing shifted by several hours after a slot click.
Added focused unit coverage for direct slot bookability and practice membership create/reactivate/duplicate planning.
Verification: `npx vitest run tests/unit/slot-booking.test.ts tests/unit/practice-management.test.ts`, `npx vitest run tests/unit/availability-slots.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test`.
Browser QA note: local Chromium QA with seeded demo accounts verified doctor `/doctor/schedule` free-slot click booking and center reception `/center/schedule` free-slot click booking; both opened the fixed-slot dialog, saved a patient, showed `Часът е записан успешно.`, and rendered the patient event in the calendar.
Fixed schedule creation feedback so invalid schedule submissions show Bulgarian validation/error toasts instead of production Server Components render errors.
Changed schedule editor time controls and calendar labels to enforce 24-hour `HH:mm` output without AM/PM.
Fixed doctor and center operational schedule pages to stay bounded inside the fixed shell with no extra desktop page scroll, and removed the duplicate schedule form heading inside schedule dialogs.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test`.
Live QA note: `https://medcare-app-bg.vercel.app/` returns `200` without Vercel protection, `/doctor/schedule` redirects through app auth to `/login?next=%2Fdoctor%2Fschedule`, `vercel inspect` shows the alias on production deployment `dpl_GdzJeG4x3buAGb4wvBrJ4AK8uCdS`, and browser smoke found no console errors.
Added `/center/practice` as the center practice workspace with center-scoped doctor/practice rows, schedule links, admin settings access, and a safe no-schema placeholder for creating a new practice.
Changed center reception permissions so reception can create and edit schedules for doctors in their active center scope while staff/core settings remain admin-only.
Added modal-based schedule creation and safe schedule replacement for doctor and center calendars; schedule edits are blocked when future booked appointments would be affected.
Changed doctor and center schedule calendars to use a fullscreen operational calendar workspace with top command bar, floating legend, compact Superdoc-inspired slot styling, and schedule controls over the calendar instead of a schedule form below it.
Changed schedule, practice-settings, and error feedback to use FOPOS-style toast behavior with hover/focus pause, dismiss reasons, and copy support for error toasts.
Changed the header theme quick control to a direct light/dark sun/moon toggle.
Added unit coverage for reception schedule permissions and safe schedule replacement planning.
Verification: `npm run test -- tests/unit/permissions.test.ts tests/unit/center-permissions.test.ts tests/unit/schedule-management.test.ts`, `npm run lint`, `npm run test`, `npm run build`, `npx playwright test`.
Browser QA note: local unauthenticated checks verified `/center/practice` and `/center/schedule` redirect to login, public home loads, and mobile `/center/schedule` has no horizontal overflow. Local authenticated demo login did not succeed against the current local Supabase/demo data, so authenticated schedule/practice browser QA must be repeated on the deployed QA target after merge.
Live QA note: production deployment `dpl_AhyuLW6hV3pkVrfVStbEYwneweTo` is READY and `https://medcare-app-bg.vercel.app` points to it. Public home and protected-route redirects were verified; documented demo credentials did not authenticate on the live alias during this pass, so authenticated practice/schedule click-through QA remains blocked until demo auth data is refreshed.
Changed the protected app shell to a fixed FOPOS-like workspace with a narrower collapsible sidebar, compact fixed header, mobile overlay navigation, and scroll isolated to the content pane.
Changed `/account` to render inside the role workspace shell so profile/settings keep the role navigation visible.
Changed the header account controls to use a single profile dropdown for profile/settings and sign out while keeping theme and notifications available.
Changed protected `PageHeader` output to keep page titles screen-reader-only so large visible page titles no longer consume workspace height.
Changed patient, doctor, and center calendars to default to the 08:00-18:00 working-time window and open slot/appointment details in dialogs from calendar clicks.
Changed center schedule calendars to display past/free/blocked slots while keeping manual booking choices limited to internally bookable slots.
Fixed doctor schedule appointment dialogs to include the known doctor, center, phone, payment, and visit-reason context instead of falling back to generic labels.
Added pure availability slot generation coverage for free, booked, blocked, and past slot states.
Changed patient, doctor, and center calendars to render availability slot statuses directly with shared green free, orange booked, and gray blocked calendar styling.
Added direct patient calendar booking links for free slots while keeping booked and blocked slots visible but non-bookable.
Changed the doctor schedule calendar to include availability-derived free and blocked slots alongside appointment events.
Fixed FullCalendar event URL mapping so non-clickable appointment or blocked/booked slot events do not render `href="undefined"`.
Added focused slot calendar event mapping tests.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/patient-booking.spec.ts tests/e2e/center-manual-booking.spec.ts --project=chromium`; after the live-browser URL fix, reran `npm run lint`, `npm run test -- tests/unit/slot-events.test.ts`, `npm run build`, and `npm run test`.
Live QA note: deployed production as `dpl_7X44yYef6kWXpeHTcjQ1thY58aEq`; `https://medcare-app-bg.vercel.app` points to that deployment. Browser QA verified patient demo login and booking calendar legend/copy, center admin schedule calendar legend plus orange `Зает` event without `href="undefined"`, and doctor schedule calendar legend plus orange `Зает` event without `href="undefined"`. Production demo data currently has `0 свободни часа` for the patient booking page, so free-slot patient click-through could not be exercised on live data.
v0.1.0
2026-06-04
Промени
Added patient Superdoc gap features for richer doctor search, appointment details, rebooking, visit reason templates, appointment reviews, follow-up specialists, verified-phone booking gate, richer doctor profiles, and earlier-slot requests.
Added database support for patient reviews, follow-up specialists, earlier-slot requests, visit reason templates, and richer doctor/profile/location metadata.
Confirmed online consultations, video visits, home visits, Plus/subscription models, patient invoices, and payment processing remain outside the current scope.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/patient-booking.spec.ts tests/e2e/patient-appointment-detail.spec.ts --project=chromium`.
Added the center role/navigation audit implementation for `center_staff` subroles, including a shared center-scoped permission matrix, role-aware center navigation, admin-only doctor management visibility, admin-center filtering for mixed-role users, and focused unit/Playwright coverage.
Changed center and doctor schedule forms to use scoped doctor-center membership selectors instead of raw membership-id text inputs.
Changed center manual booking to select schedule slots from center-scoped availability data, populate schedule instance and time values from the selected slot, and render free/blocked internal booking slots on the center calendar.
Added URL-backed center schedule filters for doctor/practice, specialty, patient name or phone, first free slot, explicit refresh timestamp, show/hide details mode, and click-to-book availability slots.
Added center appointment detail actions: mark completed, mark no-show, cancel with reason, reschedule to a validated free slot, add internal note, and export to Apple/Outlook `.ics` or Google Calendar.
Added appointment change tracking for manual booking, cancellation, rescheduling, status changes, and note creation.
Added the `completed` appointment status with database metadata columns and Supabase type coverage.
Changed schedule creation to expand finite recurring series into schedule instances across selected weekdays and skip official holidays when configured.
Added a center/practice-scoped visit reason catalog with patient visibility, popular/default markers, duration/payment/weekday rules, RLS, appointment linkage, patient booking selection, reception/internal selection, and server-side booking validation.
Added doctor-center practice settings for center admins, including public booking visibility, central reception, center-hours flag, child-patient support, public phone, insurers, RZI code, practice description, patient instructions, and public search/booking compatibility for hidden or disabled-online practices.
Added center public profile management for center admins, including clinic type, website, public phone list, notification contacts, working hours, expanded public content sections, route-scoped profile navigation, patient profile rendering, schema/type coverage, and center profile field tests.
Added center notifications for new, cancelled, and rescheduled appointments, including center staff recipient filtering, center notification preferences, a dedicated `/center/notifications` unread/all feed, review-ready notification categories, and focused notification tests.
Added center-admin appointment review management foundations, including the `appointment_reviews` schema/RLS, admin-only `/center/reviews` feed, reply form/action with audit log and patient notification, and review rule/schema tests.
Hardened center statistics, audit, and CSV export with richer status/payment/source breakdowns, explicit center audit scoping, role-scoped statistics export authorization, and appointment stats summary tests.
Added an admin-only `/center/invoices` out-of-scope placeholder documenting that invoices, counterparties, payments, and accounting remain outside Medcare v1.
Added center-scoped patient appointment history inside the center appointment detail panel, limited to previous visits in the same medical center and covered by focused privacy tests.
Hardened public search and booking compatibility for center/practice settings, including clinic type and child-patient filters plus hidden/online-disabled practice filtering on patient center and doctor profile pages.
Documentation: recorded center/reception/admin Superdoc gap audit findings, operational calendar patterns, and feature boundaries in the feature docs and design docs.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test tests/e2e/center-manual-booking.spec.ts tests/e2e/patient-booking.spec.ts --project=chromium`.
Changed the stable Vercel live QA alias to `https://medcare-app-bg.vercel.app` and updated agent/workflow documentation so future iterations use that address by default unless explicitly changed by the user.
Live QA note: added `medcare-app-bg.vercel.app` as a verified Vercel project domain, updated `NEXT_PUBLIC_APP_URL` in Vercel production/development environments, and redeployed production as `dpl_9gJKtt5xsfgzpnfsDeXQaCDra7Db`.
Verification: `npx vercel inspect medcare-app-bg.vercel.app`, `npx vercel alias ls`, and `Invoke-WebRequest` smoke check for `https://medcare-app-bg.vercel.app/`, `/login`, `/forgot-password`, and `/account`.
v0.1.0
2026-06-03
Промени
Added shared account settings with profile editing, saved theme preference, password change, notification preferences, forgot/reset password screens, global dismissible toast notifications, protected account routing, app-shell account controls, a theme quick toggle, and an in-app notification bell.
Added private notification preference and notification tables with RLS, authenticated grants, Supabase type coverage, and appointment notifications for booked/cancelled/rescheduled flows.
Added restart-safe implementation notes for the FOPOS-like feature rollout.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`, `npx playwright test --project=mobile`.
Live QA note: remote Supabase migration `20260603193000_account_notifications.sql` was applied through `npx supabase db query --linked -f ...` and marked applied through `npx supabase migration repair --linked --status applied 20260603193000`.
Live QA note: Vercel production deployment `dpl_AdDhX6KdJbANt3Ehcw39dMaW5tGk` is READY and was verified on unprotected alias `https://medcare-app-sigma.vercel.app`; `app.medcare.bg` DNS still points to old infrastructure and must be changed to Vercel (`A app.medcare.bg 76.76.21.21`) before it serves the new app.
Added the Medcare design system baseline, UI primitives, tokenized app shell, public/auth redesign, patient discovery cards, patient booking slot display, operational center/doctor surfaces, admin metrics/audit surfaces, and final design implementation notes.
Added design smoke coverage and patient/center route smoke checks for the redesigned surfaces.
Added the Medcare documentation package, including workflow, security, tech stack, product guidelines, feature descriptions, project skills, and onboarding README updates.
Verification: `npm run lint`, `npm run test`, `npm run build`, `npx playwright test --project=chromium`, `npx playwright test --project=mobile`.
Added the full Medcare v1 feature-description catalog for patient booking, doctor schedules, center operations, reception manual booking, super admin configuration, public profiles, audit/statistics, authentication/roles, storage/images, and the future importer boundary.
Replaced the default Next.js README with Medcare onboarding documentation covering v1 scope, setup, environment variables, scripts, project structure, verification, deployment targets, and the documentation map.
Added the canonical feature-description policy for Medcare with the required structure, v1 feature catalog, and update workflow for product-level source-of-truth documents.
Added Medcare product guidelines for Bulgarian-first healthcare copy, patient-safe communication, operational wording, role terminology, and trust-sensitive claims.
Added the Medcare workflow guide by combining the useful day-to-day workflow, quality-check, release hygiene, changelog, temp-artifact, and Git-on-Windows policies from the FOPOS workflow docs with Medcare-specific route, booking, Supabase, and post-deploy verification rules.
Added Medcare security guidelines covering Supabase RLS, role boundaries, appointment data, patient PII, storage/uploads, audit logs, and email/SMS handling.
Added the `medcare-qa-verification` Codex skill for post-implementation QA, touched-area check selection, changelog/bookkeeping review, and live-verification gap reporting.
Added the shared `karpathy-guidelines` Codex skill for simple, surgical, assumption-aware, verification-driven coding work.
Added the `medcare-default` Codex skill with the repository workflow for Next.js, Supabase/RLS, Vercel deployment verification, role-sensitive QA, and mandatory changelog updates.
Added the initial Medcare changelog and made changelog updates mandatory for code, behavior, schema, configuration, deployment-policy, and repo-policy changes.
Updated the Medcare agent policy to require append-only changelog entries from the start of the project.
Verification: documentation/policy change only; no runtime checks required.
v0.1.25
2026-06-09
Промени
Added canonical Bulgarian city and doctor-language selectors across patient search, doctor profiles, and medical-center management.
Added automatic date-based doctor search with direct daily availability links.
Changed public doctor profiles to use a compact multi-center booking widget with tabs, expandable daily slots, and focused `Запази час` actions.
Replaced patient-facing `мнение` terminology with `оценка` and compacted published ratings and professional information.
Added an idempotent migration that deactivates QA specialties and seeds two published demo ratings per demo doctor.
Verification: `npm run lint`, `npm run test`, `npm run build`; linked Supabase migration and deployed browser QA.