{
  "schema": 1,
  "product": "miblo",
  "version": "1.26.0",
  "date": "2026-10-09",
  "notes": "# Miblo 1.26.0\n\n## Apps que valem a mesa (17 na loja)\n\n- **Meu computador** (CPU, memória, GPU where readable, top process, network and battery when they matter), **Agenda** (reads the calendars already on your Mac or Outlook with no login; **Conectar Google** shows your Google Calendar on the Miblo within 30 s; Microsoft too; \"Próxima: 14:30 · Review\" with the countdown, Meet/Zoom/Teams named, alerts before a meeting), **Clima** (decisions first: \"chove às 17h, leva guarda-chuva\"), **Bitcoin e Cripto**, **Dólar e Euro**, **Bolsa** (your own tickers), **Jogo do time** (live score with the crests, a goal alert, the table line), **Serviços** (your sites up? alerts when one goes down and when it is back), **Repositório** (open PRs, CI, stars), **Docker**, **Status** (GitHub, Cloudflare, Vercel, OpenAI incidents), **Hacker News**, **Fusos**, **Tocando agora** (Spotify/Music with the album cover), **Radar** (the aircraft nearest your home on a radar background, model, distance, altitude, speed, a compressed photo; a peek when one flies close), **Notificações** (system notifications from the apps you choose — Slack, WhatsApp, Teams… — app, sender and count; text only if you want), and the **Demo** (see below). Eighteen more utilities remain installable but off the store.\n- Settings that are lists are **selects** now (team by league, coins, tickers, time zones), loaded from their sources and cached for 7 days; cities type-ahead. Free text only where no list exists.\n- **App alerts:** an app may ask once to send alerts (\"Jogo do time quer enviar alertas: gol\"); you allow it per app in the Miblo app. An `important` alert flashes the screen like Miblo's own; Miblo's alerts (needs you, permission, codes) always win and app alerts wait. Rate-limited per app.\n- Apps speak the computer's language; `/miblo:app` manages them from Claude Code; **when the apps show** is a choice (when nobody is working — default —, in the rotation, or only when asked).\n\n## Animações: o Nintendinho no Miblo\n\n- **Tiles, maps and sprites** on the gadget (≤ 256 tiles of 8×8, 16-colour sub-palettes, flips, 30×30 maps, ≤ 16 sprites with transparency), redrawn only where they change; **built-in `fx`** on card items (sweep, count, slide, pulse, blink, orbit, rain, ticker); **Mode 7 / HDMA** effects (rotate, zoom, perspective, wave, scroll) computed on the gadget from a few numbers; a **low-poly mesh** item (wire or flat); rectangle frames; 8 flash slots; an fps governor that keeps Wi-Fi, the pet and alerts alive. Real fps and draw time reported by the gadget.\n- **For developers, one call:** `screen.animate('chuva.gif', { fps: 8 })` — the bridge decodes GIF/APNG/PNGs/sheets, quantises, tiles, dedupes, chooses tiles, rectangles or whole frames, warns in plain words, and `miblo screen preview` shows the result pixel-exact. A full **developer guide** (miblo.ai/sdk/animacoes) explains the engineering and the recipes. The desktop app and the phone play the same animations.\n- **Demo app:** five scenes that stress everything — a road in Mode 7 perspective, a rotating planet, water with a wave effect, a live dashboard of card `fx`, the Miblo logo as a spinning 3D mesh — uploaded to the flash once and replayed from there (the flash limits respected), with the fps and draw time measured by the gadget in the corner, and a listing that explains why it is hard on a 240×240 screen driven by an ESP8266 with ~50 KB of free RAM.\n\n## O app Miblo configura tudo (app 1.8.0)\n\n- One switch \"Replies from the phone\" (every session, including automatic mode); \"Automatic tasks (no approvals)\"; the apps' alerts switch; dynamic selects and type-ahead in app settings; \"Conectar Google/Microsoft\" buttons; animation previews in the Apps tab; everything the commands do has a control (installer/docs/parity.md).\n- **Panic:** on the phone (hold 2 s + Face ID/PIN) or in the app: every AI session on the computer ends and the bridge locks; only \"Reconnect the bridge\" on that computer brings it back.\n- Phone: approvals stay until their deadline and wait for the phone even when it is disconnected (a **push notification** wakes you: iPhone needs the app on the Home Screen); clear message when history is off; the approval card shows the time left.\n\n## A loja (miblo.ai/apps)\n\n- Submission is a **5-step visual wizard** (no JSON): identity and screenshots, a card builder with live preview, a settings builder, the mandatory **code package** (plain Node, declared network hosts) with the scan shown before sending, review. Publishing needs Miblo+.\n- Every submission is scanned deterministically (forbidden modules, eval, undeclared hosts, obfuscation), reviewed by AI with guard rails against prompt injection, and **approved by a human**; the author sees the status and the team's reason, never the internal reports. **Meus apps** manages your published apps (new version, unpublish, delete, history).\n- Pages show who published, the last update, a changelog, five screens and **1–5 star ratings**; \"Últimas atualizações\"; community code apps run on your computer in a **sandbox** (read-only package, own state folder, no child processes or raw sockets, fetch limited to the declared hosts; Node 22.15+).\n- New site pages: **/firmware** (every firmware with downloads; changelogs from this version on) and a real **/sdk** documentation (8 pages, PT/EN, mirrored from the code).\n\n## Studio\n\n- \"Criar com IA\" knows species: a lion gets a mane, a snake a serpent body; the result is checked by a second look before it is shown, and the chat says what it did.\n\n## Fixes / Segurança\n\n- Panic, automatic tasks, the sandbox, app alerts and the OAuth token storage are documented in SECURITY.md with what they guarantee and what they do not; the store's scanner resists regex/division confusion, indirect eval and runtime-built URLs; reviews are cached per code hash; app media caches one day.",
  "assets": [
    {
      "name": "miblo-geekmagic_ultra-1.26.0.bin",
      "kind": "firmware",
      "board": "geekmagic_ultra",
      "path": "firmware/1.26.0/miblo-geekmagic_ultra-1.26.0.bin",
      "size": 966000,
      "sha256": "420a75a5dd81339474a4106b6952987ecaeea1d25620433caa309a0521ecdb8c"
    },
    {
      "name": "miblo-loader-geekmagic_ultra-1.26.0.bin",
      "kind": "loader",
      "board": "geekmagic_ultra",
      "path": "firmware/1.26.0/miblo-loader-geekmagic_ultra-1.26.0.bin",
      "size": 313184,
      "sha256": "80841e3a59bed612c8b97e72c631407518500c04606c52b39a13451c48a6578e"
    },
    {
      "name": "miblo-plugin-1.26.0.zip",
      "kind": "plugin",
      "path": "plugin/miblo-plugin-1.26.0.zip",
      "size": 866070,
      "sha256": "239e71ef5bacf0ddc2cef3fe9c59877721862e2901079feb30a825ee6dd0f328"
    },
    {
      "name": "Install-Miblo-macOS.zip",
      "kind": "installer",
      "path": "installers/1.26.0/Install-Miblo-macOS.zip",
      "size": 20277,
      "sha256": "cd1833be683ffd1984bce8f982c29cdd2dd0b503eacf8f8d4f323879f3ec491c"
    },
    {
      "name": "install.ps1",
      "kind": "installer",
      "path": "installers/1.26.0/install.ps1",
      "size": 69303,
      "sha256": "b00f0f39b8cc06fa880e524e44198309f17c34087898f05699038ee5c59fcac8"
    },
    {
      "name": "install.sh",
      "kind": "installer",
      "path": "installers/1.26.0/install.sh",
      "size": 64586,
      "sha256": "f67ef6555a36661a9a46947ea1cb0f8c21c1ade89965ed51a24e60da185717e7"
    }
  ]
}
