⚠️ Note: This project is currently under active development and may contain bugs or incomplete features. Use at your own risk.
- Application powered by Tauri
- Syntax highlighting for multiple programming languages
- UI built with Tailwind CSS and Radix UI components
- File and content search capabilities
- File system integration with directory navigation
- Integrated terminal with multi-instance support
- Dark theme for long coding sessions
- Terminal implementation with native process management
- Support for multiple concurrent terminal instances
- Process tracking and management
- Persistent command history for improved workflow
- Cross-platform compatibility (Windows, macOS, Linux)
- Working directory synchronization
- Signal handling (SIGINT, SIGTERM)
- URL detection and handling
- ANSI escape sequence processing
- File tree navigation system
- File and content search functionality
- File operations (open, save, save as)
- Directory structure representation
- Image file preview capabilities
- Audio file player
- Multiple file tab management
- React 18
- TypeScript
- Tailwind CSS
- Radix UI
- ShadCN
- CodeMirror 6
- Tauri 2.0
- Rust
- sysinfo for process tracking
- tauri-plugin-fs for file system operations
- tauri-plugin-shell for terminal integration
- tauri-plugin-dialog for native dialogs
- tauri-plugin-process for process management
- Node.js (Latest LTS version)
- Rust (Latest stable version)
- Tauri CLI
- Clone the repository:
git clone https://github.com/66HEX/horizon.git
cd horizon
- Install dependencies:
npm install
- Run the development server:
npm run tauri dev
npm run tauri build
horizon/
├── src/ # Frontend source code (React/TypeScript)
│ ├── components/ # React components
│ │ ├── app-sidebar.tsx # File navigation sidebar
│ │ ├── audio-player.tsx # Audio playback component
│ │ ├── code-editor.tsx # Main code editor integration
│ │ ├── create-dialog.tsx # File/folder creation dialog
│ │ ├── image-viewer.tsx # Image preview component
│ │ ├── rename-dialog.tsx # File/folder rename dialog
│ │ ├── terminal.tsx # Terminal emulator component
│ │ ├── theme-provider.tsx # Theme management
│ │ └── ui/ # UI component library
│ │ ├── button.tsx # Button component
│ │ ├── card.tsx # Card container component
│ │ ├── context-menu.tsx # Context menu component
│ │ ├── dialog.tsx # Dialog component
│ │ ├── dropdown-menu.tsx # Dropdown menu component
│ │ ├── file-selection-tabs.tsx # File tabs component
│ │ ├── hover-tooltip.tsx # LSP hover information tooltip
│ │ ├── resizable.tsx # Resizable panels component
│ │ ├── scroll-area.tsx # Scrollable container component
│ │ ├── sidebar.tsx # Sidebar component
│ │ ├── tabs.tsx # Tabs container component
│ │ └── ... (additional UI components)
│ │
│ ├── lib/ # Core frontend functionality
│ │ ├── file-context.tsx # File context provider
│ │ ├── file-service.ts # File operations service
│ │ ├── lsp-store.ts # LSP state management
│ │ ├── native-fs.ts # Native filesystem bindings
│ │ ├── stores.ts # State management stores
│ │ └── utils.ts # Utility functions
│ │
│ ├── hooks/ # Custom React hooks
│ │ ├── use-mobile.ts # Mobile detection hook
│ │ └── use-theme.ts # Theme management hook
│ │
│ ├── app/ # Application-specific code
│ ├── assets/ # Static assets
│ ├── App.tsx # Main application component
│ ├── App.css # Global styles
│ └── main.tsx # Application entry point
│
├── src-tauri/ # Backend source code (Rust)
│ ├── src/ # Rust source files
│ │ ├── lsp/ # Language Server Protocol implementation
│ │ │ ├── mod.rs # LSP module definition
│ │ │ ├── protocol.rs # LSP protocol handlers
│ │ │ ├── server_factory.rs # LSP server factory
│ │ │ ├── websocket.rs # WebSocket server implementation
│ │ │ ├── config.rs # LSP configuration
│ │ │ ├── logger.rs # Logging functionality
│ │ │ └── servers/ # Language-specific server implementations
│ │ │ ├── rust.rs # Rust language server
│ │ │ └── mod.rs # Server module definitions
│ │ │
│ │ ├── fs.rs # Filesystem operations
│ │ ├── terminal.rs # Terminal implementation
│ │ ├── process_tracker.rs # Process monitoring
│ │ ├── lib.rs # Library definition
│ │ └── main.rs # Application entry point
│ │
│ ├── Cargo.toml # Rust dependencies
│ ├── tauri.conf.json # Tauri configuration
│ ├── capabilities/ # Tauri capabilities configuration
│ └── icons/ # Application icons
│
├── public/ # Static public assets
├── dist/ # Build output directory
├── node_modules/ # Node.js dependencies
├── package.json # Node.js package configuration
├── tsconfig.json # TypeScript configuration
├── vite.config.ts # Vite bundler configuration
└── README.md # Project documentation
-
Frontend-Backend Communication
native-fs.ts
→ interfaces with Rust'sfs.rs
for filesystem operationslsp-store.ts
→ communicates withlsp/websocket.rs
for LSP functionalitystores.ts
→ manages terminal state linked toterminal.rs
-
Editor Architecture
code-editor.tsx
→ integrates CodeMirror 6 with LSP functionalityApp.tsx
→ orchestrates layout and main component interactionsfile-service.ts
→ provides high-level file operations API
-
State Management Flow
file-context.tsx
→ provides global file statestores.ts
→ manages application state with Zustandlsp-store.ts
→ handles LSP-specific state management
-
UI Component Hierarchy
- Base UI components (button, card, etc.) → used by composite components
app-sidebar.tsx
→ uses file context to display file treeterminal.tsx
→ manages terminal sessions and UI
- File watching for external changes detection
- Progress indicators for long-running file operations
- Optimized large directory scanning with virtualization
- Enhanced error handling and recovery for file operations
- Terminal performance optimization for large outputs
- Buffering system for fast terminal output streams
- Improved ANSI escape sequence handling and colors
- Complete Rust LSP integration with rust-analyzer
- TypeScript/JavaScript LSP integration
- Basic Python LSP support
- Resource usage monitoring and limits
- Memory optimization for large files and projects
- Drag and drop support for file operations
- File previews for additional file types
- Enhanced search capabilities with filtering options
- Terminal session management and tabs improvements
- Command history search functionality
- Automatic command completion for terminal
- Customizable terminal appearance (fonts, colors)
- Improved syntax highlighting consistency
- Editor status indicators for LSP and processes
- Keyboard shortcut system with documentation
- Customizable editor themes
- Enhanced error and warning visualization
- Settings panel with comprehensive configuration options
- Batch file operations functionality
- File comparison utility
- File recovery from temporary backups
- Persistent search indexes for improved performance
- Split terminal views
- Full xterm.js terminal integration
- Terminal profiles and configurations
- Git integration with GitHub support
- Branch visualization and management
- Diff viewer and conflict resolution
- Extended LSP support for Go, C/C++, and Java
- Code actions and refactorings
- Semantic token highlighting
- Extensions and plugins system architecture
- Extension management and marketplace
- Multiple workspace support
- Project templates and scaffolding
- Build system integration
- Task running and management system
- Global symbol search functionality
- Advanced code navigation between files
- Cross-language references
- GitHub Actions autobuild pipeline
- SSH/SFTP connection support
- Remote workspace editing
- Container-based development environments
- Real-time collaborative editing
- Presence indicators and cursor sharing
- Settings and preferences synchronization
- Project and workspace sync between devices
- AI-powered chat assistant for code help
- Context-aware code suggestions
- Automated documentation generation
- Code quality recommendations
- AI-assisted refactorings and transformations
- Code quality metrics and visualization
- Project dependency analysis
- Interactive tutorials and code walkthroughs
- Debugging support with breakpoints and variable inspection
- Additional theme support and customization
- Advanced code refactoring tools
- Comprehensive performance optimization
- Documentation improvements
- Integrated project management system
- Advanced data visualization features
- Code presentation mode for meetings and recordings
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
- Tauri team for the excellent desktop framework
- CodeMirror team for the powerful editor framework
- All contributors and supporters of the project