Commit graph

548 commits

Author SHA1 Message Date
Mario Zechner
0fcddd2194 Fix PTY session operations to support external sessions
- Modify sendInput to write to stdin pipe for external sessions
- Update resizeSession to handle external sessions gracefully
- Fix killSession to work with sessions created by fwd.ts
- Check filesystem for session info when not in memory map
- Support both in-memory and disk-only session management

This fixes frontend operations failing with "Session not found"
when interacting with sessions created by external tools.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 05:51:00 +02:00
Mario Zechner
a229a7f360 Add interactive PTY forwarding tool with real-time I/O
- Create fwd.ts command-line tool for spawning PTY sessions
- Support both interactive and monitor-only modes
- Real-time bidirectional terminal communication
- Parse asciinema output format for clean terminal display
- Handle terminal raw mode and graceful cleanup
- Auto-detect PTY implementation (node-pty vs tty-fwd)

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 05:42:55 +02:00
Mario Zechner
7cb80ec708 Center loading animation in viewport when no session selected
- Change from w-full h-full to fixed inset-0 for proper viewport centering
- Ensures loading spinner is centered relative to entire viewport
- Provides better visual positioning regardless of container constraints

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 05:29:31 +02:00
Mario Zechner
85a4811b65 Show loading animation when no session is selected
- Replace static "No session selected" text with animated loading spinner
- Use same loading animation style as session connection state
- Shows "Waiting for session..." message with spinning indicator
- Provides better visual feedback when waiting for session selection

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 05:27:19 +02:00
Peter Steinberger
e0758d1e8d Update appcast and version for 1.0.0-beta.2 release 2025-06-19 05:24:12 +02:00
Mario Zechner
b054a57fe3 Add ResizeObserver back in, fix rows/cols calc in terminal. 2025-06-19 05:22:07 +02:00
Peter Steinberger
e0132407ae Increment build number to 106 for beta.2 release 2025-06-19 05:18:17 +02:00
Peter Steinberger
3c31ae0692 Fixes a crash in macOS 26 2025-06-19 05:16:09 +02:00
Peter Steinberger
ba7d66aa88 Improve release scripts and documentation after successful beta 2 release
Major improvements:
- Add common.sh library for consistent error handling and logging
- Fix hardcoded values in scripts (signing identity, volume names, GitHub repo)
- Add comprehensive release documentation with lessons learned
- Create Sparkle key management guide
- Add clean.sh script for managing build artifacts
- Improve error handling and validation across all scripts
- Update lint.sh with proper documentation and better error handling
- Make generate-appcast.sh fail fast if private key is missing

Script improvements:
- release.sh: Add GitHub CLI auth check, remote tag validation
- notarize-app.sh: Auto-detect signing identity from keychain
- create-dmg.sh: Make volume name configurable
- generate-appcast.sh: Extract GitHub info from git remote
- All scripts: Add proper documentation headers

