Skip to content

Tags: codejunction/shelldeck

Tags

v0.0.14

Toggle v0.0.14's commit message
shelldeck 0.0.14

v0.0.12rc2

Toggle v0.0.12rc2's commit message
fix(standalone): windows-only version info in spec; pypi skips existi…

…ng on rerun

v0.0.11

Toggle v0.0.11's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: ? menu, Ask, plugins; v0.0.11 (#19)

* feat: ? menu, ask, plugins

- ? on empty shell prompt opens inline menu at cursor: commands, bookmarks, plugin commands, Ask
- Ask: agent's model writes one command for terminal's shell+OS, typed not run; sd ask
- ask_agent / ask_model settings
- plugins via shelldeck.plugins entry points: commands (?docker ps, sd docker ps), event handlers
- sd plugin list|enable|disable|run; reference plugin examples/shelldeck-docker
- fix: shelldeck skill frontmatter not valid YAML, agents hid skill
- fix: empty Enter left terminal marked running until next command

* fix(ask): first ? in new terminal, in-menu progress, Ctrl+I

- ignore xterm auto-replies (CPR, DA, focus, OSC) in keystroke tracking; new ConPTY made first line look edited, ? went to shell
- Ask keeps menu open: spinner, then command (Enter inserts, Shift+Enter runs), edit question to ask again, errors in place
- Ctrl+I at empty prompt opens Ask box, like Devin Desktop terminal Command
- menu placed from cursor cell, not xterm textarea (stale in new pane)
- long generated commands wrap
- decode agent output as UTF-8

* feat(plugins): Plugins page, command args, Ask uses plugins

- Plugins page (sidebar More): status, package, errors, commands with Run, events, enable/disable
- @command(usage="<container>"): ? menu fills `docker logs ` to type args, Run asks for them, CLI shows usage
- Ask sees plugin commands; model may answer `?docker logs web`, menu runs it, sd ask prints `sd docker logs web`
- plugin code runs through PluginError guard: sys.exit/any error never stops server; entry point name must match plugin
- server tells page on connect if shell at prompt (replayed screen has no prompt marks): ? after page load works
- input typed while socket connects is queued, not dropped
- typed command name ranks above Ask in ? menu
- docs/plugins.md: writing a plugin guide

* chore(release): v0.0.11

v0.0.10

Toggle v0.0.10's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
fix: restore machine picker and remotes work lost in 0.0.9; v0.0.10 (#18

)

* feat: git changes, remote systems, replay, background terminals, agent notes and task manager

- git: ±N chip on projects, Changes tab with per-file line counts and diffs
- remotes: saved ssh hosts (terminal) and rdp desktops (mstsc/xfreerdp/remmina), validated, no passwords
- replay last command (Ctrl+Alt+P, pane button, palette)
- send terminal to background (Ctrl+Alt+W, pane button); close offers background while a command runs
- sd notes for the scratchpad, live in open pages
- sd top / ps / kill for the task manager, only inside shelldeck terminals
- skill teaches notes and task manager

* feat(machines): machine picker, remote projects, add machine with connection test

- picker above New terminal: Local, ssh machines, Add machine, Manage machines
- projects, terminals and agents list follow the picked machine
- add machine dialog with Test connection (network, then key/agent login; password logins reported)
- LDAP/NTID users (CORP\jdoe, jdoe@corp.com) via ssh -l, quoted per shell; key optional
- a machine starts with a / project; folders on it are projects; terminals ssh -t and cd there

* test(remotes): windows-safe shell kind and process checks

* test(remotes): skip ssh tests on windows for now

* fix(remotes): no ssh machines on windows for now; windows-safe process test

- ssh refused on windows hosts (ssh_unsupported_on_windows), picker hidden, rdp kept
- drop cmd quoting from ssh_line
- process test spawns the base interpreter: a venv python.exe on windows is a launcher

* docs: machines are linux/macos only for now

* feat(machines): picker on every host; ssh targets linux, windows targets rdp

- undo the windows-host ssh block: windows uses its openssh client
- cmd quoting for ssh lines again
- rdp desktops listed in the picker menu
- ssh tests run on windows again

* feat(machines): test connection with a password

