Skip to content
miblo

SDK

What's new in the Miblo SDK: what changed in each version

What each version of the Miblo SDK (@miblo/status and miblo-status) lets you do, from 1.0.0 to the newest, with the 2.0.0 breaking change marked.

What each version of the Miblo SDK lets you do, newest first. @miblo/status (Node.js 20+) and miblo-status (Python 3.9+) are versioned together. Where only one package has a method, it says so. A method that is not listed for a version was not added or changed in it.

To update, follow Install: the packages come from miblo.ai only, not from npm or PyPI. To see which version you have, run npm ls @miblo/status or pip show miblo-status.

2.1.0 (2026-10-27)

  • Desk apps as web pages (Miblo 1.45, TypeScript only). screen.page(file, { data, quality, max }) makes a web page your screen, drawn by Miblo Hub at 240x240 and streamed to the Miblo Desk; screen.data(data) sends the page new JSON (at most 16 KB); screen.quality(quality, { max }) changes how fast it is drawn (auto, verylow, low, medium, high, ultra). data() and quality() before page() fail with the new error no_page (409).

  • Deprecated, not removed: screen.card(), frame(), layer(), animate(), mesh(), mode7() and push() (live charts) keep working; new Desk apps should draw a web page.

  • Plans (Miblo 1.42.0). app.plans(), app.plans.wait(rev) and app.plans.onChange(cb) read the progress of the person's plans (title, status, progress, the tasks being done, the AI and the folder's name, never a plan's text). The app declares it and the person allows it; until then the error is not_declared or plans_off (asked). Miblo+ Pro only.

  • This computer (Miblo 1.44.0, TypeScript only). app.sys(name, params) reads one value of the computer (cpu, memory, battery, network, gpu, processes, containers, tcpProbe, nowPlaying, notifications, calendar) once the person allowed its group; the app declares it in system. Errors: system_off (asked), not_declared.

  • Sessions (Miblo 1.34.0). app.sessions() lists the AI sessions the person allowed the app to see (id, tool, the project folder's name, state, since); never prompts, commands or files. Errors not_declared and sessions_off (asked) until then.

  • Cost estimate. screen.budget() returns what the screen costs the Miblo (RAM, storage and processing, each in a band), or null from an older bridge; screen.status() carries it too (budget).

  • New error codes in the types: plans_off, sessions_off, not_declared.

2.0.0 (2026-10-11)

  • Breaking: one minimum version per side (Miblo 1.30.0). SDK 2.x speaks Status API 2 and needs Miblo 1.30.0 or newer on the computer. Every request carries x-miblo-sdk-api. An SDK older than the bridge accepts gets the error upgrade (426); a bridge older than the SDK gives bridge_outdated: update Miblo with miblo update. There is no fallback for older SDKs, bridges or firmware: SDK 1.x stops working against Miblo 1.30.0 and newer, so move to 2.x.

  • API_VERSION is 2 (it was 1). The routes stay /sdk/v1/*.

  • Asking for the screen (Miblo 1.29). screen.request({ seconds }) puts your screen on the App screen for 5-120 s unless something important is happening, and answers honestly with shown and why; screen.release() gives it back early. screen.status() has request (the seconds left).

  • Animation slots go from 0-7 to 0-47 on a Miblo from 1.29.

1.4.0 (2026-10-09)

  • Alerts. app.alerts({ id, tool }) declares alert types and sends them (send, trySend) with a type, a key against repeats (dedupeMin) and whenQuiet (drop or later); test() and status() (permission, types, quiet hours). New errors type_off, quiet and rate_limited (with reason: limit or cooldown).

  • Alert-only Desk apps: declare({ screen: false, alerts: [...] }), with no screen at all. screen.status() has allowed: false when the person turned the app's screen off (the app runs for its alerts and its drawing answers hidden).

  • declare({ dwell }) suggests how many seconds (5-120) the app's screen shows.

  • screen.status() says whether your animation is playing or queued for your screen's turn.

1.3.0 (2026-10-09)

  • Live charts. screen.push(id, value) (or push({ id: value })) streams values to a live item of the card: coalesced to 60 Hz per id and sent every 500 ms or 32 samples; flush() sends now, and stop() or clear() end the streams. status() has live.

  • app.alert({ title, text, level, seconds }): one alert over the screen once the person allows the app's alerts. MibloError.asked says the person was asked.

1.2.0 (2026-10-09)

  • Animations. screen.animate() (a GIF/APNG, PNGs, a sprite sheet or a mesh), mesh(), mode7(), stop() and preview(); status() has anim.

  • Accounts. app.connect.start(), token() and off() connect a Google or Microsoft account the person chooses; the token stays in Miblo.

  • Settings. A select takes up to 2000 choices ({ value, label }), a multi-pick (max) and dependsOn; a text setting takes suggest for type-ahead, answered with app.settings.onSuggest(key, handler); app.settings.suggest(key, q) asks.

1.1.0 (2026-10-08)

  • The App screen. client.screen({ tool }) with card(), frame(), layer(), show(), peek(), removeFrame() and clear(): a card of numbers, rings, bars and charts, and up to 4 background images.

  • Desk apps and settings. client.app({ id, tool }) with declare() and settings: get(), request(), wait() and onChange().

  • client.call() for any /sdk/v1 route.

1.0.0 (2026-10-08)

  • First release: session() with working, needsYou, idle and done, say(), focus(), timer() and a read-only snapshot(). Both packages check the bridge's hello proof and every answer's MAC, sign each request over a single-use challenge with the status-only token, and refuse bodies over 4096 bytes. Node.js 20+ with no dependencies; Python 3.9+ with the standard library.