mirror of
https://github.com/lobehub/lobe-chat.git
synced 2026-06-14 03:30:19 +00:00
99411041b9
* ✨ feat(device): share remote-device gateway RPC between desktop and CLI Extract the desktop's remote-device gateway RPC surface into a shared `@lobechat/device-control` package and wire it into the CLI so `lh connect` serves the same git / workspace / file device RPCs as the desktop app. - local-file-shell: relocate all git operations (branches, working-tree patches, branch diff, checkout/rename/delete/pull/push/revert) from the desktop GitCtr into the shared package as pure functions - device-control (new): the `executeDeviceRpc` dispatch + workspace scan + portable file-preview / file-index defaults, with platform hooks injected - desktop: GitCtr / WorkspaceCtr / GatewayConnectionCtr become thin wrappers delegating to the shared package (local IPC path unchanged) - cli: handle `rpc_request` over the gateway via the shared dispatcher Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * ✅ test(device): cover git branch ops and device-control portable defaults - local-file-shell: real-git integration tests for branch checkout / rename / delete (+ validation), working-tree files & patches, revert, branch-diff with no remote, and push / pull / ahead-behind against a bare origin - device-control: defaultGetLocalFilePreview (text / image / accept filter / workspace containment / missing file) and defaultGetProjectFileIndex (git ls-files path + glob fallback) Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> * 🐛 fix(device): preserve directory entries in the glob project-file index The CLI `getProjectFileIndex` glob fallback used `globLocalFiles`, which returns only non-hidden file paths and no directory entries — so the Files tree builder flattened nested files to the root and dropped dot-directories. Walk with fast-glob (`dot: true`) and synthesize directory entries via the same `collectProjectDirectories` path the git branch uses, so nesting and dot-dirs (e.g. `.agents`) render correctly. Extracted a shared `buildEntries` helper. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
@lobehub/cli
LobeHub command-line interface.
Local Development
| Task | Command |
|---|---|
| Run in dev mode | bun run dev -- <command> |
| Build the CLI | bun run build |
Link lh/lobe/lobehub into your shell |
bun run cli:link |
| Remove the global link | bun run cli:unlink |
bun run buildonly generatesdist/index.js.- To make
lhavailable in your shell, runbun run cli:link. - After linking, if your shell still cannot find
lh, runrehashinzsh.
Custom Server URL
By default the CLI connects to https://app.lobehub.com. To point it at a different server (e.g. a local instance):
| Method | Command | Persistence |
|---|---|---|
| Environment variable | LOBEHUB_SERVER=http://localhost:4000 bun run dev -- <command> |
Current command only |
| Login flag | lh login --server http://localhost:4000 |
Saved to ~/.lobehub/settings.json |
Priority: LOBEHUB_SERVER env var > settings.json > default official URL.
Shell Completion
Install completion for a linked CLI
| Shell | Command |
|---|---|
zsh |
source <(lh completion zsh) |
bash |
source <(lh completion bash) |
Use completion during local development
| Shell | Command |
|---|---|
zsh |
source <(bun src/index.ts completion zsh) |
bash |
source <(bun src/index.ts completion bash) |
- Completion is context-aware. For example,
lh agent <Tab>shows agent subcommands instead of top-level commands. - If you update completion logic locally, re-run the corresponding
source <(...)command to reload it in the current shell session. - Completion only registers shell functions. It does not install the
lhbinary by itself.
Quick Check
which lh
lh --help
lh agent <TAB>