vibetunnel/docs/ios-update-progress.md
Peter Steinberger acf00c4042 iOS updates
2025-06-23 04:07:15 +02:00

115 lines
No EOL
4.6 KiB
Markdown

# iOS App Update Progress
This document tracks the implementation progress of updating the VibeTunnel iOS app to match all features available in the JavaScript front-end.
## Update Progress
### Completed Features ✅
1. **Fixed Session Creation API**
- Changed `spawnTerminal` default from `false` to `true` in `Session.swift`
- This was the critical bug preventing sessions from being created
2. **Fixed Session Cleanup Endpoint**
- Changed from `/api/cleanup-exited` to `DELETE /api/sessions` in `APIClient.swift`
- Now matches the JavaScript implementation
3. **Implemented SSE Client**
- Created `SSEClient.swift` for Server-Sent Events streaming
- Handles text-based terminal output streaming
- Parses event format: `[timestamp, type, data]`
- Handles exit events: `['exit', exitCode, sessionId]`
4. **Added Terminal Renderer Switcher**
- Created `TerminalRenderer.swift` enum for renderer selection
- Added debug menu in `TerminalView.swift` to switch between renderers
- Persists selection in UserDefaults
5. **Created xterm WebView Implementation**
- Created `XtermWebView.swift` using WKWebView
- Loads xterm.js from CDN
- Handles terminal input/output via message handlers
- Supports both WebSocket and SSE data sources
6. **Added File Preview with Syntax Highlighting**
- Added `previewFile()` and `getGitDiff()` methods to `APIClient.swift`
- Created `FilePreviewView.swift` with WebView-based syntax highlighting
- Uses highlight.js for code highlighting
- Supports text, image, and binary file previews
7. **Added Git Diff Viewer**
- Integrated into `FilePreviewView.swift`
- Shows diffs with proper syntax highlighting
- Accessible from file preview screen
8. **Updated File Browser**
- Modified `FileBrowserView.swift` to use new preview system
- Replaced QuickLook with custom FilePreviewView
9. **Added System Logs Viewer**
- Added logs API endpoints to `APIClient.swift` (`getLogsRaw`, `getLogsInfo`, `clearLogs`)
- Created `SystemLogsView.swift` with full feature parity:
- Real-time log display with 2-second auto-refresh
- Filter by log level (All, Error, Warn, Log, Debug)
- Filter by source (Client/Server)
- Text search functionality
- Auto-scroll toggle
- Download logs capability
- Clear logs with confirmation
- Added access from Settings → Advanced → View System Logs
10. **Added URL Detection in Terminal**
- SwiftTerm already has built-in URL detection (confirmed in code)
- xterm.js implementation includes WebLinksAddon for URL detection
- Settings toggle exists: "Detect URLs" in General Settings
11. **Added Cast File Import**
- Added file importer to SessionListView
- Menu option: "Import Recording" in ellipsis menu
- Supports .json and .data file types (Asciinema cast files)
- Opens CastPlayerView with imported file
- Created CastFileItem wrapper for Identifiable conformance
### All Features Completed! ✅
All features from the JavaScript front-end have been successfully implemented in the iOS app.
## Key Files Modified
- `Session.swift` - Fixed spawn_terminal default value
- `APIClient.swift` - Fixed endpoints, added preview/diff/logs APIs
- `SSEClient.swift` - New SSE implementation
- `TerminalRenderer.swift` - New renderer selection enum
- `XtermWebView.swift` - New WebView-based terminal
- `FilePreviewView.swift` - New file preview with syntax highlighting
- `TerminalView.swift` - Added renderer switcher
- `FileBrowserView.swift` - Updated to use new preview
- `SystemLogsView.swift` - New system logs viewer
- `SettingsView.swift` - Added logs viewer access
- `SessionListView.swift` - Added cast file import functionality
## Testing Checklist
- [x] Create new sessions
- [x] Terminal output appears correctly
- [x] Terminal input and special keys work
- [x] WebSocket reconnection works
- [x] File browser and preview work
- [x] Git integration features work
- [x] Session management operations work
- [x] Error handling and offline mode work
- [x] Terminal renderer switching works
- [x] System logs viewer works
## Summary
The iOS app has been successfully updated with all critical and most medium-priority features from the JavaScript front-end. The app now has:
- Full server communication compatibility
- Multiple terminal renderer options (native SwiftTerm and web-based xterm.js)
- File preview with syntax highlighting
- Git diff viewing
- System logs viewer
- All necessary API endpoint fixes
The remaining features (URL detection and cast file import) are low priority and the app is now fully functional with the current server implementation.