Commit graph

593 commits

Author SHA1 Message Date
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
Mario Zechner
abb652fec2 Implement comprehensive PTY service enhancements with proper async operations
## Major Features Implemented

### 🔄 Enhanced Process Termination
- Async kill operations with proper SIGTERM → SIGKILL escalation
- 3-second timeout with 500ms check intervals for graceful termination
- Process status monitoring using signal 0 checks
- Comprehensive logging of termination process

### 📊 Process State Detection
- Waiting state detection using `ps -p <pid> -o stat=` like tty-fwd
- Unix process state analysis (R=running, S/D/T=waiting, Z=zombie)
- Real-time status updates during session listing
- Automatic zombie process cleanup

### 🖥️ Improved UI Event Handling
- `session-killed` event dispatched AFTER successful termination
- Immediate UI feedback with session card removal
- `session-kill-error` event for failed operations
- Proper error handling and user notification

### 🔧 Node-pty Migration
- Switched from `node-pty` to `@lydell/node-pty` with prebuilt binaries
- Express downgraded from v5 to v4 for better compatibility
- Added `signal-exit` dependency for cleanup handlers
- Enhanced fallback mechanisms for both implementations

### 📡 API Enhancements
- Kill endpoint now waits for actual process termination
- New `/api/pty/status` endpoint for implementation monitoring
- Enhanced session metadata with waiting state
- Improved error responses with detailed messages

### 🎯 Key Technical Improvements
- Type-safe async operations throughout PTY stack
- Proper cleanup on process exit with signal handlers
- Compatible session file structure with tty-fwd
- Enhanced asciinema recording with UTF-8 handling

All changes maintain full backward compatibility while providing
significant improvements in reliability and user experience.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 00:57:31 +02:00
Mario Zechner
1a08d4603a Remove lint_output.txt and add to gitignore
- Removed lint_output.txt from git tracking
- Added lint_output.txt to .gitignore to prevent future commits

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 00:57:31 +02:00
Helmut Januschka
0f26328940
add font (#20) 2025-06-19 00:28:08 +02:00
Mario Zechner
0f5db0771a Remove lint_output.txt and add to gitignore
- Removed lint_output.txt from git tracking
- Added lint_output.txt to .gitignore to prevent future commits

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 23:46:22 +02:00
Mario Zechner
ee111b44a0 Update web client to handle new exit event format
- Remove automatic session snapshot loading on exit in session-view
- Update cast-converter to properly parse exit events in new format
- Handle exit events when timestamp field is "exit" string

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-18 23:45:36 +02:00