Current version
The current version is v0.3.171.
Release
Fixes in v0.3.171
166 fixes across 10 categories.
Chat and interface
25 fixes- v0.3.162: The Admin chat panel sits in the correct place instead of sliding over the page.
- v0.3.162: The Background Services tab is no longer hidden beyond the edge of the header.
- v0.3.163: A chat opened from a notification is refused clearly for an unknown agent instead of failing silently.
- v0.3.163: An opening message is used once rather than being queued again on every reload.
- v0.3.163: A pending message settles correctly when its own send creates the conversation.
- v0.3.165: A chat opened before its first reply is readable now recovers instead of appearing broken.
- v0.3.165: A new chat stays open while its transcript is still being written.
- v0.3.165: A queued model change can be taken back before it applies.
- v0.3.165: Routing notices in chat carry a proper title instead of showing a fault code in its place.
- v0.3.165: The delete progress dialog stays still instead of shifting while it works.
- v0.3.165: Mark-all-read controls in the sidebar work reliably.
- v0.3.166: A new chat's record is written when the reply starts rather than when it finishes, so the conversation is never briefly unreadable.
- v0.3.167: The context gauge measures usage against the window of the model that actually produced the reply.
- v0.3.167: Each usage meter counts against its own model rather than dividing one model's figure by another's limit.
- v0.3.167: Every timer and meter now updates on one shared clock, so figures on a page agree with each other.
- v0.3.169: A reply cut short by a restart keeps the part it had already written, instead of arriving empty or blaming your settings.
- v0.3.169: The conversation records that a restart interrupted a reply, and how much was delivered.
- v0.3.169: A second restart while one is already running joins the one in progress rather than leaving the instance stuck.
- v0.3.169: A chat whose very first message failed can now be deleted.
- v0.3.169: A refused delete or rewind explains why instead of appearing to do nothing.
- v0.3.169: A voice note can carry an attachment in the same message.
- v0.3.169: A message that fails to send while offline returns its text and files to the composer instead of being lost.
- v0.3.170: A missing file is described as a missing file rather than as a technical error code.
- v0.3.170: One broken piece of the interface no longer forces every page to reload.
- v0.3.170: A sidebar chat says which project it belongs to instead of silently assuming one.
Sign-in, accounts and providers
24 fixes- v0.3.163: Your account name is kept when you reconnect a provider.
- v0.3.163: A newly connected provider no longer reports itself as retrying.
- v0.3.163: Stored sign-in details survive interruption more reliably.
- v0.3.163: Sign-in logs no longer discard the evidence needed to explain a failure.
- v0.3.163: Easy tells you as soon as a provider sign-in stops working.
- v0.3.163: Dead provider sign-ins are shown on the dashboard rather than only failing in use.
- v0.3.164: An expired sign-in token is recognised correctly instead of being misread as a different fault.
- v0.3.164: A provider that reports a dead sign-in is treated as needing reconnection rather than retried indefinitely.
- v0.3.164: A brief refresh delay on one account no longer blocks the other accounts on that provider.
- v0.3.165: Easy tries one more refresh before concluding that a sign-in has failed.
- v0.3.165: Signed-out and Reconnect are only shown when there is real evidence for them.
- v0.3.165: One account's cooldown no longer pauses every account on that provider.
- v0.3.165: Provider health stops blanking out while it rechecks.
- v0.3.165: Reconnecting from an account row carries that intent through the whole flow.
- v0.3.165: A failed account states its condition once, in plain readable text.
- v0.3.166: Every usable account is tried before Easy moves to the next model.
- v0.3.166: A sign-in that cannot be refreshed stays disabled until you reconnect it, rather than being retried.
- v0.3.166: An account with a name shows the name instead of a partly hidden email address.
- v0.3.167: An account that is permanently signed out states that as the reason it was not used.
- v0.3.167: A refresh signal is only sent where something is listening for it.
- v0.3.167: A cooldown countdown reads in days and hours rather than an abrupt short form.
- v0.3.167: A countdown shows precise time while an elapsed time stays approximate.
- v0.3.168: A countdown rounds up, so a nine-minute wait says nine minutes.
- v0.3.168: Provider cooldowns refresh without briefly appearing empty.
Long conversations, compaction and memory
1 fixes- v0.3.162: A failed full search sweep automatically retries after a safe delay.
Jobs, coordinators and scheduled work
11 fixes- v0.3.162: A task can complete successfully after deliberately deleting its own temporary output.
- v0.3.162: Automatic job recovery pauses correctly while the main turn queue is under pressure.
- v0.3.162: Scheduled turns are counted correctly and release their capacity after an in-process restart.
- v0.3.163: Cancelling a job reports that cancellation has started rather than claiming it has already finished.
- v0.3.165: A task claim is released when its worker fails terminally, so the work is not left stranded.
- v0.3.165: New workers wait for provider capacity before starting rather than failing immediately.
- v0.3.169: A scheduled task that delivers to a web chat no longer fails silently with no message and no error.
- v0.3.169: A scheduled task with no conversation attached is refused when it is created, rather than delivering somewhere unrelated.
- v0.3.169: A job whose coordinator is stopped by a restart recovers on its own instead of appearing to still be running.
- v0.3.170: A cancellation that was explicitly requested is no longer reported as a failure.
- v0.3.170: A retired session cannot reclaim work it no longer owns.
Models, images, PDFs and voice
23 fixes- v0.3.161: Finalised Kimi tool arguments are no longer cleared by the adapter.
- v0.3.162: Easy no longer sends a disabled thinking setting to Kimi models that always use thinking.
- v0.3.162: PDF processing sends subscription credentials using the correct OAuth method.
- v0.3.162: Media tools create the storage locations they advertise and only name locations that exist.
- v0.3.162: Streaming markers no longer become mixed into the displayed model name.
- v0.3.165: A temporary fallback is no longer mistaken for the model you chose yourself.
- v0.3.165: A requested model is only set aside when there is genuine matching evidence for doing so.
- v0.3.165: Easy explains why a requested model did not serve a reply.
- v0.3.165: Choosing to ignore a model reads as your own decision rather than as a failure.
- v0.3.165: A switched-off provider is refused consistently everywhere a model could be selected.
- v0.3.165: Your pinned model is kept when a provider is switched off.
- v0.3.165: The routing chain warning counts exactly what the rows show.
- v0.3.165: The model list keeps its scrollbar clear of the ignore controls.
- v0.3.167: A routing notice explains what was tried and why, instead of showing an internal code.
- v0.3.167: Context overflow is described in ordinary words, with the raw detail kept aside.
- v0.3.167: A fallback notice names what went wrong and the chain it walked.
- v0.3.167: A displaced reply names where it landed as well as what went wrong.
- v0.3.167: Error notices carry a suggested remedy.
- v0.3.169: The developer API reports the model that actually answered, rather than the one that was requested.
- v0.3.169: Asking for a model that cannot be served returns a clear not-found response instead of a server error.
- v0.3.169: A Claude Max subscription is recognised as a subscription rather than treated as an API key.
- v0.3.169: A failed attempt's partial output no longer sits beside the retry's real answer.
- v0.3.170: Generated images are saved into the project you are working in.
Browser work
7 fixes- v0.3.161: A page that blocks every browser connection can be detected and recovered.
- v0.3.161: When a managed browser dies, Easy explains why and why a replacement was launched.
- v0.3.162: Each chat’s browser tabs remain isolated from unrelated chats.
- v0.3.162: Sub-agents can work inside the browser tabs owned by their parent chat.
- v0.3.162: Easy no longer closes a browser page that the current chat only borrowed.
- v0.3.162: Intentional browser-tab takeover between chats works without confusing ownership.
- v0.3.163: A claimed tab names the chat that lost it rather than one of its helpers.
Email, messaging and connected services
14 fixes- v0.3.161: A cloud-sync process that has already been reaped is reported as unknown rather than falsely failed.
- v0.3.162: Dropbox Business can browse team folders as well as the individual member folder.
- v0.3.162: WhatsApp media failures preserve the real decoding error, improving recovery and diagnosis.
- v0.3.163: An explicit Telegram pin is respected for a direct message.
- v0.3.163: Direct-message senders are kept properly separate from one another.
- v0.3.163: A chat keeps a durable link to the channel it replies through, in both directions.
- v0.3.163: Cloud sync history is kept to a sensible size without losing the baselines it needs.
- v0.3.165: Email accepts vault-backed account credentials and degrades one account at a time.
- v0.3.165: Email states a clear reason when an account is not configured.
- v0.3.169: Two-way folder sync propagates deletions again, instead of quietly growing into a copy of both sides.
- v0.3.169: A safety guard that stops a sync when most files have vanished from one side is switched on, protecting a folder from being emptied by a stale baseline.
- v0.3.169: A folder that has drifted into a growing superset now says so rather than appearing healthy.
- v0.3.169: A pair that has already been set up is recognised as such, so every pass no longer runs as a first pass.
- v0.3.170: An instance-wide connection can be used from any project.
Projects, workspaces and search
17 fixes- v0.3.163: Workspace search genuinely matches on file name as well as content.
- v0.3.163: An agent's chats stay its own, whichever project they were filed in.
- v0.3.163: Project and agent are independent filters, so choosing one no longer disturbs the other.
- v0.3.163: Chat search searches the project rather than a guessed agent.
- v0.3.163: Changing search scope no longer leaves the previous tab's results on screen.
- v0.3.163: The search loading placeholder no longer flashes on a fast response.
- v0.3.163: Search scope tabs stay centred, with the agent filter kept to the right.
- v0.3.163: A dropped connection no longer collapses the all-projects view.
- v0.3.163: The all-projects sidebar no longer re-renders repeatedly.
- v0.3.163: Incoming channel messages are filed under the correct project.
- v0.3.163: Easy warns when a channel route would file its chats somewhere unhelpful.
- v0.3.166: The hourly search update stops re-reading every conversation's reports.
- v0.3.167: Removing an out-of-date search entry is reported rather than done silently.
- v0.3.170: Files are written to the project you are working in, not the agent's own workspace.
- v0.3.170: Commands run in the project's workspace when you are working inside a project.
- v0.3.170: A write that lands outside the current project says so, and names where it went.
- v0.3.170: Search names the projects a shared knowledge source is connected to.
Admin, configuration and setup
28 fixes- v0.3.163: Settings save what you actually chose rather than the underlying defaults.
- v0.3.163: A brand-new instance can write its configuration for the first time.
- v0.3.163: Agent changes can be saved on a fresh instance.
- v0.3.163: Configuration writes are serialised, so two simultaneous changes cannot overwrite each other.
- v0.3.163: The sign-in token is no longer lost during start-up.
- v0.3.163: A saved credential reference is never replaced by its hidden display form.
- v0.3.163: A successful save no longer reports itself as partially written.
- v0.3.163: Editing a channel stays an edit rather than triggering a restart.
- v0.3.163: Configuration backups are kept by age rather than by number of writes.
- v0.3.163: Easy tells you when a configured credential cannot start.
- v0.3.163: A stranded services record is recovered automatically.
- v0.3.163: Creating a sandboxed agent works again.
- v0.3.163: A sandboxed agent's limits cannot be widened by configuration.
- v0.3.163: A sandboxed agent is no longer offered context it cannot reach.
- v0.3.163: A sandboxed agent's available tools are now an explicit list rather than inherited automatically, so a tool added for general convenience no longer reaches customer-facing agents.
- v0.3.163: A sandboxed agent can use every tool it is permitted, rather than only those its stored settings happened to name.
- v0.3.163: A tool that resolves access from the caller is no longer available to sandboxed agents, so operator automations cannot be exposed publicly.
- v0.3.163: The sandboxed marker on an agent stops disappearing between health updates.
- v0.3.163: Health checks no longer report a working sandboxed agent as broken when run without elevated permissions.
- v0.3.163: Deleting an agent clears its links through one consistent rule.
- v0.3.165: Queued commands show live progress and can be withdrawn.
- v0.3.169: Provider switches record who changed them and when.
- v0.3.169: An out-of-date removal record can no longer delete a credential you have just reconnected.
- v0.3.169: A tool that is excluded by design says so, rather than looking like a permission you could grant.
- v0.3.170: Setup steps follow one consistent route rather than several.
- v0.3.170: A refused vault request explains the reason instead of returning a single word.
- v0.3.170: Access approvals appear in the chat that asked for them.
- v0.3.170: An approval names the project it applies to.
Resources, stability and security
16 fixes- v0.3.162: Disk-pressure queue holds are applied where disk state is actually decided.
- v0.3.162: Internal scheduled callbacks retain the operator authority they were given.
- v0.3.162: Vault references are rejected from unsafe environment-variable injection paths.
- v0.3.162: API keys that cannot incur spend explain that clearly instead of showing an empty figure.
- v0.3.163: Easy recovers on its own if its main loop becomes blocked.
- v0.3.163: A command stopped for using too much memory now explains how to recover.
- v0.3.163: Log searches no longer loop over the same section indefinitely.
- v0.3.165: The sign-in page keeps checking calmly while an instance wakes, and explains a longer wait.
- v0.3.167: Background work no longer disturbs the chat list or its ordering.
- v0.3.167: Internal routing detail is no longer broadcast to the operator interface.
- v0.3.167: The agent roster loads without its full configuration detail until that is asked for.
- v0.3.166: A refused agent-to-agent message explains how to send it correctly.
- v0.3.169: A restart is attributed accurately, using the system's own record rather than guesswork.
- v0.3.169: Indexing no longer rebuilds an entire workspace to notice one changed file.
- v0.3.169: A settings store that cannot be read says so instead of quietly serving defaults.
- v0.3.170: A queued message frees its place as soon as it starts, rather than at the end of the reply.
Release
Fixes in v0.3.160
103 fixes across 7 categories.
Chat and interface
18 fixes- v0.3.147: New chats no longer remain frozen briefly after being created.
- v0.3.147: Returning to a recent chat includes messages that arrived while you were elsewhere.
- v0.3.147: Malformed older conversation records are isolated instead of breaking the complete chat history.
- v0.3.147: Older child conversations are found correctly when checking agent and worker relationships.
- v0.3.147: Job tabs no longer jump during navigation and now have stable routes.
- v0.3.147: The side panel opens the current project’s default workspace instead of an unrelated workspace.
- v0.3.147: System version information remains visible and reports the actual gateway version.
- v0.3.147: Invalid form definitions now produce a correctable message instead of failing unclearly.
- v0.3.148: Aborted responses no longer leave orphaned tool results that can damage the conversation.
- v0.3.148: Reserved Agents pages no longer scope the sidebar to a non-existent agent.
- v0.3.149: Conversation and agent-history disagreements are reported instead of silently swallowed.
- v0.3.150: A renamed chat immediately shows its new title inside folders.
- v0.3.150: The Admin mark keeps the correct spacing when its menu scrolls.
- v0.3.152: Chats open inside the project they actually belong to.
- v0.3.152: Chats rejected by Anthropic because of a malformed error result can recover instead of remaining unusable.
- v0.3.152: Search excerpts stop at whole words rather than cutting words in half.
- v0.3.152: Generated image replies show the created filename clearly.
- v0.3.152: Memory counts no longer bunch together on narrow screens.
Long conversations, compaction and memory
17 fixes- v0.3.148: Compaction retries temporary provider failures instead of abandoning the conversation.
- v0.3.148: OpenAI and Codex context-limit messages are recognised correctly.
- v0.3.148: Oversized conversation sections can be divided even when the first error is unclear.
- v0.3.148: Very large thinking blocks are capped before they inflate the compaction request.
- v0.3.148: Compaction keeps its start and end boundaries within safe limits.
- v0.3.148: Citation ranges include the final section of the conversation.
- v0.3.148: Divided sections omit uncertain citations rather than inventing them.
- v0.3.149: Compaction progress remains visible if the page is opened or refreshed while compaction is running.
- v0.3.149: Different parts of the platform now share one bounded view of active compaction work.
- v0.3.149: Forced text splitting no longer tears code-fence markers.
- v0.3.152: Modernising an older Memory Space preserves its Fold index correctly.
- v0.3.152: Memory migrations now state accurately when reindexing is required.
- v0.3.152: Cross-project memory refusals name both involved projects, making the issue understandable.
- v0.3.154: Dead workspace search bindings are repaired automatically.
- v0.3.154: Older skipped-file markers are healed without stalling partway through the backlog.
- v0.3.158: Workspace file contents are included properly in search.
- v0.3.158: Search reindexing remains visible from its start through any failure.
Jobs, coordinators and scheduled work
15 fixes- v0.3.151: A coordinator with an approved task dispatches it instead of returning to planning.
- v0.3.151: A coordinator whose run temporarily has no tasks can wake and continue correctly.
- v0.3.151: Scheduled reports are delivered even when the underlying run has nothing else to say.
- v0.3.151: Quiet-run notices include the schedule name, so the source is clear.
- v0.3.152: Cancelling a scheduled task stops the run that schedule started.
- v0.3.152: Cancelling a job stops its coordinator as well as its workers.
- v0.3.152: Cancelled jobs can resume with their existing workers.
- v0.3.152: Finished runs remain valid places for a job to resume.
- v0.3.152: Resuming a job no longer creates a coordinator inside a run that does not exist.
- v0.3.152: The coordinator resumes immediately and steers existing workers instead of unnecessarily replacing them.
- v0.3.152: Cancellation reports that a stop was requested rather than falsely claiming everything was killed instantly.
- v0.3.152: Provider-capacity waits are visible in job status.
- v0.3.152: Provider outages wait safely instead of being hammered with repeated requests.
- v0.3.152: Job completion checks the approved plan rather than relying only on the task board.
- v0.3.152: A delegated helper is stood down before another agent takes its work back, avoiding duplicate output.
Models, images, PDFs and voice
10 fixes- v0.3.147: Disconnected providers are removed from active model-routing chains.
- v0.3.147: A temporarily quarantined model is moved down the route rather than disappearing completely.
- v0.3.147: Live calls no longer expose the wrong text-to-speech tool.
- v0.3.148: An unsubscribed provider is no longer incorrectly described as absent from the catalogue.
- v0.3.148: Image edits no longer fail because of an inferred resolution the user never selected.
- v0.3.148: Camera captures are consistently treated as images.
- v0.3.149: Corrupt images produce an accurate error instead of being blamed on file size.
- v0.3.151: Model fallback checks whether the replacement supports the required input type.
- v0.3.151: A model fallback no longer silently removes the agent’s tools.
- v0.3.152-v0.3.153: Model-switch dividers identify when an agent changed the model itself.
Email, messaging and connected services
18 fixes- v0.3.147: Failed channel-recovery loops terminate instead of retrying forever.
- v0.3.147: Discord has stronger protection against a channel-library crash.
- v0.3.149: A disabled Telegram account keeps its update position, preventing old messages being replayed later.
- v0.3.149: Google Drive connections can reach the upload path correctly.
- v0.3.149: Cloud sync explains when there was nothing to upload.
- v0.3.149: A zero cloud-storage measurement is shown as unmeasured rather than empty.
- v0.3.149: Cloud sync explains where files are missing from.
- v0.3.149: Writes that would be hidden by a synced cloud folder are refused rather than silently lost.
- v0.3.149: Each workspace is watched once rather than being registered repeatedly.
- v0.3.149: Public webhook paths now match the paths actually served by the gateway.
- v0.3.149: Agents can tell when inbound webhooks are disabled or unavailable.
- v0.3.151: Matrix resolves its password correctly when a token is used for authentication.
- v0.3.151: Email-triggered conversations attach to the correspondent rather than the operator’s mailbox.
- v0.3.151: Email activity reports the correspondent as the conversation source.
- v0.3.151: A saved Vault secret remains stored until the user explicitly removes it.
- v0.3.155: The email channel resolves its platform dependencies correctly after installation changes.
- v0.3.160: Cloud sync excludes Git metadata instead of copying repository internals.
- v0.3.160: Webhook names are decoded safely and invalid targets are refused clearly.
Projects, workspaces and search
11 fixes- v0.3.151: Project search ranks results inside the authorised project set.
- v0.3.151: Projects reject membership entries for entities that do not exist.
- v0.3.152: New workspaces no longer bind themselves to unreachable projects.
- v0.3.152: Workspace refusals explain which check failed instead of returning one generic error.
- v0.3.157: Moving resources out of the Default Project preserves their existing access.
- v0.3.157: Project membership validation correctly includes scheduled tasks and flows.
- v0.3.157: The orphan-repair sweep can claim all resource types it needs to fix.
- v0.3.157: Project membership rejects agent identifiers that do not name a real agent.
- v0.3.158: Bulk pause and resume only act on Fold sources that can actually change state.
- v0.3.158: Unmanaged-resource reports remain small enough to read and can be searched by name or identifier.
- v0.3.160: The mobile assistance chat now mounts and appears correctly on phones.
Resources, stability and security
14 fixes- v0.3.147: Per-run memory is released correctly, addressing long-uptime out-of-memory restarts.
- v0.3.147: Listing conversations no longer starves other gateway work.
- v0.3.147: Routine health checks stop reading from disk after warm-up.
- v0.3.149: Avatar paths can no longer escape through a symbolic link.
- v0.3.149: Browser security policy and lock-failure containment were tightened.
- v0.3.152: The Resources page distinguishes unreadable folders from folders that have not been scanned.
- v0.3.152: Empty resource rows are removed instead of showing misleading entries.
- v0.3.152: Disk usage measures the whole disk accurately.
- v0.3.152: Installed tools are no longer mistaken for disposable cache during storage cleanup.
- v0.3.160: Old temporary package installations are dated correctly before cleanup.
- v0.3.160: Package cleanup fails safely if it cannot confirm what should be removed.
- v0.3.160: The storage bar has enough room and explains what the remaining space contains.
- v0.3.160: Gateway close and boot operations no longer wedge a serving instance.
- v0.3.160-v0.3.162: Failed restarts exit cleanly instead of leaving a broken process occupying the port.