Show HN: Fresh – A new terminal editor built in Rust

Installation & Packaging Choices

  • Major debate around recommending npm for a Rust tool:
    • Some users strongly prefer cargo install and refuse to install npm.
    • Others argue npm has a far larger installed base and lowers the barrier for non-Rust developers.
  • Concerns that using a language-specific package manager (npm) to distribute a binary for another language is “weird”; suggestions to favor:
    • Direct binaries via curl/wget, GitHub releases, distro packages, Homebrew, etc.
  • Author responded by:
    • Supporting multiple options: cargo, npm/npx, GitHub binaries, and later Homebrew, AUR, .deb, .rpm.
    • Acknowledging security concerns with npm and calling the npm route an initial “hack.”

Security, Updating & Package Managers

  • Some worry about npm’s security track record, preferring direct binaries or distro repos.
  • Others note that if you’re already running a third‑party binary, npm vs curl is a marginal difference.
  • Friction around updates: many people don’t routinely run npm update/cargo update; tools like topgrade were suggested to unify updates.
  • Side thread on the desire for a cross-platform generic package manager; Nix and existing DIY approaches were mentioned.

Performance, Architecture & Huge Files

  • Fresh uses a lazy-loading piece tree; praised for instantly handling multi‑GB files with low RAM.
  • Compared to Emacs, which needed seconds and gigabytes of RAM for the same file unless using specialized packages like vlf.
  • Author chose explicit chunk management instead of mmap to avoid OS/filesystem quirks and to support remote-storage backends (e.g., S3).

Binary Size, Dependencies & Plugin Runtime

  • Strong reaction to the initially ~400 MB executable for a terminal editor.
  • Cause identified as bundling Deno/V8 for TypeScript-based extensions.
  • Stripping the binary reduced it to ~76 MB; still many (≈500+) dependencies due to Deno.
  • Tension between:
    • TypeScript as a popular, accessible extension language.
    • Lua or other runtimes as much leaner but less familiar.
  • Alternative runtimes like Bun were discussed as potential future options.

UX, Keybindings & Platform Issues

  • Many users enthusiastic about:
    • Standard/CUA-like keybindings (Ctrl+Arrows, Ctrl+Backspace/Delete).
    • Command palette, open-file UI, multi-cursor support, and overall discoverability.
  • Multiple users say it finally gives them a non-modal, keyboard-focused TUI alternative to vi-style editors.
  • Mac-specific issues:
    • Conflicts with system/terminal keymaps (fn/command remaps, Option-as-meta, selection vs terminal tab-switching).
    • Some of these are viewed as terminal/OS concerns rather than the editor’s.
  • Windows native terminal mouse support is currently buggy; WSL is reported to work better.
  • Requests for:
    • Line/column arguments in CLI (since added).
    • Diff views, improved quit dialog semantics, configurable keybindings, and GPM mouse support (added).

LSP, Tree-sitter & “VSCode-like TUI IDE” Vision

  • LSP support exists (go-to-definition, completion, inlay hints, symbol highlighting) but needs polish.
  • Tree-sitter is already used for syntax highlighting; users asked for clearer/expanded parser integration.
  • Debug Adapter Protocol was raised as a way to add integrated debugging, evoking old text-mode IDEs (Turbo Pascal/Quick).
  • Some suggest aiming at partial VSCode extension compatibility, reusing VSCode’s ecosystem; author is interested but wary:
    • VSCode API is large and web-centric.
    • Many APIs assume whole-file in-memory, clashing with Fresh’s chunked design.

Licensing Debate

  • Editor is under GPLv2; author admits it was chosen somewhat by habit.
  • Mixed feedback:
    • Some argue GPL is good for preserving user freedoms and preventing closed forks.
    • Others urge MIT/Apache-2 for maximal reuse and to avoid legal friction around reading/borrowing code.
  • Author is torn between enabling free reuse of components and preventing a fully closed clone.

AI-Assisted Development & Code Quality

  • Project heavily used Claude for code generation; author says this multiplied productivity and enabled a 3–4 week build.
  • Reactions split:
    • Some find it inspiring that a complex editor can be built quickly with AI assistance.
    • Others distrust AI-generated code, pointing to many large commits authored by AI and at least one function whose behavior doesn’t match its comment.
  • Question raised: how thoroughly the human author reviewed AI-generated code.

Positioning vs Other Editors & Overall Reception

  • Comparisons to:
    • Micro (similar CUA TUI; Lua vs TypeScript; micro is widely packaged).
    • Vim/Neovim, Emacs, Helix, Kakoune, Zed, Lapce, Microsoft’s edit, Turbo Vision-style editors.
  • Fresh is generally seen as:
    • Non-modal, TUI, VSCode-inspired UX.
    • Extremely good at huge files.
    • A promising alternative for users who dislike modal editing and complex Emacs/Vim configs.
  • Overall tone: strong enthusiasm about UX and performance, tempered by concerns over installation choices, binary size, dependency bloat, licensing, and AI-generated code.