- password field in add machine, used once via SSH_ASKPASS, never saved or on argv
- wrong password reported as refused
- verified against a real sshd: test login, then terminal prompts and logs in

* chore(release): v0.0.10

---------

Co-authored-by: Claude <noreply@anthropic.com>

v0.0.9

Toggle v0.0.9's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(ui): loading spinners, paged searchable agent tables; v0.0.9 (#17)

v0.0.7

Toggle v0.0.7's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat: agent lifecycle, integrations and shared context (v0.0.7) (#14)

* feat: catalog herdr agent integrations

* feat: add agent lifecycle domain model

* expanded agent enhancement doc and task

* feat(agents): server-owned lifecycle, report api, waits, context store

- agent_state registry + report validation; heuristic is fallback
- POST /api/agent-reports with per-terminal token, /api/agent-status, /api/agent-wait
- context.py: tasks/state/memory/decisions/events, fts5 recall, stale, redaction, md projection
- sd agent status|wait|report, sd context|recall|memory|remember|discover|decide|task update|knowledge verify
- update task.md

* feat(skill): teach agents shared context workflow

- sd context at start, recall/remember/decide during, task update before stop
- update task.md

* docs(agents): lifecycle, report api, waits, context cli

- readme, changelog, claude.md, agent-automation.md, report schema
- update task.md

* feat(integrations): lifecycle hooks for claude, gemini, cursor, copilot, opencode

- python -m shelldeck.hook maps agent hook events to lifecycle reports
- merged, backed-up, atomic installers; only shelldeck entries touched; outdated status
- report token alone accepted from localhost only
- sd integration detect|status|install|uninstall, /api/integrations/{agent}, agents page section
- docs/agent-integrations.md; update task.md

* feat(agents): codex and claude lifecycle from their own logs

- codex rollout events -> native working/done + codex resume <id>
- claude sessions/<pid>.json busy + claude --resume <id>
- native reports expire fast so prompts fall back to screen
- update task.md

* feat(agents): resume stored agent sessions after restart

- agent_resume setting never|ask|auto (default ask)
- resumable sessions table, sd agent resume, POST /api/sessions/{id}/resume
- argv revalidated, plain words only; skips open handoffs, missing cwd/cli
- update task.md

* docs(readme): agent resume setting row

* feat(integrations): codex hooks, session hooks for qwen, qoder, droid, devin

- codex hooks.json + [features] hooks = true (herdr format)
- session-only reports store resumable session, no lifecycle claim
- resume argv for codex, copilot, cursor, devin, droid, qwen, qodercli
- install needs agent config folder; bulk install skips missing, reports each
- update task.md

* feat(integrations): kimi, mastracode, kilo, grok, antigravity

- kimi marked toml hooks block; askuserquestion -> blocked question
- mastracode flat hooks, antigravity named block, grok own file, kilo plugin
- hook accepts explicit state arg like herdr
- 15 installable agents; update task.md

* feat(integrations): letta session hook, hermes plugin

- letta default conversation resumes per agent
- hermes python plugin + plugins.enabled yaml edit, refuses unknown layouts
- 17 installable agents; update task.md

* feat(integrations): pi and omp extensions

- shared extension template, herdr event names and tui gates
- node-driven tests for opencode, kilo, pi, omp plugins
- 19 installable agents; update task.md

* feat(integrations): claude, codex, gemini, devin as supported set

- devin full lifecycle from hooks, session from sessions.db fallback
- gemini resume argv
- priority tier; others marked later/preview, out of default install
- update task.md

* feat(agents): attention queue and project rollups

- sidebar rollup needs you > working > done, text not color
- agents sorted by urgency, elapsed time, open next across projects
- done stays until terminal opened; new tabs get current states
- update task.md

* feat(agents): sd agent explain diagnostics

- deciding source, report ages, heuristic inputs, integration hint
- --file checks saved screen against question rules; never shows screen text
- update task.md

* feat(agents): prompt --wait, rename, event stream

- POST /api/agent-prompt refuses blocked agents, waits for a state after the prompt
- SSE /api/events with last-event-id; sd events subscribe
- sd agent rename; update task.md

