A file manager.
  • TypeScript 90.7%
  • JavaScript 3.4%
  • Shell 3.4%
  • CSS 2%
  • Dockerfile 0.5%
Find a file
Miro Rauhala 997b12622c
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
Create and edit rclone remotes from Settings (#113)
## 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
2026-10-15 20:54:23 +00:00
.claude Initialize OpenSpec (#98) 2026-10-13 18:41:55 +00:00
.forgejo Embed rclone in the files image (#88) 2026-10-12 18:51:52 +00:00
.mise-tasks update docs 2025-01-31 22:15:15 +02:00
apps Create and edit rclone remotes from Settings (#113) 2026-10-15 20:54:23 +00:00
docker Make pnpm dev start with a TUI and a mock-only environment (#102) 2026-10-13 20:09:43 +00:00
install Release 2026.10.10 2026-10-15 20:16:24 +00:00
openspec Create and edit rclone remotes from Settings (#113) 2026-10-15 20:54:23 +00:00
packages Create and edit rclone remotes from Settings (#113) 2026-10-15 20:54:23 +00:00
tmp Update nav, remove index 2022-12-18 20:30:32 +02:00
.dockerignore Migrate app from Next.js to TanStack Start (#35) 2026-10-10 16:49:29 +00:00
.gitignore Migrate app from Next.js to TanStack Start (#35) 2026-10-10 16:49:29 +00:00
.mcp.json Add Claude settings and Playwright MCP (#73) 2026-10-12 13:35:35 +00:00
AGENTS.md Install TanStack Intent (#59) 2026-10-10 22:03:39 +00:00
biome.json Replace Prettier and ESLint with Biome (#52) 2026-10-10 21:15:59 +00:00
CLAUDE.md Fix build and lint for Next.js 16 2026-10-09 00:03:27 +03:00
cliff.toml Add tag-based release workflow (#45) 2026-10-10 19:39:20 +00:00
docker-compose.prod.yml Release 2026.10.10 2026-10-15 20:16:24 +00:00
docker-compose.test.yml Embed rclone in the files image (#88) 2026-10-12 18:51:52 +00:00
docker-compose.yml Embed rclone in the files image (#88) 2026-10-12 18:51:52 +00:00
Dockerfile Start the rclone rc API in bootstrap and show its version in About (#92) 2026-10-12 19:58:22 +00:00
install.sh Root install.sh bootstraps the latest release's installer (#85) 2026-10-12 17:24:08 +00:00
knip.json Embed rclone in the files image (#88) 2026-10-12 18:51:52 +00:00
LICENSE add license 2025-01-30 20:00:34 +02:00
mise.toml Update non-major dependencies (#100) 2026-10-13 22:17:43 +00:00
package.json Update non-major dependencies (#100) 2026-10-13 22:17:43 +00:00
pnpm-lock.yaml Create and edit rclone remotes from Settings (#113) 2026-10-15 20:54:23 +00:00
pnpm-workspace.yaml Add VitePress docs app served at /docs 2026-10-12 18:34:39 +03:00
README.md Document environment variables (#86) 2026-10-12 18:13:15 +00:00
renovate.json Add test docker compose using latest image (#76) 2026-10-12 14:29:37 +00:00
todo.md Add file operations (#74) 2026-10-11 21:09:04 +00:00
turbo.json Make pnpm dev start with a TUI and a mock-only environment (#102) 2026-10-13 20:09:43 +00:00

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