Skip to content

Releases: MichelleFindlay/pillbox

v1.3.3

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 25 Oct 11:47

This release also includes everything from v1.3.2, which wasn't published on its own.

Security

  • Cross-origin isolation headers (1.3.3). Every page now also sends Cross-Origin-Embedder-Policy: require-corp, Cross-Origin-Opener-Policy: same-origin and Cross-Origin-Resource-Policy: same-origin, alongside the existing Content-Security-Policy, Strict-Transport-Security, X-Frame-Options, X-Content-Type-Options, Referrer-Policy and Permissions-Policy.
  • Setup code limits (1.3.2, extended in 1.3.3). On a new install, wrong setup codes are limited to 10 per address in 15 minutes (1.3.2), and to 40 from all addresses together (1.3.3), so guessing from many addresses or a faked X-Forwarded-For is still stopped. A paused address is told nothing more than "that setup code isn't right"; the error log says it's paused. Attempts made while paused aren't counted, so a pause can't be extended indefinitely. To clear a lockout: DELETE FROM login_attempts WHERE username = 'setup';

Sharing: migraine and headache medicines (1.3.2)

  • Headache diary medicines follow the Medicines permission. Someone you share with who doesn't have Medicines access sees no medicines at all in the diary, including names you typed in rather than chose from Meds.
  • Medicine counts follow it too. For them, painkiller and triptan days on the Migraine page, the month-by-month table and the clinician summary show "not shared" ("–"), and no medication overuse warnings are shown.
  • Private medicines are never shown to anyone you share with. That covers diary entries, medicine-day counts and as-needed doses logged on Today, whatever their Medicines access. Headache and migraine days are part of Care, so they still show for anyone with Care access.
  • A regression test checks this for the owner, someone with Medicines shared, and someone without: php tests/sharing_medicines_test.php (run it against a test database).

Privacy policy (1.3.3)

  • The generated privacy policy now mentions the second cookie set by Remember this device, and the list of signed-in devices (with their IP addresses) under Active sessions.

Documentation

  • Behind a proxy (1.3.2): the README and config.example.php now explain 'trust_proxy' => true. Set it behind a reverse proxy or load balancer you control, so sign-in and setup limits apply to each visitor's own address. The README also explains how to clear a setup code lockout.
  • README and in-app help (1.3.3): brought up to date with everything since v1.2.5. That covers allergies, private health care, migraine weather, self-check routines, cycle-based schedules, minimum time between doses, two-factor sign-in, remembered devices, password reset, active sessions, the Report tab, and the full list of settings.
  • A new Travel section (1.3.3) in the Medicines help.
  • 28 new screenshots (1.3.3) from the demo account, across Private health care, Care, Medicines, Mind, Migraine, History, Readings, Appointments and Account.
  • config.example.php (1.3.3) now shows the weather, setup_code and push.allowed_hosts settings.

Upgrading

Install from Admin → Version, or git pull. No database changes are needed. If Pillbox sits behind a reverse proxy or Cloudflare, set 'trust_proxy' => true in config/config.php.

v1.3.1

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 24 Oct 11:41
33740f4

Pillbox v1.3.1

A security release. It fixes the issues found by an automated code scan and an independent penetration test. Updating is recommended for everyone, especially if you share your Pillbox with a carer or partner.

🔒 Security

Sharing with a carer or partner

