-
Notifications
You must be signed in to change notification settings - Fork 157
feat(ui): make ngrok URL clickable with copy button in MacOS under Settings → Dashboard → Remote Access section #422
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
steipete
merged 1 commit into
amantus-ai:main
from
gopikori:feature/ngrok-link-with-copy-button
Jul 20, 2025
Merged
feat(ui): make ngrok URL clickable with copy button in MacOS under Settings → Dashboard → Remote Access section #422
steipete
merged 1 commit into
amantus-ai:main
from
gopikori:feature/ngrok-link-with-copy-button
Jul 20, 2025
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
- Replace plain text ngrok URL with clickable Link component - Show full URL with https:// prefix instead of stripping it - Add copy button with visual feedback (changes to checkmark when copied) - Improve user experience for accessing ngrok tunnels The ngrok URL in Settings → Dashboard → Remote Access section is now displayed as a blue clickable link that opens in the default browser, with a convenient copy button next to it.
8c4c5a5 to
92f9dfd
Compare
Collaborator
|
@gopikori Thanks, this is great! |
steipete
added a commit
that referenced
this pull request
Jul 21, 2025
) * feat(server): add configuration service with file-based persistence - Implement ConfigService for managing application configurations - Add REST API endpoints for quick start configuration - Add comprehensive test coverage for config operations - Define TypeScript types for configuration structures - Replace WebSocket-based config sync with REST API * feat(web): add quick start editor component - Create fully-featured command editor with add, edit, delete functionality - Add drag-and-drop reordering support - Implement real-time validation and error handling - Include comprehensive test coverage (100%) - Support keyboard navigation and accessibility * feat(web): add session status management - Create session status dropdown component for state management - Add session termination capabilities with proper cleanup - Refactor session header to integrate status controls - Support graceful disconnection and reconnection * feat(mac): add directory autocomplete service - Implement AutocompleteService for directory path completion - Create AutocompleteView with native macOS UI - Support home directory expansion (~/) - Add system file browser integration - Optimize performance for large directory structures * feat(mac): add quick start settings interface - Create SwiftUI settings view for managing quick start commands - Implement inline editing with immediate feedback - Add default commands for common workflows - Include toggle for using current directory as default - Add smooth animations and hover effects * feat: integrate quick start in session creation - Add quick start command buttons to session create form - Implement directory picker with autocomplete support - Update form layout for better user experience - Add comprehensive tests for new functionality - Sync quick start integration across web and native * feat(web): add repository discovery to settings - Add repository discovery functionality in unified settings - Update settings UI to support new configuration options - Remove WebSocket-based configuration sync - Simplify settings component with REST API integration * docs: add macOS quick start implementation guide - Document architecture and implementation details - Include code examples and best practices - Explain integration between web and native components - Provide troubleshooting guidance * feat: enhance UI/UX across components - Improve session list with better status indicators - Update terminal binary detection and display - Refine width selector and image upload interactions - Clean up WebSocket control handler - Update server configuration handling - Fix notification status display - Polish settings view layout * feat(web): improve session header UI elements - Position edit icon directly after text instead of far right - Update magic wand icon with sparkles to match macOS design - Change from grid to flex layout for better icon positioning - Enhance visual consistency across platforms * fix(web): improve OPTIONS label alignment in session create form - Add flex-shrink-0 to chevron icon to prevent shrinking - Add leading-none to OPTIONS label for better vertical alignment * docs: update changelog for beta.14 with Quick Start features - Document Quick Start Configuration System (#229, #250, #436) - Add native macOS settings interface details - Include session management improvements - Add bug fixes and breaking changes - Reference related issues and PRs * feat(mac): add ConfigManager for synchronized quick start commands - Create ConfigManager to sync commands with web UI config file - Monitor ~/.vibetunnel/config.json for changes - Replace UserDefaults with file-based configuration - Ensure consistency between Mac app and web interface * feat(mac): add ClickableURLView component - Create reusable component for clickable URLs in SwiftUI - Support for opening URLs in default browser - Consistent styling across the app * refactor(mac): simplify remote access settings UI - Use ClickableURLView for consistent URL display - Reduce code duplication in settings sections - Improve maintainability of remote access views * refactor(mac): integrate ConfigManager in NewSessionForm - Replace direct UserDefaults access with ConfigManager - Use synchronized quick start commands from shared config - Improve command selection UI consistency * fix(web): update terminal padding and termination handling - Remove horizontal padding from terminal containers - Implement proper session termination via DELETE API - Keep vertical padding for better visual appearance - Fix binary mode toggle styling * fix(mac): resolve ConfigManager threading crash - Fix main actor violation in file monitor callback - Remove unsafe self reference in asyncAfter closure - Capture monitor queue reference to avoid accessing self - Ensure all @published property updates happen on main thread * feat(web): add reset to defaults button in quick start editor - Add Reset to Defaults button for easy restoration - Import DEFAULT_QUICK_START_COMMANDS from config types - Improve user experience with quick command reset option * fix(web): adjust OPTIONS chevron icon size - Reduce chevron icon from 10x10 to 8x8 for better visual balance - Update responsive size classes accordingly - Remove leading-none from OPTIONS label for better alignment * docs: update changelog with latest UI improvements and bug fixes - Document ConfigManager and ClickableURLView additions - Add AutocompleteService and reset to defaults features - Include all UI fixes and threading crash resolution - Document session header and terminal improvements * fix(mac): fix ConfigManager threading crash when moving quick start items - Remove background file monitor queue and use main queue directly - ConfigManager is @mainactor so all operations must happen on main thread - Simplify file monitor callback by removing unnecessary Task wrapper - Fixes crash when reordering quick start commands in settings * feat: add Zod validation for quick start configuration - Add Zod dependency for runtime config validation - Implement ConfigSchema to validate quick start commands - Ensure commands have non-empty strings and valid structure - Add validation on config load and update operations - Fix auth headers for config API endpoints - Remove unused repository path WebSocket handlers - Update storage key for consistency This improves config reliability and prevents invalid commands from being saved. * docs: update changelog with comprehensive beta.14 release notes - Reorganize changelog with clear user-focused sections - Add detailed feature descriptions for Quick Start functionality - Highlight UI/UX improvements with specific examples - Document all bug fixes and stability improvements - Include breaking changes and migration guidance - Add emojis for better visual organization - Expand technical details for developers * fix: handle undefined activityStatus in session categorization Sessions with undefined activityStatus were incorrectly shown as idle. Now only sessions with explicitly false isActive are considered idle. * feat: enhance quick start configuration with repository discovery - Add repository discovery and filtering in AutocompleteService - Support directory-only suggestions for quick start paths - Improve autocomplete filtering to exclude hidden and system directories - Update quick start settings UI with better directory selection - Add tests for vibe-terminal-binary component - Minor UI improvements to clickable URLs and form components * fix: update tests for storage key change and terminal sizing - Update repository-service tests to use new 'app_preferences' storage key - Fix vibe-terminal-binary test to enable fitHorizontally for maxCols constraint - Ensure tests align with recent configuration changes * fix: update failing tests and improve repository status element - Add id="repository-status" to repository counter for easier test selection - Update quick-start-editor test to match actual button classes - Fix all unified-settings tests to use the new repository-status ID - Prevent tests from accidentally selecting unrelated elements * docs: update beta 14 changelog to match earlier style Simplified changelog format to be consistent with beta 13 and earlier versions, making it more concise and easier to read. * feat: add IDs to quick-start-editor elements for better testability - Add id="quick-start-edit-button" to Edit button - Add id="quick-start-save-button" to Save button - Add id="quick-start-cancel-button" to Cancel button - Add id="quick-start-reset-button" to Reset to Defaults button - Add id="quick-start-add-command-button" to Add Command button - Add dynamic IDs for remove buttons: quick-start-remove-command-{index} - Add dynamic IDs for inputs: quick-start-name-input-{index}, quick-start-command-input-{index} - Add dynamic IDs for command items: quick-start-command-item-{index} This makes tests more maintainable by avoiding complex selectors that search by text content. * test: update quick-start-editor tests to use element IDs - Replace button text search with ID selectors for better reliability - Update edit button selector to use #quick-start-edit-button - Update add command button selector to use #quick-start-add-command-button - Update reset button selectors to use #quick-start-reset-button This demonstrates how the new IDs make tests more maintainable and less fragile. * docs: rewrite beta 14 changelog with accurate feature descriptions - Clarify that Quick Start commands became customizable (not new) - Add accurate description of session status management dropdown - Include proper technical details about systemd support - Fix misleading descriptions about features - Maintain concise style consistent with previous releases * fix: remove obsolete tests and fix control-unix-handler tests - Remove obsolete repository-path-sync.test.ts that was testing removed functionality - Remove skipped session-view-drag-drop.test.ts that was causing import errors - Fix control-unix-handler tests to test actual functionality instead of non-existent methods - All tests now passing (1008 passed, 113 skipped) * docs: update beta 14 contributors section - Add Gopi as first-time contributor for ngrok clickable URLs (#422) - Properly credit hewigovens and Claude as co-authors on systemd (#426) - Remove duplicate first-time attribution for hewigovens * docs: fix Claude contributor GitHub link to @claudemini * docs: fix claudemini's contribution attribution - claudemini improved theme toggle UI (PR #429/#438), not systemd - List them as first-time contributor - Keep Claude AI assistant as systemd co-author * docs: remove incorrect AI assistant attribution - There was no AI assistant Claude that co-authored systemd - Keep only the correct contributors: 2 first-time and 1 additional * fix: apply linter fixes for CI - Fix optional chaining in test mock - Fix unused parameters with underscore prefix - Format quick-start-editor test file - Keep any types in test file (acceptable for tests) * fix: remove all any type warnings in tests - Use proper ControlUnixHandler type import - Type vi.importMock with typeof import('net') - Type WebSocket mock with proper import type - All lint warnings now resolved * docs: add image upload feature to changelog - Added image upload menu feature (#432) - Also added theme toggle improvement (#438) that was missing * refactor: add element IDs for improved test maintainability - Added descriptive IDs to interactive elements across components - Updated tests to use ID selectors instead of text-based queries - Enhanced documentation with ID naming best practices - Makes tests more reliable and less brittle to text changes * fix: correct session-list test expectation for hideExited toggle The component emits an event but doesn't directly change its state - the parent handles the state update * docs: add more PR/issue references to beta 14 changelog - Added fixes #368 for theme toggle improvement - Added duplicate reference #421 for Chinese input issue #431 - All PR and issue references now properly documented * fix: SwiftFormat modifier order and SystemControlHandler test race condition * fix: repository scanner not showing discovered repositories - Fixed storage key mismatch between 'app_preferences' and 'vibetunnel_app_preferences' - Added missing authClient prop to unified-settings component in app.ts - Updated all test files to use the correct storage key - Repository scanner now correctly displays discovered repositories count * refactor: extract session termination logic into reusable helper - Create session-actions.ts utility for common session operations - Refactor handleTerminateSession to use the new helper - Fix handleClearSession to properly delete exited sessions before navigation - Move Git branch indicator to header next to path in file browser - Fix Options label alignment in session create form * refactor: migrate repository base path from CLI arg to config.json - Remove --repository-base-path command line argument - Add repositoryBasePath to VibeTunnelConfig type and schema - Update server to read/write repository path from config.json - Refactor client to use ServerConfigService for repository path - Update settings UI to manage path through server config API - Ensure consistent naming with macOS app implementation This simplifies configuration by using config.json as the single source of truth for repository base path, with automatic file watching for real-time updates. * docs: remove --repository-base-path from README This option was removed in the previous commit as repository base path is now configured via config.json instead of command line arguments. * fix: reduce Logs button border contrast and add comprehensive drag & drop tests - Changed border opacity from 100% to 30% for softer appearance - Created drag & drop tests with 21 passing tests covering: - Drag over/leave functionality - Drop handling for single and multiple files - Paste functionality with various UI states - Error handling and edge cases - Fixed TypeScript lint errors in test files - Disabled 2 visual overlay tests due to shadow DOM limitations in test environment * fix: auto-format session-action-service.ts to pass CI checks * fix: update tests to match refactored session action service implementation - Fixed repository service tests by adding mock serverConfigService - Updated session-card tests to expect DELETE endpoint instead of /cleanup - Corrected error message expectations in session-card tests - Fixed quick-start-editor test button class expectations - Auto-formatted all files to pass CI checks * fix: update session-action-service tests with proper mocks and window handling - Added @vitest-environment happy-dom directive for DOM testing - Set up proper mock for terminateSession to return success: true - Mock window.dispatchEvent to prevent errors in test environment - Fixed all test expectations to match refactored implementation * fix: update server config tests to match refactored API implementation - Updated config route tests to match new implementation that always returns serverConfigured: true - Fixed error messages to match 'No valid updates provided' instead of 'Invalid quick start commands' - Removed dependency on getRepositoryBasePath function, now using configService.repositoryBasePath - Added tests for repository base path updates via PUT /api/config - Added test for updating both repository path and quick start commands together * fix: resolve remaining CI issues with type assertions and import ordering * fix: update remaining tests and clean up imports - Fix repository service test to include serverConfigService - Update session card test error expectations - Fix quick start editor button class tests - Add proper mock setup for session action service - Update server config tests for refactored API - Clean up type assertions and import ordering * fix: correct undefined runningSessions variable reference in Kill All button The Kill All button was referencing a non-existent runningSessions variable after refactoring split it into activeSessions and idleSessions. Fixed by using the locally defined runningSessions variable in renderExitedControls() method. * fix: improve Quick Start settings UI styling - Use tertiaryLabelColor for better visual hierarchy - Adjust opacity values for improved contrast - Remove redundant "Quick Start" header * fix: ensure thread safety in SystemControlHandlerTests - Wrap notification flag updates in MainActor tasks - Ensure test assertions run on MainActor - Fixes potential race conditions in async tests * fix: correct SwiftFormat modifier order in VibeTunnelApp - Change 'weak static' to 'static weak' to match SwiftFormat rules - Fixes CI linting failure * fix: resolve Swift 6 concurrency errors in SystemControlHandlerTests - Wrap MainActor property mutations in Task blocks for notification observers - Fix test expectations to match actual path handling behavior - SystemControlHandler stores paths as-is without tilde conversion The CI failures were due to Swift 6's stricter concurrency checking which prevented mutating MainActor-isolated properties from Sendable closures. Also corrected the test expectation - the handler doesn't convert paths to tilde notation, that only happens in UI components. * fix: revert to correct SwiftFormat modifier order - SwiftFormat expects 'weak static', not 'static weak' - Fixes CI formatting check failure * chore: trigger CI rebuild * fix: resolve remaining CI issues with type assertions and import ordering - Disable AppleScript tests on CI environment (not available in headless mode) - Make SystemControlHandlerTests more robust with proper synchronization - Add better error messages for test failures - Fix exit code 126 issues by handling server startup failures gracefully * Remove repository base path CLI argument from BunServer - Server now reads repository base path directly from config.json - Updated NewSessionForm to use ConfigManager for repository path - Updated GeneralSettingsView to use ConfigManager instead of @AppStorage - Updated ProjectFolderPageView to use ConfigManager - Removed --repository-base-path CLI argument from BunServer - RepositoryPathSyncService already updated to use ConfigManager * Update tests to use ConfigManager and add CI diagnostics - Updated RepositoryPathSyncServiceTests to use ConfigManager instead of UserDefaults - Added diagnostic logging in BunServer for CI debugging when binary is not found - Updated GitHub Actions workflows * fix: simplify Mac CI by removing web artifact caching - Remove web artifact download/upload between Node.js and Mac CI workflows - Mac CI now builds web components directly via Xcode build process - Eliminates file permission issues with artifact transfers - Workflows can now run in parallel for faster CI - Add better diagnostics for missing binary errors in BunServer * fix: make tests properly fail when server binary is not available - Update ServerManagerTests to require server binary presence - Tests now fail with clear error if vibetunnel binary is missing - Remove fallback logic that allowed tests to pass without binary - ServerBinaryAvailableCondition now only checks app Resources folder The server binary must be properly embedded in the Mac app's Resources folder. Tests should not pass if the binary is missing, as this would indicate a broken build. * Refactor code to reduce duplication and improve structure - Use AppConstants.getPreferredGitApp() instead of direct UserDefaults access - Add getDashboardAccessMode() and setDashboardAccessMode() helpers to AppConstants - Create GitAppHelper utility to centralize Git app preference logic - Simplify GitRepositoryRow and SessionRow to use GitAppHelper - Keep ConfigManager focused on server-needed config (quickStartCommands, repositoryBasePath) - Mac-specific settings remain in UserDefaults with improved access patterns * Move configuration enums to shared location - Create ConfigurationEnums.swift with AuthenticationMode and TitleMode - Remove duplicate enum definitions from UI files - Fix ConfigManager to use correct enum case names (.osAuth instead of .os) - Add description property to AuthenticationMode for UI display - Proper separation of shared types from UI-specific code
ferg-cod3s
pushed a commit
to ferg-cod3s/tunnelforge
that referenced
this pull request
Sep 23, 2025
…ntus-ai#422) Co-authored-by: Gopi Kori <gopi@bruviti.com>
ferg-cod3s
pushed a commit
to ferg-cod3s/tunnelforge
that referenced
this pull request
Sep 23, 2025
…mantus-ai#436) * feat(server): add configuration service with file-based persistence - Implement ConfigService for managing application configurations - Add REST API endpoints for quick start configuration - Add comprehensive test coverage for config operations - Define TypeScript types for configuration structures - Replace WebSocket-based config sync with REST API * feat(web): add quick start editor component - Create fully-featured command editor with add, edit, delete functionality - Add drag-and-drop reordering support - Implement real-time validation and error handling - Include comprehensive test coverage (100%) - Support keyboard navigation and accessibility * feat(web): add session status management - Create session status dropdown component for state management - Add session termination capabilities with proper cleanup - Refactor session header to integrate status controls - Support graceful disconnection and reconnection * feat(mac): add directory autocomplete service - Implement AutocompleteService for directory path completion - Create AutocompleteView with native macOS UI - Support home directory expansion (~/) - Add system file browser integration - Optimize performance for large directory structures * feat(mac): add quick start settings interface - Create SwiftUI settings view for managing quick start commands - Implement inline editing with immediate feedback - Add default commands for common workflows - Include toggle for using current directory as default - Add smooth animations and hover effects * feat: integrate quick start in session creation - Add quick start command buttons to session create form - Implement directory picker with autocomplete support - Update form layout for better user experience - Add comprehensive tests for new functionality - Sync quick start integration across web and native * feat(web): add repository discovery to settings - Add repository discovery functionality in unified settings - Update settings UI to support new configuration options - Remove WebSocket-based configuration sync - Simplify settings component with REST API integration * docs: add macOS quick start implementation guide - Document architecture and implementation details - Include code examples and best practices - Explain integration between web and native components - Provide troubleshooting guidance * feat: enhance UI/UX across components - Improve session list with better status indicators - Update terminal binary detection and display - Refine width selector and image upload interactions - Clean up WebSocket control handler - Update server configuration handling - Fix notification status display - Polish settings view layout * feat(web): improve session header UI elements - Position edit icon directly after text instead of far right - Update magic wand icon with sparkles to match macOS design - Change from grid to flex layout for better icon positioning - Enhance visual consistency across platforms * fix(web): improve OPTIONS label alignment in session create form - Add flex-shrink-0 to chevron icon to prevent shrinking - Add leading-none to OPTIONS label for better vertical alignment * docs: update changelog for beta.14 with Quick Start features - Document Quick Start Configuration System (amantus-ai#229, amantus-ai#250, amantus-ai#436) - Add native macOS settings interface details - Include session management improvements - Add bug fixes and breaking changes - Reference related issues and PRs * feat(mac): add ConfigManager for synchronized quick start commands - Create ConfigManager to sync commands with web UI config file - Monitor ~/.vibetunnel/config.json for changes - Replace UserDefaults with file-based configuration - Ensure consistency between Mac app and web interface * feat(mac): add ClickableURLView component - Create reusable component for clickable URLs in SwiftUI - Support for opening URLs in default browser - Consistent styling across the app * refactor(mac): simplify remote access settings UI - Use ClickableURLView for consistent URL display - Reduce code duplication in settings sections - Improve maintainability of remote access views * refactor(mac): integrate ConfigManager in NewSessionForm - Replace direct UserDefaults access with ConfigManager - Use synchronized quick start commands from shared config - Improve command selection UI consistency * fix(web): update terminal padding and termination handling - Remove horizontal padding from terminal containers - Implement proper session termination via DELETE API - Keep vertical padding for better visual appearance - Fix binary mode toggle styling * fix(mac): resolve ConfigManager threading crash - Fix main actor violation in file monitor callback - Remove unsafe self reference in asyncAfter closure - Capture monitor queue reference to avoid accessing self - Ensure all @published property updates happen on main thread * feat(web): add reset to defaults button in quick start editor - Add Reset to Defaults button for easy restoration - Import DEFAULT_QUICK_START_COMMANDS from config types - Improve user experience with quick command reset option * fix(web): adjust OPTIONS chevron icon size - Reduce chevron icon from 10x10 to 8x8 for better visual balance - Update responsive size classes accordingly - Remove leading-none from OPTIONS label for better alignment * docs: update changelog with latest UI improvements and bug fixes - Document ConfigManager and ClickableURLView additions - Add AutocompleteService and reset to defaults features - Include all UI fixes and threading crash resolution - Document session header and terminal improvements * fix(mac): fix ConfigManager threading crash when moving quick start items - Remove background file monitor queue and use main queue directly - ConfigManager is @mainactor so all operations must happen on main thread - Simplify file monitor callback by removing unnecessary Task wrapper - Fixes crash when reordering quick start commands in settings * feat: add Zod validation for quick start configuration - Add Zod dependency for runtime config validation - Implement ConfigSchema to validate quick start commands - Ensure commands have non-empty strings and valid structure - Add validation on config load and update operations - Fix auth headers for config API endpoints - Remove unused repository path WebSocket handlers - Update storage key for consistency This improves config reliability and prevents invalid commands from being saved. * docs: update changelog with comprehensive beta.14 release notes - Reorganize changelog with clear user-focused sections - Add detailed feature descriptions for Quick Start functionality - Highlight UI/UX improvements with specific examples - Document all bug fixes and stability improvements - Include breaking changes and migration guidance - Add emojis for better visual organization - Expand technical details for developers * fix: handle undefined activityStatus in session categorization Sessions with undefined activityStatus were incorrectly shown as idle. Now only sessions with explicitly false isActive are considered idle. * feat: enhance quick start configuration with repository discovery - Add repository discovery and filtering in AutocompleteService - Support directory-only suggestions for quick start paths - Improve autocomplete filtering to exclude hidden and system directories - Update quick start settings UI with better directory selection - Add tests for vibe-terminal-binary component - Minor UI improvements to clickable URLs and form components * fix: update tests for storage key change and terminal sizing - Update repository-service tests to use new 'app_preferences' storage key - Fix vibe-terminal-binary test to enable fitHorizontally for maxCols constraint - Ensure tests align with recent configuration changes * fix: update failing tests and improve repository status element - Add id="repository-status" to repository counter for easier test selection - Update quick-start-editor test to match actual button classes - Fix all unified-settings tests to use the new repository-status ID - Prevent tests from accidentally selecting unrelated elements * docs: update beta 14 changelog to match earlier style Simplified changelog format to be consistent with beta 13 and earlier versions, making it more concise and easier to read. * feat: add IDs to quick-start-editor elements for better testability - Add id="quick-start-edit-button" to Edit button - Add id="quick-start-save-button" to Save button - Add id="quick-start-cancel-button" to Cancel button - Add id="quick-start-reset-button" to Reset to Defaults button - Add id="quick-start-add-command-button" to Add Command button - Add dynamic IDs for remove buttons: quick-start-remove-command-{index} - Add dynamic IDs for inputs: quick-start-name-input-{index}, quick-start-command-input-{index} - Add dynamic IDs for command items: quick-start-command-item-{index} This makes tests more maintainable by avoiding complex selectors that search by text content. * test: update quick-start-editor tests to use element IDs - Replace button text search with ID selectors for better reliability - Update edit button selector to use #quick-start-edit-button - Update add command button selector to use #quick-start-add-command-button - Update reset button selectors to use #quick-start-reset-button This demonstrates how the new IDs make tests more maintainable and less fragile. * docs: rewrite beta 14 changelog with accurate feature descriptions - Clarify that Quick Start commands became customizable (not new) - Add accurate description of session status management dropdown - Include proper technical details about systemd support - Fix misleading descriptions about features - Maintain concise style consistent with previous releases * fix: remove obsolete tests and fix control-unix-handler tests - Remove obsolete repository-path-sync.test.ts that was testing removed functionality - Remove skipped session-view-drag-drop.test.ts that was causing import errors - Fix control-unix-handler tests to test actual functionality instead of non-existent methods - All tests now passing (1008 passed, 113 skipped) * docs: update beta 14 contributors section - Add Gopi as first-time contributor for ngrok clickable URLs (amantus-ai#422) - Properly credit hewigovens and Claude as co-authors on systemd (amantus-ai#426) - Remove duplicate first-time attribution for hewigovens * docs: fix Claude contributor GitHub link to @claudemini * docs: fix claudemini's contribution attribution - claudemini improved theme toggle UI (PR amantus-ai#429/amantus-ai#438), not systemd - List them as first-time contributor - Keep Claude AI assistant as systemd co-author * docs: remove incorrect AI assistant attribution - There was no AI assistant Claude that co-authored systemd - Keep only the correct contributors: 2 first-time and 1 additional * fix: apply linter fixes for CI - Fix optional chaining in test mock - Fix unused parameters with underscore prefix - Format quick-start-editor test file - Keep any types in test file (acceptable for tests) * fix: remove all any type warnings in tests - Use proper ControlUnixHandler type import - Type vi.importMock with typeof import('net') - Type WebSocket mock with proper import type - All lint warnings now resolved * docs: add image upload feature to changelog - Added image upload menu feature (amantus-ai#432) - Also added theme toggle improvement (amantus-ai#438) that was missing * refactor: add element IDs for improved test maintainability - Added descriptive IDs to interactive elements across components - Updated tests to use ID selectors instead of text-based queries - Enhanced documentation with ID naming best practices - Makes tests more reliable and less brittle to text changes * fix: correct session-list test expectation for hideExited toggle The component emits an event but doesn't directly change its state - the parent handles the state update * docs: add more PR/issue references to beta 14 changelog - Added fixes amantus-ai#368 for theme toggle improvement - Added duplicate reference amantus-ai#421 for Chinese input issue amantus-ai#431 - All PR and issue references now properly documented * fix: SwiftFormat modifier order and SystemControlHandler test race condition * fix: repository scanner not showing discovered repositories - Fixed storage key mismatch between 'app_preferences' and 'vibetunnel_app_preferences' - Added missing authClient prop to unified-settings component in app.ts - Updated all test files to use the correct storage key - Repository scanner now correctly displays discovered repositories count * refactor: extract session termination logic into reusable helper - Create session-actions.ts utility for common session operations - Refactor handleTerminateSession to use the new helper - Fix handleClearSession to properly delete exited sessions before navigation - Move Git branch indicator to header next to path in file browser - Fix Options label alignment in session create form * refactor: migrate repository base path from CLI arg to config.json - Remove --repository-base-path command line argument - Add repositoryBasePath to VibeTunnelConfig type and schema - Update server to read/write repository path from config.json - Refactor client to use ServerConfigService for repository path - Update settings UI to manage path through server config API - Ensure consistent naming with macOS app implementation This simplifies configuration by using config.json as the single source of truth for repository base path, with automatic file watching for real-time updates. * docs: remove --repository-base-path from README This option was removed in the previous commit as repository base path is now configured via config.json instead of command line arguments. * fix: reduce Logs button border contrast and add comprehensive drag & drop tests - Changed border opacity from 100% to 30% for softer appearance - Created drag & drop tests with 21 passing tests covering: - Drag over/leave functionality - Drop handling for single and multiple files - Paste functionality with various UI states - Error handling and edge cases - Fixed TypeScript lint errors in test files - Disabled 2 visual overlay tests due to shadow DOM limitations in test environment * fix: auto-format session-action-service.ts to pass CI checks * fix: update tests to match refactored session action service implementation - Fixed repository service tests by adding mock serverConfigService - Updated session-card tests to expect DELETE endpoint instead of /cleanup - Corrected error message expectations in session-card tests - Fixed quick-start-editor test button class expectations - Auto-formatted all files to pass CI checks * fix: update session-action-service tests with proper mocks and window handling - Added @vitest-environment happy-dom directive for DOM testing - Set up proper mock for terminateSession to return success: true - Mock window.dispatchEvent to prevent errors in test environment - Fixed all test expectations to match refactored implementation * fix: update server config tests to match refactored API implementation - Updated config route tests to match new implementation that always returns serverConfigured: true - Fixed error messages to match 'No valid updates provided' instead of 'Invalid quick start commands' - Removed dependency on getRepositoryBasePath function, now using configService.repositoryBasePath - Added tests for repository base path updates via PUT /api/config - Added test for updating both repository path and quick start commands together * fix: resolve remaining CI issues with type assertions and import ordering * fix: update remaining tests and clean up imports - Fix repository service test to include serverConfigService - Update session card test error expectations - Fix quick start editor button class tests - Add proper mock setup for session action service - Update server config tests for refactored API - Clean up type assertions and import ordering * fix: correct undefined runningSessions variable reference in Kill All button The Kill All button was referencing a non-existent runningSessions variable after refactoring split it into activeSessions and idleSessions. Fixed by using the locally defined runningSessions variable in renderExitedControls() method. * fix: improve Quick Start settings UI styling - Use tertiaryLabelColor for better visual hierarchy - Adjust opacity values for improved contrast - Remove redundant "Quick Start" header * fix: ensure thread safety in SystemControlHandlerTests - Wrap notification flag updates in MainActor tasks - Ensure test assertions run on MainActor - Fixes potential race conditions in async tests * fix: correct SwiftFormat modifier order in VibeTunnelApp - Change 'weak static' to 'static weak' to match SwiftFormat rules - Fixes CI linting failure * fix: resolve Swift 6 concurrency errors in SystemControlHandlerTests - Wrap MainActor property mutations in Task blocks for notification observers - Fix test expectations to match actual path handling behavior - SystemControlHandler stores paths as-is without tilde conversion The CI failures were due to Swift 6's stricter concurrency checking which prevented mutating MainActor-isolated properties from Sendable closures. Also corrected the test expectation - the handler doesn't convert paths to tilde notation, that only happens in UI components. * fix: revert to correct SwiftFormat modifier order - SwiftFormat expects 'weak static', not 'static weak' - Fixes CI formatting check failure * chore: trigger CI rebuild * fix: resolve remaining CI issues with type assertions and import ordering - Disable AppleScript tests on CI environment (not available in headless mode) - Make SystemControlHandlerTests more robust with proper synchronization - Add better error messages for test failures - Fix exit code 126 issues by handling server startup failures gracefully * Remove repository base path CLI argument from BunServer - Server now reads repository base path directly from config.json - Updated NewSessionForm to use ConfigManager for repository path - Updated GeneralSettingsView to use ConfigManager instead of @AppStorage - Updated ProjectFolderPageView to use ConfigManager - Removed --repository-base-path CLI argument from BunServer - RepositoryPathSyncService already updated to use ConfigManager * Update tests to use ConfigManager and add CI diagnostics - Updated RepositoryPathSyncServiceTests to use ConfigManager instead of UserDefaults - Added diagnostic logging in BunServer for CI debugging when binary is not found - Updated GitHub Actions workflows * fix: simplify Mac CI by removing web artifact caching - Remove web artifact download/upload between Node.js and Mac CI workflows - Mac CI now builds web components directly via Xcode build process - Eliminates file permission issues with artifact transfers - Workflows can now run in parallel for faster CI - Add better diagnostics for missing binary errors in BunServer * fix: make tests properly fail when server binary is not available - Update ServerManagerTests to require server binary presence - Tests now fail with clear error if vibetunnel binary is missing - Remove fallback logic that allowed tests to pass without binary - ServerBinaryAvailableCondition now only checks app Resources folder The server binary must be properly embedded in the Mac app's Resources folder. Tests should not pass if the binary is missing, as this would indicate a broken build. * Refactor code to reduce duplication and improve structure - Use AppConstants.getPreferredGitApp() instead of direct UserDefaults access - Add getDashboardAccessMode() and setDashboardAccessMode() helpers to AppConstants - Create GitAppHelper utility to centralize Git app preference logic - Simplify GitRepositoryRow and SessionRow to use GitAppHelper - Keep ConfigManager focused on server-needed config (quickStartCommands, repositoryBasePath) - Mac-specific settings remain in UserDefaults with improved access patterns * Move configuration enums to shared location - Create ConfigurationEnums.swift with AuthenticationMode and TitleMode - Remove duplicate enum definitions from UI files - Fix ConfigManager to use correct enum case names (.osAuth instead of .os) - Add description property to AuthenticationMode for UI display - Proper separation of shared types from UI-specific code
ferg-cod3s
pushed a commit
to ferg-cod3s/tunnelforge
that referenced
this pull request
Oct 26, 2025
…ntus-ai#422) Co-authored-by: Gopi Kori <gopi@bruviti.com>
ferg-cod3s
pushed a commit
to ferg-cod3s/tunnelforge
that referenced
this pull request
Oct 26, 2025
…mantus-ai#436) * feat(server): add configuration service with file-based persistence - Implement ConfigService for managing application configurations - Add REST API endpoints for quick start configuration - Add comprehensive test coverage for config operations - Define TypeScript types for configuration structures - Replace WebSocket-based config sync with REST API * feat(web): add quick start editor component - Create fully-featured command editor with add, edit, delete functionality - Add drag-and-drop reordering support - Implement real-time validation and error handling - Include comprehensive test coverage (100%) - Support keyboard navigation and accessibility * feat(web): add session status management - Create session status dropdown component for state management - Add session termination capabilities with proper cleanup - Refactor session header to integrate status controls - Support graceful disconnection and reconnection * feat(mac): add directory autocomplete service - Implement AutocompleteService for directory path completion - Create AutocompleteView with native macOS UI - Support home directory expansion (~/) - Add system file browser integration - Optimize performance for large directory structures * feat(mac): add quick start settings interface - Create SwiftUI settings view for managing quick start commands - Implement inline editing with immediate feedback - Add default commands for common workflows - Include toggle for using current directory as default - Add smooth animations and hover effects * feat: integrate quick start in session creation - Add quick start command buttons to session create form - Implement directory picker with autocomplete support - Update form layout for better user experience - Add comprehensive tests for new functionality - Sync quick start integration across web and native * feat(web): add repository discovery to settings - Add repository discovery functionality in unified settings - Update settings UI to support new configuration options - Remove WebSocket-based configuration sync - Simplify settings component with REST API integration * docs: add macOS quick start implementation guide - Document architecture and implementation details - Include code examples and best practices - Explain integration between web and native components - Provide troubleshooting guidance * feat: enhance UI/UX across components - Improve session list with better status indicators - Update terminal binary detection and display - Refine width selector and image upload interactions - Clean up WebSocket control handler - Update server configuration handling - Fix notification status display - Polish settings view layout * feat(web): improve session header UI elements - Position edit icon directly after text instead of far right - Update magic wand icon with sparkles to match macOS design - Change from grid to flex layout for better icon positioning - Enhance visual consistency across platforms * fix(web): improve OPTIONS label alignment in session create form - Add flex-shrink-0 to chevron icon to prevent shrinking - Add leading-none to OPTIONS label for better vertical alignment * docs: update changelog for beta.14 with Quick Start features - Document Quick Start Configuration System (amantus-ai#229, amantus-ai#250, amantus-ai#436) - Add native macOS settings interface details - Include session management improvements - Add bug fixes and breaking changes - Reference related issues and PRs * feat(mac): add ConfigManager for synchronized quick start commands - Create ConfigManager to sync commands with web UI config file - Monitor ~/.vibetunnel/config.json for changes - Replace UserDefaults with file-based configuration - Ensure consistency between Mac app and web interface * feat(mac): add ClickableURLView component - Create reusable component for clickable URLs in SwiftUI - Support for opening URLs in default browser - Consistent styling across the app * refactor(mac): simplify remote access settings UI - Use ClickableURLView for consistent URL display - Reduce code duplication in settings sections - Improve maintainability of remote access views * refactor(mac): integrate ConfigManager in NewSessionForm - Replace direct UserDefaults access with ConfigManager - Use synchronized quick start commands from shared config - Improve command selection UI consistency * fix(web): update terminal padding and termination handling - Remove horizontal padding from terminal containers - Implement proper session termination via DELETE API - Keep vertical padding for better visual appearance - Fix binary mode toggle styling * fix(mac): resolve ConfigManager threading crash - Fix main actor violation in file monitor callback - Remove unsafe self reference in asyncAfter closure - Capture monitor queue reference to avoid accessing self - Ensure all @published property updates happen on main thread * feat(web): add reset to defaults button in quick start editor - Add Reset to Defaults button for easy restoration - Import DEFAULT_QUICK_START_COMMANDS from config types - Improve user experience with quick command reset option * fix(web): adjust OPTIONS chevron icon size - Reduce chevron icon from 10x10 to 8x8 for better visual balance - Update responsive size classes accordingly - Remove leading-none from OPTIONS label for better alignment * docs: update changelog with latest UI improvements and bug fixes - Document ConfigManager and ClickableURLView additions - Add AutocompleteService and reset to defaults features - Include all UI fixes and threading crash resolution - Document session header and terminal improvements * fix(mac): fix ConfigManager threading crash when moving quick start items - Remove background file monitor queue and use main queue directly - ConfigManager is @mainactor so all operations must happen on main thread - Simplify file monitor callback by removing unnecessary Task wrapper - Fixes crash when reordering quick start commands in settings * feat: add Zod validation for quick start configuration - Add Zod dependency for runtime config validation - Implement ConfigSchema to validate quick start commands - Ensure commands have non-empty strings and valid structure - Add validation on config load and update operations - Fix auth headers for config API endpoints - Remove unused repository path WebSocket handlers - Update storage key for consistency This improves config reliability and prevents invalid commands from being saved. * docs: update changelog with comprehensive beta.14 release notes - Reorganize changelog with clear user-focused sections - Add detailed feature descriptions for Quick Start functionality - Highlight UI/UX improvements with specific examples - Document all bug fixes and stability improvements - Include breaking changes and migration guidance - Add emojis for better visual organization - Expand technical details for developers * fix: handle undefined activityStatus in session categorization Sessions with undefined activityStatus were incorrectly shown as idle. Now only sessions with explicitly false isActive are considered idle. * feat: enhance quick start configuration with repository discovery - Add repository discovery and filtering in AutocompleteService - Support directory-only suggestions for quick start paths - Improve autocomplete filtering to exclude hidden and system directories - Update quick start settings UI with better directory selection - Add tests for vibe-terminal-binary component - Minor UI improvements to clickable URLs and form components * fix: update tests for storage key change and terminal sizing - Update repository-service tests to use new 'app_preferences' storage key - Fix vibe-terminal-binary test to enable fitHorizontally for maxCols constraint - Ensure tests align with recent configuration changes * fix: update failing tests and improve repository status element - Add id="repository-status" to repository counter for easier test selection - Update quick-start-editor test to match actual button classes - Fix all unified-settings tests to use the new repository-status ID - Prevent tests from accidentally selecting unrelated elements * docs: update beta 14 changelog to match earlier style Simplified changelog format to be consistent with beta 13 and earlier versions, making it more concise and easier to read. * feat: add IDs to quick-start-editor elements for better testability - Add id="quick-start-edit-button" to Edit button - Add id="quick-start-save-button" to Save button - Add id="quick-start-cancel-button" to Cancel button - Add id="quick-start-reset-button" to Reset to Defaults button - Add id="quick-start-add-command-button" to Add Command button - Add dynamic IDs for remove buttons: quick-start-remove-command-{index} - Add dynamic IDs for inputs: quick-start-name-input-{index}, quick-start-command-input-{index} - Add dynamic IDs for command items: quick-start-command-item-{index} This makes tests more maintainable by avoiding complex selectors that search by text content. * test: update quick-start-editor tests to use element IDs - Replace button text search with ID selectors for better reliability - Update edit button selector to use #quick-start-edit-button - Update add command button selector to use #quick-start-add-command-button - Update reset button selectors to use #quick-start-reset-button This demonstrates how the new IDs make tests more maintainable and less fragile. * docs: rewrite beta 14 changelog with accurate feature descriptions - Clarify that Quick Start commands became customizable (not new) - Add accurate description of session status management dropdown - Include proper technical details about systemd support - Fix misleading descriptions about features - Maintain concise style consistent with previous releases * fix: remove obsolete tests and fix control-unix-handler tests - Remove obsolete repository-path-sync.test.ts that was testing removed functionality - Remove skipped session-view-drag-drop.test.ts that was causing import errors - Fix control-unix-handler tests to test actual functionality instead of non-existent methods - All tests now passing (1008 passed, 113 skipped) * docs: update beta 14 contributors section - Add Gopi as first-time contributor for ngrok clickable URLs (amantus-ai#422) - Properly credit hewigovens and Claude as co-authors on systemd (amantus-ai#426) - Remove duplicate first-time attribution for hewigovens * docs: fix Claude contributor GitHub link to @claudemini * docs: fix claudemini's contribution attribution - claudemini improved theme toggle UI (PR amantus-ai#429/amantus-ai#438), not systemd - List them as first-time contributor - Keep Claude AI assistant as systemd co-author * docs: remove incorrect AI assistant attribution - There was no AI assistant Claude that co-authored systemd - Keep only the correct contributors: 2 first-time and 1 additional * fix: apply linter fixes for CI - Fix optional chaining in test mock - Fix unused parameters with underscore prefix - Format quick-start-editor test file - Keep any types in test file (acceptable for tests) * fix: remove all any type warnings in tests - Use proper ControlUnixHandler type import - Type vi.importMock with typeof import('net') - Type WebSocket mock with proper import type - All lint warnings now resolved * docs: add image upload feature to changelog - Added image upload menu feature (amantus-ai#432) - Also added theme toggle improvement (amantus-ai#438) that was missing * refactor: add element IDs for improved test maintainability - Added descriptive IDs to interactive elements across components - Updated tests to use ID selectors instead of text-based queries - Enhanced documentation with ID naming best practices - Makes tests more reliable and less brittle to text changes * fix: correct session-list test expectation for hideExited toggle The component emits an event but doesn't directly change its state - the parent handles the state update * docs: add more PR/issue references to beta 14 changelog - Added fixes amantus-ai#368 for theme toggle improvement - Added duplicate reference amantus-ai#421 for Chinese input issue amantus-ai#431 - All PR and issue references now properly documented * fix: SwiftFormat modifier order and SystemControlHandler test race condition * fix: repository scanner not showing discovered repositories - Fixed storage key mismatch between 'app_preferences' and 'vibetunnel_app_preferences' - Added missing authClient prop to unified-settings component in app.ts - Updated all test files to use the correct storage key - Repository scanner now correctly displays discovered repositories count * refactor: extract session termination logic into reusable helper - Create session-actions.ts utility for common session operations - Refactor handleTerminateSession to use the new helper - Fix handleClearSession to properly delete exited sessions before navigation - Move Git branch indicator to header next to path in file browser - Fix Options label alignment in session create form * refactor: migrate repository base path from CLI arg to config.json - Remove --repository-base-path command line argument - Add repositoryBasePath to VibeTunnelConfig type and schema - Update server to read/write repository path from config.json - Refactor client to use ServerConfigService for repository path - Update settings UI to manage path through server config API - Ensure consistent naming with macOS app implementation This simplifies configuration by using config.json as the single source of truth for repository base path, with automatic file watching for real-time updates. * docs: remove --repository-base-path from README This option was removed in the previous commit as repository base path is now configured via config.json instead of command line arguments. * fix: reduce Logs button border contrast and add comprehensive drag & drop tests - Changed border opacity from 100% to 30% for softer appearance - Created drag & drop tests with 21 passing tests covering: - Drag over/leave functionality - Drop handling for single and multiple files - Paste functionality with various UI states - Error handling and edge cases - Fixed TypeScript lint errors in test files - Disabled 2 visual overlay tests due to shadow DOM limitations in test environment * fix: auto-format session-action-service.ts to pass CI checks * fix: update tests to match refactored session action service implementation - Fixed repository service tests by adding mock serverConfigService - Updated session-card tests to expect DELETE endpoint instead of /cleanup - Corrected error message expectations in session-card tests - Fixed quick-start-editor test button class expectations - Auto-formatted all files to pass CI checks * fix: update session-action-service tests with proper mocks and window handling - Added @vitest-environment happy-dom directive for DOM testing - Set up proper mock for terminateSession to return success: true - Mock window.dispatchEvent to prevent errors in test environment - Fixed all test expectations to match refactored implementation * fix: update server config tests to match refactored API implementation - Updated config route tests to match new implementation that always returns serverConfigured: true - Fixed error messages to match 'No valid updates provided' instead of 'Invalid quick start commands' - Removed dependency on getRepositoryBasePath function, now using configService.repositoryBasePath - Added tests for repository base path updates via PUT /api/config - Added test for updating both repository path and quick start commands together * fix: resolve remaining CI issues with type assertions and import ordering * fix: update remaining tests and clean up imports - Fix repository service test to include serverConfigService - Update session card test error expectations - Fix quick start editor button class tests - Add proper mock setup for session action service - Update server config tests for refactored API - Clean up type assertions and import ordering * fix: correct undefined runningSessions variable reference in Kill All button The Kill All button was referencing a non-existent runningSessions variable after refactoring split it into activeSessions and idleSessions. Fixed by using the locally defined runningSessions variable in renderExitedControls() method. * fix: improve Quick Start settings UI styling - Use tertiaryLabelColor for better visual hierarchy - Adjust opacity values for improved contrast - Remove redundant "Quick Start" header * fix: ensure thread safety in SystemControlHandlerTests - Wrap notification flag updates in MainActor tasks - Ensure test assertions run on MainActor - Fixes potential race conditions in async tests * fix: correct SwiftFormat modifier order in VibeTunnelApp - Change 'weak static' to 'static weak' to match SwiftFormat rules - Fixes CI linting failure * fix: resolve Swift 6 concurrency errors in SystemControlHandlerTests - Wrap MainActor property mutations in Task blocks for notification observers - Fix test expectations to match actual path handling behavior - SystemControlHandler stores paths as-is without tilde conversion The CI failures were due to Swift 6's stricter concurrency checking which prevented mutating MainActor-isolated properties from Sendable closures. Also corrected the test expectation - the handler doesn't convert paths to tilde notation, that only happens in UI components. * fix: revert to correct SwiftFormat modifier order - SwiftFormat expects 'weak static', not 'static weak' - Fixes CI formatting check failure * chore: trigger CI rebuild * fix: resolve remaining CI issues with type assertions and import ordering - Disable AppleScript tests on CI environment (not available in headless mode) - Make SystemControlHandlerTests more robust with proper synchronization - Add better error messages for test failures - Fix exit code 126 issues by handling server startup failures gracefully * Remove repository base path CLI argument from BunServer - Server now reads repository base path directly from config.json - Updated NewSessionForm to use ConfigManager for repository path - Updated GeneralSettingsView to use ConfigManager instead of @AppStorage - Updated ProjectFolderPageView to use ConfigManager - Removed --repository-base-path CLI argument from BunServer - RepositoryPathSyncService already updated to use ConfigManager * Update tests to use ConfigManager and add CI diagnostics - Updated RepositoryPathSyncServiceTests to use ConfigManager instead of UserDefaults - Added diagnostic logging in BunServer for CI debugging when binary is not found - Updated GitHub Actions workflows * fix: simplify Mac CI by removing web artifact caching - Remove web artifact download/upload between Node.js and Mac CI workflows - Mac CI now builds web components directly via Xcode build process - Eliminates file permission issues with artifact transfers - Workflows can now run in parallel for faster CI - Add better diagnostics for missing binary errors in BunServer * fix: make tests properly fail when server binary is not available - Update ServerManagerTests to require server binary presence - Tests now fail with clear error if vibetunnel binary is missing - Remove fallback logic that allowed tests to pass without binary - ServerBinaryAvailableCondition now only checks app Resources folder The server binary must be properly embedded in the Mac app's Resources folder. Tests should not pass if the binary is missing, as this would indicate a broken build. * Refactor code to reduce duplication and improve structure - Use AppConstants.getPreferredGitApp() instead of direct UserDefaults access - Add getDashboardAccessMode() and setDashboardAccessMode() helpers to AppConstants - Create GitAppHelper utility to centralize Git app preference logic - Simplify GitRepositoryRow and SessionRow to use GitAppHelper - Keep ConfigManager focused on server-needed config (quickStartCommands, repositoryBasePath) - Mac-specific settings remain in UserDefaults with improved access patterns * Move configuration enums to shared location - Create ConfigurationEnums.swift with AuthenticationMode and TitleMode - Remove duplicate enum definitions from UI files - Fix ConfigManager to use correct enum case names (.osAuth instead of .os) - Add description property to AuthenticationMode for UI display - Proper separation of shared types from UI-specific code
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Please refer to the screenshot attached. I think this will be a useful feature to quickly open and verify if the ngrok tunnel is working, and also quickly copy and share the link.
Changes:

Before:
After:

The ngrok URL in Settings → Dashboard → Remote Access section is now displayed as a blue clickable link that opens in the default browser, with a convenient copy button next to it.