Files
Termix/lint-progress.txt
Luke Gustafson e2591d616b Dev 1.8.0 (#399)
* Feature request: Add delete confirmation dialog to file manager (#344)

* Feature request: Add delete confirmation dialog to file manager

- Added confirmation dialog before deleting files/folders
- Users must confirm deletion with a warning message
- Works for both Delete key and right-click delete
- Shows different messages for single file, folder, or multiple items
- Includes permanent deletion warning
- Follows existing design patterns using confirmWithToast

* Adds confirmation for deletion of items including folders

Updates the file deletion confirmation logic to distinguish between
deleting multiple items with or without folders. Introduces a new
translation string for a clearer user prompt when folders and their
contents are included in the deletion.

Improves clarity and reduces user error when performing bulk deletions.

* feat: Add Chinese translations for delete confirmation messages

* Adds camelCase support for encrypted field mappings (#342)

Extends encrypted field mappings to include camelCase variants
to support consistency and compatibility with different naming
conventions. Updates reverse mappings for Drizzle ORM to allow
conversion between camelCase and snake_case field names.

Improves integration with systems using mixed naming styles.

* Run code cleanup, add sidebar persistence, fix OIDC credentials, force SSH password.

* Fix snake case mismatching

* Add real client IP

* Fix OIDC credential persistence issue

The issue was that OIDC users were getting a new random Data Encryption Key (DEK)
on every login, which made previously encrypted credentials inaccessible.

Changes:
- Modified setupOIDCUserEncryption() to persist the DEK encrypted with a system-derived key
- Updated authenticateOIDCUser() to properly retrieve and use the persisted DEK
- Ensured OIDC users now have the same encryption persistence as password-based users

This fix ensures that credentials created by OIDC users remain accessible across
multiple login sessions.

* Fix race condition and remove redundant kekSalt for OIDC users

Critical fixes:

1. Race Condition Mitigation:
   - Added read-after-write verification in setupOIDCUserEncryption()
   - Ensures session uses the DEK that's actually in the database
   - Prevents data loss when concurrent logins occur for new OIDC users
   - If race is detected, discards generated DEK and uses stored one

2. Remove Redundant kekSalt Logic:
   - Removed unnecessary kekSalt generation and checks for OIDC users
   - kekSalt is not used in OIDC key derivation (uses userId as salt)
   - Reduces database operations from 4 to 2 per authentication
   - Simplifies code and removes potential confusion

3. Improved Error Handling:
   - systemKey cleanup moved to finally block
   - Ensures sensitive key material is always cleared from memory

These changes ensure data consistency and prevent potential data loss
in high-concurrency scenarios.

* Cleanup OIDC pr and run prettier

* Replace jetbrains mono with caskaydia cove

* Fix alert issues

* Finalize font update

* Feature/german language support (#374)

* v1.7.2 (#364)

* Feature request: Add delete confirmation dialog to file manager (#344)

* Feature request: Add delete confirmation dialog to file manager

- Added confirmation dialog before deleting files/folders
- Users must confirm deletion with a warning message
- Works for both Delete key and right-click delete
- Shows different messages for single file, folder, or multiple items
- Includes permanent deletion warning
- Follows existing design patterns using confirmWithToast

* Adds confirmation for deletion of items including folders

Updates the file deletion confirmation logic to distinguish between
deleting multiple items with or without folders. Introduces a new
translation string for a clearer user prompt when folders and their
contents are included in the deletion.

Improves clarity and reduces user error when performing bulk deletions.

* feat: Add Chinese translations for delete confirmation messages

* Adds camelCase support for encrypted field mappings (#342)

Extends encrypted field mappings to include camelCase variants
to support consistency and compatibility with different naming
conventions. Updates reverse mappings for Drizzle ORM to allow
conversion between camelCase and snake_case field names.

Improves integration with systems using mixed naming styles.

* Run code cleanup, add sidebar persistence, fix OIDC credentials, force SSH password.

* Fix snake case mismatching

* Add real client IP

* Fix OIDC credential persistence issue

The issue was that OIDC users were getting a new random Data Encryption Key (DEK)
on every login, which made previously encrypted credentials inaccessible.

Changes:
- Modified setupOIDCUserEncryption() to persist the DEK encrypted with a system-derived key
- Updated authenticateOIDCUser() to properly retrieve and use the persisted DEK
- Ensured OIDC users now have the same encryption persistence as password-based users

This fix ensures that credentials created by OIDC users remain accessible across
multiple login sessions.

* Fix race condition and remove redundant kekSalt for OIDC users

Critical fixes:

1. Race Condition Mitigation:
   - Added read-after-write verification in setupOIDCUserEncryption()
   - Ensures session uses the DEK that's actually in the database
   - Prevents data loss when concurrent logins occur for new OIDC users
   - If race is detected, discards generated DEK and uses stored one

2. Remove Redundant kekSalt Logic:
   - Removed unnecessary kekSalt generation and checks for OIDC users
   - kekSalt is not used in OIDC key derivation (uses userId as salt)
   - Reduces database operations from 4 to 2 per authentication
   - Simplifies code and removes potential confusion

3. Improved Error Handling:
   - systemKey cleanup moved to finally block
   - Ensures sensitive key material is always cleared from memory

These changes ensure data consistency and prevent potential data loss
in high-concurrency scenarios.

* Cleanup OIDC pr and run prettier

---------

Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com>

* Fix typos and improve wording in README.md

Corrected grammar and punctuation in README.

* Image 7.png

* Rename 3gi3b3os5psf1.png to Image 7.png

* Add video demonstration to README

Added a video demonstration to the README.

* Delete repo-images/Image 7.png

* Add files via upload

* Delete repo-images/Image 7.png

* Add files via upload

* Initial German translation

* German translation (#281)

* German translation (#281)

* Implementation of German language support  (#281)

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Add germanm support

* Fix SSH Key Password (keyPassword) Field Naming Mismatch Between Frontend and Backend (#375)

* Refactor key_password to keyPassword for consistency across SSH routes

* Standardizes keyPassword field handling and simplifies auth field logic

Standardizes the handling of the `keyPassword` field by converting
`key_password` to camelCase and ensuring consistent output while
preserving resolved credentials. Removes redundant snake_case
fields to avoid duplication.

Simplifies UI handling of authentication fields by allowing
non-relevant fields to persist, delegating filtering logic to the
backend for cleaner and more maintainable code.

Improves code clarity and aligns with consistent data handling
practices.

* Cleanup code + resolve conversion logic

---------

Co-authored-by: LukeGus <bugattiguy527@gmail.com>

* Feature disable password login (#378)

* Add admin toggle to disable password login

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/ui/main-axios.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/ui/Desktop/Admin/AdminSettings.tsx

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Add SSH TOTP authentication support (#350)

* Add SSH TOTP authentication support

- Implement keyboard-interactive authentication for SSH connections
- Add TOTP dialog component for Terminal and File Manager
- Handle TOTP prompts in WebSocket and HTTP connections
- Disable Server Stats for TOTP-enabled servers
- Add i18n support for TOTP-related messages

* Update src/backend/ssh/server-stats.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/ssh/file-manager.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Add terminal snippets feature with sidebar UI (#377)

* Add terminal snippets feature with sidebar UI

- Add snippets CRUD API endpoints and database schema
- Implement snippets sidebar accessible from TopNavbar
- Add copy to clipboard functionality
- Include tooltips and optimized styling
- Add English and Chinese translations

* Update src/backend/database/routes/snippets.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Feature engineering improvements (#376)

* chore: add engineering improvements

- Configure Prettier with unified code style rules
- Add husky + lint-staged for automated pre-commit checks
- Add commitlint to enforce conventional commit messages
- Add PR check workflow for CI automation
- Auto-format all files with Prettier
- Fix TypeScript any types in field-crypto.ts

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

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: enhance development environment

- Add .editorconfig for unified editor settings
- Add .nvmrc to specify Node.js version (20)
- Add useful npm scripts: format, format:check, lint, lint:fix, type-check

* chore: add IDE and Git configuration

- Add VS Code workspace settings for consistent development experience
- Add VS Code extension recommendations (ESLint, Prettier, EditorConfig)
- Add .gitattributes to enforce LF line endings

* refactor: clean up unused variables and empty blocks

- database.ts: Remove unused variables (authManager, format, HTTPS_PORT, etc.)
- database.ts: Fix empty catch blocks with descriptive comments
- database.ts: Add eslint-disable for required middleware parameter
- db/index.ts: Remove unused variables and fix empty catch blocks
- Temporarily remove ESLint from pre-commit to allow incremental fixes

Reduced total errors from 947 to 913 (34 fixes)

* refactor: clean up unused variables and empty blocks in routes

Routes updated:
- credentials.ts: Remove 12 unused variables/imports
- alerts.ts: Remove 1 unused variable
- users.ts: Remove 9 unused variables/imports

Changes:
- Remove unused imports (NextFunction, jwt, UserCrypto, detectKeyType)
- Fix empty catch blocks with descriptive comments
- Prefix reserved parameters with underscore
- Clean up unused error variables in catch blocks

Reduced errors from 913 to 886 (27 fixes)

* refactor: clean up unused variables in routes/ssh.ts

- Remove unused imports (NextFunction, jwt)
- Remove 6 unused variables (result, updateResult, name x3)
- All 8 no-unused-vars errors fixed

* refactor: clean up unused variables and empty blocks in file-manager.ts

- Remove 22 unused variables (linkCount, hostId, userId, content, escapedTempFile, index, code)
- Fix 1 empty catch block
- Simplify multiple route handlers by removing unused destructured parameters

Reduced errors from 878 to 855 (23 fixes)

* refactor: clean up unused variables and empty blocks in utils

database-migration.ts:
- Remove 3 unused variables (encryptedSize, totalOriginalRows, totalMemoryRows)

lazy-field-encryption.ts:
- Fix 6 empty catch blocks with descriptive comments
- Keep error variables where they are used in logging

tunnel.ts:
- Fix multiple empty catch blocks
- Remove empty else blocks
- Partially fixed (10/21 issues resolved)

Reduced errors from 855 to 833 (22 fixes)

* fix: restore error variable in catch block for logging

Fix TypeScript error where error variable was removed from catch block
but still used in logging statements. The error variable is needed for
proper error logging and re-throwing.

* fix: clean up tunnel.ts empty blocks and unused variables

移除了 tunnel.ts 中的空块和未使用的变量:
- 移除 2 个空 else 块
- 修复 2 个空 if 块并添加注释
- 修复空错误处理器并添加注释
- 将未使用的 err 参数重命名为 _err

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty blocks and unused variables in backend utils

修复了后端工具文件中的空块和未使用的变量:
- auth-manager.ts: 移除空 else 块
- system-crypto.ts: 修复空 catch 块并添加注释
- starter.ts: 修复空 catch 块并添加注释
- server-stats.ts: 将未使用的 reject 参数重命名为 _reject
- credentials.ts: 将 connectionTimeout 从 let 改为 const

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in frontend components

修复了前端组件中的空 catch 块:
- Tunnel.tsx: 修复空 catch 块并添加注释
- ServerConfig.tsx: 修复空 catch 块并添加注释
- TerminalKeyboard.tsx: 修复空 catch 块并添加注释
- system-crypto.ts: 修复遗漏的空 catch 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in backend utilities

修复了后端工具文件中的 10 个空 catch 块:
- system-crypto.ts: 修复 1 个空 catch 块
- server-stats.ts: 修复 4 个空 catch 块
- auto-ssl-setup.ts: 修复 1 个空 catch 块
- ssh-key-utils.ts: 修复 4 个空 catch 块

所有空块都添加了描述性注释说明为何忽略错误。

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in UI hooks and components

修复了 5 个 UI 组件和 hooks 中的空 catch 块:
- useDragToSystemDesktop.ts: 修复 2 个空 catch 块
- HomepageAuth.tsx: 修复 1 个空 catch 块
- HostManagerEditor.tsx: 修复 2 个空 catch 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty blocks in file manager and credential editor

修复了 5 个空块:
- FileManagerGrid.tsx: 移除 1 个空 else 块和 1 个空 if 块
- CredentialEditor.tsx: 修复 1 个空 catch 块,移除 2 个空 if/else 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up all empty catch blocks in Terminal components

修复了 Terminal 组件中的所有 8 个空 catch 块:
- Desktop/Apps/Terminal/Terminal.tsx: 修复 5 个空 catch 块
- Mobile/Apps/Terminal/Terminal.tsx: 修复 3 个空 catch 块

所有空块都添加了描述性注释。这是空块修复的最后一批。

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: remove useless try/catch wrappers

移除了 3 个无用的 try/catch 包装器:
- users.ts: 移除只重新抛出错误的外层 try/catch
- FileManager.tsx: 移除只重新抛出错误的内层 try/catch
- DiffViewer.tsx: 移除只重新抛出错误的内层 try/catch

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: remove unused imports and mark unused parameters

移除了未使用的导入和标记未使用的参数:
- auto-ssl-setup.ts: 移除未使用的 crypto 导入
- user-crypto.ts: 移除未使用的 users 导入
- user-data-import.ts: 移除未使用的 nanoid 导入
- simple-db-ops.ts: 标记未使用的 userId 和 tableName 参数

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unnecessary escape characters in regex patterns

移除了正则表达式中不必要的转义字符:
- users.ts: 修复 5 个 \/ 不必要的转义
- TabContext.tsx: 修复 1 个 \/ 不必要的转义

在字符串形式的正则表达式中,/ 不需要转义。

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>

* feat: enhance server stats widgets and fix TypeScript/ESLint errors (#394)

* feat: add draggable server stats dashboard with customizable widgets

* fix: widget deletion and layout persistence issues

* fix: improve widget deletion UX and add debug logs for persistence

* fix: resolve widget deletion and layout persistence issues

- Add drag handles to widget title bars for precise drag control
- Prevent delete button from triggering drag via event stopPropagation
- Include statsConfig field in all GET/PUT API responses
- Remove debug console logs from production code

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: complete statsConfig field support across all API routes

- Add statsConfig to POST /db/host (create) route
- Add statsConfig to all GET routes for consistent API responses
- Remove incorrect statsConfig schema from HostManagerEditor
- statsConfig is now only managed by Server page layout editor

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: add statsConfig to metrics API response

- Add statsConfig field to SSHHostWithCredentials interface
- Include statsConfig in resolveHostCredentials baseHost object
- Ensures /metrics/:id API returns complete host configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: include statsConfig in SSH host create/update requests

The statsConfig field was being dropped by createSSHHost and updateSSHHost
functions in main-axios.ts, preventing layout customization from persisting.

Fixed by adding statsConfig to the submitData object in both functions.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: refactor server stats widgets into modular structure

Created dedicated widgets directory with individual components:
- CpuWidget, MemoryWidget, DiskWidget as separate components
- Widget registry for centralized widget configuration
- AddWidgetDialog for user-friendly widget selection
- Updated Server.tsx to use modular widget system

Benefits:
- Better code organization and maintainability
- Easier to add new widget types in the future
- Centralized widget metadata and configuration
- User can now add widgets via dialog interface

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: exit edit mode after saving layout

* feat: add customizable widget sizes with chart visualizations

Add three-tier size system (small/medium/large) for server stats widgets.
Integrate recharts library for visualizing trends in large widgets with
line charts (CPU), area charts (Memory), and radial bar charts (Disk).
Fix layout overflow issues with proper flexbox patterns.

* refactor: simplify server stats widget system

Replaced complex drag-and-drop grid layout with simple checkbox-based
configuration and static responsive grid display.

- Removed react-grid-layout dependency and 6 related packages
- Simplified StatsConfig from complex Widget objects to simple array
- Added Statistics tab in HostManagerEditor for checkbox selection
- Refactored Server.tsx to use CSS Grid instead of ResponsiveGridLayout
- Simplified widget components by removing edit mode and size selection
- Deleted unused AddWidgetDialog and registry files
- Fixed statsConfig serialization in backend routes

Net result: -787 lines of code, cleaner architecture.

* feat: add system, uptime, network and processes widgets

Add four new server statistics widgets:
- SystemWidget: displays hostname, OS, and kernel information
- UptimeWidget: shows server total uptime with formatted display
- NetworkWidget: lists network interfaces with IP and status
- ProcessesWidget: displays top processes by CPU usage

Backend changes:
- Extended SSH metrics collection to gather network, uptime, process, and system data
- Added commands to parse /proc/uptime, ip addr, ps aux output

Frontend changes:
- Created 4 new widget components with consistent styling
- Updated widget type definitions and HostManagerEditor
- Unified all widget heights to 280px for consistent layout
- Added translations for all new widgets (EN/ZH)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: improve widget styling and UX consistency

Enhance all server stats widgets with improved styling and user experience:

Widget improvements:
- Fix hardcoded titles, now use i18n translations for all widgets
- Improve data formatting with consistent translation keys
- Enhance empty state displays with better visual hierarchy
- Add smooth hover transitions and visual feedback
- Standardize spacing and layout patterns across widgets

Specific optimizations:
- CPU: Use translated load average display
- Memory: Translate "Free" label
- Disk: Translate "Available" label
- System: Improve icon colors and spacing consistency
- Network: Better empty state, enhanced card styling
- Processes: Improved card borders and spacing

Visual polish:
- Unified icon sizing and opacity for empty states
- Consistent border radius (rounded-lg)
- Better hover states with subtle transitions
- Enhanced font weights for improved readability

* fix: replace explicit any types with proper TypeScript types

- Replace 'any' with 'unknown' in catch blocks and add type assertions
- Create explicit interfaces for complex objects (HostConfig, TabData, TerminalHandle)
- Fix window/document object type extensions
- Update Electron API type definitions
- Improve type safety in database routes and utilities
- Add proper types to Terminal components (Desktop & Mobile)
- Fix navigation component types (TopNavbar, LeftSidebar, AppView)

Reduces TypeScript lint errors from 394 to 358 (-36 errors)
Fixes 45 @typescript-eslint/no-explicit-any violations

* fix: replace explicit any types with proper TypeScript types

- Create explicit interfaces for Request extensions (AuthenticatedRequest, RequestWithHeaders)
- Add type definitions for WebSocket messages and SSH connection data
- Use generic types in DataCrypto methods instead of any return types
- Define proper interfaces for file manager data structures
- Replace catch block any types with unknown and proper type assertions
- Add HostConfig and TabData interfaces for Server component

Fixes 32 @typescript-eslint/no-explicit-any violations across 5 files

* fix: resolve 6 TypeScript compilation errors

Fixed field name mismatches and generic type issues:
- database.ts: Changed camelCase to snake_case for key_password, private_key, public_key fields
- simple-db-ops.ts: Added explicit generic type parameters to DataCrypto method calls

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve unused variables in backend utils

Fixed @typescript-eslint/no-unused-vars errors in:
- starter.ts: removed unused error variables (2 fixes)
- auto-ssl-setup.ts: removed unused error variable (1 fix)
- ssh-key-utils.ts: removed unused error variables (3 fixes)
- user-crypto.ts: removed unused error variables (5 fixes)
- data-crypto.ts: removed unused plaintextFields and error variables (2 fixes)
- simple-db-ops.ts: removed unused parameters _userId and _tableName (2 fixes)

Total: 15 unused variable errors fixed

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variable in terminal.ts

Fixed @typescript-eslint/no-unused-vars errors:
- Removed unused userPayload variable (line 123)
- Removed unused cols and rows from destructuring (line 348)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve unused variables in server-stats.ts

Fixed @typescript-eslint/no-unused-vars errors:
- Removed unused _reject parameter in Promise (line 64)
- Removed shadowed now variable in pollStatusesOnce (line 1130)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variables in tunnel.ts

Removed 5 unused variables:
- Removed unused data parameter from stdout event handler
- Removed hasSourcePassword, hasSourceKey, hasEndpointPassword, hasEndpointKey variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variables in main-axios.ts

Removed 8 unused variables:
- Removed unused type imports (Credential, CredentialData, HostInfo, ApiResponse)
- Removed unused apiPort variable
- Removed unused error variables in 3 catch blocks

* fix: remove unused variables in terminal.ts and starter.ts

Removed 2 unused variables:
- Removed unused JWTPayload type import from terminal.ts
- Removed unused _promise parameter from starter.ts

* fix: remove unused variables in sidebar.tsx

Removed 9 unused variables:
- Removed 5 unused Sheet component imports
- Removed unused SIDEBAR_WIDTH_MOBILE constant
- Removed 3 unused variables from useSidebar destructuring

* fix: remove 13 unused variables in frontend files

- version-check-modal.tsx: removed 4 unused imports and functions
- main.tsx: removed unused isMobile state
- AdminSettings.tsx: removed 8 unused imports and error variables

* fix: remove 28 unused variables across frontend components

Cleaned up unused imports, state variables, and function parameters:
- CredentialsManager.tsx: removed 8 unused variables (Sheet/Select imports)
- FileManager.tsx: removed 10 unused variables (icons, state, functions)
- Terminal.tsx (Desktop): removed 5 unused variables (state, handlers)
- Terminal.tsx (Mobile): removed 5 unused variables (imports, state)

Reduced lint errors from 271 to 236 (35 errors fixed)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in File Manager and config files

Cleaned up more unused imports, parameters, and variables:
- FileManagerGrid.tsx: removed 4 unused variables (params, function)
- FileManagerContextMenu.tsx: removed Share import
- FileManagerSidebar.tsx: removed onLoadDirectory parameter
- DraggableWindow.tsx: removed Square import
- FileWindow.tsx: removed updateWindow variable
- ServerConfig.tsx: removed 2 unused error parameters

Reduced lint errors from 236 to 222 (14 errors fixed total)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 7 unused variables in widgets and Homepage components

Cleaned up unused imports, parameters, and variables:
- DiskWidget.tsx: removed metricsHistory parameter
- FileManagerContextMenu.tsx: removed ExternalLink import
- Homepage.tsx: removed useTranslation import
- HomepageAlertManager.tsx: removed loading variable
- HomepageAuth.tsx: removed setCookie import (Desktop & Mobile)
- HompageUpdateLog.tsx: removed err parameter

Reduced lint errors from 222 to 216 (6 errors fixed)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 8 unused variables in File Manager and Host Manager components

Cleaned up unused imports, state variables, and function parameters:
- DiffViewer.tsx: removed unused error parameter in catch block
- FileViewer.tsx: removed ReactPlayer import, unused originalContent state,
  node parameters from markdown code components, audio variable
- HostManager.tsx: removed onSelectView and updatedHost parameters
- TunnelViewer.tsx: removed TunnelConnection import

Reduced lint errors from 271 to 208 (63 errors fixed total)

* fix: remove 7 unused variables in UI hooks and components

Cleaned up unused parameters and functions:
- status/index.tsx: removed unused className parameter from StatusIndicator
- useDragToDesktop.ts: removed unused sshHost parameter and from dependency
  arrays (4 occurrences)
- useDragToSystemDesktop.ts: removed unused sshHost parameter and
  getLastSaveDirectory function (29 lines removed)

Continued reducing frontend lint errors

* fix: remove 2 unused variables in hooks and TabContext

- useDragToDesktop.ts: removed unused onSuccess in dragFolderToDesktop
- TabContext.tsx: removed unused useTranslation import and t variable

Continued reducing frontend lint errors

* fix: remove 2 unused variables in Homepage component

- Removed unused isAdmin state variable (changed to setter only)
- Removed unused jwt variable by inlining getCookie check

Continued reducing frontend lint errors

* fix: remove 3 unused variables in Mobile navigation components

- Host.tsx: removed unused Server icon import
- LeftSidebar.tsx: removed unused setHostsLoading setter and err parameter

Continued reducing frontend lint errors

* fix: remove 9 unused variables across multiple files

Fixed unused variables in:
- database-file-encryption.ts: removed currentFingerprint (backend)
- FileManagerContextMenu.tsx: removed ExternalLink import, hasDirectories
- frontend-logger.ts: removed 5 unused shortUrl variables

Continued reducing lint errors

* fix: remove 18 unused variables across 4 files

- HostManagerViewer.tsx: remove 9 unused error variables and parameters
- HostManagerEditor.tsx: remove WidgetType import, hosts/loading states, error variable
- CredentialViewer.tsx: remove 3 unused error variables
- Server.tsx: remove 2 unused error variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 9 unused variables across 4 files

- SnippetsSidebar.tsx: remove 3 unused err variables in catch blocks
- TunnelViewer.tsx: remove 2 unused parameters from callback
- DesktopApp.tsx: remove getCookie import and unused state variables
- HomepageAlertManager.tsx: remove 2 unused err variables in catch blocks

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables and imports across 4 navigation files

- Homepage.tsx: remove unused username state variable
- AppView.tsx: remove 3 unused Lucide icon imports
- TopNavbar.tsx: remove 4 unused Accordion component imports
- LeftSidebar.tsx: remove 2 unused variables (err, jwt)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 5 unused variables across 4 user/credentials files

- PasswordReset.tsx: remove unused result variable
- UserProfile.tsx: remove unused Key import and err variable
- version-check-modal.tsx: remove unused setVersionDismissed setter
- CredentialsManager.tsx: remove unused e parameter from handleDragLeave

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 2 unused variables in FileViewer and TerminalWindow

- FileViewer.tsx: remove unused node parameter from code component
- TerminalWindow.tsx: remove unused handleMinimize function

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in HomepageAuth.tsx

Removed unused variables:
- getCookie import
- dbError prop
- visibility state and toggleVisibility
- error state variable
- result variable in handleInitiatePasswordReset
- token URL parameter
- err parameters in catch blocks
- retryDatabaseConnection function
- Multiple setError(null) calls

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 9 unused variables across multiple files

Files fixed:
- DesktopApp.tsx: Removed _nextView parameter
- TerminalWindow.tsx: Removed minimizeWindow
- Mobile Host.tsx: Removed Server import
- Mobile LeftSidebar.tsx: Removed setHostsLoading, err in catch
- Desktop LeftSidebar.tsx: Removed getCookie, setCookie, onSelectView, getView, setHostsLoading

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in Mobile files

Files fixed:
- MobileApp.tsx: Removed getCookie, removeTab, isAdmin, id, err parameters
- Mobile/HomepageAuth.tsx: Removed getCookie, error state, result, token, err parameters

All @typescript-eslint/no-unused-vars errors in frontend now resolved!

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused t variable in TabContext

Removed useTranslation import and unused t variable
in Mobile TabContext.tsx

All @typescript-eslint/no-unused-vars errors now resolved!
Total fixed: 154 unused variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve TypeScript and ESLint errors across the codebase

- Fixed @typescript-eslint/no-unused-vars errors (31 instances)
- Fixed @typescript-eslint/no-explicit-any errors in backend (~22 instances)
- Fixed @typescript-eslint/no-explicit-any errors in frontend (~60 instances)
- Fixed prefer-const errors (5 instances)
- Fixed no-empty-object-type and rules-of-hooks errors
- Added proper type assertions for database operations
- Improved type safety in authentication and encryption modules
- Enhanced type definitions for API routes and SSH operations

All TypeScript compilation errors resolved. Application builds and runs successfully.

* fix: disable react-refresh/only-export-components rule for component files

Disable the react-refresh/only-export-components ESLint rule in files
that export both components and related utilities (hooks, types,
constants). This is a pragmatic solution to maintain code organization
without splitting files unnecessarily.

* style: fix prettier formatting issues

Fix code style issues in translation file and TOTP dialog component
to pass CI prettier check.

* chore: fix rollup optional dependencies installation in CI

Add step to force reinstall rollup after npm ci to fix the known npm
bug with optional dependencies on Linux x64 platform.

* chore: fix lightningcss optional dependencies in CI

Add lightningcss to the force reinstall step to fix npm optional
dependencies bug for both rollup and lightningcss on Linux x64.

* chore: fix npm optional dependencies bug in CI

Remove package-lock.json and node_modules before install to properly
handle optional dependencies for rollup, lightningcss, and tailwindcss
native bindings on Linux x64 platform as recommended by npm.

* Update src/types/index.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Set terminal environment variables for SSH

Added environment variables for terminal configuration.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* feat: begin macOS support

* Delete .github/ISSUE_TEMPLATE/bug_report.yml

* Delete .github/ISSUE_TEMPLATE/feature_request.yml

* Add issue template configuration for support links

* Revise support instructions in README.md

Updated support section with new issue reporting instructions and clarified Discord support response times.

* Update repository links and badge URLs in README

* Update links to new orgnanization

* Migrate workflows to Blacksmith (#421)

Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com>

* Feature request: Add delete confirmation dialog to file manager (#344)

* Feature request: Add delete confirmation dialog to file manager

- Added confirmation dialog before deleting files/folders
- Users must confirm deletion with a warning message
- Works for both Delete key and right-click delete
- Shows different messages for single file, folder, or multiple items
- Includes permanent deletion warning
- Follows existing design patterns using confirmWithToast

* Adds confirmation for deletion of items including folders

Updates the file deletion confirmation logic to distinguish between
deleting multiple items with or without folders. Introduces a new
translation string for a clearer user prompt when folders and their
contents are included in the deletion.

Improves clarity and reduces user error when performing bulk deletions.

* feat: Add Chinese translations for delete confirmation messages

* Adds camelCase support for encrypted field mappings (#342)

Extends encrypted field mappings to include camelCase variants
to support consistency and compatibility with different naming
conventions. Updates reverse mappings for Drizzle ORM to allow
conversion between camelCase and snake_case field names.

Improves integration with systems using mixed naming styles.

* Run code cleanup, add sidebar persistence, fix OIDC credentials, force SSH password.

* Fix snake case mismatching

* Fix race condition and remove redundant kekSalt for OIDC users

Critical fixes:

1. Race Condition Mitigation:
   - Added read-after-write verification in setupOIDCUserEncryption()
   - Ensures session uses the DEK that's actually in the database
   - Prevents data loss when concurrent logins occur for new OIDC users
   - If race is detected, discards generated DEK and uses stored one

2. Remove Redundant kekSalt Logic:
   - Removed unnecessary kekSalt generation and checks for OIDC users
   - kekSalt is not used in OIDC key derivation (uses userId as salt)
   - Reduces database operations from 4 to 2 per authentication
   - Simplifies code and removes potential confusion

3. Improved Error Handling:
   - systemKey cleanup moved to finally block
   - Ensures sensitive key material is always cleared from memory

These changes ensure data consistency and prevent potential data loss
in high-concurrency scenarios.

* Cleanup OIDC pr and run prettier

* Feature/german language support (#374)

* v1.7.2 (#364)

* Feature request: Add delete confirmation dialog to file manager (#344)

* Feature request: Add delete confirmation dialog to file manager

- Added confirmation dialog before deleting files/folders
- Users must confirm deletion with a warning message
- Works for both Delete key and right-click delete
- Shows different messages for single file, folder, or multiple items
- Includes permanent deletion warning
- Follows existing design patterns using confirmWithToast

* Adds confirmation for deletion of items including folders

Updates the file deletion confirmation logic to distinguish between
deleting multiple items with or without folders. Introduces a new
translation string for a clearer user prompt when folders and their
contents are included in the deletion.

Improves clarity and reduces user error when performing bulk deletions.

* feat: Add Chinese translations for delete confirmation messages

* Adds camelCase support for encrypted field mappings (#342)

Extends encrypted field mappings to include camelCase variants
to support consistency and compatibility with different naming
conventions. Updates reverse mappings for Drizzle ORM to allow
conversion between camelCase and snake_case field names.

Improves integration with systems using mixed naming styles.

* Run code cleanup, add sidebar persistence, fix OIDC credentials, force SSH password.

* Fix snake case mismatching

* Add real client IP

* Fix OIDC credential persistence issue

The issue was that OIDC users were getting a new random Data Encryption Key (DEK)
on every login, which made previously encrypted credentials inaccessible.

Changes:
- Modified setupOIDCUserEncryption() to persist the DEK encrypted with a system-derived key
- Updated authenticateOIDCUser() to properly retrieve and use the persisted DEK
- Ensured OIDC users now have the same encryption persistence as password-based users

This fix ensures that credentials created by OIDC users remain accessible across
multiple login sessions.

* Fix race condition and remove redundant kekSalt for OIDC users

Critical fixes:

1. Race Condition Mitigation:
   - Added read-after-write verification in setupOIDCUserEncryption()
   - Ensures session uses the DEK that's actually in the database
   - Prevents data loss when concurrent logins occur for new OIDC users
   - If race is detected, discards generated DEK and uses stored one

2. Remove Redundant kekSalt Logic:
   - Removed unnecessary kekSalt generation and checks for OIDC users
   - kekSalt is not used in OIDC key derivation (uses userId as salt)
   - Reduces database operations from 4 to 2 per authentication
   - Simplifies code and removes potential confusion

3. Improved Error Handling:
   - systemKey cleanup moved to finally block
   - Ensures sensitive key material is always cleared from memory

These changes ensure data consistency and prevent potential data loss
in high-concurrency scenarios.

* Cleanup OIDC pr and run prettier

---------

Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com>

* Fix typos and improve wording in README.md

Corrected grammar and punctuation in README.

* Image 7.png

* Rename 3gi3b3os5psf1.png to Image 7.png

* Add video demonstration to README

Added a video demonstration to the README.

* Delete repo-images/Image 7.png

* Add files via upload

* Delete repo-images/Image 7.png

* Add files via upload

* Initial German translation

* German translation (#281)

* German translation (#281)

* Implementation of German language support  (#281)

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/locales/de/translation.json

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Feature disable password login (#378)

* Add admin toggle to disable password login

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/ui/main-axios.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/ui/Desktop/Admin/AdminSettings.tsx

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/database/routes/users.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Add SSH TOTP authentication support (#350)

* Add SSH TOTP authentication support

- Implement keyboard-interactive authentication for SSH connections
- Add TOTP dialog component for Terminal and File Manager
- Handle TOTP prompts in WebSocket and HTTP connections
- Disable Server Stats for TOTP-enabled servers
- Add i18n support for TOTP-related messages

* Update src/backend/ssh/server-stats.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Update src/backend/ssh/file-manager.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Add terminal snippets feature with sidebar UI (#377)

* Add terminal snippets feature with sidebar UI

- Add snippets CRUD API endpoints and database schema
- Implement snippets sidebar accessible from TopNavbar
- Add copy to clipboard functionality
- Include tooltips and optimized styling
- Add English and Chinese translations

* Update src/backend/database/routes/snippets.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Feature engineering improvements (#376)

* chore: add engineering improvements

- Configure Prettier with unified code style rules
- Add husky + lint-staged for automated pre-commit checks
- Add commitlint to enforce conventional commit messages
- Add PR check workflow for CI automation
- Auto-format all files with Prettier
- Fix TypeScript any types in field-crypto.ts

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

Co-Authored-By: Claude <noreply@anthropic.com>

* chore: enhance development environment

- Add .editorconfig for unified editor settings
- Add .nvmrc to specify Node.js version (20)
- Add useful npm scripts: format, format:check, lint, lint:fix, type-check

* chore: add IDE and Git configuration

- Add VS Code workspace settings for consistent development experience
- Add VS Code extension recommendations (ESLint, Prettier, EditorConfig)
- Add .gitattributes to enforce LF line endings

* refactor: clean up unused variables and empty blocks

- database.ts: Remove unused variables (authManager, format, HTTPS_PORT, etc.)
- database.ts: Fix empty catch blocks with descriptive comments
- database.ts: Add eslint-disable for required middleware parameter
- db/index.ts: Remove unused variables and fix empty catch blocks
- Temporarily remove ESLint from pre-commit to allow incremental fixes

Reduced total errors from 947 to 913 (34 fixes)

* refactor: clean up unused variables and empty blocks in routes

Routes updated:
- credentials.ts: Remove 12 unused variables/imports
- alerts.ts: Remove 1 unused variable
- users.ts: Remove 9 unused variables/imports

Changes:
- Remove unused imports (NextFunction, jwt, UserCrypto, detectKeyType)
- Fix empty catch blocks with descriptive comments
- Prefix reserved parameters with underscore
- Clean up unused error variables in catch blocks

Reduced errors from 913 to 886 (27 fixes)

* refactor: clean up unused variables in routes/ssh.ts

- Remove unused imports (NextFunction, jwt)
- Remove 6 unused variables (result, updateResult, name x3)
- All 8 no-unused-vars errors fixed

* refactor: clean up unused variables and empty blocks in file-manager.ts

- Remove 22 unused variables (linkCount, hostId, userId, content, escapedTempFile, index, code)
- Fix 1 empty catch block
- Simplify multiple route handlers by removing unused destructured parameters

Reduced errors from 878 to 855 (23 fixes)

* refactor: clean up unused variables and empty blocks in utils

database-migration.ts:
- Remove 3 unused variables (encryptedSize, totalOriginalRows, totalMemoryRows)

lazy-field-encryption.ts:
- Fix 6 empty catch blocks with descriptive comments
- Keep error variables where they are used in logging

tunnel.ts:
- Fix multiple empty catch blocks
- Remove empty else blocks
- Partially fixed (10/21 issues resolved)

Reduced errors from 855 to 833 (22 fixes)

* fix: restore error variable in catch block for logging

Fix TypeScript error where error variable was removed from catch block
but still used in logging statements. The error variable is needed for
proper error logging and re-throwing.

* fix: clean up tunnel.ts empty blocks and unused variables

移除了 tunnel.ts 中的空块和未使用的变量:
- 移除 2 个空 else 块
- 修复 2 个空 if 块并添加注释
- 修复空错误处理器并添加注释
- 将未使用的 err 参数重命名为 _err

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty blocks and unused variables in backend utils

修复了后端工具文件中的空块和未使用的变量:
- auth-manager.ts: 移除空 else 块
- system-crypto.ts: 修复空 catch 块并添加注释
- starter.ts: 修复空 catch 块并添加注释
- server-stats.ts: 将未使用的 reject 参数重命名为 _reject
- credentials.ts: 将 connectionTimeout 从 let 改为 const

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in frontend components

修复了前端组件中的空 catch 块:
- Tunnel.tsx: 修复空 catch 块并添加注释
- ServerConfig.tsx: 修复空 catch 块并添加注释
- TerminalKeyboard.tsx: 修复空 catch 块并添加注释
- system-crypto.ts: 修复遗漏的空 catch 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in backend utilities

修复了后端工具文件中的 10 个空 catch 块:
- system-crypto.ts: 修复 1 个空 catch 块
- server-stats.ts: 修复 4 个空 catch 块
- auto-ssl-setup.ts: 修复 1 个空 catch 块
- ssh-key-utils.ts: 修复 4 个空 catch 块

所有空块都添加了描述性注释说明为何忽略错误。

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty catch blocks in UI hooks and components

修复了 5 个 UI 组件和 hooks 中的空 catch 块:
- useDragToSystemDesktop.ts: 修复 2 个空 catch 块
- HomepageAuth.tsx: 修复 1 个空 catch 块
- HostManagerEditor.tsx: 修复 2 个空 catch 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up empty blocks in file manager and credential editor

修复了 5 个空块:
- FileManagerGrid.tsx: 移除 1 个空 else 块和 1 个空 if 块
- CredentialEditor.tsx: 修复 1 个空 catch 块,移除 2 个空 if/else 块

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: clean up all empty catch blocks in Terminal components

修复了 Terminal 组件中的所有 8 个空 catch 块:
- Desktop/Apps/Terminal/Terminal.tsx: 修复 5 个空 catch 块
- Mobile/Apps/Terminal/Terminal.tsx: 修复 3 个空 catch 块

所有空块都添加了描述性注释。这是空块修复的最后一批。

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: remove useless try/catch wrappers

移除了 3 个无用的 try/catch 包装器:
- users.ts: 移除只重新抛出错误的外层 try/catch
- FileManager.tsx: 移除只重新抛出错误的内层 try/catch
- DiffViewer.tsx: 移除只重新抛出错误的内层 try/catch

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: remove unused imports and mark unused parameters

移除了未使用的导入和标记未使用的参数:
- auto-ssl-setup.ts: 移除未使用的 crypto 导入
- user-crypto.ts: 移除未使用的 users 导入
- user-data-import.ts: 移除未使用的 nanoid 导入
- simple-db-ops.ts: 标记未使用的 userId 和 tableName 参数

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unnecessary escape characters in regex patterns

移除了正则表达式中不必要的转义字符:
- users.ts: 修复 5 个 \/ 不必要的转义
- TabContext.tsx: 修复 1 个 \/ 不必要的转义

在字符串形式的正则表达式中,/ 不需要转义。

---------

Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: Claude <noreply@anthropic.com>

* feat: enhance server stats widgets and fix TypeScript/ESLint errors (#394)

* feat: add draggable server stats dashboard with customizable widgets

* fix: widget deletion and layout persistence issues

* fix: improve widget deletion UX and add debug logs for persistence

* fix: resolve widget deletion and layout persistence issues

- Add drag handles to widget title bars for precise drag control
- Prevent delete button from triggering drag via event stopPropagation
- Include statsConfig field in all GET/PUT API responses
- Remove debug console logs from production code

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: complete statsConfig field support across all API routes

- Add statsConfig to POST /db/host (create) route
- Add statsConfig to all GET routes for consistent API responses
- Remove incorrect statsConfig schema from HostManagerEditor
- statsConfig is now only managed by Server page layout editor

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: add statsConfig to metrics API response

- Add statsConfig field to SSHHostWithCredentials interface
- Include statsConfig in resolveHostCredentials baseHost object
- Ensures /metrics/:id API returns complete host configuration

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: include statsConfig in SSH host create/update requests

The statsConfig field was being dropped by createSSHHost and updateSSHHost
functions in main-axios.ts, preventing layout customization from persisting.

Fixed by adding statsConfig to the submitData object in both functions.

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

Co-Authored-By: Claude <noreply@anthropic.com>

* feat: refactor server stats widgets into modular structure

Created dedicated widgets directory with individual components:
- CpuWidget, MemoryWidget, DiskWidget as separate components
- Widget registry for centralized widget configuration
- AddWidgetDialog for user-friendly widget selection
- Updated Server.tsx to use modular widget system

Benefits:
- Better code organization and maintainability
- Easier to add new widget types in the future
- Centralized widget metadata and configuration
- User can now add widgets via dialog interface

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: exit edit mode after saving layout

* feat: add customizable widget sizes with chart visualizations

Add three-tier size system (small/medium/large) for server stats widgets.
Integrate recharts library for visualizing trends in large widgets with
line charts (CPU), area charts (Memory), and radial bar charts (Disk).
Fix layout overflow issues with proper flexbox patterns.

* refactor: simplify server stats widget system

Replaced complex drag-and-drop grid layout with simple checkbox-based
configuration and static responsive grid display.

- Removed react-grid-layout dependency and 6 related packages
- Simplified StatsConfig from complex Widget objects to simple array
- Added Statistics tab in HostManagerEditor for checkbox selection
- Refactored Server.tsx to use CSS Grid instead of ResponsiveGridLayout
- Simplified widget components by removing edit mode and size selection
- Deleted unused AddWidgetDialog and registry files
- Fixed statsConfig serialization in backend routes

Net result: -787 lines of code, cleaner architecture.

* feat: add system, uptime, network and processes widgets

Add four new server statistics widgets:
- SystemWidget: displays hostname, OS, and kernel information
- UptimeWidget: shows server total uptime with formatted display
- NetworkWidget: lists network interfaces with IP and status
- ProcessesWidget: displays top processes by CPU usage

Backend changes:
- Extended SSH metrics collection to gather network, uptime, process, and system data
- Added commands to parse /proc/uptime, ip addr, ps aux output

Frontend changes:
- Created 4 new widget components with consistent styling
- Updated widget type definitions and HostManagerEditor
- Unified all widget heights to 280px for consistent layout
- Added translations for all new widgets (EN/ZH)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* refactor: improve widget styling and UX consistency

Enhance all server stats widgets with improved styling and user experience:

Widget improvements:
- Fix hardcoded titles, now use i18n translations for all widgets
- Improve data formatting with consistent translation keys
- Enhance empty state displays with better visual hierarchy
- Add smooth hover transitions and visual feedback
- Standardize spacing and layout patterns across widgets

Specific optimizations:
- CPU: Use translated load average display
- Memory: Translate "Free" label
- Disk: Translate "Available" label
- System: Improve icon colors and spacing consistency
- Network: Better empty state, enhanced card styling
- Processes: Improved card borders and spacing

Visual polish:
- Unified icon sizing and opacity for empty states
- Consistent border radius (rounded-lg)
- Better hover states with subtle transitions
- Enhanced font weights for improved readability

* fix: replace explicit any types with proper TypeScript types

- Replace 'any' with 'unknown' in catch blocks and add type assertions
- Create explicit interfaces for complex objects (HostConfig, TabData, TerminalHandle)
- Fix window/document object type extensions
- Update Electron API type definitions
- Improve type safety in database routes and utilities
- Add proper types to Terminal components (Desktop & Mobile)
- Fix navigation component types (TopNavbar, LeftSidebar, AppView)

Reduces TypeScript lint errors from 394 to 358 (-36 errors)
Fixes 45 @typescript-eslint/no-explicit-any violations

* fix: replace explicit any types with proper TypeScript types

- Create explicit interfaces for Request extensions (AuthenticatedRequest, RequestWithHeaders)
- Add type definitions for WebSocket messages and SSH connection data
- Use generic types in DataCrypto methods instead of any return types
- Define proper interfaces for file manager data structures
- Replace catch block any types with unknown and proper type assertions
- Add HostConfig and TabData interfaces for Server component

Fixes 32 @typescript-eslint/no-explicit-any violations across 5 files

* fix: resolve 6 TypeScript compilation errors

Fixed field name mismatches and generic type issues:
- database.ts: Changed camelCase to snake_case for key_password, private_key, public_key fields
- simple-db-ops.ts: Added explicit generic type parameters to DataCrypto method calls

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve unused variables in backend utils

Fixed @typescript-eslint/no-unused-vars errors in:
- starter.ts: removed unused error variables (2 fixes)
- auto-ssl-setup.ts: removed unused error variable (1 fix)
- ssh-key-utils.ts: removed unused error variables (3 fixes)
- user-crypto.ts: removed unused error variables (5 fixes)
- data-crypto.ts: removed unused plaintextFields and error variables (2 fixes)
- simple-db-ops.ts: removed unused parameters _userId and _tableName (2 fixes)

Total: 15 unused variable errors fixed

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variable in terminal.ts

Fixed @typescript-eslint/no-unused-vars errors:
- Removed unused userPayload variable (line 123)
- Removed unused cols and rows from destructuring (line 348)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve unused variables in server-stats.ts

Fixed @typescript-eslint/no-unused-vars errors:
- Removed unused _reject parameter in Promise (line 64)
- Removed shadowed now variable in pollStatusesOnce (line 1130)

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variables in tunnel.ts

Removed 5 unused variables:
- Removed unused data parameter from stdout event handler
- Removed hasSourcePassword, hasSourceKey, hasEndpointPassword, hasEndpointKey variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused variables in main-axios.ts

Removed 8 unused variables:
- Removed unused type imports (Credential, CredentialData, HostInfo, ApiResponse)
- Removed unused apiPort variable
- Removed unused error variables in 3 catch blocks

* fix: remove unused variables in terminal.ts and starter.ts

Removed 2 unused variables:
- Removed unused JWTPayload type import from terminal.ts
- Removed unused _promise parameter from starter.ts

* fix: remove unused variables in sidebar.tsx

Removed 9 unused variables:
- Removed 5 unused Sheet component imports
- Removed unused SIDEBAR_WIDTH_MOBILE constant
- Removed 3 unused variables from useSidebar destructuring

* fix: remove 13 unused variables in frontend files

- version-check-modal.tsx: removed 4 unused imports and functions
- main.tsx: removed unused isMobile state
- AdminSettings.tsx: removed 8 unused imports and error variables

* fix: remove 28 unused variables across frontend components

Cleaned up unused imports, state variables, and function parameters:
- CredentialsManager.tsx: removed 8 unused variables (Sheet/Select imports)
- FileManager.tsx: removed 10 unused variables (icons, state, functions)
- Terminal.tsx (Desktop): removed 5 unused variables (state, handlers)
- Terminal.tsx (Mobile): removed 5 unused variables (imports, state)

Reduced lint errors from 271 to 236 (35 errors fixed)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in File Manager and config files

Cleaned up more unused imports, parameters, and variables:
- FileManagerGrid.tsx: removed 4 unused variables (params, function)
- FileManagerContextMenu.tsx: removed Share import
- FileManagerSidebar.tsx: removed onLoadDirectory parameter
- DraggableWindow.tsx: removed Square import
- FileWindow.tsx: removed updateWindow variable
- ServerConfig.tsx: removed 2 unused error parameters

Reduced lint errors from 236 to 222 (14 errors fixed total)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 7 unused variables in widgets and Homepage components

Cleaned up unused imports, parameters, and variables:
- DiskWidget.tsx: removed metricsHistory parameter
- FileManagerContextMenu.tsx: removed ExternalLink import
- Homepage.tsx: removed useTranslation import
- HomepageAlertManager.tsx: removed loading variable
- HomepageAuth.tsx: removed setCookie import (Desktop & Mobile)
- HompageUpdateLog.tsx: removed err parameter

Reduced lint errors from 222 to 216 (6 errors fixed)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 8 unused variables in File Manager and Host Manager components

Cleaned up unused imports, state variables, and function parameters:
- DiffViewer.tsx: removed unused error parameter in catch block
- FileViewer.tsx: removed ReactPlayer import, unused originalContent state,
  node parameters from markdown code components, audio variable
- HostManager.tsx: removed onSelectView and updatedHost parameters
- TunnelViewer.tsx: removed TunnelConnection import

Reduced lint errors from 271 to 208 (63 errors fixed total)

* fix: remove 7 unused variables in UI hooks and components

Cleaned up unused parameters and functions:
- status/index.tsx: removed unused className parameter from StatusIndicator
- useDragToDesktop.ts: removed unused sshHost parameter and from dependency
  arrays (4 occurrences)
- useDragToSystemDesktop.ts: removed unused sshHost parameter and
  getLastSaveDirectory function (29 lines removed)

Continued reducing frontend lint errors

* fix: remove 2 unused variables in hooks and TabContext

- useDragToDesktop.ts: removed unused onSuccess in dragFolderToDesktop
- TabContext.tsx: removed unused useTranslation import and t variable

Continued reducing frontend lint errors

* fix: remove 2 unused variables in Homepage component

- Removed unused isAdmin state variable (changed to setter only)
- Removed unused jwt variable by inlining getCookie check

Continued reducing frontend lint errors

* fix: remove 3 unused variables in Mobile navigation components

- Host.tsx: removed unused Server icon import
- LeftSidebar.tsx: removed unused setHostsLoading setter and err parameter

Continued reducing frontend lint errors

* fix: remove 9 unused variables across multiple files

Fixed unused variables in:
- database-file-encryption.ts: removed currentFingerprint (backend)
- FileManagerContextMenu.tsx: removed ExternalLink import, hasDirectories
- frontend-logger.ts: removed 5 unused shortUrl variables

Continued reducing lint errors

* fix: remove 18 unused variables across 4 files

- HostManagerViewer.tsx: remove 9 unused error variables and parameters
- HostManagerEditor.tsx: remove WidgetType import, hosts/loading states, error variable
- CredentialViewer.tsx: remove 3 unused error variables
- Server.tsx: remove 2 unused error variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 9 unused variables across 4 files

- SnippetsSidebar.tsx: remove 3 unused err variables in catch blocks
- TunnelViewer.tsx: remove 2 unused parameters from callback
- DesktopApp.tsx: remove getCookie import and unused state variables
- HomepageAlertManager.tsx: remove 2 unused err variables in catch blocks

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables and imports across 4 navigation files

- Homepage.tsx: remove unused username state variable
- AppView.tsx: remove 3 unused Lucide icon imports
- TopNavbar.tsx: remove 4 unused Accordion component imports
- LeftSidebar.tsx: remove 2 unused variables (err, jwt)

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 5 unused variables across 4 user/credentials files

- PasswordReset.tsx: remove unused result variable
- UserProfile.tsx: remove unused Key import and err variable
- version-check-modal.tsx: remove unused setVersionDismissed setter
- CredentialsManager.tsx: remove unused e parameter from handleDragLeave

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 2 unused variables in FileViewer and TerminalWindow

- FileViewer.tsx: remove unused node parameter from code component
- TerminalWindow.tsx: remove unused handleMinimize function

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in HomepageAuth.tsx

Removed unused variables:
- getCookie import
- dbError prop
- visibility state and toggleVisibility
- error state variable
- result variable in handleInitiatePasswordReset
- token URL parameter
- err parameters in catch blocks
- retryDatabaseConnection function
- Multiple setError(null) calls

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 9 unused variables across multiple files

Files fixed:
- DesktopApp.tsx: Removed _nextView parameter
- TerminalWindow.tsx: Removed minimizeWindow
- Mobile Host.tsx: Removed Server import
- Mobile LeftSidebar.tsx: Removed setHostsLoading, err in catch
- Desktop LeftSidebar.tsx: Removed getCookie, setCookie, onSelectView, getView, setHostsLoading

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove 10 unused variables in Mobile files

Files fixed:
- MobileApp.tsx: Removed getCookie, removeTab, isAdmin, id, err parameters
- Mobile/HomepageAuth.tsx: Removed getCookie, error state, result, token, err parameters

All @typescript-eslint/no-unused-vars errors in frontend now resolved!

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: remove unused t variable in TabContext

Removed useTranslation import and unused t variable
in Mobile TabContext.tsx

All @typescript-eslint/no-unused-vars errors now resolved!
Total fixed: 154 unused variables

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

Co-Authored-By: Claude <noreply@anthropic.com>

* fix: resolve TypeScript and ESLint errors across the codebase

- Fixed @typescript-eslint/no-unused-vars errors (31 instances)
- Fixed @typescript-eslint/no-explicit-any errors in backend (~22 instances)
- Fixed @typescript-eslint/no-explicit-any errors in frontend (~60 instances)
- Fixed prefer-const errors (5 instances)
- Fixed no-empty-object-type and rules-of-hooks errors
- Added proper type assertions for database operations
- Improved type safety in authentication and encryption modules
- Enhanced type definitions for API routes and SSH operations

All TypeScript compilation errors resolved. Application builds and runs successfully.

* fix: disable react-refresh/only-export-components rule for component files

Disable the react-refresh/only-export-components ESLint rule in files
that export both components and related utilities (hooks, types,
constants). This is a pragmatic solution to maintain code organization
without splitting files unnecessarily.

* style: fix prettier formatting issues

Fix code style issues in translation file and TOTP dialog component
to pass CI prettier check.

* chore: fix rollup optional dependencies installation in CI

Add step to force reinstall rollup after npm ci to fix the known npm
bug with optional dependencies on Linux x64 platform.

* chore: fix lightningcss optional dependencies in CI

Add lightningcss to the force reinstall step to fix npm optional
dependencies bug for both rollup and lightningcss on Linux x64.

* chore: fix npm optional dependencies bug in CI

Remove package-lock.json and node_modules before install to properly
handle optional dependencies for rollup, lightningcss, and tailwindcss
native bindings on Linux x64 platform as recommended by npm.

* Update src/types/index.ts

Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* Set terminal environment variables for SSH

Added environment variables for terminal configuration.

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: Karmaa <88517757+LukeGus@users.noreply.github.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>

* feat: begin macOS support

* fix: Fix build errors

---------

Co-authored-by: Ved Prakash <54140516+thorved@users.noreply.github.com>
Co-authored-by: P3RF3CTION <herzmaximilian@gmail.com>
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Co-authored-by: ZacharyZcR <zacharyzcr1984@gmail.com>
Co-authored-by: ZacharyZcR <2903735704@qq.com>
Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: blacksmith-sh[bot] <157653362+blacksmith-sh[bot]@users.noreply.github.com>
2025-10-14 22:50:34 -05:00

535 lines
72 KiB
Plaintext

> termix@1.7.2 lint
> eslint .
C:\Users\29037\WebstormProjects\Termix\src\backend\database\routes\users.ts
705:8 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\backend\ssh\file-manager.ts
169:26 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
249:17 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
435:26 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
465:13 error Empty block statement no-empty
C:\Users\29037\WebstormProjects\Termix\src\backend\ssh\server-stats.ts
64:34 error '_reject' is defined but never used @typescript-eslint/no-unused-vars
197:56 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
1130:9 error 'now' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\backend\ssh\terminal.ts
157:5 error 'userPayload' is assigned a value but never used @typescript-eslint/no-unused-vars
350:13 error 'cols' is assigned a value but never used @typescript-eslint/no-unused-vars
350:19 error 'rows' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\backend\ssh\tunnel.ts
840:34 error 'data' is defined but never used @typescript-eslint/no-unused-vars
906:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
1068:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
1442:21 error 'hasSourcePassword' is assigned a value but never used @typescript-eslint/no-unused-vars
1443:21 error 'hasSourceKey' is assigned a value but never used @typescript-eslint/no-unused-vars
1444:21 error 'hasEndpointPassword' is assigned a value but never used @typescript-eslint/no-unused-vars
1447:21 error 'hasEndpointKey' is assigned a value but never used @typescript-eslint/no-unused-vars
1472:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\backend\starter.ts
131:47 error '_promise' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\backend\utils\database-file-encryption.ts
33:72 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
81:72 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
166:12 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
236:12 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
304:13 error 'currentFingerprint' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\backend\utils\database-migration.ts
247:26 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\backend\utils\lazy-field-encryption.ts
185:13 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
190:20 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
282:9 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\backend\utils\logger.ts
14:18 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\backend\utils\user-data-import.ts
162:15 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
216:18 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
272:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
359:13 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\components\theme-provider.tsx
66:14 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\components\ui\badge.tsx
46:17 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\components\ui\button.tsx
62:18 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\components\ui\form.tsx
158:3 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\components\ui\password-input.tsx
8:11 error An interface declaring no members is equivalent to its supertype @typescript-eslint/no-empty-object-type
C:\Users\29037\WebstormProjects\Termix\src\components\ui\shadcn-io\status\index.tsx
21:3 error 'className' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\components\ui\sidebar.tsx
12:3 error 'Sheet' is defined but never used @typescript-eslint/no-unused-vars
13:3 error 'SheetContent' is defined but never used @typescript-eslint/no-unused-vars
14:3 error 'SheetDescription' is defined but never used @typescript-eslint/no-unused-vars
15:3 error 'SheetHeader' is defined but never used @typescript-eslint/no-unused-vars
16:3 error 'SheetTitle' is defined but never used @typescript-eslint/no-unused-vars
29:7 error 'SIDEBAR_WIDTH_MOBILE' is assigned a value but never used @typescript-eslint/no-unused-vars
164:11 error 'isMobile' is assigned a value but never used @typescript-eslint/no-unused-vars
164:28 error 'openMobile' is assigned a value but never used @typescript-eslint/no-unused-vars
164:40 error 'setOpenMobile' is assigned a value but never used @typescript-eslint/no-unused-vars
724:3 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\components\ui\sonner.tsx
11:56 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
28:42 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
30:40 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
32:42 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
34:39 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\components\ui\textarea.tsx
5:18 error An interface declaring no members is equivalent to its supertype @typescript-eslint/no-empty-object-type
C:\Users\29037\WebstormProjects\Termix\src\components\ui\version-check-modal.tsx
4:10 error 'RefreshCw' is defined but never used @typescript-eslint/no-unused-vars
4:21 error 'X' is defined but never used @typescript-eslint/no-unused-vars
15:3 error 'onDismiss' is defined but never used @typescript-eslint/no-unused-vars
20:50 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
30:6 warning React Hook useEffect has missing dependencies: 'checkForUpdates' and 'onContinue'. Either include them or remove the dependency array. If 'onContinue' changes too often, find the parent component that defines it and wrap that definition in useCallback react-hooks/exhaustive-deps
50:9 error 'handleVersionDismiss' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\lib\frontend-logger.ts
20:18 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
221:11 error 'shortUrl' is assigned a value but never used @typescript-eslint/no-unused-vars
247:11 error 'shortUrl' is assigned a value but never used @typescript-eslint/no-unused-vars
268:11 error 'shortUrl' is assigned a value but never used @typescript-eslint/no-unused-vars
282:11 error 'shortUrl' is assigned a value but never used @typescript-eslint/no-unused-vars
301:11 error 'shortUrl' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\main.tsx
12:10 error 'isMobile' is assigned a value but never used @typescript-eslint/no-unused-vars
56:10 error Fast refresh only works when a file has exports. Move your component(s) to a separate file react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Admin\AdminSettings.tsx
29:3 error 'Key' is defined but never used @typescript-eslint/no-unused-vars
49:3 error 'getCookie' is defined but never used @typescript-eslint/no-unused-vars
99:10 error 'securityInitialized' is assigned a value but never used @typescript-eslint/no-unused-vars
99:31 error 'setSecurityInitialized' is assigned a value but never used @typescript-eslint/no-unused-vars
127:6 warning React Hook React.useEffect has missing dependencies: 'fetchUsers' and 't'. Either include them or remove the dependency array react-hooks/exhaustive-deps
149:6 warning React Hook React.useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
171:6 warning React Hook React.useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
281:16 error 'err' is defined but never used @typescript-eslint/no-unused-vars
295:18 error 'err' is defined but never used @typescript-eslint/no-unused-vars
366:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
458:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Credentials\CredentialEditor.tsx
45:10 error 'credentials' is assigned a value but never used @typescript-eslint/no-unused-vars
47:10 error 'loading' is assigned a value but never used @typescript-eslint/no-unused-vars
98:18 error 'error' is defined but never used @typescript-eslint/no-unused-vars
158:42 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
201:47 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
224:6 warning React Hook useEffect has a missing dependency: 'editingCredential'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Credentials\CredentialSelector.tsx
38:16 error 'error' is defined but never used @typescript-eslint/no-unused-vars
48:6 warning React Hook useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Credentials\CredentialViewer.tsx
67:6 warning React Hook useEffect has missing dependencies: 'fetchCredentialDetails' and 'fetchHostsUsing'. Either include them or remove the dependency array react-hooks/exhaustive-deps
73:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
82:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
100:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Credentials\CredentialsManager.tsx
15:3 error 'SheetDescription' is defined but never used @typescript-eslint/no-unused-vars
16:3 error 'SheetFooter' is defined but never used @typescript-eslint/no-unused-vars
17:3 error 'SheetHeader' is defined but never used @typescript-eslint/no-unused-vars
18:3 error 'SheetTitle' is defined but never used @typescript-eslint/no-unused-vars
21:3 error 'Select' is defined but never used @typescript-eslint/no-unused-vars
22:3 error 'SelectContent' is defined but never used @typescript-eslint/no-unused-vars
23:3 error 'SelectItem' is defined but never used @typescript-eslint/no-unused-vars
24:3 error 'SelectTrigger' is defined but never used @typescript-eslint/no-unused-vars
25:3 error 'SelectValue' is defined but never used @typescript-eslint/no-unused-vars
40:3 error 'Pin' is defined but never used @typescript-eslint/no-unused-vars
78:29 error 'setViewingCredential' is assigned a value but never used @typescript-eslint/no-unused-vars
91:56 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
102:6 warning React Hook useEffect has a missing dependency: 'fetchCredentials'. Either include it or remove the dependency array react-hooks/exhaustive-deps
156:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
227:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
259:18 error 'err' is defined but never used @typescript-eslint/no-unused-vars
288:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
328:28 error 'e' is defined but never used @typescript-eslint/no-unused-vars
362:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\FileManager.tsx
26:3 error 'Eye' is defined but never used @typescript-eslint/no-unused-vars
27:3 error 'Settings' is defined but never used @typescript-eslint/no-unused-vars
90:23 error 'setCurrentHost' is assigned a value but never used @typescript-eslint/no-unused-vars
148:26 error 'selectFile' is assigned a value but never used @typescript-eslint/no-unused-vars
148:38 error 'selectAll' is assigned a value but never used @typescript-eslint/no-unused-vars
151:11 error 'isDragging' is assigned a value but never used @typescript-eslint/no-unused-vars
208:6 warning React Hook useEffect has a missing dependency: 'initializeSSHConnection'. Either include it or remove the dependency array react-hooks/exhaustive-deps
386:5 warning React Hook useCallback has a missing dependency: 'handleCloseWithError'. Either include it or remove the dependency array react-hooks/exhaustive-deps
455:6 warning React Hook useEffect has a missing dependency: 'handleOpenTerminal'. Either include it or remove the dependency array react-hooks/exhaustive-deps
787:49 error 'editMode' is assigned a value but never used @typescript-eslint/no-unused-vars
837:12 error 'handleFileEdit' is defined but never used @typescript-eslint/no-unused-vars
841:12 error 'handleFileView' is defined but never used @typescript-eslint/no-unused-vars
1356:23 error 'index' is defined but never used @typescript-eslint/no-unused-vars
1665:6 warning React Hook useEffect has a missing dependency: 'loadPinnedFiles'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\FileManagerContextMenu.tsx
16:3 error 'Share' is defined but never used @typescript-eslint/no-unused-vars
17:3 error 'ExternalLink' is defined but never used @typescript-eslint/no-unused-vars
193:9 error 'hasDirectories' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\FileManagerGrid.tsx
169:3 error 'onFileSelect' is defined but never used @typescript-eslint/no-unused-vars
191:3 error 'onSystemDragStart' is defined but never used @typescript-eslint/no-unused-vars
371:6 warning React Hook useEffect has missing dependencies: 'historyIndex' and 'navigationHistory'. Either include them or remove the dependency array react-hooks/exhaustive-deps
431:9 error 'handlePathInputKeyDown' is assigned a value but never used @typescript-eslint/no-unused-vars
483:5 warning React Hook useCallback has an unnecessary dependency: 'dragState.counter'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps
620:34 error 'e' is defined but never used @typescript-eslint/no-unused-vars
674:5 warning React Hook useCallback has an unnecessary dependency: 'onDownload'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps
810:6 warning React Hook useEffect has missing dependencies: 'hasClipboard' and 'onStartEdit'. Either include them or remove the dependency array. If 'onStartEdit' changes too often, find the parent component that defines it and wrap that definition in useCallback react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\FileManagerSidebar.tsx
79:3 error 'onLoadDirectory' is defined but never used @typescript-eslint/no-unused-vars
107:6 warning React Hook useEffect has a missing dependency: 'loadQuickAccessData'. Either include it or remove the dependency array react-hooks/exhaustive-deps
113:6 warning React Hook useEffect has a missing dependency: 'loadDirectoryTree'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\DiffViewer.tsx
64:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
99:21 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
160:21 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
206:6 warning React Hook useEffect has a missing dependency: 'loadFileContents'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\DraggableWindow.tsx
3:17 error 'Square' is defined but never used @typescript-eslint/no-unused-vars
208:5 warning React Hook useCallback has an unnecessary dependency: 'position'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\FileViewer.tsx
63:8 error 'ReactPlayer' is defined but never used @typescript-eslint/no-unused-vars
293:45 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
314:10 error 'originalContent' is assigned a value but never used @typescript-eslint/no-unused-vars
329:28 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
381:9 warning The 'handleSave' function makes the dependencies of useEffect Hook (at line 411) change on every render. To fix this, wrap the definition of 'handleSave' in its own useCallback() Hook react-hooks/exhaustive-deps
979:29 error 'node' is defined but never used @typescript-eslint/no-unused-vars
1100:32 error 'node' is defined but never used @typescript-eslint/no-unused-vars
1384:33 error 'audio' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\FileWindow.tsx
59:53 error 'updateWindow' is assigned a value but never used @typescript-eslint/no-unused-vars
160:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
179:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
212:6 warning React Hook useEffect has missing dependencies: 'closeWindow', 'ensureSSHConnection', 'onFileNotFound', 't', and 'windowId'. Either include them or remove the dependency array. If 'onFileNotFound' changes too often, find the parent component that defines it and wrap that definition in useCallback react-hooks/exhaustive-deps
232:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
261:21 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
338:21 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\TerminalWindow.tsx
41:36 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
53:9 error 'handleMinimize' is assigned a value but never used @typescript-eslint/no-unused-vars
77:3 error React Hook "React.useEffect" is called conditionally. React Hooks must be called in the exact same order in every component render react-hooks/rules-of-hooks
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\File Manager\components\WindowManager.tsx
132:17 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Host Manager\HostManager.tsx
18:3 error 'onSelectView' is defined but never used @typescript-eslint/no-unused-vars
25:62 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
33:29 error 'updatedHost' is defined but never used @typescript-eslint/no-unused-vars
38:45 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Host Manager\HostManagerEditor.tsx
41:28 error 'WidgetType' is defined but never used @typescript-eslint/no-unused-vars
63:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
80:10 error 'hosts' is assigned a value but never used @typescript-eslint/no-unused-vars
83:50 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
84:10 error 'loading' is assigned a value but never used @typescript-eslint/no-unused-vars
305:42 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
390:52 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
423:6 warning React Hook useEffect has missing dependencies: 'editingHost' and 'form'. Either include them or remove the dependency array react-hooks/exhaustive-deps
443:25 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
536:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Host Manager\HostManagerViewer.tsx
83:6 warning React Hook useEffect has a missing dependency: 'fetchHosts'. Either include it or remove the dependency array react-hooks/exhaustive-deps
109:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
125:18 error 'err' is defined but never used @typescript-eslint/no-unused-vars
163:47 error 'actualAuthType' is defined but never used @typescript-eslint/no-unused-vars
169:13 error '_' is defined but never used @typescript-eslint/no-unused-vars
188:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
225:18 error 'err' is defined but never used @typescript-eslint/no-unused-vars
254:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
294:28 error 'e' is defined but never used @typescript-eslint/no-unused-vars
328:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
442:6 warning React Hook useMemo has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\Server.tsx
151:18 error 'error' is defined but never used @typescript-eslint/no-unused-vars
168:18 error 'error' is defined but never used @typescript-eslint/no-unused-vars
177:6 warning React Hook React.useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
260:6 warning React Hook React.useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\widgets\DiskWidget.tsx
15:39 error 'metricsHistory' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\widgets\NetworkWidget.tsx
14:31 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
33:34 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\widgets\ProcessesWidget.tsx
14:33 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
49:38 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\widgets\SystemWidget.tsx
14:30 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Server\widgets\UptimeWidget.tsx
14:30 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Terminal\SnippetsSidebar.tsx
55:6 warning React Hook useEffect has a missing dependency: 'fetchSnippets'. Either include it or remove the dependency array react-hooks/exhaustive-deps
63:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
97:18 error 'err' is defined but never used @typescript-eslint/no-unused-vars
128:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Terminal\Terminal.tsx
83:12 error 'connectionError' is assigned a value but never used @typescript-eslint/no-unused-vars
84:12 error 'isAuthenticated' is assigned a value but never used @typescript-eslint/no-unused-vars
227:7 warning React Hook useImperativeHandle has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
230:14 error 'handleWindowResize' is defined but never used @typescript-eslint/no-unused-vars
493:18 error 'error' is defined but never used @typescript-eslint/no-unused-vars
529:37 error 'event' is defined but never used @typescript-eslint/no-unused-vars
713:8 warning React Hook useEffect has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
753:8 warning React Hook useEffect has missing dependencies: 'connectToHost' and 'hardRefresh'. Either include them or remove the dependency array react-hooks/exhaustive-deps
772:8 warning React Hook useEffect has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
784:8 warning React Hook useEffect has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Apps\Tunnel\TunnelViewer.tsx
6:3 error 'TunnelConnection' is defined but never used @typescript-eslint/no-unused-vars
18:16 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
66:40 error '_host' is defined but never used @typescript-eslint/no-unused-vars
66:47 error '_index' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\DesktopApp.tsx
15:23 error 'getCookie' is defined but never used @typescript-eslint/no-unused-vars
18:10 error 'view' is assigned a value but never used @typescript-eslint/no-unused-vars
19:10 error 'mountedViews' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Electron Only\ServerConfig.tsx
77:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
120:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Homepage\Homepage.tsx
7:10 error 'useTranslation' is defined but never used @typescript-eslint/no-unused-vars
28:10 error 'isAdmin' is assigned a value but never used @typescript-eslint/no-unused-vars
29:10 error 'username' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Homepage\HomepageAlertManager.tsx
20:10 error 'loading' is assigned a value but never used @typescript-eslint/no-unused-vars
27:6 warning React Hook useEffect has a missing dependency: 'fetchUserAlerts'. Either include it or remove the dependency array react-hooks/exhaustive-deps
55:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
80:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Homepage\HomepageAuth.tsx
22:3 error 'setCookie' is defined but never used @typescript-eslint/no-unused-vars
23:3 error 'getCookie' is defined but never used @typescript-eslint/no-unused-vars
54:3 error 'dbError' is defined but never used @typescript-eslint/no-unused-vars
68:10 error 'visibility' is assigned a value but only used as a type @typescript-eslint/no-unused-vars
74:9 error 'toggleVisibility' is assigned a value but never used @typescript-eslint/no-unused-vars
78:10 error 'error' is assigned a value but never used @typescript-eslint/no-unused-vars
163:6 warning React Hook useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
213:8 error 'meRes' is never reassigned. Use 'const' instead prefer-const
236:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
259:13 error 'result' is assigned a value but never used @typescript-eslint/no-unused-vars
262:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
281:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
319:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
385:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
418:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
431:11 error 'token' is assigned a value but never used @typescript-eslint/no-unused-vars
465:17 error 'err' is defined but never used @typescript-eslint/no-unused-vars
481:6 warning React Hook useEffect has missing dependencies: 'onAuthSuccess', 'setDbError', 'setIsAdmin', 'setLoggedIn', 'setUserId', 'setUsername', and 't'. Either include them or remove the dependency array. If 'setLoggedIn' changes too often, find the parent component that defines it and wrap that definition in useCallback react-hooks/exhaustive-deps
518:9 error 'retryDatabaseConnection' is assigned a value but never used @typescript-eslint/no-unused-vars
531:14 error 'error' is defined but never used @typescript-eslint/no-unused-vars
545:18 error 'error' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Homepage\HompageUpdateLog.tsx
69:17 error 'err' is defined but never used @typescript-eslint/no-unused-vars
74:6 warning React Hook useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\AppView.tsx
14:3 error 'LucideRefreshCcw' is defined but never used @typescript-eslint/no-unused-vars
15:3 error 'LucideRefreshCw' is defined but never used @typescript-eslint/no-unused-vars
17:3 error 'RefreshCcwDot' is defined but never used @typescript-eslint/no-unused-vars
117:6 warning React Hook useEffect has a missing dependency: 'hideThenFit'. Either include it or remove the dependency array react-hooks/exhaustive-deps
117:40 warning React Hook useEffect has a complex expression in the dependency array. Extract it to a separate variable so it can be statically checked react-hooks/exhaustive-deps
121:6 warning React Hook useEffect has a missing dependency: 'scheduleMeasureAndFit'. Either include it or remove the dependency array react-hooks/exhaustive-deps
133:6 warning React Hook useEffect has a missing dependency: 'fitActiveAndNotify'. Either include it or remove the dependency array react-hooks/exhaustive-deps
142:6 warning React Hook useEffect has a missing dependency: 'fitActiveAndNotify'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\Hosts\FolderCard.tsx
26:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\Hosts\Host.tsx
32:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
49:5 error 'intervalId' is never reassigned. Use 'const' instead prefer-const
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\LeftSidebar.tsx
6:3 error 'setCookie' is defined but never used @typescript-eslint/no-unused-vars
90:3 error 'onSelectView' is defined but never used @typescript-eslint/no-unused-vars
91:3 error 'getView' is defined but never used @typescript-eslint/no-unused-vars
152:24 error 'setHostsLoading' is assigned a value but never used @typescript-eslint/no-unused-vars
215:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
218:6 warning React Hook React.useCallback has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
290:6 warning React Hook React.useMemo has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
300:6 warning React Hook React.useMemo has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
323:11 error 'jwt' is assigned a value but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\Tabs\TabContext.tsx
22:53 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
27:17 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
101:55 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
143:60 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\Navigation\TopNavbar.tsx
8:3 error 'Accordion' is defined but never used @typescript-eslint/no-unused-vars
9:3 error 'AccordionContent' is defined but never used @typescript-eslint/no-unused-vars
10:3 error 'AccordionItem' is defined but never used @typescript-eslint/no-unused-vars
11:3 error 'AccordionTrigger' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\User\PasswordReset.tsx
49:13 error 'result' is assigned a value but never used @typescript-eslint/no-unused-vars
52:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
83:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
113:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\User\TOTPSetup.tsx
69:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
89:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
108:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
125:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Desktop\User\UserProfile.tsx
11:24 error 'Key' is defined but never used @typescript-eslint/no-unused-vars
42:6 warning React Hook useEffect has missing dependencies: 'fetchUserInfo' and 'fetchVersion'. Either include them or remove the dependency array react-hooks/exhaustive-deps
48:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
65:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Apps\Navigation\Hosts\FolderCard.tsx
26:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Apps\Navigation\Hosts\Host.tsx
5:10 error 'Server' is defined but never used @typescript-eslint/no-unused-vars
32:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
49:5 error 'intervalId' is never reassigned. Use 'const' instead prefer-const
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Apps\Navigation\LeftSidebar.tsx
45:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
78:24 error 'setHostsLoading' is assigned a value but never used @typescript-eslint/no-unused-vars
93:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
93:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Apps\Navigation\Tabs\TabContext.tsx
24:17 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
37:11 error 't' is assigned a value but never used @typescript-eslint/no-unused-vars
61:36 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Apps\Terminal\Terminal.tsx
15:10 error 'toast' is defined but never used @typescript-eslint/no-unused-vars
55:12 error 'isConnected' is assigned a value but never used @typescript-eslint/no-unused-vars
56:12 error 'isConnecting' is assigned a value but never used @typescript-eslint/no-unused-vars
57:12 error 'connectionError' is assigned a value but never used @typescript-eslint/no-unused-vars
160:7 warning React Hook useImperativeHandle has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
163:14 error 'handleWindowResize' is defined but never used @typescript-eslint/no-unused-vars
394:8 warning React Hook useEffect has missing dependencies: 'hardRefresh', 'isAuthenticated', and 'setupWebSocketListeners'. Either include them or remove the dependency array react-hooks/exhaustive-deps
404:8 warning React Hook useEffect has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
413:8 warning React Hook useEffect has a missing dependency: 'hardRefresh'. Either include it or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Homepage\HomepageAuth.tsx
22:3 error 'setCookie' is defined but never used @typescript-eslint/no-unused-vars
23:3 error 'getCookie' is defined but never used @typescript-eslint/no-unused-vars
67:10 error 'error' is assigned a value but never used @typescript-eslint/no-unused-vars
153:6 warning React Hook useEffect has a missing dependency: 't'. Either include it or remove the dependency array react-hooks/exhaustive-deps
197:8 error 'meRes' is never reassigned. Use 'const' instead prefer-const
220:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
243:13 error 'result' is assigned a value but never used @typescript-eslint/no-unused-vars
246:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
265:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
303:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
369:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
402:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
415:11 error 'token' is assigned a value but never used @typescript-eslint/no-unused-vars
449:17 error 'err' is defined but never used @typescript-eslint/no-unused-vars
466:6 warning React Hook useEffect has missing dependencies: 'onAuthSuccess', 'setDbError', 'setIsAdmin', 'setLoggedIn', 'setUserId', 'setUsername', and 't'. Either include them or remove the dependency array. If 'setLoggedIn' changes too often, find the parent component that defines it and wrap that definition in useCallback react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\MobileApp.tsx
10:23 error 'getCookie' is defined but never used @typescript-eslint/no-unused-vars
17:37 error 'removeTab' is assigned a value but never used @typescript-eslint/no-unused-vars
23:10 error 'isAdmin' is assigned a value but never used @typescript-eslint/no-unused-vars
69:6 warning React Hook useEffect has a missing dependency: 'fitCurrentTerminal'. Either include it or remove the dependency array react-hooks/exhaustive-deps
98:6 warning React Hook React.useEffect has missing dependencies: 'fitCurrentTerminal' and 'tabs.length'. Either include them or remove the dependency array react-hooks/exhaustive-deps
131:23 error 'id' is defined but never used @typescript-eslint/no-unused-vars
135:24 error 'err' is defined but never used @typescript-eslint/no-unused-vars
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Navigation\Hosts\FolderCard.tsx
26:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Navigation\Hosts\Host.tsx
5:10 error 'Server' is defined but never used @typescript-eslint/no-unused-vars
32:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
49:5 error 'intervalId' is never reassigned. Use 'const' instead prefer-const
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Navigation\LeftSidebar.tsx
46:22 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
78:24 error 'setHostsLoading' is assigned a value but never used @typescript-eslint/no-unused-vars
93:14 error 'err' is defined but never used @typescript-eslint/no-unused-vars
93:19 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\Mobile\Navigation\Tabs\TabContext.tsx
24:17 error Fast refresh only works when a file only exports components. Use a new file to share constants or functions between components react-refresh/only-export-components
37:11 error 't' is assigned a value but never used @typescript-eslint/no-unused-vars
61:36 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
C:\Users\29037\WebstormProjects\Termix\src\ui\hooks\useDragToDesktop.ts
120:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
140:5 warning React Hook useCallback has an unnecessary dependency: 'sshHost'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps
229:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
249:5 warning React Hook useCallback has an unnecessary dependency: 'sshHost'. Either exclude it or remove the dependency array react-hooks/exhaustive-deps
254:35 error 'onSuccess' is assigned a value but never used @typescript-eslint/no-unused-vars
277:5 warning React Hook useCallback has unnecessary dependencies: 'sshHost' and 'sshSessionId'. Either exclude them or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\hooks\useDragToSystemDesktop.ts
26:3 error 'sshHost' is defined but never used @typescript-eslint/no-unused-vars
40:9 error 'getLastSaveDirectory' is assigned a value but never used @typescript-eslint/no-unused-vars
68:48 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
167:25 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
170:43 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
190:27 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
245:23 error Unexpected any. Specify a different type @typescript-eslint/no-explicit-any
263:5 warning React Hook useCallback has missing dependencies: 'createFileBlob' and 'createZipBlob'. Either include them or remove the dependency array react-hooks/exhaustive-deps
C:\Users\29037\WebstormProjects\Termix\src\ui\main-axios.ts
7:3 error 'Credential' is defined but never used @typescript-eslint/no-unused-vars
8:3 error 'CredentialData' is defined but never used @typescript-eslint/no-unused-vars
9:3 error 'HostInfo' is defined but never used @typescript-eslint/no-unused-vars
10:3 error 'ApiResponse' is defined but never used @typescript-eslint/no-unused-vars
346:3 error 'apiPort' is assigned a value but never used @typescript-eslint/no-unused-vars
994:12 error 'error' is defined but never used @typescript-eslint/no-unused-vars
1031:12 error 'error' is defined but never used @typescript-eslint/no-unused-vars
1068:12 error 'error' is defined but never used @typescript-eslint/no-unused-vars
✖ 369 problems (311 errors, 58 warnings)