Commit Graph

34 Commits

Author SHA1 Message Date
bincxz bd2936aab2 refactor: move compressed upload setting from Terminal to SFTP tab
The folder compression transfer setting is SFTP-specific functionality,
so it makes more sense to place it alongside other SFTP settings like
double-click behavior, auto-sync, and show hidden files.

- Move setting from SettingsTerminalTab to SettingsFileAssociationsTab
- Add new i18n keys under settings.sftp.compressedUpload namespace
- Remove unused settings.terminal.uploadDownload translations
- Update SettingsPage props accordingly

Co-Authored-By: Claude (gemini-claude-opus-4-5-thinking) <noreply@anthropic.com>
2026-01-30 15:34:22 +08:00
bincxz e87ce831b4 refactor(compressedUpload): simplify to auto-detect with toggle setting
- Replace 3-option setting (ask/enabled/disabled) with boolean toggle
- Remove CompressedUploadDialog component - no more user prompts
- Auto-detect tar availability and silently fallback to regular upload
- Apply compressed upload setting to drag-and-drop uploads
- Fix upload progress updates for compressed uploads via callback
- Add i18n for upload phase labels (compressing/uploading/extracting)
- Fix empty folder handling - fallback to regular mkdir
- Preserve error message on failed upload tasks for UI display
- Fix fallback logic to only re-upload failed folders, not successful ones
- Handle cancellation during all phases (compression/transfer/extraction)
- Fix filename display to use explicit phase markers instead of substring match
- Fix Toggle onChange prop for settings to work correctly
- Use DropEntry.relativePath for correct drag-drop folder paths
- Dynamic extraction timeout based on archive size (60s base + 30s per 10MB)

Co-Authored-By: Claude (gemini-claude-opus-4-5-thinking) <noreply@anthropic.com>
2026-01-30 14:35:47 +08:00
Rice e07e5cf442 feat(sftp): add compressed folder upload with settings
- Add CompressedUploadDialog component to let users choose between compressed and regular transfer methods
- Implement compressUploadService for handling folder compression and extraction on the server
- Add compressUploadBridge to expose compression functionality to the renderer process
- Add sftpUseCompressedUpload setting with three modes: ask, enabled, disabled
- Add new upload progress states: compressing, extracting, scanning, completed
- Add i18n translations for upload dialog and settings in English and Chinese
- Update SFTP modal to support compressed upload workflow with progress tracking
- Add storage key for persisting compressed upload preference across sessions
- Significantly reduces transfer time for folders by using tar compression when available on server
2026-01-29 12:18:02 +08:00
bincxz 2fde490ee7 fix: use 3-value renderer option to preserve low-memory auto fallback
Change rendererType from boolean to 'auto' | 'webgl' | 'canvas':
- 'auto' (default): Uses Canvas on low-memory devices (<=4GB), WebGL otherwise
- 'webgl': Force WebGL renderer
- 'canvas': Force Canvas renderer

This preserves the automatic low-memory device detection that was
inadvertently disabled when always passing a boolean value.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 18:39:39 +08:00
bincxz b6d0a3c698 fix: add renderer selection setting and fix serial port dropdown
- Add renderer selection (WebGL/Canvas) in terminal settings
- Remove macOS restriction for Canvas renderer, allow all platforms
- Fix Combobox dropdown to show all options when opened instead of
  filtering by current value
- Add i18n translations for new rendering settings

Closes #80

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 18:28:58 +08:00
bincxz 95bc7f018c feat: display Linux server stats in terminal statusbar
Add real-time monitoring of Linux server resources in the terminal statusbar:
- CPU usage with per-core breakdown in hover popup
- Memory usage with htop-style colored bar (Used/Buffers/Cache/Free)
- Top 10 processes by memory consumption
- Disk usage for all mounted partitions
- Network speed (RX/TX) with per-interface details

Features:
- Only enabled for Linux servers (detected automatically)
- Configurable refresh interval (default 5 seconds)
- Toggle in Settings > Terminal tab
- Hover-triggered popups using Radix UI HoverCard
- BusyBox compatibility with fallback commands

Closes #108

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 17:58:55 +08:00
bincxz 4749bef906 feat: add session logs export and auto-save functionality
- Add manual export button in LogView to save session logs to file
- Add auto-save settings in System tab to automatically save logs when sessions end
- Support three formats: plain text (.txt), raw ANSI (.log), and HTML (.html)
- Logs are organized by host in subdirectories with timestamp filenames
- Add i18n support for English and Chinese

