尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證A context switcher that keeps your attention in one place
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗A context switcher that tries to keep your attention in one place while you switch between projects, branches and shells all day. Every project, every branch on origin, every workspace holding one and every shell running there sit in one window, which shows what needs you and gets you there in a keystroke.
The idea is that your attention is the scarce resource, so it should go to decisions: answering a question a program asked, looking over a result, starting or finishing a branch. Finding the right window, waiting for a clone and checking whether a directory is safe to delete are the app's job. A mark means something is waiting for a decision, and nothing else is marked.
Issues, pull requests, branches and workspaces are not separate lists. A branch's row carries its pull request, its workspaces and their terminals, and an issue becomes a row when you make a workspace for it. Filtered to what is assigned to you or in flight, the list is the to-do list, and a row goes when the work is merged and cleaned up.
The shells run whatever you like. Coding agents such as Claude Code are the obvious case, and the app shows when one is working, waiting on you or done, but a dev server or a plain shell is just as at home. Around them is an ordinary window, with lists to scan and things to click.
Built with Tauri 2 and Vue 3.
parallelist is built around branches you start and finish many times a day. Each branch gets a workspace, a directory of its own holding it as a git worktree or a full clone, so several programs can work on the same project at once without changing each other's files. Some branches need careful review and a trail of comments for whoever reads the history later. Others are a way to build several things side by side while you iterate, and are merged and removed within the hour. Both kinds need quick ends: a new workspace with its dev app running in seconds, and gone in seconds once the branch is done. If setting one up were slow, you would skip it and work in a directory that is already open. If removing one felt risky, it would stay on disk.
⌘N), type a branch name or pick one of
the project's open issues, which names the branch and the directory. The
workspace is made in the background (a
worktree, or a clone sharing the main workspace's objects when the branch
already has a worktree, so even a large one takes seconds), its setup
steps copy env files, link dependencies or run an install, and whatever
you ticked to open it in starts when it's ready: an editor, a dev server,
a program in its terminal. Double-clicking a branch with no workspace
makes one as the dialog would with nothing changed, and opens its
terminal once it is set up.⌘P jumps to any branch of any project, with what's waiting first.
⌘↵ there goes into the branch's shell, as double-clicking it does.⌘↵ goes to the one that has waited longest.gh../run.sh # dev build, reloads as you edit
./run.sh --build # release .app, installed to /Applications and launched
pnpm sandbox # components in a browser, with made-up data (src/sandbox)
pnpm typecheck # vue-tsc
pnpm test # cargo test
pnpm lint # cargo clippy
pnpm dev:demo # the landing page's demo: this frontend, in a browser
Run from any branch but main, run.sh puts the branch name in the top-left
of the window, so a build from a worktree can't be mistaken for the real one.
The landing page (site/) embeds that demo: the app's own components with
made-up projects and scripted terminals behind them (demo/), built into
site/demo by pnpm build:demo. A command added to src/api.ts needs an
answer in demo/backend/index.ts.
Settings are edited in the app and stored in
~/Library/Application Support/com.jmversteeg.parallelist/config.json. A
project can commit a .parallelist.json at its root to override baseBranch,
pathTemplate, setupSteps and openTargets.
Setup steps and "Open in" targets are shell templates run through your login
shell, with {path}, {primary} (the main workspace) and {branch}
substituted and shell-quoted, plus {prUrl} in "Open in" targets:
open -na Ghostty --args --working-directory={path}
phpstorm {path}