This ensures more reliable and maintainable release process.
2025-06-19 05:14:09 +02:00
Peter Steinberger
b2b340fd1e Fix EdDSA signatures with correct private key
- Update generate-appcast.sh to use private key file exclusively
- Add validation to ensure private key exists before signing
- Regenerate appcast signatures with correct key
- Add private/ directory to .gitignore for security
2025-06-19 04:58:53 +02:00
Mario Zechner
585a593ecc Fix mobile onscreen keyboard scroll position issue
- Add refreshTerminalAfterMobileInput() method to recalculate scroll position
- Call refresh after closing mobile input overlay (cancel, send, send+enter)
- Wait 300ms for viewport to settle before forcing scrollToBottom()
- Fixes issue where terminal scroll position gets confused after keyboard disappears

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 04:41:39 +02:00
Peter Steinberger
0606b6cec1 Update appcast and version for 1.0.0-beta.2 2025-06-19 04:40:25 +02:00
Peter Steinberger
bf243f7764 Fix Sparkle timestamp verification logic 2025-06-19 04:36:48 +02:00
Peter Steinberger
e046b74528 Fix timestamp verification to match actual codesign output format 2025-06-19 04:32:12 +02:00
Peter Steinberger
f820b69909 Fix Xcode project to use CURRENT_PROJECT_VERSION from version.xcconfig 2025-06-19 04:28:59 +02:00
Peter Steinberger
504d12634a Fix Sparkle signing issues and improve release verification
- Add --timestamp flag to all code signing operations
- Fix Sparkle XPC services signing to match VibeMeter approach
- Add comprehensive Sparkle component verification after signing
- Add post-DMG creation verification to ensure app is properly notarized
- Increment build number to 105 for clean beta 2 release
2025-06-19 04:26:54 +02:00
Mario Zechner
89e2dfe356 Remove mobile browser bar hiding code that was cutting off terminal
- Remove hideAddressBar() method and calls that were interfering with viewport
- Remove adjustTerminalForMobileButtons() method that was causing layout issues
- Terminal should now display properly on mobile without being cut off

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 04:23:18 +02:00
Peter Steinberger
8e55b348ac Update appcast and version for 1.0.0-beta.2 2025-06-19 04:14:44 +02:00
Peter Steinberger
f5a8b398dc improve release scripts 2025-06-19 04:10:18 +02:00
Mario Zechner
6711b3b721 Update project configuration and API documentation
- Update API.md with corrected server analysis and critical compatibility issues
- Update Xcode project configuration with version 104 and development settings
- Maintain comprehensive stream logging for debugging session exit issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 04:00:39 +02:00
Peter Steinberger
ac54aa6b1c Remove beta 2 from appcast and clean up for fresh release 2025-06-19 03:57:50 +02:00
Mario Zechner
62f0579d07 Implement cross-platform ProcessUtils for reliable process checking
- Add ProcessUtils class with Windows/Unix process detection methods
- Replace raw process.kill(pid, 0) calls with ProcessUtils.isProcessRunning()
- Support Windows tasklist and Unix kill signal 0 approaches
- Add process killing and waiting utilities for better process management
- Update SessionManager, PtyManager, and PtyService to use ProcessUtils
- Improves reliability of cmd.exe session detection on Windows

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 03:56:05 +02:00
Peter Steinberger
cbc1a4e49d Fix DMG notarization and update appcast
- Fixed API key newline encoding in notarize-dmg.sh
- Updated appcast with notarized DMG signature
- DMG is now properly signed and notarized
2025-06-19 03:53:15 +02:00
Peter Steinberger
6d0543c0ab Add DMG notarization to release process
- Created notarize-dmg.sh script to handle DMG notarization
- Updated release.sh to notarize DMG after creation
- Fixed step numbering in release process
2025-06-19 03:50:16 +02:00
Peter Steinberger
652fef032f Update appcast and version for 1.0.0-beta.2 2025-06-19 03:45:14 +02:00
Peter Steinberger
5f13d185ff Fix Xcode project to use MARKETING_VERSION from xcconfig 2025-06-19 03:42:00 +02:00
Peter Steinberger
47d79a7b90 Restore pre-Tuist Xcode project with proper dependencies and build 104 2025-06-19 03:38:27 +02:00
Peter Steinberger
8c54d205cf Fix Info.plist references to use source files instead of Tuist-generated paths 2025-06-19 03:35:46 +02:00
Peter Steinberger
7d049a0e51 Add Rust and Node.js requirements to release process
- Updated RELEASE.md to include Rust toolchain prerequisites
- Added Rust and Node.js checks to preflight-check.sh
- Included x86_64-apple-darwin target requirement for universal binaries
- Removed Workspace.xcworkspace files
2025-06-19 03:31:43 +02:00
Peter Steinberger
624c3ccf41 Remove Tuist references and generated files
- Removed Tuist-generated directories (Derived/, Workspace.xcworkspace/)
- Removed Tuist checks from preflight-check.sh
- Updated RELEASE.md to remove Tuist references
- Added Tuist directories to .gitignore
2025-06-19 03:29:58 +02:00
Peter Steinberger
c91c84191a Fix release process: prevent double beta suffix and improve documentation
- Updated release.sh to detect if version already contains suffix
- Added critical pre-release checklist to RELEASE.md
- Fixed version back to 1.0.0-beta.2 (removed double suffix)
- Improved documentation about version handling in release process
2025-06-19 03:26:40 +02:00
Peter Steinberger
72229af0a5 Update version to 1.0.0-beta.2-beta.2 and regenerate project 2025-06-19 03:23:24 +02:00
Peter Steinberger
deb54ad2bc Update Xcode project for build 104 2025-06-19 03:22:57 +02:00
Peter Steinberger
16188a0f57 Release config also needs xcconfig 2025-06-19 03:19:03 +02:00
Mario Zechner
addd0fcd71 Add comprehensive stream endpoint logging for debugging
- Enhanced stream endpoint with detailed [STREAM] logging
- Log client connections, tail process creation, and data flow
- Track exit event detection and stream cleanup
- Log connection events (close, abort, error) for debugging
- Helps diagnose Windows cmd.exe session exit issues

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 03:17:43 +02:00
Mario Zechner
240153b405 Optional session ID for PtyManager.createSession. 2025-06-19 03:17:43 +02:00
Peter Steinberger
28cfb46c35 Remove SPM dependencies comment from release script 2025-06-19 03:13:27 +02:00
Peter Steinberger
32949dd13a Don't clean SPM dependencies in release script 2025-06-19 03:12:06 +02:00
Peter Steinberger
39720c7229 Bump version to 1.0.0-beta.2
- Update version in version.xcconfig
- Update CHANGELOG.md with race condition fix
2025-06-19 02:51:22 +02:00
Peter Steinberger
10598a1305 Fix race condition in session creation
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.
2025-06-19 02:47:50 +02:00
Peter Steinberger
6d11b2ce69 Add changelog and update version 2025-06-19 02:41:10 +02:00
Peter Steinberger
1370c823ab Fix welcome window front order 2025-06-19 02:28:48 +02:00
Peter Steinberger
7386f2a01e stop requesting password on CI 2025-06-19 02:18:38 +02:00
Peter Steinberger
13fdb57f1b improve dock icon mgmt 2025-06-19 02:12:39 +02:00
Peter Steinberger
ea4cc0ab84 Fixed terminal name cache 2025-06-19 02:12:29 +02:00
Peter Steinberger
37f1c124ff be more careful with applescript 2025-06-19 02:11:30 +02:00
Peter Steinberger
dcd60d51ed docs: add Rust and Node.js prerequisites to build instructions
- Add installation instructions for Rust via rustup.sh
- Include rustup target add x86_64-apple-darwin for universal binary support
- Note Node.js requirement for web frontend build
2025-06-19 01:45:00 +02:00
Mario Zechner
6ae43fbde8 Fix cross-platform build issues in web package
Replace shell commands that fail on Windows with Node.js scripts:
- mkdir -p / cp -r → scripts/copy-assets.js
- rm -rf → scripts/clean.js
- Add scripts/ensure-dirs.js for directory creation

This resolves "A subdirectory or file -p already exists" errors
when running npm scripts on Windows with Git Bash.

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 01:43:27 +02:00
Peter Steinberger
83a4bf0f75
fix: apply formatters to pass CI checks (#19) 2025-06-19 01:39:27 +02:00
Mario Zechner
4f837b729d Switch to @homebridge/node-pty-prebuilt-multiarch for better cross-platform support
- Replace @lydell/node-pty with @homebridge/node-pty-prebuilt-multiarch
- Update imports in PtyManager.ts
- Simplify auto-detection logic in PtyService.ts by removing explicit require check
- Improves reliability and cross-platform compatibility with prebuilt binaries

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 00:57:31 +02:00