{"id":44505841,"url":"https://github.com/mannixhu/claude-session-switch","last_synced_at":"2026-03-12T11:10:20.136Z","repository":{"id":337608351,"uuid":"1154168269","full_name":"MannixHu/claude-session-switch","owner":"MannixHu","description":"Desktop Claude Code session switcher with project-based session management, resume support, and embedded terminal.","archived":false,"fork":false,"pushed_at":"2026-02-10T14:54:36.000Z","size":28330,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-10T16:10:41.943Z","etag":null,"topics":["claude-cli","claude-code","macos","session-manager","session-switcher","tauri","terminal","tmux","xtermjs"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/MannixHu.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-02-10T04:47:18.000Z","updated_at":"2026-02-10T14:54:48.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/MannixHu/claude-session-switch","commit_stats":null,"previous_names":["mannixhu/claude-session-switch"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/MannixHu/claude-session-switch","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MannixHu%2Fclaude-session-switch","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MannixHu%2Fclaude-session-switch/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MannixHu%2Fclaude-session-switch/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MannixHu%2Fclaude-session-switch/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MannixHu","download_url":"https://codeload.github.com/MannixHu/claude-session-switch/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MannixHu%2Fclaude-session-switch/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29401053,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-13T06:24:03.484Z","status":"ssl_error","status_checked_at":"2026-02-13T06:23:12.830Z","response_time":78,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["claude-cli","claude-code","macos","session-manager","session-switcher","tauri","terminal","tmux","xtermjs"],"created_at":"2026-02-13T10:01:34.682Z","updated_at":"2026-02-13T10:01:40.342Z","avatar_url":"https://github.com/MannixHu.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Claude Session Switch\n\n\u003e A lightweight macOS desktop app for Claude Code / Claude CLI session switching.  \n\u003e Built with **Tauri + Rust + React + xterm.js**, with project grouping, session resume, and embedded terminal workflows.\n\nEnglish (current) | [中文](./README.md)\n\n---\n\n## Overview\n\n`Claude Session Switch` is not trying to replace your CLI workflow.\nIt focuses on making session management visual, recoverable, and automation-friendly:\n\n- Organize projects and sessions with a clear UI hierarchy\n- Execute real work in embedded/native terminal flows\n- Keep behavior config-driven so both humans and AI can manage it\n- UI layout and interaction patterns are inspired by the Codex app (desktop), adapted for session-heavy workflows\n\n---\n\n## Design philosophy\n\nThis app is not trying to become a heavier IDE.\nIt is designed as a **lighter, calmer, terminal-first** workspace for session-heavy workflows:\n\n- **Immersive by default**: restrained UI with clear hierarchy, avoiding visual noise\n- **Low interruption**: non-essential signals stay subtle so focus remains on active work\n- **Terminal-centered**: CLI stays the execution core; GUI focuses on organization and switching\n- **Session management first**: quickly locate projects, switch sessions, and restore context\n- **Config-driven behavior**: settings live in files for personal tuning and AI-assisted automation\n\nIn short: **keep native CLI flow, remove session-management friction.**\n\n---\n\n## Why this exists\n\nCommon pain points in daily Claude CLI workflows:\n\n- **Too many projects/sessions, hard to navigate in pure terminal**\n- **tmux is powerful but has a higher cognitive overhead**\n- **Heavy GUI tools can feel slow and over-engineered**\n\nThis project intentionally splits responsibilities:\n\n- GUI handles structure, discoverability, and quick context switches\n- CLI handles execution speed, ecosystem compatibility, and continuity\n\nIn short: **keep CLI performance, upgrade session management UX.**\n\n---\n\n## Screenshots (Expanded/Collapsed + Light/Dark)\n\n\u003e The screenshots below are captured from the current code version (real local app runtime).\n\n| Light Theme | Dark Theme |\n| --- | --- |\n| Expanded sidebar  ![Expanded Light](./docs/screenshots/expanded-light.png) | Expanded sidebar  ![Expanded Dark](./docs/screenshots/expanded-dark.png) |\n| Collapsed sidebar  ![Collapsed Light](./docs/screenshots/collapsed-light.png) | Collapsed sidebar  ![Collapsed Dark](./docs/screenshots/collapsed-dark.png) |\n\n---\n\n## Feature highlights\n\n### 1) Project and session management\n\n- Project/session tree in sidebar (expand/collapse, quick navigation)\n- Session rename/stop/delete actions\n- Current session title in top bar with `...` action dropdown\n\n### 2) Claude session resume\n\n- Embedded terminal launch supports `claude --resume \u003csession_id\u003e`\n- Prefer `tmux` session reuse when available, fallback gracefully otherwise\n- Configurable Claude startup args (optional default `--dangerously-skip-permissions`)\n\n### 3) Embedded terminal UX\n\n- Powered by `xterm.js` + `portable-pty`\n- Supports output streaming, resize, and external link opening\n- Two-column layout polish: tighter left sidebar gutter, extra left padding in terminal for better readability\n- Ongoing tuning for smoother scrolling and interaction\n\n\u003e Current version note:\n\u003e\n\u003e - \"Claude completion system notifications\" are temporarily disabled\n\u003e - \"PTY-output-based running/loading indicator\" is temporarily disabled\n\u003e\n\u003e This is intentional to prioritize correctness and stability first; these capabilities may return once the detection model is more reliable.\n\n### 4) Config-driven (AI-friendly)\n\n- Settings persisted to `preferences.json`\n- Theme/language/layout/window size/integrations/session restore are configurable\n- Easy to extend via “config-as-interface” automation\n\n### 5) macOS menu integration\n\nApp menu includes:\n\n- `Settings…`\n- `Open Config File` (open config in system default app)\n- `Reload Config` (hot reload latest config into current UI)\n\n---\n\n## Architecture\n\n### Frontend\n\n- React 18 + TypeScript\n- xterm.js\n- Tauri API (IPC / Window / Event)\n\n### Backend\n\n- Rust + Tauri 2\n- portable-pty (PTY lifecycle)\n- JSON file persistence for projects/sessions/settings\n\n### Data files\n\n- `projects.json`\n- `sessions.json`\n- `preferences.json`\n\nDefault macOS data directory:\n\n`~/Library/Application Support/CloudCodeSessionManager/`\n\n---\n\n## Config keys (brief)\n\nAll app settings are stored in `preferences.json`. Use `Open Config File` from the app menu to edit it.\n\nCommonly used keys:\n\n- `appearance.theme_preference`: theme mode (`light | dark | system`)\n- `appearance.language`: UI language (`zh-CN | en-US`)\n- `appearance.theme_palettes`: app + terminal color palettes\n- `claude.use_custom_startup_args` / `claude.custom_startup_args`: Claude startup args\n- `integrations.default_external_terminal` / `integrations.default_external_editor`: external tools\n- `ui.sidebar_collapsed` / `ui.layout` / `ui.window`: sidebar/layout/window sizing\n- `sessions.restore_last_opened_session` / `sessions.last_opened`: startup restore behavior\n\nAfter editing, click `Reload Config` in the app menu to hot-reload without restarting.\n\n---\n\n\n## Quick start\n\n### Prerequisites\n\n- Node.js 18+\n- Rust 1.70+\n- Recommended: `claude` CLI installed\n- Optional: `tmux` for stronger resume behavior\n\n### Run locally (pnpm recommended)\n\n```bash\ncorepack enable pnpm\npnpm install\npnpm run dev\n```\n\n### Build\n\n```bash\npnpm run build\n```\n\n\u003e Compatibility note: npm scripts are still kept, so `npm run dev` / `npm run build` continue to work.\n\n---\n\n## CI and release\n\n### CI (`.github/workflows/build.yml`)\n\nOn `main/develop` pushes and pull requests:\n\n- `pnpm install --frozen-lockfile`\n- frontend build\n- Rust `cargo check`\n\n### Release (`.github/workflows/release.yml`)\n\nOn `v*` tags:\n\n- build and publish macOS binaries for:\n  - `arm64`\n  - `x64` (Intel)\n- auto-generate release notes and `SHA256SUMS`\n- release notes are generated from commits/PRs between the previous release and current tag (`generate_release_notes: true`)\n- `pnpm` version is sourced only from `package.json` `packageManager` to avoid Action/project mismatch\n\n---\n\n## Project layout (brief)\n\n```text\nsrc/                 # React frontend\nsrc-tauri/src/       # Rust backend\n  commands/          # Tauri command entrypoints\n  services/          # Domain services (settings/project/session/pty/storage)\n  models/            # Data models\n```\n\n---\n\n## Roadmap (optional)\n\n- Session search / tags / pin\n- More settings (font, keybindings, terminal fine-grained options)\n- Better settings schema migration visibility\n- Diagnostics export and self-check tooling\n\n---\n\n## License\n\nReleased under the [MIT License](./LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmannixhu%2Fclaude-session-switch","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmannixhu%2Fclaude-session-switch","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmannixhu%2Fclaude-session-switch/lists"}