### Clone and Run Netcatty Development Environment Source: https://github.com/binaricat/netcatty/blob/main/README.md Clone the repository, install dependencies, and start the development server for Netcatty. This is used for active development and testing. ```bash git clone https://github.com/binaricat/Netcatty.git cd Netcatty npm install npm run dev ``` -------------------------------- ### Start Development Server Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Starts the development server, which includes linting and then running Vite with Electron concurrently. ```bash # Start dev server (runs lint first, then Vite + Electron concurrently) npm run dev ``` -------------------------------- ### Install Dependencies Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Installs the necessary project dependencies using npm. ```bash # Install dependencies npm install ``` -------------------------------- ### Start a Long-Running Job Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/exec.md Initiate a job that is expected to run for an extended period or stream output. This is preferred over `exec` for such tasks. ```bash job-start --session --chat-session --json -- ``` -------------------------------- ### Get Runtime Diagnostics Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/control-commands.md Use this command to retrieve current runtime status information in JSON format. Useful for monitoring and debugging. ```bash status --json ``` -------------------------------- ### Cancel Netcatty Work for a Chat Scope Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/control-commands.md Cancels all outstanding Netcatty operations for a specific chat session. Use this to halt in-flight exec, SFTP transfers, and job starts. ```bash cancel --chat-session --json ``` -------------------------------- ### Build Renderer Process Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Builds the React renderer process for production. ```bash # Build renderer npm run build ``` -------------------------------- ### Build and Package Netcatty Application Source: https://github.com/binaricat/netcatty/blob/main/README.md Commands to build the Netcatty application for production and package it for different platforms. Use 'npm run build' to compile, and 'npm run pack' for packaging. ```bash # Build for production npm run build # Package for current platform npm run pack # Package for specific platforms npm run pack:mac # macOS (DMG + ZIP) npm run pack:win # Windows (NSIS installer) npm run pack:linux # Linux (AppImage + DEB + RPM) ``` -------------------------------- ### Reproducible Mosh Client Build for Linux x64 Source: https://github.com/binaricat/netcatty/blob/main/resources/mosh/README.md This command demonstrates how to reproduce the mosh-client binary for Linux x64 using Docker and a specified mosh reference. It utilizes a manylinux2014 image and a build script. ```shell docker run --rm -v $PWD:/workspace -w /workspace \ -e MOSH_REF=mosh-1.4.0 -e ARCH=x64 -e OUT_DIR=/workspace/out \ quay.io/pypa/manylinux2014_x86_64 \ bash scripts/build-mosh/build-linux.sh ``` -------------------------------- ### Package Application Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Packages the application for the current platform or specific platforms. ```bash # Package for current platform npm run pack # Package for specific platforms npm run pack:mac npm run pack:win npm run pack:linux ``` -------------------------------- ### Migration from Manual Implementation Source: https://github.com/binaricat/netcatty/blob/main/AGENTS.md Compares the old manual implementation of a fixed-position panel with the new, component-based approach using AsidePanel. ```tsx // OLD: Manual implementation
{/* header content */}
{/* content */}
// NEW: Using AsidePanel components (header via props) {/* content */} ``` -------------------------------- ### Execute Command with Selected Session Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/exec.md Use this when a specific session needs to be targeted. First, find an available session using `env` and `session` commands. ```bash exec --session --json --chat-session -- ``` -------------------------------- ### Run Tests Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Executes all project tests. For running a single test file, use the `node --test` command with the file path. ```bash # Run all tests npm test # Run a single test file node --test --import tsx path/to/file.test.ts ``` -------------------------------- ### Basic AsidePanel Usage Source: https://github.com/binaricat/netcatty/blob/main/AGENTS.md Demonstrates the basic structure and common props for the AsidePanel component, including title, subtitle, back button, and actions. ```tsx Duplicate Delete } > {/* Your scrollable content here */} ``` -------------------------------- ### Execute Command with Default Session Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/exec.md Use this when a connected default target session is available. Ensure to include both session and chat-session IDs. ```bash exec --session --json --chat-session -- ``` -------------------------------- ### List a Directory via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to list the contents of a remote directory. Ensure both session IDs are provided. ```bash sftp list --session --remote-path --json --chat-session ``` -------------------------------- ### Upload a Local File via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to upload an existing local file to a remote path. Ensure all required session and path arguments are present. ```bash sftp upload --session --local-path --remote-path --json --chat-session ``` -------------------------------- ### Write a Small Text File via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to write a small text file with known content to a remote path. Ensure session IDs are included. ```bash sftp write --session --remote-path --content --json --chat-session ``` -------------------------------- ### Download a Remote File via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to download a remote file to a specified local path. Both session IDs and local/remote paths must be provided. ```bash sftp download --session --remote-path --local-path --json --chat-session ``` -------------------------------- ### Import Aside Panel Components Source: https://github.com/binaricat/netcatty/blob/main/AGENTS.md Import core components for building unified aside panels in the UI. These components are part of the reusable design system. ```tsx import { AsidePanel, AsidePanelHeader, AsidePanelContent, AsidePanelFooter, AsideActionMenu, AsideActionMenuItem } from "./ui/aside-panel"; ``` -------------------------------- ### Netcatty Theme and Accent Color Management Source: https://github.com/binaricat/netcatty/blob/main/index.html JavaScript code that initializes the Netcatty theme, accent color, and UI language based on local storage settings. It resolves the 'system' theme preference and applies custom accent colors if specified. ```javascript (function () { try { var theme = localStorage.getItem('netcatty_theme_v1'); var accentMode = localStorage.getItem('netcatty_accent_mode_v1'); var accentColor = localStorage.getItem('netcatty_color_v1'); var lang = localStorage.getItem('netcatty_ui_language_v1'); var root = document.documentElement; // Resolve 'system' (or absent — default is 'system') via OS preference var resolved = theme; if (!theme || theme === 'system') { resolved = (window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches) ? 'dark' : 'light'; } if (resolved === 'dark' || resolved === 'light') { root.classList.remove('light', 'dark'); root.classList.add(resolved); } if (accentMode === 'custom' && accentColor) { root.style.setProperty('--primary', accentColor); root.style.setProperty('--accent', accentColor); root.style.setProperty('--ring', accentColor); var parts = accentColor.split(/\s+/); var lightness = parseFloat((parts[2] || '').replace('%', '')); var accentForeground = resolved === 'dark' ? '220 40% 96%' : (!isNaN(lightness) && lightness < 55 ? '0 0% 98%' : '222 47% 12%'); root.style.setProperty('--accent-foreground', accentForeground); root.style.setProperty('--primary-foreground', accentForeground); } if (lang) root.lang = lang; } catch (e) { // ignore } })(); ``` -------------------------------- ### Netcatty Contribution Workflow Source: https://github.com/binaricat/netcatty/blob/main/README.md Standard Git workflow for contributing to the Netcatty project. Includes forking, branching, committing, and opening a pull request. ```bash git checkout -b feature/amazing-feature git commit -m 'Add some amazing feature' git push origin feature/amazing-feature ``` -------------------------------- ### Read a File via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to read the content of a remote file. Both session IDs are required. ```bash sftp read --session --remote-path --json --chat-session ``` -------------------------------- ### Netcatty CSS Styles Source: https://github.com/binaricat/netcatty/blob/main/index.html Global CSS styles for Netcatty, including font definitions, color themes (light and dark), scrollbar styling, and splash screen animations. These styles define the visual appearance and user interface elements of the application. ```css /* Load extended Unicode ranges for terminal box drawing characters */ @font-face { font-family: 'JetBrains Mono Extended'; src: local('JetBrains Mono'), local('JetBrainsMono-Regular'); unicode-range: U+2500-257F, U+2580-259F, U+25A0-25FF, U+2700-27BF; } :root { --background: 216 33% 96%; --foreground: 222 47% 12%; --card: 0 0% 100%; --card-foreground: 222 47% 12%; --popover: 0 0% 100%; --popover-foreground: 222 47% 12%; --primary: 208 100% 50%; --primary-foreground: 0 0% 100%; --secondary: 220 16% 90%; --secondary-foreground: 222 47% 12%; --muted: 220 16% 90%; --muted-foreground: 220 10% 45%; --accent: var(--primary); --accent-foreground: 222 47% 12%; --destructive: 0 70% 50%; --destructive-foreground: 0 0% 100%; --border: 220 16% 82%; --input: 220 16% 82%; --ring: 208 100% 50%; --radius: 0.65rem; } .dark { --background: 220 28% 8%; --foreground: 210 40% 95%; --card: 220 22% 12%; --card-foreground: 210 40% 95%; --popover: 220 22% 12%; --popover-foreground: 210 40% 95%; --primary: 200 100% 61%; --primary-foreground: 220 40% 96%; --secondary: 220 16% 16%; --secondary-foreground: 210 40% 90%; --muted: 220 16% 16%; --muted-foreground: 220 10% 70%; --accent: var(--primary); --accent-foreground: 220 40% 96%; --destructive: 0 70% 50%; --destructive-foreground: 210 40% 96%; --border: 220 22% 18%; --input: 220 22% 18%; --ring: 200 100% 61%; --radius: 0.65rem; } body { font-family: 'Space Grotesk', system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; margin: 0; background: hsl(var(--background)); color: hsl(var(--foreground)); } /* Global Modern Scrollbar */ ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-track { background: transparent; } ::-webkit-scrollbar-thumb { background: hsl(var(--muted-foreground) / 0.3); border-radius: 99px; border: 3px solid transparent; background-clip: content-box; } ::-webkit-scrollbar-thumb:hover { background: hsl(var(--muted-foreground) / 0.5); background-clip: content-box; } ::-webkit-scrollbar-corner { background: transparent; } /* Utility to hide scrollbar */ .scrollbar-hide::-webkit-scrollbar { display: none; } .scrollbar-hide { -ms-overflow-style: none; scrollbar-width: none; } /* Splash screen styles */ .splash-screen { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: hsl(var(--background)); z-index: 9999; transition: opacity 0.2s ease-out; } .splash-screen.fade-out { opacity: 0; pointer-events: none; } .splash-content { display: flex; flex-direction: column; align-items: center; gap: 24px; } .splash-logo { width: 64px; height: 64px; border-radius: 14px; } .splash-spinner { width: 24px; height: 24px; border: 2px solid hsl(var(--muted)); border-top-color: hsl(var(--primary)); border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } ``` -------------------------------- ### Lint Code Source: https://github.com/binaricat/netcatty/blob/main/CLAUDE.md Runs the code linter to check for style and potential errors. Use `lint:fix` to automatically correct issues. ```bash # Lint npm run lint npm run lint:fix ``` -------------------------------- ### Re-enable Execution for a Chat Scope Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/control-commands.md Resumes execution for a chat session that was previously cancelled. This unblocks subsequent 'exec' calls. ```bash resume --chat-session --json ``` -------------------------------- ### Delete a Remote Path via SFTP Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/sftp.md Use this command to delete a file or directory on the remote host. Session IDs and the remote path are mandatory. ```bash sftp delete --session --remote-path --json --chat-session ``` -------------------------------- ### MIT License Text Source: https://github.com/binaricat/netcatty/blob/main/public/ai/providers/NOTICE.md The MIT License text as provided by the lobehub/lobe-icons repository. This license applies to certain SVG icons included in this directory. ```plaintext MIT License Copyright (c) 2023 LobeHub Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. ``` -------------------------------- ### Poll a Long-Running Job Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/exec.md Periodically check the status and output of a running job. Use the `--offset` parameter to retrieve new output since the last poll. ```bash job-poll --job --chat-session --offset --json ``` -------------------------------- ### Stop a Long-Running Job Source: https://github.com/binaricat/netcatty/blob/main/skills/netcatty-tool-cli/references/exec.md Terminate a job that is no longer needed or has completed its task. This command is used when the user requests to stop the job. ```bash job-stop --job --chat-session --json ``` === COMPLETE CONTENT === This response contains all available snippets from this library. No additional content exists. Do not make further requests.