Repository navigation
v4.3.0
Important
On 4.1.x or older? Read this before upgrading.
4.2.0 was a security release. Some installs won't start, or will behave differently, until a few settings are changed: a real SECRET_KEY, a real database password, and ADMIN_APPROVAL_EMAIL if you send email.
- Back up your database. Rolling back means restoring that backup.
- Make the changes in Actions you must take.
- Follow Upgrading FilaOps. You can go straight to 4.3.0; there's no need to stop at 4.2.0.
Don't use the app's Update Now button, and don't mount the Docker socket to make it work. Upgrade with the commands in the guide.
Also changed since 4.1: customer sign-up is off by default, password resets wait for an admin, and a manual stock adjustment now adds or removes the quantity you enter instead of setting it. The full list is in the guide.
Added
- Serial number prefix setting. Admins can set the prefix for new serial numbers in Admin > Settings > Serial Numbers (letters, digits and dashes; a trailing dash is added). New installs use
SN-, giving serials likeSN-20261013-0001. Before, every serial started withBLB-. - Onboarding asks for a customer contact email. Step 1 of the setup wizard has a new optional field, "Customer Contact Email": the address customers are told to contact in emails. Left blank, the new admin's email is used. It is saved to Company Settings.
Changed
- Customer emails use the business name and email from Company Settings. Password reset emails (approved, denied, changed) now take the shop name and contact address from Admin > Settings > Company Information. They fall back to
BUSINESS_NAME,BUSINESS_EMAILandSMTP_FROM_NAMEin.env, then to "FilaOps" and "contact your administrator". Before, they used the.envvalues or their shipped placeholders (Your Company Name,info@yourcompany.com), and three of them ended with a hard-coded "BLB3D Printing" footer. - The shop's own logo in the sidebar and on the login page. An uploaded company logo now replaces the FilaOps wordmark at the top of the sidebar, with a small "Powered by FilaOps" line at the bottom. The login page shows the shop's logo above the FilaOps logo. With no logo uploaded, FilaOps shows as before. Before, the login page always showed the BLB3D logo, and an uploaded logo was squeezed to zero width in the sidebar.
- AI settings: the Claude model list comes from Anthropic. The model dropdown now lists the models your saved API key can use (Anthropic's Models API, cached for 10 minutes; admins only) instead of three hard-coded models. If Anthropic can't be reached, a short built-in list of current models is shown with the reason. The per-document cost estimates are gone; the page links to Anthropic's pricing instead.
- AI settings: Test Connection checks the selected model. It now sends a one-token request to Anthropic with the model picked on the page, so a rejected key or a retired or mistyped model ID is reported at setup time. Before, it only checked that the key started with
sk-. - New default Claude model:
claude-sonnet-5-5. The settings page and the API now use the same default. The page's built-in default and its "Haiku 3.5" option usedclaude-haiku-3-5-20241022, which was never a valid model ID; the API defaulted toclaude-sonnet-4-20250514, which Anthropic has deprecated.
Upgrade notes
- Upgrading from 4.1.x or older? Read docs/UPGRADE-4.2.0.md first. 4.3.0 includes 4.2.0's security fixes and its required configuration changes.
- Check Company Settings before customers get email. The shop name and email in Admin > Settings > Company Information now win over
BUSINESS_NAME,BUSINESS_EMAILandSMTP_FROM_NAMEin.env. If they are filled in, customer emails will use them. - Serial numbering carries on unchanged. The upgrade runs database migration 104. An install that already has serials starting with
BLB-keepsBLB-as its prefix, so the next serial follows on from the last one; every other install getsSN-. Existing serial numbers are never renamed. Changing the prefix later affects new serials only. - Saved Claude models are not changed. Check the model in Admin > Integrations > AI Assistant after upgrading. If someone picked "Haiku 3.5", the install has
claude-haiku-3-5-20241022stored, which Anthropic does not recognise; installs that never picked a model haveclaude-sonnet-4-20250514, which is deprecated. A saved model Anthropic no longer lists stays selected and is marked "not listed by Anthropic (may be retired)"; pick a listed model, use Test Connection and save. - Docker: re-enter the AI API key once if it shows as not set after upgrading. The backend's instance ID (
install_uuid, under/var/lib/filaops/config) now lives in a named volume,filaops_config. Before this release it was lost whenever the backend container was recreated, including bydocker compose up -d --build, and stored secrets encrypted with it could no longer be read. The upgrade cannot bring back an ID that is already gone: the container keeps whatever ID it has when the volume is first attached. If Admin > Integrations > AI Assistant shows no key afterwards, enter it again; from then on it survives upgrades. If you already mount your own volume or directory at/var/lib/filaops/configin an override file, yours still takes precedence (docker compose configshows the result). - Back up the
filaops_configvolume with the database. A database restored without it cannot decrypt stored secrets.docker compose down -vnow deletes this volume as well as the database volume. - Docker: the backend now runs as
appuser, not root. The image always meant to, but the entrypoint never switched user. At startup it givesappuserthe files in/app/uploads(on a Linux host, the owner of files in./uploadschanges to uid 100) and the config directory. If one of them cannot be made writable, it logs a warning and keeps running as root.docker compose execstill opens a root shell;docker compose run backend <command>now runs asappuser.
Fixed
- Docker: stored secrets survive recreating the backend container.
docker-compose.ymlmounts thefilaops_configvolume at/var/lib/filaops/config, and a test checks that every shipped compose file that runs the backend persists that directory. - Docker: the backend no longer runs as root. The entrypoint installs plugins as root, then runs migrations and the API server as
appuser. A test checks that every command the entrypoint runs goes through that switch. - Onboarding saves the company name again. Since #513 the setup wizard silently failed to save the company name (a broken import inside a
try), so every fresh install started with an empty Company Settings name. - Mobile navigation button no longer covers the open menu. The floating "Open navigation menu" button is hidden while the mobile drawer is open; the drawer has its own close button.