Since the last post, the app grew into the OS.
The Problem I Kept Running Into
The last post solved the terminal problem: native PTY, zero IPC, tools in the APK.
But the AI was still a separate window. Switch apps to check Codex status. Copy errors, paste into ChatGPT. Unfold my Z Fold — layout broken.
Seven steps. Every single time.
So I told the agents: make the AI a first-class Android citizen.
What Changed
Before (v5.3):
- AI runs in a terminal pane — works, but invisible when the app is closed
- No widget, no home screen integration
- Copy error → switch app → paste → read → switch back → paste fix → run
- Z Fold cover → main display = layout glitch
- Codex updates require full APK reinstall
After (v6.0):
- Agent Chat pane reads Codex events live — approval cards, tool calls, session history — and runs fixes with one tap
- Scouter widget on the home screen: quota bars, rate limits, cost, conversation preview — and send prompts directly from the widget
- Codex Pets — avatars that cycle on the widget because why not
- Per-category notification channels: approvals = Heads-up HIGH, errors = buzz, status = silent
- Z Fold cover ↔ main display transitions = flawless
- Codex runtime hot-swaps without touching the APK
Agent Chat — Zero Copy-Paste
The terminal AI now reads the terminal output automatically.
Codex throws an error. The Agent Chat pane shows it. You tap [Fix this]. Codex generates a command. You tap [Run]. The command lands in the terminal.
Seven steps → two taps.
Session history survives app restarts. Resume a previous Codex session from the sidebar. Rename it. See approval cards with accept/reject. All read-only, all live.
The copy-paste bridge is gone.
Scouter Widget — Codex on the Home Screen
The most requested feature: a real-time Codex dashboard on the Android home screen.
- 5-cell quota bar: green → yellow → critical red
- Live rate-limit remaining, cost display, 60s heartbeat
- Last user + Codex exchange shown in two lines
- Send a prompt directly from the widget — tap the compose button, type, Codex executes in the background
- Per-category notification channels — approvals get Heads-up priority, errors interrupt immediately, status updates stay quiet
I don't need to open Shelly to check if Codex is blocked on an approval anymore. It's on my home screen.
Codex Pets — Delight
If you're going to share your terminal with an AI all day, it should have a face.
Codex Pets are small overlay avatars on the widget. A dog. A cat. A robot. They cycle automatically. They do nothing functional. They make me smile.
Z Fold — The Hardest Bug
Foldables are two devices glued together. The cover display (904px portrait) and the main display (1812px landscape unfolded) trigger a full Android configuration change — and React Native does not handle that gracefully.
Three root-cause bugs:
- The fold transition guard was silently blocking legitimate unfolds within 500ms of mount
-
onConfigurationChangedrelayout was async-only — the pane container measured stale dimensions - A stale keyboard height persisted across the fold, pushing the layout offscreen
One with-saved-instance-state.js plugin patch, 15 AI-led debugging sessions, three TypeScript fixes.
Cover → main. Main → cover. No glitch.
By the Numbers
| Metric | Before | After |
|---|---|---|
| CI build time | 13m 53s | 11m 45s |
| APK features | Terminal + AI panes | + Agent Chat, Scouter Widget, Notification channels |
| Codex updates | Full APK reinstall | Hot-swap runtime updater |
| Z Fold | Broken | Fixed |
| Hidden panes | Buried in layout | Visible in Add sheet, promotion fixed |
What I Still Can't Do
Write production-grade Kotlin. Ship a Jetpack Compose widget without an agent holding my hand. Understand Android's onConfigurationChanged lifecycle without 15 debugging sessions.
What I can do: describe a problem to Codex in plain English, watch it investigate, review its patch, and ship it.
The agent didn't just build the terminal anymore.
It became part of the OS.
Try It
GitHub: https://github.com/RYOITABASHI/Shelly
APK: GitHub Releases (android-latest)
License: GPLv3
Rough edges exist. That's why it's open source.



Top comments (0)