13 changes:
Helpers::fileGetContents() fetched with TLS verification off
- A clamped rendition was never found again, and rebuilt on every request
- Two migrations that could fail on real data now decline instead
- Saving a token through the model stored it in plaintext and unfindable
get() takes upscaling per call, so a template can fill its frame
- An application on the legacy version ledger can say what already ran
crop and resample are part of a rendition's identity too
- Maintenance mode can be raised and cleared from the console
migrations.auto: stop migrating on your own without disabling migrate
- Ask a production database a question without opening a shell on it
- The public MCP endpoint ships one tool, so it can be told from a broken one
- The diagnostic tools can answer off the box, behind three separate scopes
mcp:token — one command for the credential and the client config
9 changes:
getRelationKind() — the question to ask before a DROP VIEW
usage_statistics is left to whoever owns the name
geographic_analysis builds whether ip_address is VARCHAR or INET
- An aggregate that already exists keeps its definition, and says so
migrate and migrate:status read this installation's configuration
- When a continuous aggregate is possible, and when it cannot be
- A migration whose statements were all rejected no longer reads as one that worked
createTable() puts a schema-qualified table in its schema
- The maintenance page no longer fatals on an entry point without
DS
6 changes:
- Five rolled-up views were frozen on every database without TimescaleDB
- A model may give
load() whatever parameters it needs
- Five developer panels had been empty for years, and nothing said why
- The rate limiter counted the proxy, and counted it badly
- A human check that prices spam instead of pretending to detect it
getInstance() is a factory, and two call sites forgot
16 changes:
pramnos init checks both Docker ports before proposing one
init scaffolds a working SPA — Svelte + daisyUI, Vite, Vitest and Docker
- Files the container writes now belong to you, not to root
- SPA follow-ups: the dev server, the site root, and the docs generator
- The FK migration stops assuming the schema of tables it does not own
- The scaffolded SPA now actually talks to the API
create:crud builds the SPA half too
- A debug bar a SPA can actually use — and a guide for testing the front end
- Generated CRUD gets real authorisation — and
delete gets any at all
- A SPA project gets an administration screen
cache:clear no longer wipes every installation sharing the backend
- Signing in works, screens have URLs, and the SPA wears the project's colours
Permissions answers from whichever store the installation has
- One permission system, available to every project with users
timescale:ensure — repairing hypertables on a database that got TimescaleDB late
- The GDPR endpoints queried a table that does not exist
2 changes:
- Per-column search works again on server-side DataTables
- Serving init-less apps: migrations, capability accessors, test DB, daemon status