Repository navigation
v1.3.0
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_lookupsetting) 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'inconfig/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