4.2 KiB
Changelog
All notable changes to Capsule are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
[Unreleased]
Added
-
Opt-in Capsule Local automatic-update testing, with a 0.1.0 bootstrap, isolated unsigned test feed, and 0.1.1 update target. Public signing requirements remain enforced.
-
Capsule Local 0.1.1 displays “you have updated to 0.1.1” on the dashboard for manual installer upgrade testing.
-
TTP Capsule plugin publishing integration with bounded chunk uploads, JSON-compatible YAML metadata, public artifact verification, and single-range update downloads.
-
Windows x64 NSIS packaging with separate unsigned Capsule Local builds and signed public release builds. Release builds require an HTTPS feed and publisher identity; sessions remain outside the installation directory.
-
Main-process automatic update checks at startup and every four hours, background downloads, progress, manual checks, and explicit restart-to-install controls before and after sign-in. Duplicate checks are suppressed; failures remain retryable. Connected sites cannot choose an update feed or installer.
-
Release artifact checksums, metadata-last HTTPS publishing, a Windows automation entry point, updater/IPC tests, and packaging/signing/upgrade instructions in
docs/releases.md. -
Electron + electron-vite desktop shell with a login view and a connected workspace.
-
Password sign-in through
POST /api/loginand optional connect-with-token from Admin ? Tokens. MFA accounts continue in-app (api/login/mfa/{loginCode}) until a token is issued.loginCodestays in the main process; a pasted Admin token skips MFA. POSTs send session CSRF (X-CSRF-Token); HTTP uses Electronnet.fetchso the PHP session cookie persists. -
Session stored in
userData, encrypted withsafeStoragewhen the OS allows it. The renderer never receives the token. -
Logged-in chrome matches TTP: navy header, Font Awesome 6.7.1 / Bootstrap 5.3, centered full-width search, notifications and messages dropdowns, avatar account menu. Profile settings (avatar, gender, newsletter, timezone, date/time, page size, dark mode) live in-app and save through
POST /api/profile/update. Email, password, and phone open the connected site. -
After sign-in, Capsule loads
GET /api/profileplus notifications, the messages inbox, andGET /api/messages/recentfor the header dropdown (avatars + unread count). Inbox rows can mark read/unread or hide. Compose and reply followcanSend. Search uses the matching user-token endpoint. Contact and bug reports live on footer pages (#/contact,#/bugreport) and post throughPOST /api/contactandPOST /api/bugreport. Those footer items appear only when profilefeatures(orGET /api/contact/GET /api/bugreport) say the plugin is available, accepting submissions, and allowed for this user. A hash to a disabled page shows the same “not accepting … right now” notice as the site. Disabled plugins show an unavailable note instead of demo data. -
Footer chrome matches TTP copy and socials. The upper band keeps a dark-mode toggle, Privacy Policy, and Terms of Service. Contact and Report a Bug join that band only when the site is accepting them. There is no subscribe box.
Changed
- Footer upper band is Contact Us on the left, dark mode in the middle, and More Info on the right, in three equal columns. Contact and Report a Bug stay off the menu until the connected site says those plugins are accepting submissions.
- Footer copyright no longer lists the connected hostname. It is year plus “Powered by The Tempus Project.”
- Profile page: space the white panel below the main nav, and cap the avatar at 200×200.
Fixed
- Settings no longer posts a display-name field. User CP has no such option;
users.nameis leftover, andCheck::name()rejected typical values (Invalid name./malformed input). - Avatar file previews are allowed (
blob:onimg-src). Choosing a photo no longer shows the missing-image icon. A{ "error": "not found" }from the site is reported as a missing Capsule API action (the live TTP install still needsPOST /api/profile/update).