Skip to content

Canopy 0.2.1

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Jul 02:19

The collaboration release: your issue tracker, your teammates, and your own colour scheme all move inside Canopy — and everything you can see, you can open.

Team relay — work alongside other people

  • Encrypted peer-to-peer sessions. Host or join with a short code; there is no server in the middle. The code drives a SPAKE2 key exchange and every frame and file is sealed with ChaCha20-Poly1305, so the channel is safe to carry over the internet, not just a trusted LAN.
  • Local hosting works out of the box — teammates on the same network (office, VPN) join via your LAN address. Hosting to the internet needs TCP port forwarded to your machine on your router; there is no NAT traversal or hole punching yet, so a public-mode host is not reachable without that.
  • Team chat and direct messages, with history, unread badges, and native notifications for the conversation you are not looking at.
  • Review requests: send a teammate a PR and it opens in their Canopy as a native tab, not a browser round-trip.
  • File transfer with drag-and-drop, live progress, verified identity, and an integrity check on arrival.

Issues and tickets — natively viewable

  • Unified Issues panel: one status-grouped list across sources, with source pills. GitHub is on by default; Linear is opt-in.
  • Send an issue to an agent — an existing terminal or a fresh one, with a worktree and branch prepared for it.
  • Issues, commits, and branches open as native tabs. Nothing bounces you to a browser to read a diff.
  • Loose ends: every branch and worktree audited by what you would actually lose if you deleted it — dirty, unpushed, unmerged, or genuinely safe. Each row opens the real diff.
  • History opens commits as tabs; quick-open and search stop hiding dotfiles (your .env is findable again).

Appearance and settings

  • Themes: dark, light, and system, with accent colours that follow whatever the system picks.
  • A real Settings dialog — VS Code-style tabs for appearance, agents, editor, terminal, guard, and integrations — plus a Help page and a settings gear on the rail.
  • Font and cursor control for both the terminal and the editor, picked from a dropdown of what is actually installed rather than typed into a text box.
  • Tracker connections and GitHub sign-in/out live in Settings → Integrations.

Security

  • Issue bodies are sanitized. Rendered markdown from a remote tracker reached the page unsanitized, and every Tauri command is callable from page script — so an <img onerror> in an issue you opened was arbitrary command execution. Now sanitized through a single vetted path, with a CSP and hardened link handling behind it.
  • Relay join codes are unguessable. They came from a non-cryptographic hash of the clock. SPAKE2 protects a short code against offline attack only if the code itself cannot be predicted; the code and the file-transfer keys now come from the OS CSPRNG.
  • Accepting a file no longer destroys the file it replaces. The destination was truncated before any bytes arrived and deleted on failure. Transfers now land in a temp file and are renamed into place only after the hash checks out.
  • Stopping a relay session now actually retires its in-flight file listeners.

Fixes

  • Terminals stop garbling output after a tab switch. A grid measured mid-layout could be pushed to the shell, which then re-wrapped its output at the wrong width — permanently, in scrollback. Measurements are now verified before they reach the pty.
  • Terminals re-measure when fonts resolve and when the window regains focus, so a drifted grid repairs itself instead of staying broken for that terminal's life.
  • Toasts have kinds: failures stay until read, everything else clears itself.
  • Flat buttons everywhere, dialogs that wrap their text, hover actions that no longer land on top of the content they cover, and hidden actions that stop reserving empty space.
  • Dev builds run beside an installed copy instead of fighting it for the single-instance lock.

Installing

  • macOS: Canopy-macos-arm64.dmg (Apple silicon) or Canopy-macos-intel.dmg.
  • Linux: Canopy-linux-x86_64.AppImage, .deb, or .rpm.
  • Windows: Canopy-windows-x86_64-setup.exe — still unsigned, so Windows will show a SmartScreen warning. Choose More info → Run anyway.

Existing installs update themselves; the Canopy-* names above are stable aliases that always point at the latest release.

Full changelog: v0.2.0...v0.2.1