Releases: jaylfc/taOS
Release list
v1.0.0-beta.43
Library app, phase one
taOS gains the Library: a place to drop files, text, PDFs and images and have them processed and handed to your memory system. Ingested items are copied into a per-item directory and registered as a taOSmd collection over the live Collections API, with async index polling and typed link rows.
This one went through three rounds of review before landing, including a reprocess bug that deleted the user's original uploaded file and a test whose tolerance was quietly keeping it green.
Invites now work properly
Three fixes, all found by real use rather than by tests:
- The invite dialog crashed the desktop. The invite list endpoints returned
scopesas a JSON string while the interface expected an array, so the dialog threw and took the whole app with it whenever a pending invite existed. This also explains invites that appeared to mint successfully but closed without ever showing the URL and PIN. - Expired invites could not be revoked, returning a "not found" error while still being listed and still counting against the pending cap.
- Invites now last an hour instead of fifteen minutes, with an optional per-invite lifetime up to a day. Handing a link and PIN to someone who then configures an agent is not a fifteen minute job.
Hardware and documentation
- The Raspberry Pi 5 with the AI HAT+2 (Hailo-10H, 40 TOPS) is documented, including a constraint that catches people out: the HAT occupies the Pi 5's only M.2 slot, so it cannot be used alongside an NVMe boot drive. Use a USB SSD instead.
- Seven new defect classes were added to the contributor guide, drawn from real review findings in this cycle.
Upgrading
Existing installs update through Settings. No migration steps and no configuration changes are required.
v1.0.0-beta.42
[1.0.0-beta.42] - 2026-07-20
Added
- GitHub App installation flow with per-agent GitHub token grants: install the App, grant repos to agents, short-lived tokens minted per installation, RSA key stored encrypted in Secrets (#1932, #2036, #2009, #1997)
- Cross-user collaboration foundations: contacts store with signed-envelope peer channel (A1), human project membership with collab invite kind and two-sided consent (B1) (#2025, #2045)
- Todo app backend: TodoStore with ordering and due dates, list-to-Todo migration with idempotent endpoint, whitespace validation (#1944, #2028, #2049)
- Worker self-update foundations: WorkerUpdateService version polling and graceful pause + drain protocol (#1907, #1903)
- Mesh: guest peer nodes surfaced in mesh_status with guest-preauth proxy endpoint (#2038)
- taOSmd memory URL connection-test and reachability reporting in Settings (#1931)
- Agent kill-switch: Ctrl+Shift+K shortcut with SIGTERM to SIGKILL grace window (#1962)
- Registry hygiene: revoked/rejected/suspended entries collapsed by default; @taOS-dev granted board scopes (#2004, #2022)
- 109+ new frontend component tests across chat and desktop (#2051, #2052, #2053, #2054)
- Design specs merged: Library app universal ingestion, taOStalk slice 1 session bridge, cross-user collaboration epic (#2056, #2029, #2011)
- Contributor docs: recurring review pitfalls checklist and PR lifecycle discipline in the development skill (#2040, #2055)
Fixed
- Security: store-signing hardening (5 findings: 422 on unknown backend, narrow excepts, perms), GPG fingerprint resolution uses the primary key across all VALIDSIG shapes, invite no longer burned on failed approve with scope validation at mint (#2023, #1983, #2002)
- GitHub App key semantic conflict between two green PRs resolved: app key read from SecretsStore everywhere (#2041)
- SQLite stores: WAL mode enabled and sync-in-async fixed (#1905)
- Agents: removed task.cancel() that defeated asyncio.shield in kill-switch handlers (#1988)
- Catalog: standardized install scripts for Hermes/OpenClaw/DeerFlow, corrected qwen2.5 rkllm context window (#1934, #2008)
- Desktop: MessageList findings, wallpaper bot-fix v2, port allocation centralized for userspace deploys (#1877, #1982, #1990)
- Framework registry: retired alpha verification_status, dead-code cleanup from the Fable audit (#1995, #2003)
Changed
v1.0.0-beta.41
Beta 41: external-agent invite/onboarding wave, router-wide CSRF + global-fetch frontend counterpart, members rename/confirm UX, GPU arbiter consolidation. Migration verified over a beta.40 DB.
v1.0.0-beta.40
Added
- Approving an external agent for the project-tasks scope now asks which project to bind it to, with an inline option to create a new one, and the approval adds the agent as a member of that project so it shows up in the project's Members and joins the project channel. Granting project-tasks without picking a project is refused, so an agent's own request can never bind it to a project you did not choose (#1777).
- taOS notifications can now reach your phone as native web-push. Install the PWA and allow notifications, and access requests and other alerts arrive as OS banners even when the app is closed, delivered best effort so a push failure never blocks the in-app feed (#1778).
Fixed
- Agent chat now sizes its history budget to the model's real context window instead of a fixed limit, so a small-context local model no longer overflows and loops. When several agents share one reply the budget follows the smallest known window, and any unknown window keeps the previous safe default (#1740, #1779).
v1.0.0-beta.39
What's new in 1.0.0-beta.39
Added
- Game Studio generates textures and sprites from a text prompt via a ComfyUI backend on a discrete-GPU worker, with a clear needs-a-GPU-worker state on hosts without one (#1773).
- taOSgo cluster-join completes the network side: a controller joins the account mesh over the system tailscale against the Headscale server, and the per-host service tokens are persisted host-locally so publishing and passkey fetches keep working after a join (#1770, #1772).
- Agents post to the coordination bus as themselves through an authenticated send proxy, so a message carries the agent's own identity and cannot be spoofed (#1768).
- The cluster advertises the models a node can serve, and installing a backend registers it as a managed, node-local service that can be started, stopped, and health-checked per node (#1756, #1758, #1760, #1762).
- An approved external agent can be granted a least-privilege project-tasks scope to drive a single project's task board with its own token (#1774).
Fixed
- Backend and worker robustness: atomic VRAM check-and-reserve before a load, a malformed backend manifest no longer crashes the worker, and the VRAM guard fails closed on a probe error (#1725, #1767).
- The RK3588 (RKLLM) install path pins rkllama to the verified 1.3.0 reference and treats a live rkllama port as installed only when it is a managed service (#1755, #1764).
- Fixed six agent-framework catalog manifests that referenced install scripts missing at the repo root (#1694).
v1.0.0-beta.38
Agent-window resilience and a mobile-friendliness pass, all requested by @mandresve.
Added
- Live activity banner in the Agent conversation window when a response is slow or has stalled, escalating to a stall warning with a shortcut to restart the AI services (#1741).
- Restart AI Services action in the Activity tab to recover a stalled local model (rkllama + qmd) without a terminal (#1743).
Fixed
- Scrollbars in the Agent conversation window so long responses stay reachable (#1742).
- The Agents view is readable on a phone (archived rows stack, header condenses).
- Images studio, Tasks, Observatory, the add-agent dialog, and the Mail reading toolbar reflow correctly on phones.
v1.0.0-beta.37
Fixed
- An embedding model can no longer be assigned as an agent's chat model. Assigning one (for example qwen3-embedding-0.6b) now returns a clear error instead of silently accepting it and producing repeating, off-topic output, because an embedding model cannot do chat completion. Reported by @mandresve (#1740).
- A local RK3588 (RKLLM) model whose context window is too small for the agent harness now surfaces a non-blocking warning when it is assigned, so an over-small context (for example 4096 tokens) is flagged rather than silently truncating the agent prompt and looping (#1740).
- The RK3588 (RKLLM) backend now returns a structured context-overflow error when a prompt exceeds the model context, so a client can tell a context overflow apart from invalid input or a server fault instead of getting a bare 400. Reported by @mandresve (#1738).
Added
- A
taos recover-passwordcommand for offline recovery of a local account password when the admin is locked out of the web login. It resets the password directly in the auth store and revokes that account's sessions.
v1.0.0-beta.36
Fixed
- The RK3588 (RKLLM) install path no longer produces a broken rkllama service after an update. A previous pin bumped the rkllama server to a build that had dropped its startup preload flag, so the service failed to start on existing installs. The pin now points at a server that restores preload and adds a pre-flight context-length check, so a prompt longer than the model context returns a clear error instead of crashing the worker. Reported by @mandresve (#1730, #1732).
- SearXNG installs now enable the JSON output format by default, so an agent can use the local SearXNG as a search backend without hand-editing its settings (#969).
- Fixed a chat initialization error where a temporal-dead-zone reference could stop the conversation view from loading (#1720).
Security
- Per-app secret files created during install are now written owner-only (0600) and regenerated if a prior write left them empty or malformed, so a session-signing key can no longer be left world-readable on disk (#1734).
Changed
- taOS is now dual-licensed as AGPL-3.0-or-later plus a commercial option. The public core is AGPL-3.0, an OSI-approved license, with a separate commercial license available for uses that need different terms (#1721).
v1.0.0-beta.35
[1.0.0-beta.35] - 2026-07-07
Fixed
- The taOS Agent now returns output when it runs on a local RK3588 (RKLLM) model. Two gaps combined to make the agent report "the agent backend returned no output": the local rkllama backend was registered under a name that did not match the RKLLM model manifests, so the model was never exposed to the LiteLLM proxy the agent calls, and the pinned rkllama server had a Python version incompatibility that made its chat endpoint fail before inference. The backend name now matches on load (existing installs self-heal on update, no reinstall) and the rkllama pin is bumped to the fixed server. Reported by @mandresve (#1710).
- Agent message bubbles are now selectable and show a copy button on hover, so an agent's reply can be copied without dragging across the whole conversation (#835).
- The desktop top bar now shows a badge when an update is available, and clicking it opens the Updates pane in Settings (#855).
- taOS now surfaces a clear message when your local branch has diverged from its tracked remote, instead of a confusing update-check state (#841).
Security
- Cluster GPU-lease endpoints now require admin authentication and validate their inputs, so a non-privileged LAN client cannot claim, release, or probe another node's GPU leases (#1675 follow-up).
- The bare-metal worker backend runs under process supervision with hardened handling, and container environment values now reject embedded newlines (#1691).
- Agent delegation and the org model were hardened against a stale-permission carry-over and a reporting-lock race (#174, #1661, #1662).
v1.0.0-beta.34
Fixed
- Downloaded RK3588 (rkllama) models now appear after a normal update, with no reinstall. rkllama's background service kept saving models to its old location even after the controller updated, and taOS did not look there. taOS now reads where the rkllama service actually writes (from its systemd unit) and scans that directory, so an existing install's downloaded models show up in the Models list. Reported by @mandresve (#1548).
- The local RKLLM provider no longer shows Error because of a stale port. Installs seeded before the taOS default port moved to 7833 kept a localhost:8080 provider URL, so the Providers page and model discovery polled a dead port. That URL is now healed to 7833 on load. Reported by @mandresve (#1697).
- The taOS Agent chat no longer reports "runtime unavailable" when opencode was installed by the operator under their own home. The controller runs as an unprivileged service user that could not see an opencode installed in a different user's home, so it now also checks a TAOS_OPENCODE_BIN override and trusted system locations. Reported by @mandresve (#1616).
- When an agent's model change cannot re-scope its per-agent key, the stale key is discarded and that discard is now persisted, so the next deploy correctly falls back to the master key instead of reusing a key scoped to the old model (#1686).
Security
- opencode discovery only probes trusted locations (system paths, the service user's own home) and an explicit operator override, never arbitrary users' home directories, so a non-privileged user cannot plant a binary the service would run (#1616).