Each part's permission now applies wherever that information appears, not only on its own page.

  • Medicines: someone without access to Medicines doesn't see your medicines anywhere, including Care, Mind, the summaries and the report.
  • Readings: someone without access to Readings doesn't see your readings anywhere, including Diabetes, Blood pressure, Today and the report. Nor can they add them from the hypo guide, sleep log, Diabetes, Blood pressure or antenatal check-ups.
  • The report and CSV downloads only include the parts that have been shared. Downloads of anything else are refused.
  • Mind: Mind notes and check-in summaries stay hidden on appointments while Mind is locked, and blood pressure side-effect notes need Mind access.
  • Changing medicines from Care or Mind (logging a headache dose, marking a medicine returned, Mind's "mental health medicine" setting) needs Medicines permission.
  • Hidden Care categories: their checks, payments, periods and sleep can't be reached through another category.
  • Private medicines are left out of every shared view.

Signing in and accounts

  • Two-factor sign-in on every route: an authenticator app or security key is asked for with Microsoft and other single sign-on too.
  • Limits per account: wrong codes, PINs and passwords are counted per account, not per browser session. PINs are limited to 5 wrong tries in 15 minutes and 15 a day.
  • Changing your email address needs your current password, and your old address is told about the change.
  • Adding a password to a single sign-on account needs you to confirm it's you first.
  • Removing a forgotten Mind PIN needs a real sign-in, not a remembered device.
  • Single sign-on can only be started from Pillbox's own buttons.
  • Sign-up: checking whether usernames are taken is limited.
  • Microsoft pre-registration: a pre-registered Microsoft account is only linked by email for your own tenant or tenants you list by ID, never through '*' (any tenant).

New installs

  • Setup code: creating the first administrator needs a one-time code, found in storage/setup_code.txt on the server and in PHP's error log. This applies whether you use the setup page, single sign-on or sign-up.

Links and emails

  • Trusted site address: password reset links and other links in emails use your Pillbox's real address, never one taken from a forged request. Without a site address set, reset emails wait until an administrator has visited.

Medicine safety

  • "Log anyway" for a too-soon dose only works through Pillbox's own confirmation.
  • Daily maximum: an as-needed medicine's daily maximum is checked by the server.

The server

  • Notifications only go to the browsers' own push services.
  • The updater only downloads this Pillbox's own release from GitHub.
  • Nightscout needs https://.
  • Uploads: health uploads and stored photos are limited.
  • Private pages don't reveal by name which ones someone has used.
  • Deleting a medicine, or everything on a private page, cleans up fully.

🔧 Improvements

  • Damaged config: if config/config.php is empty or damaged (for example, overwritten by an upload), Pillbox explains what's wrong instead of showing a PHP error.
  • Changelog: "Check for updates" refreshes the in-app changelog too.

⬆️ Upgrading

Upload the new files over your current ones, keeping config/ and storage/. The database needs no changes.

After upgrading:

  • Set your site address under Admin → Site settings, so password reset emails can be sent.
  • If you share your Pillbox, check each person's permissions under Sharing. They now apply everywhere, so someone may see less than before if a part wasn't shared with them.
  • If you use Microsoft sign-in with other tenants, list only tenants you trust in allowed_tenants, and check whether any pre-registered accounts from them are administrators.
  • Single sign-on: links straight to auth_entra.php or oidc_start.php now go to the sign-in page. Use the buttons there.

Full changelog: v1.3.0...v1.3.1

v1.3.0

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 18 Oct 16:04
fe15ad9

Two-factor sign-in with authenticator apps and security keys, a list of every device you're signed into, and an in-app changelog.

✨ New

Two-factor sign-in

  • Authenticator apps: add Google Authenticator, Microsoft Authenticator, 1Password or similar under Account → Password & security. Scan the QR code, confirm it with the 6-digit code, and you're asked for a code after your password when you sign in. Add more than one (for example a spare on a second phone) — a code from any of them is accepted.
  • Backup codes: shown once when you confirm your first authenticator app, for when none of them are to hand. Generate new backup codes replaces them; there's also a Download backup codes link to save them as a file.
  • Security keys: add a hardware security key (e.g. a YubiKey) the same way, as well as or instead of an authenticator app.
  • Nicknames: name each authenticator app or security key when you add it, or Rename one later, so they're easy to tell apart.
  • Confirm it's you first: adding a new authenticator app or security key asks you to re-enter your password (or, if you're signed in with Microsoft or another linked account, to confirm with that instead) before it's added. This stops a device left signed in somewhere from being used to plant a backdoor into your account.
  • Signing in with Microsoft or another linked account: if you don't have a Pillbox password, you can now still set up two-factor sign-in — the step above uses your linked sign-in instead.
  • Signing in: after your password, a page lets you enter a code, use a security key, or (lost your phone?) a backup code.

Active sessions

  • Account → Password & security now lists every device currently signed in — not just the ones with Remember this device ticked — with when it signed in and when it was last active.
  • Sign out a single device from the list without signing out everywhere else.
  • IP address is shown for each session, and (if an admin turns on the new geoip_lookup setting) an approximate city and country too.

In-app changelog and licenses

  • Admin → Version now shows the changelog for each release, and the licenses for Pillbox and anything it's built on, without leaving the app.
  • Development version: if you're running a checkout ahead of the latest release, Version says so instead of just "up to date".

🔒 Security

  • Sharing: closed two gaps where sharing Appointments or Care (without sharing Mind) could be used to read or change Mind data through those pages — Mind's own permission is now always checked.
  • Authenticator app secrets are now encrypted at rest, the same way Pillbox already protects connected-app tokens and private pages.
  • Imports: the Apple Health, MyFitnessPal and Google Fit importers now have decompression and time limits, so a crafted file can't tie up the server; backup and blood pressure CSV imports have explicit size limits too.

