# 🎉 Anna 1.1.0-beta.160 → beta.166 & @anna-ai/cli 0.1.53 — App Folders, Faster Cloud Agent Wakes, Byte-Perfect \`tools.invoke\` & Mobile Preview in the Dev Harness!

**URL:** https://forum.anna.partners/t/anna-1-1-0-beta-160-beta-166-anna-ai-cli-0-1-53-app-folders-faster-cloud-agent-wakes-byte-perfect-tools-invoke-mobile-preview-in-the-dev-harness/327
**Category:** Changelog
**Created:** [September 18, 2026, 8:27am UTC](https://forum.anna.partners/t/anna-1-1-0-beta-160-beta-166-anna-ai-cli-0-1-53-app-folders-faster-cloud-agent-wakes-byte-perfect-tools-invoke-mobile-preview-in-the-dev-harness/327 "2026-09-18T08:27:30Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![hunter](https://yyz1.discourse-cdn.com/flex033/user_avatar/forum.anna.partners/hunter/32/8_2.png) [@hunter](https://forum.anna.partners/u/hunter)
#### Post date: [September 18, 2026, 8:27am UTC](https://forum.anna.partners/t/anna-1-1-0-beta-160-beta-166-anna-ai-cli-0-1-53-app-folders-faster-cloud-agent-wakes-byte-perfect-tools-invoke-mobile-preview-in-the-dev-harness/327/1 "2026-09-18T08:27:30Z")

</div>

Hey Anna app developers! 👋

This batch touches the whole journey of your app: how users organize it on their dashboard, how fast the Cloud Agent behind it wakes up, how much disk it gets, how faithfully its data flows through `tools.invoke` — and how you preview its mobile experience before shipping. Several fixes here trace directly back to your reports, so a big warm thank-you to **@HappyLight** (#320) and **@martindelophy** (#296 follow-ups) — your byte-level verification and minimal repros are the gold standard of bug reports. 🙏💛

Let’s dive in! 🚀

* * *

## ✨ New Features

- 📁 **iOS-style folders in the Apps view (beta.160)** — Users can now organize their installed apps into folders, just like a phone home screen: drag one app onto another to create a folder, drag apps into folder tiles, and reorder/rename/dissolve inside an expanded overlay. Layouts are persisted server-side and sync across devices. For the API-curious: `PUT /apps/grid` gains a declarative `{layout}` payload (single-transaction folder create/rename/reorder/dissolve), and the old `{ordered}` payload keeps working for folder-less layouts. There’s also a new **optimistic-locking `layout_etag`** — concurrent edits from two devices now get a clean `409 layout_conflict` instead of silently overwriting each other. 🔒

- 📱 **Chat | Apps parity on anna-mobile (beta.160)** — The mobile app’s home screen gains the same Chat/Apps toggle and edits the _same_ server-side layout as the Web dashboard. Apps that haven’t declared mobile support are shown grayed out — one more gentle nudge to go mobile (see the CLI section below for how easy that just got 😉).

- ⚡ **Cloud Agent wakes got seriously faster — and honest (beta.164)** — We attacked wake latency on multiple fronts:

- 💾 **Bigger persistent volumes, tiered by plan (beta.163)** — Cloud Agent volumes now scale with the subscription: **Free 3 GB / Starter 5 GB / Pro 20 GB / Max 100 GB** (compute stays 4C/4G across the board). Existing agents are automatically _extended_ on upgrade — never shrunk. More room for your app’s workspace data. 📦

- 🧹 **Disk usage transparency & cleanup (beta.163)** — The Cloud Agent card on `/agents` gains a **Storage** modal showing a per-directory breakdown (workspace / apps / system, with Executa names resolved) plus targeted cleanup. The dashboard chat’s agent indicator also shows a disk-headroom badge with an amber warning under 20% free — so “why is my app failing to write?” is diagnosable at a glance.

- 🔬 **Under the hood** — We’ve instrumented the entire wake path (wake samples, cold-boot stage breakdown, P50/P95 dashboards) so wake latency is now a measured, monitored number we hold ourselves accountable to. Expect further tuning driven by real data. 📈

* * *

## 🐛 Bug Fixes

- 📦 **`tools.invoke` results are now byte-for-byte intact (beta.165)** — reported by **@HappyLight** in [Platform invoke responses are silently truncated at 32,000 characters](https://forum.anna.partners/t/320) (#320), with WebP-header math and an exact boundary repro that made the investigation a joy 🕵. A platform-side LLM-context safeguard (per-string 32,000-char truncation + appended advisory text) had leaked into the app-facing invoke path — corrupting HTML and Base64 data URLs while still reporting success, and behaving differently from the local dev harness. Fixed: **application data passes through verbatim — no truncation, no appended warnings, ever**. If a result genuinely exceeds the transport limit, you now get an explicit, machine-readable `result_too_large` error carrying the actual size and the allowed maximum, so your app can deterministically fall back to the upload/reference path. Clear transport contract, now documented in the Host API docs: sync `tools.invoke` result ≤ **4 MiB** , `tools.invokeAsync` result ≤ **256 KB** , async args ≤ **64 KiB** — no per-field limits. Regression-tested with the exact scenarios from the report. 🧪

- 🔐 **“Save all permissions” no longer 400s on capabilities you never declared (beta.161)** — surfaced by **@martindelophy** ’s Timeline Studio reports (#308): apps declaring only `llm.complete` hit `Save failed: manifest does not declare agent.session.auto` — a dead end, since the offending flag wasn’t even visible in the modal. Root cause: dev installs seeded a generous grant superset, the frontend echoed those stale flags back, and the backend strictly rejected data the platform itself had planted. 😅 Fixed from both ends: the permissions modal now forces undeclared flags to `false`, and the server clamps echoed undeclared `complete` / `agent.auto` / `agent.fixed` / `inherit_host_tools` to `false` instead of erroring — self-healing existing dirty grants with zero privilege change (runtime authority was always declaration ∩ grant).

- 🧊 **Suspended Cloud Agents no longer masquerade as online (beta.166)** — When an agent was suspended, its frozen process never got the chance to say goodbye, leaving a 60–90s “fake online” window. During it, `tools.invoke` and chat would dispatch commands into a frozen machine and time out, and login prewarm would skip the wake it should have triggered. Presence is now cleared the moment a suspend succeeds, so the very next call takes the proper wake path immediately. Fewer mysterious timeouts right after idle periods. ⏱

* * *

## 🧰 @anna-ai/cli 0.1.53 — update now!

```auto
npm i -g @anna-ai/cli@latest
# or
pnpm add -g @anna-ai/cli@latest

```

- 📱 **Mobile preview in the dev harness** — the headline: the harness dashboard titlebar gains a **🖥 Desktop / 📱 Mobile** toggle. Switch to Mobile and the app iframe remounts at a phone-sized viewport (390×844) serving your view’s `mobile_entry` — with **production-parity resolution** : a `mobile_` window source serves `mobile_entry`, falling back to your regular entry for single responsive bundles, exactly like the platform. Same session, same window — only the served entry and simulated size change.
- 🚧 **Same gate as production** — if your manifest’s `ui.form_factors` doesn’t declare `"mobile"`, the toggle is disabled (production would never give you a mobile container, so the harness won’t simulate one). The tooltip tells you why.
- 🖨 **`anna-app dev` prints your mobile entry** — mobile-declaring apps see the resolved mobile entry at startup, and a declared-but-missing `mobile_entry` file now fails fast with a clear error instead of surfacing as a mysterious 404 later.

With anna-mobile’s new Apps view putting mobile-ready apps front and center (and graying out the rest), there’s never been a better moment to add `"mobile"` to your `form_factors` — and now you can iterate on it entirely locally. 💪

* * *

## 🧩 Compatibility Notes

- 🟢 **Everything is additive** — no manifest or code changes required. Existing apps keep working unchanged.
- 🟢 `PUT /apps/grid` `{ordered}` payloads keep working for folder-less layouts; `layout_etag` / `base_etag` is opt-in (omitting it degrades to last-write-wins as before).
- 🟡 **`result_too_large` is a new error your app can receive** from `tools.invoke` when a result exceeds 4 MiB — previously this surfaced as a timeout (or worse, truncated “success”). If you produce very large results, handle it by switching to the upload/reference path. It’s `retriable: false`.
- 🟢 Volume tier upgrades apply automatically on subscription changes — extension only, never shrink, no action needed.
- 🟢 CLI 0.1.53 is a drop-in update; no new flags required.

* * *

## 📬 Feedback Welcome!

Organizing your apps into folders? Watching your agent wake in under a second after login? Shipping multi-megabyte invoke results with zero corruption? Previewing your mobile entry without leaving the harness? We’d love to hear how it feels!

Once again, this batch was community-powered: **@HappyLight** ’s forensic #320 report and **@martindelophy** ’s relentless Timeline Studio follow-ups directly shaped what shipped. Detailed reproductions are the fastest path from “bug” to “fixed and regression-tested” — keep them coming! 💪

Happy building! 💜✨
