feat(server-mode): native-like folder browser, a developer kept to their own folder, no password minimum
- Folder browser (the Browse fallback for a remote browser): back/forward/up, a clickable breadcrumb that becomes a path field (Ctrl+L), Places (Home, the user's workspaces, recent picks), a filter, Name/Modified columns, Show hidden and New folder. A click selects; a double-click or Enter opens a folder or picks a file; Backspace goes up; typing jumps to a name. - GET /api/lanes/browse: `hidden=1` (never the dot entries at the top of a non-admin's own folder), each entry's `mtime`, the answer's `home`. - POST /api/lanes/browse/mkdir: one plain folder name inside an existing folder; a non-admin only in their own folder, none in server mode without one; under S3 a member's folder is made as the member. - scope.ownFolder falls back to server.conf's USERS_ROOT under S3, so a settings file without AGENTHUB_USERS_ROOT no longer opens the host's home to every developer. - Passwords: any non-empty password is accepted (no 8-character minimum). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
+11
-3
@@ -235,9 +235,17 @@ back on ANY of those to the in-app browser `GET /api/lanes/browse?path=<abs>`.
|
||||
A file field asks it with `files=1`: entries then include the folder's files
|
||||
(`file: true`, listed after the folders), and `path` opens the way the native
|
||||
picker's `start` does (`~` expanded, a file's folder, home when missing) —
|
||||
a click on a file picks it. In server mode with
|
||||
`AGENTHUB_USERS_ROOT` set, a developer's browser opens on their own folder
|
||||
(`parent: null` there) and any path whose real path leaves it is `403 EFOLDER`.
|
||||
a double-click on a file picks it. `hidden=1` lists dot entries too (never
|
||||
those at the top of a non-admin's own folder), every entry carries its `mtime`
|
||||
(ms) and the answer its `home` (the browser's Home place). In server mode with
|
||||
`AGENTHUB_USERS_ROOT` set (under S3, else server.conf's `USERS_ROOT`), a
|
||||
developer's browser opens on their own folder (`parent: null` there) and any
|
||||
path whose real path leaves it is `403 EFOLDER`. The browser's **New folder**
|
||||
is `POST /api/lanes/browse/mkdir` (`{parent, name}` → `201 {path}`): one plain
|
||||
folder name inside an existing folder, `400 EBADNAME`/`ENOTFOUND`,
|
||||
`409 EEXISTS`; a non-admin only inside their own folder, and in server mode
|
||||
not at all without one (`403 EFOLDER`); a member's folder is made as the
|
||||
member (S3).
|
||||
|
||||
#### Update a workspace
|
||||
|
||||
|
||||
Reference in New Issue
Block a user