Closes #104

Co-Authored-By: Claude <noreply@anthropic.com>
2026-01-21 14:50:07 +08:00
bincxz 929d7dbe74 Enhances UI font management and connection logs
Refactors UI font handling to support dynamic font loading and improves selection in settings.

Implements "Load More" pagination for connection logs, enhancing performance and user experience with large datasets. Adds lazy loading for the Connection Logs Manager.

Addresses an issue in `usePortForwardingState` to prevent duplicate backend sync calls in React StrictMode. Improves IPC communication robustness by checking window destruction status. Refines the visual presentation of the snippets empty state.
2026-01-21 12:23:21 +08:00
copilot-swe-agent[bot] 33313f71fb feat: add UI font customization in Appearance settings
- Add UI fonts configuration with 21 font options
- Add state management for UI font preference
- Add i18n translations (English/Chinese)
- Apply font via CSS variable --font-sans
- Support cross-window sync via IPC/localStorage

Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-21 03:33:47 +00:00
copilot-swe-agent[bot] d89d6d3959 Add SFTP show hidden files setting
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-12 07:13:41 +00:00
copilot-swe-agent[bot] d227424096 Move terminal theme selection to modal in SettingsTerminalTab
- Create new ThemeSelectModal component for theme selection
- Replace inline theme grid with a preview button that opens modal
- Group themes by type (dark/light) in modal
- Add i18n translations for modal (English and Chinese)

Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-09 09:58:06 +00:00
LAPTOP-O016UC3M\Qi Chen 8947d29717 feat(sftp): add temp directory management with System settings page
- Create dedicated Netcatty temp directory in system temp folder
- Add tempDirBridge for temp directory management
- Add System tab in Settings with temp dir info and cleanup
- Register temp files for cleanup when SFTP session closes
- Add i18n translations for System settings (en/zh-CN)
- Update agents.md with temp file guidelines
2026-01-09 17:42:39 +08:00
copilot-swe-agent[bot] d91ed8dd23 feat(sftp): add auto-sync feature for files opened with external apps
Implements file watching to automatically sync changes back to remote:
- Add fileWatcherBridge in Electron for watching local temp files
- Add startFileWatch/stopFileWatch APIs in preload
- Add sftpAutoSync setting with UI toggle in settings
- Update downloadToTempAndOpen to support file watching
- Add i18n translations for auto-sync UI
- Show toast notifications when files are synced to remote

Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-09 06:29:29 +00:00
copilot-swe-agent[bot] 78d7b417fc Address code review feedback for keepalive interval
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-08 10:36:17 +00:00
copilot-swe-agent[bot] 27fcc4e493 Add keepaliveInterval setting for SSH connections
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-08 10:33:41 +00:00
qi-xmu 6a76287bf7 Add local mono fonts support 2026-01-08 15:38:20 +08:00
copilot-swe-agent[bot] d46b63398e Fix: Use custom radio buttons instead of non-existent RadioGroup component
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-07 16:36:05 +00:00
copilot-swe-agent[bot] 72bc03573c Add SFTP double-click behavior setting (open vs transfer)
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-07 16:33:00 +00:00
bincxz 00784a6b0e Removes built-in image preview functionality
Drops support for the built-in image viewer, including related UI, state, and file association logic. Simplifies file opener options and context menus to support only text editing and external system applications.

