惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
DataBreaches.Net
B
Blog
博客园_首页
C
Check Point Blog
Microsoft Security Blog
Microsoft Security Blog
MyScale Blog
MyScale Blog
P
Proofpoint News Feed
Engineering at Meta
Engineering at Meta
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
B
Blog RSS Feed
M
MIT News - Artificial intelligence
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
WordPress大学
WordPress大学
宝玉的分享
宝玉的分享
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
量子位
V
V2EX
Y
Y Combinator Blog
Hugging Face - Blog
Hugging Face - Blog
Martin Fowler
Martin Fowler
Recent Announcements
Recent Announcements
I
InfoQ
博客园 - 【当耐特】

Hacker News

GitHub - SeanFDZ/macmind: Single-layer transformer in HyperTalk for the classic Macintosh Show HN: Agent-cache – Multi-tier LLM/tool/session caching for Valkey and Redis Bonsai 1-bit WebGPU - a Hugging Face Space by webml-community Moving a large-scale metrics pipeline from StatsD to OpenTelemetry / Prometheus GitHub - Nightmare-Eclipse/RedSun: The Red Sun vulnerability repository GitHub - SethPyle376/hiraeth: Local AWS emulator focused on fast integration testing, with SQS support, SQLite-backed state, and a debug-friendly web UI. GitHub - macOS26/Agent: Any AI, replaces Claude Code, Cursor, OpenClaw. Over 18 LLM providers (Claude, OpenAI, Gemini, Ollama, Zai, HF, Qwen) wired into a native Mac app that writes code, builds Xcode projects, bumps versions, manages git, automates Safari, use AppleScript, JS or Accessibility, extend Agent! w/ MCP Servers, run tasks from your iPhone via Messages. YouTube now lets you turn off Shorts I Made a Terminal Pager Burgers | マクドナルド公式 Commands — HackerNews CLI documentation ChatGPT for Excel PiCore - Raspberry Pi Port of Tiny Core Linux Live Nation illegally monopolized ticketing market, jury finds Google Broke Its Promise to Me. Now ICE Has My Data. Founding Engineer at Adaptional | Y Combinator CRISPR takes important step toward silencing Down syndrome’s extra chromosome GitHub - saffron-health/libretto: The AI toolkit for building reliable browser automations US v. Heppner (S.D.N.Y. 2026) no attorney-client privilege for AI chats [pdf] Retrofitting JIT Compilers into C Interpreters IPv6 – Google The Accursèd Alphabetical Clock Cybersecurity Looks Like Proof of Work Now Fragments: April 14 Cal.com Goes Closed Source: Why AI Security Is Forcing Our Decision | Cal.com - Scheduling Software for Online Bookings Laravel raised money and now injects ads directly into your agent When moving fast, talking is the first thing to break Too much Discussion of the XOR swap trick – Heather Cafe Introduction to Spherical Harmonics for Graphics Programmers The Grand Line
GitHub - kyle-ssg/kyde: A fast native commit and diff cod...
kyle-ssg · 2026-06-22 · via Hacker News

Kyde

build cargo-deny License: Apache-2.0

I don't know Rust.

These days I barely open my full IDE — pre-AI I was doing thousands of commits a year, and now I mostly live in its commit and diff view, one of the few things heavy enough to make me wait for a JVM to start.

So Kyde is just that. A fast native commit and diff code editor — a Git client for macOS, Linux and Windows.

Commit view — side-by-side diff with word-level highlighting and a center gutter to stage/revert hunks

~120fps scrolling a 37k-line package-lock.json — viewport virtualization + off-thread highlighting.

Goals

  • Fast. Native GPU rendering, low latency. 120fps even on large files.
  • Familiar. A tuned dark theme so it feels at home to anyone who's lived in a modern IDE.
  • Side-by-side diff with word-level highlighting and a center gutter to stage/revert hunks — git add -p, made visual.
  • Open a folder and edit with tree-sitter highlighting.

Stack

  • gpui (Apache-2.0) — Zed's native, GPU-rendered GUI framework. No web, no Electron.
  • git, shelled out. No libgit2.
  • similar (Apache-2.0) — line and word diffing.

Built from scratch on gpui, borrowing patterns from existing editors but not their code.

Theme

A hand-tuned dark palette, configurable at runtime via ~/.config/kyde/theme.json.

Features

Projects

  • Landing view when no project is open: searchable recents with branch + path, persisted to ~/.config/kyde/projects.json.
  • Open / New Project via the native folder picker.

Code — browse & edit

  • Folder tree — expandable, resizable, file-type icons, git-status colors.
  • Text editor — selection, undo/redo, copy/cut/paste, Tab/Shift-Tab indent, ⌘-backspace, line numbers, current-line highlight, IME, auto-save.
  • Find & replace⌘F find (⌘G/⇧⌘G to cycle), ⌘R replace.
  • Editor tabs that scroll and follow the active file.
  • Image preview for PNG/JPG/GIF/WebP.
  • Syntax highlighting via tree-sitter, installed on demand from a built-in Language Plugins manager. Packs: TypeScript/TSX, JavaScript, Rust, JSON, Markdown, Shell, CSS, SCSS, YAML, TOML, Python, HTML, Go, R, LaTeX — plus always-on .env and .gitignore highlighters, and a Font preview plugin. Each pack is also a Cargo feature, so a build can ship only the grammars it wants (details).
  • Code folding for grammar-backed languages.
  • Markdown preview — a live rendered pane alongside the editor.

