The server now waits for tty-fwd to fully register the session before
returning the response. This prevents the frontend from querying for a
session that doesn't exist yet in the session list.
Also removed the problematic frontend fallback that would select the
"most recent" session when the exact ID wasn't found, which was causing
it to open the previous session.
- Migrate GitHub Actions to Blacksmith runners for faster CI
- Update ubuntu-latest to blacksmith-4vcpu-ubuntu-2404
- Update actions/setup-node@v4 to useblacksmith/setup-node@v5
- Update Swatinem/rust-cache@v2 to useblacksmith/rust-cache@v3
- Fix all linting warnings across all platforms
- TypeScript: Fix any type warnings with proper type annotations
- Rust: All clippy warnings resolved
- Swift: Fix SwiftLint violations and format code
- Update all dependencies to latest versions
- npm: Major updates including Express 5 compatibility fixes
- Rust: Update 7 crates to latest compatible versions
- Swift: Dependencies already up-to-date
- Add comprehensive test suite using Vitest
- API endpoint tests for session CRUD operations
- WebSocket connection and streaming tests
- Session management lifecycle tests
- Frontend component tests (terminal, session-list)
- Critical functionality tests covering core features
- Test infrastructure with proper mocking and utilities
- All tests passing, ready for production use
- Removed info logs for Accessibility permission status checks
- Removed info logs for AppleScript permission status checks
- These were being logged repeatedly and cluttering the console
- Fixed Swift formatting issues in AppConstants.swift and VibeTunnelApp.swift
- Fixed Rust formatting in tty-fwd source files
- CI should now pass formatting checks
Swift 6 has issues with NotificationCenter's AsyncSequence returning
non-Sendable types. Use traditional selector-based observer to avoid
concurrency issues.
- Use .values on NotificationCenter notifications AsyncSequence
- Replace openApplication with open to avoid non-Sendable return type
- Properly handle async operations within MainActor context
- Relocated "The Story" section with blog post link to appear right after "Why VibeTunnel?"
- Makes the full story more discoverable for readers interested in the project's background
- Also includes Swift concurrency improvements for LazyBasicAuthMiddleware
- Include CreditLink component directly in AboutView.swift
- Fix Swift 6 concurrency issue with NSRunningApplication
- Remove Windows build from Rust workflow (tty-fwd is Unix-only)
- tty-fwd uses Unix-specific PTY features not available on Windows