GSoC 2026 – Interest: Idea #6 — Interactive Progress Visualization & Task Stepping #22422
PrafulVRaj
started this conversation in
General
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
GSoC 2026 – Interest: Idea #6 — Interactive Progress Visualization & Task Stepping
Hi! I'm [YOUR NAME] (@PrafulVRaj), a Computer Science student from East West Institute of Technology, Bangalore. I'm applying for Idea #6 – Interactive Progress Visualization & Task Stepping and have been actively contributing to the Gemini CLI codebase over the past two weeks — including two visualization-related features that directly overlap with this project's goals.
👋 About Me
Existing Contributions to Gemini CLI
These aren't just warm-up PRs — they're directly relevant to this proposal:
The bottom line: I've already shipped visualization features into this exact codebase. The work for Idea #6 is a natural continuation of what I'm already doing.
🔍 Codebase Research
Through my PRs and code review, here's what I know directly shapes the design:
1. The exact integration point:
useReactToolSchedulerThis hook is the bridge between
packages/core'sCoreToolSchedulerand the Ink UI. It already fires events for tool start/confirm/complete/error and drives the existing flat confirmation prompts. All GSoC work is consuming and extending these events — no core logic changes needed.2. The confirmation seam is already there
messageBus.sendAndWaitForResponse()is already used for destructive tool confirmation — the core pauses, the UI handles input viamessageBus.respond(), and execution resumes. Step-through mode is simply extending this pause to all tool calls when the mode is active.3.
shouldConfirmExecute()andgetDescription()on every toolEvery tool already exposes structured metadata — no string parsing needed, just a typed interface. This is the foundation for rich per-node display in the tree.
4. Clean monorepo boundary
packages/cli(Ink UI) is strictly separated frompackages/core(backend). This project lives entirely inpackages/cli— zero risk of regressions in core logic.5. Current UX gap
The existing UI shows a flat per-tool confirmation box:
[a] Accept [r] Reject. There's no timing, no parent-child nesting, no sense of what already ran or what's coming next. My work on #21067 and #22118 has made this gap even more visible to me — the infrastructure for richer visualization is almost there; it just needs this project to fully realize it.Achitecture
Technical Design
Core Data Model
Key design decision: nodes are stored flat in a Map, not as a nested tree object. This makes streaming-safe updates trivial — patch a single
Mapentry by ID rather than deep-cloning nested structures. Children are referenced by ID.Extending
useReactToolSchedulerInk Component Tree
Keyboard navigation:
↑/↓Enter/SpacetsyveVerbosity System
Power users can expose everything; beginners get a clean collapsed view by default.
Error State Visualization
When a nested tool fails, the failure status propagates up the tree visually:
The
SKIPPEDstate (⏸) is automatically applied to pending siblings of a failed node so users immediately understand the full blast radius of a failure.📅 Timeline (175 hours, ~10 weeks)
TaskNodeschema incorporating lessons from existing visualization PRstaskTreeStoretouseReactToolScheduler— all events dispatch to store, no UI yet. Unit tests for reducer<TaskTreePanel>with<ToolCallRow>— flat list, status icons, timing. Keyboard focus + scrollparentId),<Collapsible>params/results, JSON syntax highlight<StepThroughBar>approve/skip/diffSKIPPEDstate for orphaned pending nodes/verbositycommand +settings.jsonpersistence,hidden/collapsed/expandedper categoryBuffer built in: Weeks 3–4 and 5–6 are two-week blocks because Ink layout debugging (scroll + flexbox + resize) reliably takes longer than expected — I've hit this already in #22118.
🚀 Post-GSoC Ideas
gemini --trace-output run.jsondumps the full task tree as structured JSON for CI audit logsCoreToolSchedulerpackages/vscode-ide-companionas an IDE sidebar panel❓ Questions for the Mentor
/tree? I lean toward always-on with a compact collapsed default, but want to understand terminal real estate tradeoffs from your side.CoreToolScheduler? That would affect whether sibling nodes need to handle concurrentrunningstates in the tree.I'm already in the codebase daily — happy to jump into any follow-up discussion. Thanks for the great project idea, @jacob314 !
gsoc-2026idea-6tuiinktask-visualizationBeta Was this translation helpful? Give feedback.
All reactions