A file manager.
- TypeScript 90.7%
- JavaScript 3.4%
- Shell 3.4%
- CSS 2%
- Dockerfile 0.5%
|
All checks were successful
CI / lint (push) Successful in 29s
CI / format (push) Successful in 45s
CI / test (push) Successful in 46s
CI / knip (push) Successful in 48s
CI / typecheck (push) Successful in 50s
CI / docker (arm64, docker-arm64) (push) Successful in 5s
CI / build (push) Successful in 40s
CI / docker (amd64, docker-amd64) (push) Successful in 4s
CI / manifest (push) Successful in 2s
CI / deploy-test (push) Successful in 2s
E2E / playwright (push) Successful in 2m25s
## Summary - **Create:** Settings > Providers has a "New" action on each provider row. It replaces the list with a form built from the provider's rclone option metadata (`@tanstack/react-form`): required options first, advanced options behind a toggle, secrets masked, booleans as checkboxes, exclusive choices as selects. Any number of remotes of the same provider type can be created; only the name must be unique. - **Edit:** Settings > Remotes rows open the same form pre-filled. Name and type are fixed. Secrets are never sent to the page, and a blank secret keeps the stored one. Only changed options are sent (`config/update`). - **Navigation:** The breadcrumb shows `Providers > New <type> remote` / `Remotes > Edit <name>` and its first crumb goes back. The provider filter is kept. After creating, Settings switches to Remotes. - **Unsaved changes:** Closing Settings, switching sections or going back with unsaved values shows a "Discard unsaved changes?" alert. - **Server:** the server re-validates the name, uniqueness and required options, and refuses to overwrite an existing remote. Passwords are obscured by rclone (`obscure`). - `@filehub/rclone` gains `config/create`, `config/update` and shared option helpers (sub-provider filtering, name/option validation, update diffing) with unit tests. - The OpenSpec change `add-remote-creation` is included (proposal, spec, design, tasks). ## Not included Renaming/deleting remotes, and backends that need a browser OAuth sign-in (Drive, Dropbox, ...): `config/create` runs non-interactively, so rclone's error is shown instead. ## Testing - `pnpm typecheck`, `pnpm knip` and the rclone unit tests pass. - New e2e spec `apps/app/e2e/remotes.spec.ts` (7 tests in the settings suite pass in Chromium). The Playwright config now starts a throwaway `rclone rcd` with its own config file, so tests never touch a real rclone config. - Not run: the dialog in the dev server, Safari/mobile projects, and the file-operation e2e tests (they need the WebDAV server on 8889). Reviewed-on: #113 |
||
|---|---|---|
| .claude | ||
| .forgejo | ||
| .mise-tasks | ||
| apps | ||
| docker | ||
| install | ||
| openspec | ||
| packages | ||
| tmp | ||
| .dockerignore | ||
| .gitignore | ||
| .mcp.json | ||
| AGENTS.md | ||
| biome.json | ||
| CLAUDE.md | ||
| cliff.toml | ||
| docker-compose.prod.yml | ||
| docker-compose.test.yml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| install.sh | ||
| knip.json | ||
| LICENSE | ||
| mise.toml | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| renovate.json | ||
| todo.md | ||
| turbo.json | ||
Files
A file manager.
Caution
This is a work in progress.
Development Setup
Make sure mise is installed to get started.
Installation steps are the following:
mise install
mise run webdav
mise run dev
Documentation
Setup is documented in the docs site
(apps/docs). It is served by the app at /docs, or run it on
its own:
pnpm --filter docs dev # http://localhost:3001/docs/
License
MIT