Skip to content

Colab Shell v2.0.1

Choose a tag to compare

@github-actions github-actions released this 22 Aug 11:19
· 75 commits to main since this release

Colab Shell: Notebook & TTY (v2.0.1) fixes the two biggest terminal pain points — content loss on tab switches and permanent disconnection after backgrounding the app — plus UX polish across onboarding, home, and notebooks.

🖥️ Terminal Resilience (the headline fixes)

  • Tab switching no longer loses terminal content — every stdout chunk is now mirrored into a per-tab scrollback buffer in Python. When a terminal's view is recreated (tab switch, remount), the buffer is replayed into it, so each tab keeps its own full history.
  • WebSockets owned by the panel, not the widget — terminal connections live on TerminalEntry at panel level instead of being tied to the widget's mount cycle, so switching tabs or re-rendering the session screen no longer kills background shells.
  • Automatic reconnect with backoff — when Colab's proxy closes an idle socket (typical after backgrounding the app), the client now re-attaches to the same PTY by name with exponential backoff instead of showing "Disconnected" forever.
  • Reconnect on app resume — returning from Android background triggers a connectivity probe and re-attaches any dead terminal sockets; your shell (cwd, env, variables) is exactly where you left it.

⚙️ Terminal Settings That Actually Apply (flet-terminal 0.3.7)

  • Zoom / theme / blink / search now apply instantly and reliably — flet-terminal 0.3.7 replaces Control.update() inside frozen declarative trees with a session-level patch helper (control_update), fixing updates that silently no-op'd once Flet detached the control's parent chain.
  • Scroll freely while selecting text — the terminal no longer snaps back to the bottom on every rebuild while the keyboard is open; auto-follow only happens while you're already at the bottom. Selection events are debounced so drag-select doesn't flood the bridge.
  • Search as you type — the terminal search bar matches live (350 ms debounce); arrows still step through matches.

📓 Notebooks

  • Import .py files — notebook import now accepts Python scripts in addition to .ipynb. Files using # %% cell markers are split per block (# %% [markdown] becomes a markdown cell); plain scripts import as one code cell.