Skip to content

Medora 0.3.0 (18)

Choose a tag to compare

@github-actions github-actions released this 16 Sep 19:43
· 155 commits to main since this release

Before you update (cloud sync only): apply supabase/migrations/20260917000000_treatment_sick_leave.sql to your Supabase project (and supabase/migrations/20260916000000_medication_ean.sql if you have not yet). Without it, treatments stop syncing and the app shows an error naming the missing file. Local-only installs are unaffected.

Update every device you sync before you add an "as needed" medicine. Older versions read it as "every 8 hours" and create doses and reminders for it, and they can still overwrite doses taken on an updated device.

The first sync after this update downloads all your data once more to recover entries older versions skipped. It can take a little longer on a slow connection; unsynced changes are kept.

New: record an illness and your sick leave. A treatment can hold a sick-leave period (Krankenstand / malattia), the certificate number and the doctor. The list and the dashboard show a badge while the leave runs. Ending a treatment can also end the sick leave (unticked by default, shows the date). "Share record" sends one illness as plain text with its sick leave and what you took; the CSV export has the new columns.

New: "as needed" medicines (Bei Bedarf / Al bisogno). Log each dose with "Log dose". No reminders, nothing is marked missed, and the treatment shows how many you took and when.

Sync is more reliable: a dose taken on one device stays taken on the others; every device gets the doses of a prescription made elsewhere; large accounts sync past 1000 rows; stuck requests time out.

Known limitation: if you change the same illness on two devices while one is offline (for example end it on one and add the certificate number on the other), the change saved later wins as a whole. Edit one illness on one device at a time.

What's new in 0.3.0+18

Features

  • show what was taken and share one episode as text
  • read every dose of one treatment
  • an as-needed schedule with a "Log dose" button
  • ending a treatment offers to close its sick leave
  • End can also close the open sick leave
  • record and show the sick leave of an illness episode
  • migration 15 adds the sick-leave columns to treatments
  • sick-leave fields and inclusive day count on the entity

Fixes

  • as-needed counts name the dose; Italian leave heading
  • an ended treatment's medicines get no new doses
  • a treatment push to an unmigrated project names the migration
  • pull every table once more after upgrading, past old cursors
  • pull every table in pages, oldest first, past the 1000-row cap
  • a dose never takes more stock than it uses (m-7)
  • a disposed sync service starts nothing more (m-2)
  • generated doses are pulled once, not on every cycle (m-4)
  • a row created offline is seen by devices that synced since (I-C)
  • an overdue dose with an unpushed change is not marked missed (I-B)
  • a dose row the server refuses no longer holds back its batch (I-A)
  • the shared record names the patient and reads right
  • a prescription made or changed elsewhere gets its doses here (C-A)
  • a prescription's dose reads "1 Tablette", not "1 tablets"
  • write a cell a spreadsheet would run as a formula as text
  • every device derives the same doses from one prescription
  • "Log dose" records one dose per tap (task 6 I5)
  • a schedule that replaces "as needed" starts now (task 6 I4)
  • save an as-needed prescription with no duration (task 6 I3)
  • a local edit never brings a deleted medication back (task 6 I2)
  • a second undo gives no stock back (task 6 I1)
  • "x of y taken" counts scheduled doses only
  • a dose takes units of stock, not milligrams
  • a sync stopped at the re-run cap retries once later
  • a request that hangs fails like a network error (I-2)
  • a dose taken on one device stays taken on every device (C-1)
  • "Log dose" sits below the tile, on one line
  • undoing an as-needed dose deletes it
  • a pending dose of an as-needed prescription is never due
  • a stock change keeps the pack's EAN
  • the end-sick-leave box starts unticked and names its date
  • stamp (de)activating and (un)archiving after the row's stamp
  • an upsert answered without its row fails the push
  • run a sync asked for during a force push or pull
  • cap a cycle's automatic re-runs
  • label the date clear button; Italian doctor hint says Dott.
  • no sick-leave badge for a leave that has not started
  • sick-leave errors name the sick-leave fields
  • show the sick-leave card for any stored field
  • mark a pushed row synced only if nobody edited it meanwhile
  • date picker opens inside its own bounds
  • ending a deleted treatment no longer undoes the delete
  • background push follows the sync cycle's write rules
  • sick-leave day count is null, never 0 or negative
  • stop endTreatment dropping fields it does not name