{"id":51625070,"url":"https://github.com/ismaelosuna7824/herdr-recent-workspaces","last_synced_at":"2026-07-13T00:02:58.968Z","repository":{"id":370623464,"uuid":"1295791782","full_name":"ismaelosuna7824/herdr-recent-workspaces","owner":"ismaelosuna7824","description":"Open Recent for Herdr — a fuzzy-filterable list of the folders you've opened as workspaces. Pick one to open or re-focus that workspace; browse the filesystem to open a new one.","archived":false,"fork":false,"pushed_at":"2026-07-09T21:43:28.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-07-09T23:14:10.573Z","etag":null,"topics":["herdr-plugin"],"latest_commit_sha":null,"homepage":null,"language":"Go","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/ismaelosuna7824.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-07-09T21:28:48.000Z","updated_at":"2026-07-09T21:48:37.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/ismaelosuna7824/herdr-recent-workspaces","commit_stats":null,"previous_names":["ismaelosuna7824/herdr-recent-workspaces"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ismaelosuna7824/herdr-recent-workspaces","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ismaelosuna7824%2Fherdr-recent-workspaces","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ismaelosuna7824%2Fherdr-recent-workspaces/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ismaelosuna7824%2Fherdr-recent-workspaces/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ismaelosuna7824%2Fherdr-recent-workspaces/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ismaelosuna7824","download_url":"https://codeload.github.com/ismaelosuna7824/herdr-recent-workspaces/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ismaelosuna7824%2Fherdr-recent-workspaces/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35405751,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-12T02:00:06.386Z","response_time":87,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["herdr-plugin"],"created_at":"2026-07-13T00:02:58.441Z","updated_at":"2026-07-13T00:02:58.963Z","avatar_url":"https://github.com/ismaelosuna7824.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Recent Workspaces — a Herdr plugin\n\n![herdr-plugin](https://img.shields.io/badge/herdr--plugin-✓-8b5cf6)\n\n**Open Recent for [Herdr](https://herdr.dev).** A fuzzy-filterable list of the\nfolders you've opened as workspaces. Pick one and it opens — or re-focuses, if\nit's already open — that workspace, right where you left off.\n\nHerdr has no \"recent folders\" memory of its own (the socket API exposes no such\nhistory), so this plugin keeps its own: it's seeded from the workspaces you have\nopen right now and grows every time you open a folder through the picker.\n\n```\nRecent Workspaces  v0.1.0\n❯ api\n\n❯ api            ~/Documents/Git/proj/api        ● open\n  web            ~/Documents/Git/proj/web        2h ago\n  infra          ~/Documents/Git/proj/infra      3d ago\n\n↑↓ move · enter open · ctrl+x forget · esc quit\n```\n\n## Keys\n\n**Recents list**\n\n| Key | Action |\n| --- | --- |\n| `↑` / `↓` (`ctrl+p` / `ctrl+n`) | move the selection |\n| type | fuzzy-filter by name or path |\n| `enter` | open (or re-focus) the selected workspace |\n| `ctrl+o` | browse the filesystem to open a folder not in the list |\n| `ctrl+x` | forget the selected entry — and close its workspace if it's `● open` |\n| `ctrl+u` | clear the filter |\n| `esc` / `ctrl+c` | close the picker |\n\n**Folder browser** (`ctrl+o`) — open something that isn't in the history yet;\nopening it adds it to the recents. It starts at `~/Documents` by default (set\n`HERDR_RW_BROWSE_ROOT` to start elsewhere) so browsing always begins from a\nstable, shallow place instead of wherever the picker was launched.\n\n| Key | Action |\n| --- | --- |\n| `↑` / `↓` | move the selection |\n| type | fuzzy-filter the current folder's subfolders |\n| `→` / `tab` | go into the highlighted folder |\n| `←` (or `backspace` on an empty filter) | go up one folder |\n| `enter` | open the highlighted subfolder as a workspace |\n| `ctrl+o` | open the folder you're currently in as a workspace |\n| `ctrl+a` | create a new folder here |\n| `ctrl+r` | rename the highlighted folder |\n| `ctrl+d` | delete the highlighted folder (and its contents) — asks to confirm |\n| `esc` | back to the recents list |\n\n## Install\n\n```sh\nherdr plugin install ismaelosuna7824/herdr-recent-workspaces\n```\n\nOn install the `[[build]]` step **downloads a prebuilt binary** for your platform\n(macOS/Linux, amd64/arm64) from the GitHub release — **no Go required**. If a\nprebuilt binary isn't available it falls back to `go build` (needs Go 1.25+). The\nbinary is self-contained — no external processes.\n\nThis repo is tagged with the `herdr-plugin` topic, so it also shows up in Herdr's\nplugin marketplace (`/plugins/`).\n\n### Local development\n\n```sh\ngit clone https://github.com/ismaelosuna7824/herdr-recent-workspaces\nherdr plugin link herdr-recent-workspaces\nherdr server reload-config\n```\n\n## Opening the picker\n\nThe plugin ships default keybindings (`prefix+o` for a split, `prefix+shift+o`\nfor a tab). If those don't fire in your setup, add an explicit binding to your\n`~/.config/herdr/config.toml` — this is the form Herdr always honors:\n\n```toml\n[[keys.command]]              # open in a split beside your work\nkey = \"prefix+o\"\ntype = \"shell\"\ncommand = \"herdr plugin action invoke open --plugin ismaelosuna.recent-workspaces\"\n\n[[keys.command]]              # …or in its own tab\nkey = \"prefix+shift+o\"\ntype = \"shell\"\ncommand = \"herdr plugin action invoke open-tab --plugin ismaelosuna.recent-workspaces\"\n```\n\nThen reload: `herdr server reload-config`. Pick keys that don't clash with your\nother bindings.\n\nYou can also open it without a keybinding:\n\n```sh\nherdr plugin action invoke open --plugin ismaelosuna.recent-workspaces\n```\n\n## How it works\n\n- **Recent list** lives in `recents.json` under the plugin's config dir\n  (`HERDR_PLUGIN_CONFIG_DIR`). Newest first, capped at 100, dead folders pruned.\n- **Currently-open workspaces** are read from Herdr's `session.json` (the only\n  place a workspace's directory is available — the socket API omits it). They're\n  folded into the list and flagged `● open`, and persisted to `recents.json` each\n  time the picker opens so they survive being closed later.\n- **Opening** shells out to the Herdr CLI: `workspace focus \u003cid\u003e` when the folder\n  is already an open workspace, otherwise `workspace create --cwd \u003cpath\u003e --focus`.\n\n\u003e **Known limitation.** An open workspace is only captured into the history the\n\u003e next time you open the picker — the plugin can't observe Herdr's native\n\u003e **Close** (the socket API fires no such event). So if you open a folder outside\n\u003e the picker and close it via Herdr's menu without opening the picker in between,\n\u003e that folder never reaches the recents. Open the picker once while it's open and\n\u003e it's remembered for good.\n\n## Development\n\n```sh\ngo test ./...\ngo build -o bin/recent-workspaces ./cmd/recent-workspaces\n```\n\n## License\n\nMIT — see [LICENSE](LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fismaelosuna7824%2Fherdr-recent-workspaces","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fismaelosuna7824%2Fherdr-recent-workspaces","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fismaelosuna7824%2Fherdr-recent-workspaces/lists"}