🐛 Fixes

  • Installed on an iPhone: the status bar no longer shows a translucent blur over the top of the app.
  • Admin → Version: Check now also refreshes the changelog, not just whether an update is available — it could otherwise stay stale for up to 12 hours after a new release.

⚙️ For admins

  • geoip_lookup (under 'app' in config/config.php, off by default) shows an approximate city/country on Active sessions by sending the IP address to a third-party lookup (ipapi.co) — noted in the privacy policy when turned on.
  • Nothing else to configure: authenticator apps and security keys work out of the box once people have a password or a linked sign-in.

⬆️ Upgrading

Upload the new files over your current ones, keeping config/ and storage/. The database updates itself the next time a page is opened, adding the tables for authenticator apps and active sessions.

Full changelog: v1.2.8...v1.3.0

v1.2.7

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 13 Oct 00:12
0732e9d

Stay signed in on the devices you use most, and reset a forgotten password yourself.

✨ New

Remember this device

  • Stay signed in: tick Remember this device above Sign in, and that phone or computer stays signed in for 90 days after you last used it. Each use starts the 90 days again, so devices you use often stay signed in. Leave it unticked on a shared or public computer.
  • Single sign-on: it works with Microsoft and the other sign-in buttons too.
  • PINs: Mind and the private pages still ask for their PIN.
  • Account → Sign-in: a new Remembered devices list shows each one (e.g. "Chrome on Linux"), with when it was remembered and last used. Forget any you no longer use.
  • When devices are forgotten:
    • Signing out forgets that device.
    • Sign out everywhere else and changing your password forget the others.
    • An admin resetting your password or disabling your account forgets them all.

Forgotten password

  • Reset by email: Forgotten your password? on the sign-in page emails a link to choose a new password, to the email address on your account.
  • The link: it works once, for an hour. Changing your password signs you out everywhere and sends an email confirming the change.
  • Privacy: the page gives the same answer whether or not an account exists, so it can't be used to find out who has one.
  • Who can use it: you need an email address on your account (add one under Account → Profile). If your Pillbox can't send email, or you sign in with Microsoft or another sign-in button, ask whoever runs it.

🔒 Security

  • Stored tokens: remembered devices and reset links are stored only as hashes, so a copy of the database can't be used to sign in.
  • Copied or guessed tokens: a remembered device whose cookie fails the check is forgotten straight away.
  • Reset links: a link is moved out of the address bar as soon as it's opened, and expired links are tidied up automatically.
  • Limits: at most 3 reset emails an hour per account, with the same throttling as failed sign-ins.

⚙️ For admins

  • remember_days (under 'app' in config/config.php) sets how long a remembered device stays signed in. The default is 90; 0 turns the option off.
  • Forgotten password needs email: set it up under Site settings → Email. Without email, people are told to ask you, and you can still reset passwords from Admin → Manage.

⬆️ Upgrading

Upload the new files over your current ones, keeping config/ and storage/. The database updates itself the next time a page is opened, adding the tables for remembered devices and password resets.

Full changelog: v1.2.6...v1.2.7

v1.2.6

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 12 Oct 23:46
e485696

Catch up on Care and self-care from History, a timer that counts down to your next dose, and a minimum time between doses.

✨ New

Care and self-care in History

  • Care routines: History now shows your Care routines and Mind habits for each day, alongside your doses. If you forgot to tick something off, tick it on the right day, as far back as a year.
  • Self-care: your self-care checklist from Mind is there too, for every day. Items you've since taken off the checklist still show on the days they were ticked, so they can be unticked.
  • Summary: a table shows how often each routine and self-care item was done over the chosen period.
  • Show: choose medicines, Care, or both. Choosing a single medicine shows just that medicine.
  • Mind PIN: if Mind has a PIN, self-care and Mind habits stay hidden until it's unlocked, with an Unlock button that brings you back to History.

Timer to next dose

  • Starts from the time left: on Today, Timer to next dose opens the visual timer at the time left until your next dose.
  • Accurate: Start always counts down to the dose time itself, however long the page has been open.
  • Other lengths: the usual lengths and your own still work, and Until 07:00 switches back to the dose countdown.
  • Hours: long countdowns now show hours (6:25:09).
  • Privacy: only the dose time is in the page address, never the medicine's name.