Streamlines codebase by eliminating redundant image preview code and reduces maintenance overhead for this feature.
2026-01-07 23:50:37 +08:00
bincxz 7c067964ee Normalize whitespace and formatting in components
Cleans up inconsistent whitespace and formatting in multiple component files
to improve readability and maintain code style consistency. No functional
logic is changed.
2026-01-07 23:29:08 +08:00
bincxz 6b4cecf94f Adds "Open With" system application support for SFTP files
Enables users to open SFTP files using any system application via a new "Open With" dialog. Remembers associations per file extension, supports editing/removing these in settings, and synchronizes changes across components. Updates backend and Electron bridge to handle selecting and launching external applications on all platforms. Improves localization and user feedback for the new feature.
2026-01-07 23:28:51 +08:00
copilot-swe-agent[bot] f7464f1d45 Add Settings tab for SFTP file associations management
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-07 11:27:34 +00:00
LAPTOP-O016UC3M\Qi Chen ad7f523ec2 Removes extraneous whitespace in effect hooks
Cleans up unnecessary blank lines within effect hooks to improve code readability and maintain consistency.
2026-01-05 18:24:52 +08:00
LAPTOP-O016UC3M\Qi Chen a905b3e092 Improves shell path validation for executables
Enhances path validation logic to better detect shell executables
by checking the system PATH and handling .exe extensions on Windows.
Improves user experience when specifying shell paths that are not
absolute or lack file extensions.
2026-01-05 18:24:26 +08:00
copilot-swe-agent[bot] 88b8cfb4da Add default shell detection and path validation for local shell settings
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-05 09:45:22 +00:00
copilot-swe-agent[bot] 37d289be50 Add configurable shell and starting directory for local terminal
Co-authored-by: binaricat <16399091+binaricat@users.noreply.github.com>
2026-01-05 09:30:33 +00:00
bincxz 5eb2a196d5 Adds ability to clear all local vault data
Introduces a function to reset vault-related state and storage data, and wires it into the settings and cloud sync workflow.
Facilitates easier local data management and resolves potential sync or migration issues by allowing users to clear stored vault data via the UI.
2026-01-01 20:29:24 +08:00
LAPTOP-O016UC3M\Qi Chen d690c75a79 Adds customizable accent color and new UI themes
Introduces user-selectable accent color with custom and preset options, including UI and persistence updates. Enhances appearance settings with a toggle for custom accent mode and color picker support. Also adds several new light and dark UI theme presets for greater personalization.

Improves theme initialization for accent color and updates localization strings for related settings.
2025-12-19 17:57:02 +08:00
LAPTOP-O016UC3M\Qi Chen e64e71cc91 Refactors UI theme color system to use theme presets
Replaces the previous HSL-based accent color setting with selectable theme color presets for both light and dark modes. Updates settings state, storage, and UI to allow users to pick from predefined color palettes, improving consistency and customization. Syncs the new theme colors with Electron window backgrounds for native appearance integration. Updates language files and cleans up legacy color logic.
2025-12-19 17:42:13 +08:00
bincxz 9d4d349329 Prevents global hotkey handling during recording
Improves shortcut editing experience by disabling global hotkey interception while a keybinding is being recorded.
Ensures that hotkey recording state persists and synchronizes across settings and UI.
Prevents conflicts between shortcut editor and app-level key handling.
2025-12-19 07:03:00 +08:00
LAPTOP-O016UC3M\Qi Chen 13f8e8cd59 Adds reusable SSH identities and integrates identity auth
Introduces reusable SSH identities for authentication, allowing hosts to reference centralized identity records containing usernames, passwords, and key/certificate associations. Updates connection, SFTP, terminal, and sync logic to resolve credentials via identities, improving credential management and reuse.

Enhances UI for identity selection, editing, and deletion. Updates localization for related identity and credential strings. Ensures identities are included in sync and vault persistence.

Streamlines SSH connection attempts by preferring key-based auth with fallback to password, both for host and identity-based authentication.

Facilitates safer, more flexible credential management across the application.
2025-12-18 11:45:20 +08:00
LAPTOP-O016UC3M\Qi Chen 4e9e5da13c Localizes UI and improves dynamic translation support
Integrates all user-facing strings into the translation system and
expands locale files for comprehensive coverage, enabling dynamic
i18n across the interface. Replaces hardcoded labels, button texts,
and prompts with translation keys, benefiting maintainability and
future language support. Improves translation ergonomics in forms,
dialogs, wizards, and settings, ensuring consistent user experience
in both English and Chinese.
2025-12-17 14:25:05 +08:00
LAPTOP-O016UC3M\Qi Chen d8347582b4 Adds full UI internationalization and language switching
Implements comprehensive i18n support, replacing hardcoded UI strings with translation keys and introducing an i18n provider across the app. Adds persistent UI language selection, cross-window sync, and system menu localization. Updates settings and state to handle locale, propagates language changes to Electron, and adjusts components for runtime translation.

Enables a user-friendly, multi-language experience and prepares the app for further language expansion.
2025-12-17 12:06:28 +08:00
bincxz e238c4c20c Modularizes settings UI and removes modal settings dialog
Refactors the settings interface by deleting the monolithic modal dialog and splitting settings into dedicated tabs and components, improving maintainability and user experience. Enables application info retrieval through a new IPC bridge for use in About/Application screens. Streamlines code by removing redundant state and logic tied to the old settings modal.
2025-12-17 01:48:46 +08:00