-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Labels
enhancementNew feature or requestNew feature or request
Description
Problem
Users report that running /update appears to "never update" - the UI shows a static message with no visual feedback during operations that can take 5-120 seconds. The update does eventually complete, but the lack of progress indication makes users think the process is frozen.
Root Cause Analysis
The /update command has two long-running operations with minimal visual feedback:
| Operation | Duration | Current Feedback | Issue |
|---|---|---|---|
| PyPI Check | 0-10 seconds | Static text "Checking for updates..." | Appears frozen |
| Package Installation | 5-120 seconds | Static text "Installing with {manager}..." | Appears frozen |
Key Gaps
- No LoadingIndicator: The app HAS a
LoadingIndicatorwidget (app.py:161) used by agent requests, but it's NOT activated during update operations - No viewport state: The
#viewport.streamingCSS class (used by agent requests for active state) is not applied - No status bar update: Status bar doesn't show "running: update" during installation
- Hidden subprocess output:
subprocess.run()withcapture_output=Truehides ALL package manager progress output from users - No cancellation: Once installation starts, there's no way for users to cancel
Comparison with Other Commands
| Feature | /update |
Agent Request | /compact |
|---|---|---|---|
| LoadingIndicator | β No | β Yes | β No |
| Viewport outline | β No | β streaming | β No |
| Status bar "running: X" | β No | β Yes | β No |
| Resource bar label | β No | β Tokens | β Compacting |
Relevant Code Locations
src/tunacode/ui/commands/update.py:70-130- Main update logicsrc/tunacode/ui/app.py:161- LoadingIndicator widgetsrc/tunacode/ui/app.py:241-242- Loading pattern (used by agent requests)src/tunacode/ui/widgets/resource_bar.py:71-75- Compaction status patternsrc/tunacode/configuration/paths.py:123-157- PyPI version check
Proposed Solutions
Priority 1: Immediate Visual Feedback
- Activate
LoadingIndicatorduring PyPI check and installation - Add viewport streaming state during active operations
- Update status bar to show "running: update"
Priority 2: Enhanced Progress Indicators
- Add "Updating..." label to ResourceBar (similar to "Compacting..." pattern)
- Add intermediate status messages ("Contacting PyPI...", "Downloading packages...")
Priority 3: Advanced Progress
- Stream subprocess output to chat container for real-time package manager progress
- Add cancellation support for the update worker
Environment
- Timeout constants: PyPI check = 10s, Installation = 120s
- Package managers supported: uv, pipx, pip
- PyPI endpoint:
https://pypi.org/pypi/tunacode-cli/json
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
enhancementNew feature or requestNew feature or request