Commit graph

1807 commits

Author SHA1 Message Date
Mario Zechner
1c52ed79d8 Fix Windows enter key mapping to use carriage return
- Change enter key from \n (line feed) to \r (carriage return) on Windows
- Maintains \n for Unix/macOS compatibility
- Fixes enter key behavior in Windows terminals

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:38:10 +02:00
Mario Zechner
64e55147e5 Implement cross-platform control pipe and direct PTY access for fwd.ts
- Add platform detection for Windows vs Unix FIFO handling
- Implement polling fallback for Windows control pipes
- Add direct PTY process access for faster keyboard input
- Fix duplicate cleanup handlers and formatting issues

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:35:33 +02:00
Mario Zechner
eaf161706c Fix TypeScript type errors in control and stdin stream handling
- Add proper type guards for control message fields (cols, rows, signal)
- Handle string | Buffer types for stream data events correctly
- Fix null assignment issue in control pipe creation
- Add type conversion for chunk data in FIFO streams

All TypeScript errors resolved.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:28:53 +02:00
Mario Zechner
c86c514030 Fix control pipe to use FIFO streaming and rename to 'control'
- Create control as FIFO instead of regular file using mkfifo
- Use same read+write streaming approach as stdin FIFO
- Rename 'control-pipe' to 'control' for consistency
- Replace polling mechanism with continuous FIFO streaming
- Update session type to use 'control' field name
- Fix PtyManager to reference correct control field

This should fix the issue where resize only worked once due to
control pipe closing after first write.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:25:25 +02:00
Mario Zechner
7a37f7a231 Fix FIFO stdin handling by opening for read+write like tty-fwd
- Open stdin FIFO with 'r+' mode to keep it open continuously
- Use fs.openSync + createReadStream for proper FIFO handling
- Prevent FIFO from closing when external writers disconnect
- Follow tty-fwd pattern of opening FIFO for both read and write
- Remove problematic spawn('cat') approach that was exiting

This should fix the issue where stdin FIFO closes after first input.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:17:44 +02:00
Mario Zechner
a2b0ba77da Fix enter key mapping for proper command execution
- Change enter key from '\r' to '\n' for correct shell behavior
- Swap enter and ctrl_enter mappings to match terminal expectations
- Most shells expect newline (\n) to execute commands, not carriage return (\r)

This fixes the issue where commands typed in frontend would hang
after pressing enter instead of executing properly.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:06:27 +02:00
Mario Zechner
83011381c2 Fix external session input handling via stdin FIFO monitoring
- Add stdin FIFO monitoring to fwd.ts for web server input forwarding
- Create ReadStream to continuously read from stdin pipe
- Forward web server input to PTY process in real-time
- Prevent hanging when web server sends input to external sessions
- Maintain dual input sources: terminal keyboard + web frontend

This fixes the issue where fwd.ts would hang when receiving
input from the web server via the stdin FIFO pipe.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:02:50 +02:00
Mario Zechner
a4077fbac6 Add control pipe migration and SIGWINCH fallback for external sessions
- Add automatic control pipe creation for existing external sessions
- Update session.json retroactively when control pipe is created
- Implement SIGWINCH fallback when control pipe is not available
- Support resize operations for legacy external sessions

This enables resize functionality for sessions created before
the control pipe feature was implemented.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 06:00:26 +02:00
Mario Zechner
6c055013af Implement control pipe for external PTY session communication
- Add control-pipe field to session types for external command communication
- Create ResizeControlMessage and KillControlMessage interfaces
- Update PtyManager to send control messages via pipe for external sessions
- Enhance fwd.ts to create and monitor control pipe for resize/kill commands
- Support real-time resize operations for external sessions via IPC
- Add proper cleanup of control pipes on session exit

This enables full PTY control (resize, kill) for sessions created by
external tools like fwd.ts through a file-based IPC mechanism.

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

Co-Authored-By: Claude <noreply@anthropic.com>
2025-06-19 05:57:13 +02:00
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