* feat(agents): native cli flags for launch, spawn, resume

- team.launch_line: model, prompt flag, per-run hooks
- claude --settings per-run hooks file, skipped when global hook installed
- POST /api/agent-start, sd agent start; page launch server-side
- update task.md

* feat(agents): native slash commands per agent

- agent_commands: one action name -> claude/codex/gemini/devin native command
- sd agent cmd, POST /api/sessions/{id}/agent-command, command menu on agents page
- codex hooks add tool use, permission request, precompact (from codex source)
- gemini --resume confirmed from docs; devin marked unverified (devin.ai blocked)
- update task.md

* feat(context): context page

- task/state editor, memory verify/invalidate, decisions, relations, recall search
- local-only note; not polled so edits stay
- update task.md

* feat(agents): versioned detection rules with local overrides

- agent_detection/default.toml, detection.py load/match
- per-agent overrides replace/disable/add; invalid ones ignored and reported
- explain shows rule id and manifest; docs/agent-detection.md
- update task.md

* feat(agents): sd switch, message action, skill update

- sd switch checkpoints and starts another agent from sd context
- message button on agents page, refused while blocked
- skill teaches agent prompt/cmd/wait/switch
- drop claude StopFailure hook (not in claude 2.1.289)
- update task.md

* feat(context): agents extract their own facts on demand

- POST /api/sessions/{id}/extract, sd agent extract, extract facts button
- short prompt, no memory read needed (server dedups/redacts)
- sd remember takes several facts per call
- update task.md

* docs(integrations): support matrix with verification source

- tier, method, exact state, resume, verified-against per agent
- changelog links it; update task.md

* fix(agents): heuristic verdict replaces the previous one

- stale screen 'blocked' could win a timestamp tie on windows (16ms clock)
- update task.md

* docs(task): record 0.0.7rc1 release

* feat(context): deterministic capture of agent commands, tests, edits, sessions

- hooks attach finished tool call (command+ok or file), never output
- events, tests line, last error; session md per agent run on exit
- people's shell commands captured too; zero tokens
- fix: redact per value so event json can't break
- update task.md

* feat(agents): devin cli commands and hooks cross-checked from web sources

- devin slash commands expanded and verified; exec shell tool captured
- test guards devin hook events (devin rejects unknown ones)
- update task.md

* docs(task): tick ci matrix and docs items

* feat(context): smart recall via agent small models, no embeddings

- recall_agent setting, sd recall --smart, context page toggle
- claude -p haiku / gemini flash-lite / codex exec / devin -p small, query only
- keywords parsed and cached; falls back to plain search
- update task.md

* docs(task): claude verified with real cli; prepare rc2

* docs(task): record 0.0.7rc2 release

* feat(ui): declutter sidebar footer

- terminals, ai agents, context always shown; other views under a remembered More fold
- settings on its own line; context gets layers icon
- update task.md

* feat(context): human friendly context page, pick agent and model for search

- working-on summary with edit on demand, compact facts/decisions, plain-words activity
- search widens with chosen installed agent + model (cheapest default)
- sd recall --agent --model, GET /api/context/recall-agents
- update task.md

* docs(task): record 0.0.7rc3 release

* feat(context): sd init sets up .shelldeck in a project

- adds project if new, writes STATE/TASK/MEMORY/DECISIONS, AGENTS.md, .gitignore
- AGENTS.md never overwrites user edits; --task records first task; idempotent
- update task.md

* docs(readme): refresh screenshots, one actions menu per agent row

* docs(agents): restructure enhancement doc around what shipped

* chore(release): 0.0.7

---------

Co-authored-by: Claude <noreply@anthropic.com>

v0.0.6

Toggle v0.0.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
feat(share): server-run tunnel, share UI, terms consent; v0.0.6 (#12)

* feat(share): server-run tunnel, share UI, terms consent; v0.0.6

- server runs cloudflared; share lives until stopped (`sd share stop`)
- Share dialog + Sharing pill, QR, new link, allow/deny from any host browser
- terms of sharing gate first share; consent kept in <config>/share-consent
- server-side agent state, remote logins, push tokens, embed view (app groundwork)

* test(share): hint check os-independent