Minimum time between doses

  • New setting: set a minimum gap, in hours, on any medicine, scheduled or as needed. For example, 4 hours for paracetamol.
  • Too soon: Pillbox won't log a dose sooner than that after the last one. It says when it was last taken and when the next dose is allowed. This applies to Take, logging an earlier time, as-needed doses and Take all; Take all still logs the other doses in that part of the day.
  • Log anyway: if you did take it sooner, I took it: log anyway records it after a reminder to only do so on a doctor's or pharmacist's advice, so your history stays accurate.
  • Where it shows: on Today and the Meds page, with when the next dose is allowed. For as-needed medicines it's also on the doctor's report.

🔒 Fixes

  • Shared access: ticking a Care routine now checks that its category has been shared with you, whichever page the tick came from.

⬆️ Upgrading

Upload the new files over your current ones, keeping config/ and storage/. The database updates itself the next time a page is opened, adding the minimum time between doses.

Full changelog: v1.2.5...v1.2.6

v1.2.5

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 11 Oct 20:16
84987cb

Allergies, weather for migraine, repeating HRT cycles, and full documentation with screenshots.

✨ New

Allergies (Care)

  • Your allergies: record allergies, intolerances and side effects to medicines, food, insect stings, latex, pollen, animals or anything else. For each, note what happened, how bad it was, who confirmed it and since when.
  • No known allergies: you can record this instead. If an allergy no longer applies (for example after penicillin allergy testing), mark it No longer current and the record is kept.
  • Medicine checks: medicine allergies are checked against your Meds by name. You can also choose to check the whole group: penicillins, cephalosporins, NSAIDs, opioids, sulfonamides, macrolides, tetracyclines or quinolones. Warnings appear on the Meds page and when you save a matching medicine.
  • Anaphylaxis: the NHS steps for what to do, with a Call 999 button. They're shown at the top of the page if you've recorded anaphylaxis or adrenaline pens.
  • Adrenaline auto-injectors: note which brand you have and where you keep them. Pillbox can track both pens' expiry dates and remind you to practise with a trainer pen.
  • Allergy card: large print, to show on screen or print, with what to do in a severe reaction. With food allergies there's also a card for restaurant staff.
  • Medical ID: a line to copy into your phone's lock-screen medical ID.
  • Pollen counts: if you have a pollen or hay fever allergy, add your town to see grass, tree and weed pollen for the next few days (Europe only).
  • Advice: short sections on medicine allergies, eating out and Natasha's Law, latex and insect stings, shown only when they apply.
  • Everywhere else: allergies are listed at the top of the Meds page and of the doctor's report. There's also a new "Allergy clinic" appointment type.

Weather for migraine

  • Your town: add it on the Migraine page and Pillbox gets the weather there, including the last year, and keeps it up to date.
  • Diary: each headache entry shows that day's air pressure, how far it fell and the temperature.
  • Patterns: a table compares how often you had headaches on days with a big pressure fall, low pressure, a big temperature change, hot days or very humid days, with other days. Rows where headaches look more likely are marked.
  • Forecast: a heads-up when a big pressure fall is forecast. It also shows on Today, but only if pressure falls have been linked to your headaches.
  • Privacy: only the town's location, to about 10 km, is sent to Open-Meteo, a free weather service. Nothing about you or your headaches is sent.
  • Admins: can switch weather off for the whole site under Site settings.

Repeating cycles for medicines

  • New schedule option: Some days of a repeating cycle, for example progestogen on days 15 to 28 of every 28-day cycle, 14 days every 13 weeks, or the 1st to the 14th of each calendar month.
  • Reminders and stock: reminders, Today and stock estimates count only those days. The Meds page shows which day of the cycle it is.
  • Menopause set-up: the one-tap Progestogen (part of each cycle) option now uses this, so sequential HRT no longer needs date ranges entered by hand.

Documentation

  • Guides: a docs/ folder covering the whole of Pillbox, from getting started to admin. It can be read on GitHub or inside the app (Docs in the footer).
  • Help links: ? links next to headings throughout the app open the right section.
  • Screenshots: taken from the demo account, on most pages.

Proton Calendar

  • Calendar link: instructions for subscribing to your Pillbox calendar link in Proton Calendar, alongside Apple, Google and Outlook.

🔧 Improvements

  • Update check: the scheduled tasks now check GitHub for a new version every time they run, instead of every 12 hours. If a check fails, the last release found is kept, so "Update available" doesn't disappear.
  • Medicine history: it no longer records "today is day 9" or "next dose 3 Nov", which went out of date.
  • Demo account: more realistic data, including thyroid, diabetes, menopause, migraine, blood pressure, ADHD, allergies, a supplement and 30 days of doses.