Language Plugins manager — a native window listing every language pack (CSS, Go, HTML, JavaScript, JSON, LaTeX, Markdown, Python, R, …) with per-pack Install / Uninstall

Browse view — folder tree, editor tabs, and an opt-in language-pack install banner

Markdown support — editing a Markdown file with a live rendered preview pane on the right

Git — commit, diff, branches

  • Commit view: changed-files list + an editable side-by-side diff — base on the left, live working copy on the right, both highlighted.
  • Stage / revert per hunk from the center gutter, or whole files; commit via the message box.
  • Rollback in a native window — checkbox tree, optional deletion of added files, right-click for diff.
  • Push when ahead of upstream (status-bar button + context menu).
  • Branch switcher — searchable tree, / as folders, Recent / Local roots.
  • File management from the tree — New File, Rename, Delete (with confirm).

Rollback in a native window — checkbox tree of changes over the diff

Search & navigation

  • Go to File (⌘⇧O / ⌘P) and Find Action (⌘⇧A) fuzzy finders.
  • Find in Files (⌘⇧F) — full-text content search across the repo (git grep), jump straight to a match.
  • Scratch files — throwaway buffers under a "Scratches" folder.
  • Breadcrumbs in the status bar.

Find in Files — full-text content search across the repo, results listed with file and line for the query “kyde”

Look & feel

  • Islands layout — rounded panels, draggable dividers, activity rail, native title bar (double-click to zoom), status bar.
  • Native menu bar — Settings, FPS monitor toggle, Quit.
  • App icon from the bundled logo.

Keymap & configuration

  • WebStorm / VSCode presets with per-action overrides in ~/.config/kyde/keymap.json.
  • Onboarding keymap picker on first launch, reopenable via Settings.
  • Install shell command — optionally symlinks ky into ~/.local/bin. No shell-rc editing, no sudo.

Install

Grab the latest build for your platform from the Releases page.

macOS — download kyde-macos.zip, unzip, and drag Kyde.app to /Applications. The app isn't code-signed yet, so the first launch is blocked by Gatekeeper — right-click it and choose Open (once), or clear the quarantine flag:

xattr -dr com.apple.quarantine /Applications/Kyde.app

Linux — download kyde-linux.AppImage, make it executable, and run it:

chmod +x kyde-linux.AppImage
./kyde-linux.AppImage

Windows — download kyde-windows.zip, unzip, and run kyde.exe.

Or build from source — see Build. On macOS, ./scripts/bundle-macos.sh produces dist/Kyde.app you can drag to /Applications.

Usage

Launch with no arguments for the Projects view, or point it at a repo:

cargo run -- /path/to/repo

First-run setup offers to install a ky shell command (a symlink into ~/.local/bin — no shell-rc editing, no sudo); leave it ticked and you can open Kyde from any terminal:

ky                 # Projects view
ky /path/to/repo   # open a repo directly

Default shortcuts (WebStorm → VSCode):

  • Go to File: ⌘⇧O⌘P
  • Find Action: ⌘⇧A
  • Find / Replace in file: ⌘F / ⌘R
  • Save: ⌘S
  • Commit: ⌘K⌘⏎
  • Commit view: ⌘9⌃⇧G
  • Browse view: ⌘1⌘⇧E
  • New Scratch: ⌘⇧N
  • Settings: ⌘,

Build

Needs Rust 1.96+ and (on macOS) Apple's Metal Toolchain, which gpui uses to compile its shaders — if a clean machine errors with "missing Metal Toolchain", run xcodebuild -downloadComponent MetalToolchain.

cargo build --release          # full — every language grammar baked in (default)
cargo test                     # logic, perf guards, and headless-gpui smoke tests

Each language pack is a Cargo feature, so unused grammars can be dropped from the binary entirely (smaller image + resident RAM):

cargo build --release --no-default-features --features rust,json,toml

Performance

Large files stay smooth via viewport virtualization (only on-screen rows are shaped each frame) and async highlighting (big files open instantly as plain text, then highlight off-thread). A 37k-line package-lock.json scrolls at ~120fps.

On-screen FPS monitor reading 127fps while scrolling a 37k-line package-lock.json

Guarded by perf_* time-budget tests, headless-gpui smoke tests (render every screen, fail on any panic), and a toggleable on-screen FPS monitor.

Known limitations / next

  • Prebuilt releases are macOS-only. I develop on macOS and wouldn't actively test Linux/Windows, so I only ship a signed + notarized macOS build rather than binaries I can't stand behind. The code itself is cross-platform — gpui runs on all three, and Linux/Windows packaging already exists in scripts/ (just unwired from the release). Re-enabling them is a good first issue for a contributor who runs those platforms. Until then, Linux/Windows users can cargo build --release.
  • No soft-wrap or caret-follow scrolling yet. The editor uses a flat String; a rope-based buffer comes later for very large edits.
  • File watching currently refreshes on focus only. Live updates will likely use notify.

Contributing

If you open a PR, please be kind — explain the idiomatic way, don't just dunk on my .clone()s. I'll read every comment and quietly Google what a lifetime is.

If the feature adds a lot of bloat, it should be a plugin.