{"id":45446759,"url":"https://github.com/jongwony/claudepanel.spoon","last_synced_at":"2026-04-02T14:46:23.182Z","repository":{"id":334942565,"uuid":"1143460765","full_name":"jongwony/ClaudePanel.spoon","owner":"jongwony","description":"View and manage Claude Code tasks and memory in a floating Hammerspoon window with live updates.","archived":false,"fork":false,"pushed_at":"2026-02-15T21:32:57.000Z","size":261,"stargazers_count":25,"open_issues_count":0,"forks_count":3,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-16T04:29:38.341Z","etag":null,"topics":["claude-code","hammerspoon","memory","task"],"latest_commit_sha":null,"homepage":"","language":"Lua","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/jongwony.png","metadata":{"files":{"readme":"README.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-01-27T15:58:37.000Z","updated_at":"2026-02-15T21:33:00.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/jongwony/ClaudePanel.spoon","commit_stats":null,"previous_names":["jongwony/claudetasks.spoon","jongwony/claudepanel.spoon"],"tags_count":11,"template":false,"template_full_name":null,"purl":"pkg:github/jongwony/ClaudePanel.spoon","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongwony%2FClaudePanel.spoon","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongwony%2FClaudePanel.spoon/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongwony%2FClaudePanel.spoon/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongwony%2FClaudePanel.spoon/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jongwony","download_url":"https://codeload.github.com/jongwony/ClaudePanel.spoon/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jongwony%2FClaudePanel.spoon/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29704420,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-22T03:17:42.375Z","status":"ssl_error","status_checked_at":"2026-02-22T03:17:31.622Z","response_time":110,"last_error":"SSL_read: 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-code","hammerspoon","memory","task"],"created_at":"2026-02-22T04:03:27.792Z","updated_at":"2026-02-22T04:04:14.223Z","avatar_url":"https://github.com/jongwony.png","language":"Lua","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ClaudePanel.spoon\n\nHammerspoon Spoon for viewing Claude Code tasks in a floating window.\n\n## Demo\n\n![Clipboard-20260129-135743-665](https://github.com/user-attachments/assets/fab18506-2a2a-4fcc-adfc-f30a96ff31c3)\n\n## Features\n\n- Floating task viewer with WebView UI\n- **Vim-like keyboard navigation** (j/k or ↑/↓ to move, Space to view, Enter to launch)\n- **Customizable key bindings** - configure all keyboard shortcuts\n- **Task deletion** with keyboard shortcut (⌘⌫)\n- **Task search/filtering** with real-time results\n- Auto-refresh on file changes via pathwatcher\n- Session selector with datalist autocomplete\n- Quick TaskUpdate via dialog (⌘E)\n- Launch Claude session in terminal (▶ button)\n- Task detail view with metadata display\n- Keyboard shortcuts help popup (?)\n\n## Installation\n\n### Option 1: Clone and Symlink (Recommended for development)\n\n```bash\ngit clone https://github.com/jongwony/ClaudePanel.spoon.git\nln -sf $(pwd)/ClaudePanel.spoon ~/.hammerspoon/Spoons/ClaudePanel.spoon\n```\n\n### Option 2: Direct Download\n\nDownload and extract to `~/.hammerspoon/Spoons/ClaudePanel.spoon/`\n\n## Usage\n\nAdd to your `~/.hammerspoon/init.lua`:\n\n```lua\nhs.loadSpoon(\"ClaudePanel\")\nspoon.ClaudePanel:bindHotkeys(spoon.ClaudePanel.defaultHotkeys)\nspoon.ClaudePanel:start()\n```\n\n### Default Hotkeys\n\n| Hotkey | Action |\n|--------|--------|\n| `opt+.` | Toggle task viewer |\n| `cmd+alt+T` | Show task status summary |\n\n### In-App Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `j` / `k` / `↓` / `↑` | Navigate tasks |\n| `Space` | View task detail |\n| `Enter` | Launch Claude session |\n| `⌘⌫` | Delete selected task |\n| `/` | Search mode |\n| `=` | Session input mode |\n| `Escape` | Return to navigation |\n| `?` | Show shortcuts help |\n| `⌘E` | Quick Task dialog |\n| `⌘Enter` | Create task |\n\nAll keyboard shortcuts can be customized via `bindShortcuts()`.\n\n### Custom Configuration\n\n```lua\nhs.loadSpoon(\"ClaudePanel\")\nspoon.ClaudePanel:configure({\n    width = 500,\n    height = 700,\n    margin = 30,\n    debugMode = true,\n    -- Specify paths explicitly if auto-discovery fails\n    claudePath = \"/usr/local/bin/claude\",\n    terminalApp = \"/Applications/iTerm.app/Contents/MacOS/iTerm2\",\n    shell = \"/bin/bash\",\n})\nspoon.ClaudePanel:bindHotkeys({\n    toggle = {{\"cmd\", \"shift\"}, \"t\"},\n    status = {{\"cmd\", \"alt\"}, \"t\"}\n})\n-- You can customize all in-app keyboard shortcuts\nspoon.ClaudePanel:bindShortcuts({\n    navigateDown = {modifiers = {}, keys = {'j', 'ㅓ', 'ArrowDown'}},\n    navigateUp = {modifiers = {}, keys = {'k', 'ㅏ', 'ArrowUp'}},\n    deleteTask = {modifiers = {'cmd'}, keys = {'Backspace'}},\n    openTask = {modifiers = {}, keys = {' '}},\n    launchTask = {modifiers = {}, keys = {'Enter'}},\n})\nspoon.ClaudePanel:start()\n```\n\n## API\n\n### Methods\n\n- `obj:init()` - Initialize the Spoon (called automatically)\n- `obj:start()` - Start file watching and load saved state\n- `obj:stop()` - Stop file watching and cleanup\n- `obj:show()` - Show the task viewer\n- `obj:hide()` - Hide the task viewer\n- `obj:toggle()` - Toggle visibility\n- `obj:refresh()` - Manually refresh the task list\n- `obj:setTaskListId(id)` - Set the session ID filter\n- `obj:createTask(subject)` - Create a new task via Claude CLI\n- `obj:quickTaskUpdate(prompt)` - Run quick TaskUpdate via haiku model\n- `obj:launchClaudeWithTaskList()` - Launch Claude in terminal with current session\n- `obj:launchClaudeWithCwd(sessionId, cwd)` - Launch Claude with specific working directory\n- `obj:launchClaudeWithSession(sessionId)` - Launch Claude with session env var\n- `obj:showTaskDetailWindow(subject, description, metadata)` - Show task detail popup\n- `obj:deleteTask(taskId, sessionId)` - Delete a task by ID\n- `obj:status()` - Get current status info\n- `obj:configure(options)` - Update configuration\n- `obj:bindHotkeys(mapping)` - Bind hotkeys\n\n### Configuration Options\n\n| Option | Default | Description |\n|--------|---------|-------------|\n| `width` | 420 | Window width |\n| `height` | 580 | Window height |\n| `margin` | 20 | Screen edge margin |\n| `refreshDebounce` | 0.2 | Debounce delay for file changes (seconds) |\n| `debugMode` | false | Enable debug logging |\n| `taskListId` | `$CLAUDE_CODE_TASK_LIST_ID` | Session ID filter |\n| `claudePath` | nil | Path to claude CLI (auto-discovered if nil) |\n| `terminalApp` | nil | Path to terminal app (auto-discovered if nil) |\n| `shell` | nil | Shell to use (defaults to `$SHELL` or `/bin/zsh`) |\n| `keyBindings` | (see below) | Customizable keyboard shortcuts (use `bindShortcuts()`) |\n\n## Requirements\n\n- Hammerspoon\n- Claude Code CLI (`claude` command)\n- A supported terminal app (Ghostty, iTerm2, or Terminal.app)\n\n## License\n\nMIT License - see [LICENSE](LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongwony%2Fclaudepanel.spoon","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjongwony%2Fclaudepanel.spoon","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjongwony%2Fclaudepanel.spoon/lists"}