🐛 Fixes

  • ADHD and autism: a PHP warning on the energy and senses section.
  • Injection site: the picker on Today was so wide it pushed the Take button onto a new line.
  • Migraine diary: the "how well did it help?" menus stretched across the full width.
  • Care categories: a duplicated icon.

⬆️ Upgrading

Upload the new files over your current ones, keeping config/ and storage/. The database updates itself the next time a page is opened, adding the new allergy and weather tables and the cycle schedule columns.

Full changelog: v1.2.0...v1.2.5

v1.2.0

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 11 Oct 16:28
f950a4b

A big release. Pillbox now covers many more long-term conditions and life stages, works by your body rather than a gender field, and is easier to use for everyone, including neurodivergent people. It also adds sign-ups, terms and privacy pages, and a lot of new options for medicines.

Pillbox helps you keep a record. It isn't medical advice: always follow your prescriber's instructions, and in an emergency call 999.

New Care categories

Switch the ones you need on in Account → Health profile. Each has a printable one-page summary for your GP or clinic.

  • Pregnancy
    • Due date and how far along you are (weeks and days).
    • The NHS antenatal timeline: appointments, scans, vaccines, MatEx, MATB1, birth plan and hospital bag, with Book and Done buttons and space for results.
    • A log of each check-up: blood pressure, urine, bump, heartbeat and position.
    • Folic acid and vitamin D added to Meds in one tap.
    • A "Something not right?" panel with your maternity unit's number.
  • Pregnancy options and aftercare (private): continuing, adoption and abortion set out without recommending any of them; steps, medicine times, bleeding and symptoms, and a follow-up test. Encrypted, with its own PIN, never shared, and deleted in one go.
  • Menopause
    • Stage, months since your last period, and a daily symptom diary with triggers.
    • The Greene Climacteric Scale.
    • One-tap HRT set-ups.
    • Contraception and bleeding guidance, and work notes.
  • Premenstrual symptoms (PMS, PMDD, PME), in Periods and contraception:
    • Daily DRSP ratings, or a 30-second check-in.
    • A chart of cycles stacked by day, and the week before each bleed compared with the week after.
    • A heads-up before harder days, medicines taken only in the 2 weeks before a period, and gentle links to support.
  • Thyroid
    • Levothyroxine timing, and spacing checks against calcium, iron, antacids and minerals.
    • TSH charts with dose changes marked, and when the next test is due.
    • A weekly symptom check, and MedEx renewal.
  • Diabetes
    • Time in range and patterns by time of day, with CGM data via Nightscout.
    • Ketone guidance and an insulin and carbs log.
    • A one-tap hypo guide with a 15-minute timer, sick-day mode, and the DVLA "five to drive" check.
    • Your annual care checks as a done/due list.
  • Migraine and headaches
    • A headache diary with monthly headache, migraine and painkiller days.
    • Medication overuse warnings, and menstrual migraine patterns.
    • Preventive treatment reviews, and the evidence used for CGRP medicines.
    • Safety warnings for topiramate, and for combined contraception with aura.
  • Blood pressure
    • Guided home monitoring the NICE way (2 readings a minute apart, morning and evening, day 1 left out of the average), against your target.
    • Medicine changes marked on the chart, side effects, and safety advice for very high or low readings.
    • Monitor CSV import.
  • ADHD and autism (no diagnosis needed)
    • Waiting lists, including Right to Choose, and assessment prep notes.
    • A communication passport to show, print or copy into your medical ID, and a Reasonable Adjustment Flag reminder.
    • Optional energy and sensory notes.
  • Gender-affirming care (private)
    • GIC waiting list, prescriber and shared care.
    • Fertility, a changes journal with your own fields, and encrypted progress photos.

Your body, not a gender field

  • An optional, private body inventory:
    • It decides which screening reminders you get (cervical, breast, bowel, AAA) and which pages appear.
    • The Screening page points out invitations that may not arrive because of the sex on your GP record.
  • Pronouns and an optional gender identity in your profile. "Women's health" is now Periods and contraception.

