Fair point. I probably should have submitted it as Show HN.
I posted it more as a progress/update thread because I was mainly looking for feedback from people with heavy terminal or multi-window workflows, but I agree that the format fits Show HN better.
Cate is not trying to compete with tiling/scolling WMs. Those are better if the main problem is arranging normal OS windows.
The goal here is more project-scoped: one spatial canvas where terminals, browser previews, editors, docs, notes, agents, git/worktrees, and saved layouts live together. More like a persistent workspace for a single project than a global desktop environment.
Thanks for the pointer, I actually didn’t know Haystack before. Looks like it belongs in the prior-art / inspiration section, so I’ll add it to the README.
From a quick look, I agree there is overlap around the canvas editor idea. Cate is aiming a bit more at the broader project workspace layer: terminals, browser previews, editors, notes, agents, git/worktrees, docking/tabs/splits, and persistent layouts around a project.
> Maybe the idea of having a "canvas editor" and building it on VS Code is not that unique...
Re-reading my comment made me realize it sounded condescending, where it was actually meant to emphasize that a canvas editor is a great idea! So I am very glad that there is development is this space.
Nice, I just checked terminaldraw. Very similar core idea, but interesting that you used tldraw more directly as the canvas engine.
Cate is a bit broader in scope: Electron desktop app, persistent project workspaces, node-pty/xterm terminals, browser panels, Monaco editors, docs, git/worktrees, docked tabs/splits, and now agent panels as well.
PTYs were a fun rabbit hole. The basic idea is simple, but making terminals feel native inside a canvas is where it gets tricky: lifecycle, resize behavior, restoring sessions, shell fallback, scrollback, performance, and not breaking when panels are moved/docked/detached.
Cool to see someone else exploring the terminal + canvas direction too. I’ll take a closer look at your repo.
If you haven't already it may be worth looking at https://github.com/coder/ghostty-web which wraps libghostty in an xterm.js compatible wrapper, the focus for Ghostty has very much been the sort of things you're mentioning so it'll hopefully make a solid foundation.
reply