A visual, pipeline-driven file manager that turns file operations into composable, repeatable workflows.
Project description
cascade
cascade is a visual, pipeline-driven desktop file manager.
You select files, add operations in panes from left to right, and only the final pane writes to disk.
Think of it as Unix pipes with a face.
Current State
- UI: PySide6 (Qt) is the active/default frontend.
- Status: Alpha / MVP in progress.
- Core workflow already works for browsing, filtering, and writing outputs.
Project details and roadmap live in spec/design.md and spec/roadmap.md.
Quick Start
Requirements
- Python 3.13+
- uv
Install and Run
git clone <repository-url>
cd cascade
uv sync
uv run cascade
For platform notes and troubleshooting, see docs/installation.md.
How cascade works
Pipeline model:
[ Browse Files ] -> [ Filter ] -> [ Transform ] -> [ Save To ]
- Pane 1 is the filesystem browser.
- Each next pane applies one operation to the previous pane output.
- Executing a pane marks panes to the right as stale.
- Final output is written only by the final write operation.
Built-in Operations (today)
- Browser filtering: name pattern + type
rename_pattern(label in UI: Rename)image_transform(unified image operation)unarchivecreate_archivesave_to
Release Scope (Milestone 2)
This release targets a stable MVP flow:
- browse files/folders,
- chain supported operations in panes,
- execute and inspect intermediate results,
- write final output with
save_to, - restore or clear last session snapshot on startup.
Known Limitations
- Cache strategy still needs the planned metadata/content split refactor.
- Workflow/session JSON schema is currently version
1and intended for same-version app usage. - Advanced graph editing, plugins, and remote filesystems are not part of this release.
- Very large directories and heavy transforms may still require manual pacing.
Development
Setup
uv sync
Test / Lint / Typecheck
# tests
uv run pytest -q
# lint
uv run ruff check src tests
# typecheck
uv run pyright
Optional: task runner (just)
just test
just lint
just format
just typecheck
just build
Build / Publish
uv run python -m build
Upload (maintainers):
uv run twine upload dist/*
License
MIT
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file cascade_fm-0.1.0.tar.gz.
File metadata
- Download URL: cascade_fm-0.1.0.tar.gz
- Upload date:
- Size: 55.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb5a62df0798837e110515979890fa018f04190d3bcb195990ce9c399a2361fd
|
|
| MD5 |
c8c7bc14064b37620988d68348b2c5a1
|
|
| BLAKE2b-256 |
8670ce7d48abd61492243afd24d4af44739e74a07f1724653794009d36be0da7
|
File details
Details for the file cascade_fm-0.1.0-py3-none-any.whl.
File metadata
- Download URL: cascade_fm-0.1.0-py3-none-any.whl
- Upload date:
- Size: 54.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.10.7 {"installer":{"name":"uv","version":"0.10.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a85d663aba508ed978c230d3a545e1cb491795f026d367c56fbdf6d91d55b6d4
|
|
| MD5 |
6c4aa8afadbcdae8d874c88b6bbd8af6
|
|
| BLAKE2b-256 |
22891e44ae88d14ed0362caa47b91380e3497a55e32efec9327f3e2dea7a6fd5
|