Medicines

  • Schedules:
    • Morning, Afternoon and Evening quick times, with "Take all" for each part of the day on Today.
    • Doses every few days or weeks, for injections.
    • Doses only in the 2 weeks before a period.
    • Short courses and one-off doses that stop by themselves.
  • Supplements with one-tap common ones, and medicines marked as private prescriptions or bought, with prices kept out of PPC sums.
  • Running low? Mark it Ordered, then Collected. Controlled drugs show when to ask for the next prescription and a "collect by" date (28 days).
  • How it's working: a log of when a dose was taken, kicked in and wore off, side effects, and a table comparing each dose.
  • Injections and brands:
    • Injection-site rotation, which suggests the next site.
    • The brand recorded with each collection.
  • Hormone set-ups for HRT, gender-affirming hormones, PMDD treatments and thyroid medicines.
  • Private medicines: reminders and emails just say "Reminder", and they're hidden from people you share with.

Blood tests

  • Results and trends: 30 tests in UK units, with charts, the lab's range, your own target range, the time since your last dose, and medicine changes marked.
  • A full set of ready-made blood test reminders.

Easier for everyone

  • Account → Display and reminders:
    • Larger text, more spacing, an easy-read font, and no animations.
    • Hide streaks.
    • A "did you take it?" follow-up notification.
  • Today:
    • A Now / Next view and a timeline of the day.
    • Log a dose with the time you took it.
    • Running-low notices show the steps (order, collect, log stock).
    • "Not logged" instead of "Missed".
  • A visual timer.
  • Privacy: hide the screen when switching apps, and a disguised home-screen name and icon ("Planner" or "Notes").

Accounts and site

  • Sign-ups: people can create their own accounts with a password or single sign-on. Admins can require approval and get an email about each new sign-up.
  • Terms of use and a privacy policy, generated from what Pillbox does. They're linked in the footer and agreed to when signing up.
  • A new tablet logo in your theme's colours.
  • Pillbox is now licensed under the GNU GPL v3.0.

Upgrading from v1.1.0

  1. Update from the Admin page, with git pull, or by uploading the new files. config/config.php and storage/ are kept.
  2. Open Pillbox once. The database updates itself, with many new tables and columns.
  3. Make sure storage/ is writable: private progress photos are stored there, encrypted.
  4. Keep the scheduled tasks running every 5 minutes. They send the new prescription, follow-up and cycle notifications, and sync Nightscout.
  5. Admin → Site settings:
    • Under Terms and privacy, fill in who runs your Pillbox and a contact (have the text checked: it's a starting point, not legal advice).
    • Under Sign-ups, choose whether people can sign up.
  6. Optional settings in config/config.php (see config.example.php): 'signup', 'legal', and 'nightscout' => ['allow_private' => true] if everyone using your Pillbox is trusted and your Nightscout is on a private network.

Good to know

  • Encryption: the private pages (Pregnancy options and aftercare, and Gender-affirming care) are encrypted with the key in storage/app.key. Keep that file safe and backed up: without it they can't be read.
  • Not included yet:
    • Bluetooth blood pressure monitors.
    • Weather data for migraine.
    • Repeating monthly HRT cycles.
    • Buttons inside notifications.

v1.1.0

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 10 Oct 17:36
6ae02c5

A big update. There are two new tabs, Care and Mind, and you can now share your Pillbox with a carer or partner. Pillbox can also send email and phone notifications, connect to fitness trackers, and update itself.

New: Care tab

Routines, check-ups and renewals for everyday health, in categories you choose in your health profile:

  • Dental, eyes, sleep, activity and rehab, feet, hearing, skin and wound care, mobility
  • Respiratory, diabetes and monitoring, blood tests, women's health
  • Emergency and first aid, sharps, screening, vaccinations, prescriptions and payments

Routines

  • Ready-made or custom routines at set times, on chosen weekdays or every few days, with amounts (reps or minutes).
  • Ticked off on Today, with streaks and a 7-day catch-up grid.

Checks and renewals

Each one is tracked in the way that suits it:

  • Due every so often: eye and hearing tests, night guard checks, CPAP and spacer parts.
  • Expiry date: including "use within 28 days of opening" for eye drops and similar.
  • Stock, fill level or kit contents.

Anything due soon shows under Coming up on Today and in your calendar feed.

Blood tests

  • Ready-made suggestions for routine and specific tests, grouped and with tips on preparing. They include:
    • FBC, U&Es, LFTs, HbA1c, cholesterol and thyroid tests
    • iron, B12 and vitamin D
    • INR and lithium levels, and PSA
    • the NHS Health Check
  • A results log for each test, linked to the medicine it's for.

Screening and vaccinations

  • NHS England screening (cervical, breast, bowel, AAA) worked out from your date of birth and sex, with an "Other" option to tick the programmes that apply.
  • Flu each autumn, COVID, tetanus and travel jabs.

Women's health

  • Cycle tracking with predictions, plus contraception and review reminders.

Prescriptions and payments

  • Prepayment and exemption certificates (PPC, HRT PPC, MedEx, MatEx, HC2) with renewal reminders.
  • A cost log and a calculator that shows whether a PPC would save you money.
  • Medicines can be marked as a private prescription or bought without a prescription, with a price. These are logged when you record a new supply and kept out of the PPC sums.

Care summary

  • A printable summary of everything in Care.

New: Mind tab

An optional space for mental health:

  • Check-ins: mood, energy, motivation and anxiety, with tags, triggers, notes and trends.
  • Help now: one tap from every page. It has UK crisis lines you can edit, your own contacts and a safety plan. Help now is never locked.
  • Tools:
    • a coping toolkit, box breathing and 5-4-3-2-1 grounding
    • PHQ-9 and GAD-7 questionnaires
    • a journal with prompts, and CBT thought records
  • Looking after yourself:
    • therapy and care, mental health medicine notes, symptoms, self-care
    • planning activities, habits, wins and connections
    • a staying-well plan and an advance statement
  • Summary: a printable summary for appointments.
  • Lock: an optional PIN, which can be unlocked with a passkey (fingerprint, face or device PIN).

Sharing with a carer or partner

  • Give someone with an account on the same Pillbox access to chosen parts of yours.
  • For each part you choose:
    • no access or see
    • for medicines, log doses or change medicines
  • You can also:
    • keep chosen Care categories private
    • include or leave out the Mind journal
    • set an end date
  • Quick choices are included, such as "See everything except Mind" and "Help with medicines".
  • Every change they make is listed under their name, and you can stop sharing at any time.
  • They can never see or change your account settings, sign-in details, data export or Mind PIN.

Reminders: email and push notifications

  • Email, using PHP mail() or SMTP:
    • a daily summary at an hour you choose
    • appointment reminders, with your questions to ask
    • a new-version notice for admins
  • Push notifications on phones and computers:
    • dose reminders, Care reminders, appointment reminders and the Mind check-in
    • an option to hide the details on the lock screen
    • uses standard Web Push, so no third-party service is needed. On iPhone, Pillbox must be added to the Home Screen (iOS 16.4 or later).
  • Mind content is never included in emails or notifications.

Connect apps and devices

  • WHOOP, Fitbit, Withings and Oura connect directly and sync about once an hour. Depending on the service, they bring in:
    • resting heart rate, heart rate variability, oxygen level
    • sleep, breathing rate, steps, weight
    • blood pressure and temperature (Withings)
  • MyFitnessPal and Google Fit: import their export files (weight, calories eaten, steps).
  • Android Health Connect apps can post to your private sync link, like the iPhone sync.
  • Readings are labelled with where they came from, and importing them again never creates duplicates.
  • New measurements: heart rate variability and calories eaten.

Medicines

  • An optional expiry date for each medicine, flagged on Today and updated when you record a new supply.
  • Dose changes only apply from now on. Past doses and history keep the old dose, and a change starts tomorrow if today's doses are already logged.
  • Dose changes under each medicine are hidden unless you tick Show dose changes.

Getting started and admin

  • First-login setup: walks new people through what they want to use, then takes them to Today. Admins also set the site name, address, email, scheduled tasks and demo mode, which are saved to config/settings.php.
  • Built-in updater:
    • installs new releases from the Admin page
    • backs up the current files first, and can restore them
    • never touches config/config.php or storage/
  • Import data: restore a "Download all my data" file into an account, for example to move to another Pillbox.
  • Demo mode: a sample account for each visitor, deleted when they sign out.
  • Tidy addresses: with mod_rewrite, pages lose the ".php" (for example /medications). Old addresses redirect.
  • The update check now uses GitHub releases.
  • A new logo: a tablet in your theme's colours, with new app icons.

Upgrading from v1.0.0

  1. Update with git pull, or upload the new files. config/config.php and storage/ are kept.
  2. Open Pillbox once. The database updates itself, and existing accounts skip the first-login setup.
  3. Set up the scheduled tasks, which email, push notifications and app syncing all need. Run them every 5 minutes. Or set cron.token and have a web cron service call cron.php?token=….
  4. Make sure storage/ is writable. It now also holds the push and encryption keys and the update backups.
  5. Optional:
  • Make config/ writable so admins can change site settings from the Admin page.
  • To offer WHOOP, Fitbit, Withings or Oura, register an app with each service and enter its keys under Admin → Site settings → Connected services.
  1. Future updates show in the footer only once a GitHub release is published for them.

Good to know

  • Garmin only shares data with approved businesses, so connect it through Apple Health or Health Connect instead.
  • The WHOOP, Fitbit, Withings and Oura connections are new. If a sync fails, the Connections page shows the error.

v1.0.0

Choose a tag to compare

@MichelleFindlay MichelleFindlay released this 10 Oct 01:04
85b4d9a

The first release of Pillbox: a self-hosted medication and health tracker built with PHP and MySQL, for phone and desktop browsers.

Highlights

Medications

  • Add medicines by searching the NHS medicines dictionary (dm+d), or type them in yourself. Picking a match fills in the name, strength, form and dose unit.
  • Several dose times per medicine, with different amounts on different weekdays and date ranges (for example, for reducing a dose).
  • As-needed medicines, with an optional daily maximum.
  • Stock tracking: "Prescription collected" adds to stock (with a collection history), and you can set an exact count. Low-stock warnings appear on Today.
  • Dose change history: changes to strength, amount or timing are recorded automatically (for example "Increased from 10mg to 20mg a day"), with the date and reason. You can add earlier changes by hand.
  • Stop a medicine and keep its history, or delete it permanently.

Today and history

  • Tick off doses with Take, Skip or Undo, see missed doses, and log as-needed doses.
  • History for each day, with the percentage of doses taken for each medicine.

Health readings

  • Blood pressure, heart rate, blood glucose, ketones, weight, temperature, SpO₂, breathing rate, peak flow, INR, cholesterol, pain, mood, sleep, fluid intake, steps, and symptoms or side effects.
  • Each person picks the readings their doctor wants, and can add their own measurements.
  • Trend charts and averages for every measurement.
  • Apple Health import: upload the Health app's export (re-importing never creates duplicates), or sync automatically every day using Shortcuts or the Health Auto Export app.

Appointments

  • GP, specialist, hospital, dentist, optician, blood tests, scans and more, with reminders.
  • A private calendar link for each person, which Apple Calendar, Google Calendar and Outlook can subscribe to.
  • An appointment page to prepare with: questions to ask, suggested topics from what you've recorded, and notes on what was decided. It can be printed.

Travel mode

  • Plan trips across time zones: switch to local time, stay on home time, or shift by 1 to 4 hours a day, with a day-by-day preview of dose times.

Reports and your data

  • A printable doctor's report (or save it as a PDF) that includes dm+d codes, plus CSV export.
  • Download my data, and delete your account.

Phone app

  • Install Pillbox as an app on iPhone and Android, from the browser's Add to Home Screen or Install app option, with no app store needed. It opens full screen with its own icon.
  • Sign-ins last across app restarts. When the phone is offline, a "You're offline" page is shown.

Accounts and sign-in

  • Multiple people, each with private data, plus an admin page.
  • Local username and password, Microsoft Entra ID single sign-on, and any OpenID Connect provider (Google, Okta, Auth0, Keycloak, Authentik and others).
  • Link or unlink a Microsoft account, and optionally turn off password sign-in when single sign-on is set up.
  • Self-service: edit your profile, username and email, change or add a password, and sign out other devices.
  • 8 colour themes, including high contrast, each with light, dark or automatic mode, chosen per person.

Security

  • Passwords are hashed, and password sign-ins are rate-limited.
  • Every form has CSRF protection.
  • Cookies are HttpOnly and SameSite, and also Secure over HTTPS.
  • A strict Content-Security-Policy is sent.
  • Single sign-on uses the authorisation-code flow with PKCE, and the returned ID token is fully checked.
  • Every database query is limited to the signed-in person's own data.

Installing

Requirements:

  • Apache 2.4 with mod_rewrite
  • PHP 8.1+ with pdo_mysql, curl, openssl and mbstring
  • MySQL 8.0+ or MariaDB 10.5+
  • HTTPS

Steps:

  1. Upload the files and create an empty database. The tables are created the first time Pillbox is opened.
  2. Copy config/config.example.php to config/config.php and fill in your database details.
  3. Make storage/ writable by the web server.

Optional extras, each set up in config/config.php:

  • dm+d search needs a free NHS England Terminology Server system-to-system account.
  • Single sign-on needs a client ID and secret from each provider.

See the README for the full instructions.

Good to know

  • Pillbox can't import your medicines from the NHS. NHS England isn't letting new apps read medication records. The dm+d codes Pillbox stores are the same ones GP records use, so they'd match if that changes.
  • Admins see Update available in the footer when a newer version is on GitHub.