# cossoledad/restfulseaweedfsbrowser architecture

> Architecture diagram of the GitHub repository cossoledad/restfulseaweedfsbrowser, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-28). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/cossoledad/restfulseaweedfsbrowser
- Repository: https://github.com/cossoledad/restfulseaweedfsbrowser

## Overview

SeaweedFS Browser is a PySide6 desktop client for browsing and managing files on a SeaweedFS Filer or a local filesystem. The main workflow is user navigation or file action → MainWindow creates a background task → TaskManager runs a worker → SeaweedClient performs storage I/O → task results update the directory view or open a preview. Upload and recursive-download helpers handle bounded batches; preview preparation also resolves model resources. The README documents additional UI, caching, configuration, localization, and task-history capabilities. Some subsystem links rely on README descriptions because their source was not sampled.

Main entry points: [`main.py`](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/main.py) (MainWindow), [`seaweed_browser/tasks.py`](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/tasks.py) (Business workers), [`seaweed_browser/task_runtime.py`](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_runtime.py) (Task manager), [`seaweed_browser/widgets.py`](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/widgets.py) (Browser and previews)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_ui["Desktop interface"]
  node_main["MainWindow<br/>[main.py]"]
  node_widgets["Browser and previews<br/>[widgets.py]"]
  node_task_ui["Task center<br/>[task_widgets.py]"]
  node_status["Status presenter<br/>[task_presenter.py]"]
end

subgraph group_workflow["Task workflow"]
  node_runtime["Task manager<br/>[task_runtime.py]"]
  node_models["Task models<br/>[task_models.py]"]
  node_workers["Business workers<br/>[tasks.py]"]
  node_cancel["Cancellation token<br/>[cancellation.py]"]
end

subgraph group_storage["Storage operations"]
  node_client["Storage client<br/>[client.py]"]
  node_uploads["Upload batching<br/>[uploads.py]"]
  node_downloads["Download batching<br/>[downloads.py]"]
  node_model_files["Model resources<br/>[model_files.py]"]
end

subgraph group_support["State and support"]
  node_cache["Directory cache<br/>[cache.py]"]
  node_core["Config and paths<br/>[core.py]"]
  node_i18n["Localization<br/>[i18n.py]"]
  node_qml["Model viewer QML<br/>[model_preview.qml]"]
end

node_user(("User"))
node_storage_service[("SeaweedFS or local files")]
node_model_viewer["Model preview process"]

node_user -->|"uses"| node_main
node_main -->|"shows interface"| node_widgets
node_main -->|"starts tasks"| node_runtime
node_main -->|"constructs workers"| node_workers
node_main -->|"reads and updates"| node_cache
node_main -->|"loads config"| node_core
node_main -->|"sets language"| node_i18n
node_runtime -->|"dispatches"| node_workers
node_runtime -->|"updates snapshots"| node_models
node_workers -->|"checks cancellation"| node_cancel
node_workers -->|"performs I/O"| node_client
node_workers -->|"batches uploads"| node_uploads
node_workers -->|"batches downloads"| node_downloads
node_workers -->|"resolves resources"| node_model_files
node_client -->|"reads and writes"| node_storage_service
node_main -.->|"launches preview"| node_model_viewer
node_model_viewer -.->|"renders with"| node_qml
node_main -->|"creates task center"| node_task_ui
node_task_ui -->|"reads and cancels"| node_runtime
node_status -->|"reads task state"| node_runtime
node_main -->|"updates status"| node_status
node_widgets -->|"accepts input"| node_user

click node_main "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/main.py"
click node_widgets "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/widgets.py"
click node_task_ui "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_widgets.py"
click node_status "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_presenter.py"
click node_runtime "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_runtime.py"
click node_models "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_models.py"
click node_workers "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/tasks.py"
click node_cancel "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/cancellation.py"
click node_client "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/client.py"
click node_uploads "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/uploads.py"
click node_downloads "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/downloads.py"
click node_model_files "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/model_files.py"
click node_cache "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/cache.py"
click node_core "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/core.py"
click node_i18n "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/i18n.py"
click node_qml "https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/resource/model_preview.qml"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_widgets,node_task_ui,node_status,node_user,node_model_viewer toneBlue
class node_runtime,node_models,node_workers,node_cancel,node_storage_service toneAmber
class node_client,node_uploads,node_downloads,node_model_files toneMint
class node_cache,node_core,node_i18n,node_qml toneRose
```

## Components

### Desktop interface

- [MainWindow](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/main.py): `main.py`
- [Browser and previews](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/widgets.py): `seaweed_browser/widgets.py`
- [Task center](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_widgets.py): `seaweed_browser/task_widgets.py`
- [Status presenter](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_presenter.py): `seaweed_browser/task_presenter.py`

### Task workflow

- [Task manager](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_runtime.py): `seaweed_browser/task_runtime.py`
- [Task models](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/task_models.py): `seaweed_browser/task_models.py`
- [Business workers](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/tasks.py): `seaweed_browser/tasks.py`
- [Cancellation token](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/cancellation.py): `seaweed_browser/cancellation.py`

### Storage operations

- [Storage client](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/client.py): `seaweed_browser/client.py`
- [Upload batching](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/uploads.py): `seaweed_browser/uploads.py`
- [Download batching](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/downloads.py): `seaweed_browser/downloads.py`
- [Model resources](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/model_files.py): `seaweed_browser/model_files.py`

### State and support

- [Directory cache](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/cache.py): `seaweed_browser/cache.py`
- [Config and paths](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/core.py): `seaweed_browser/core.py`
- [Localization](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/seaweed_browser/i18n.py): `seaweed_browser/i18n.py`
- [Model viewer QML](https://github.com/cossoledad/restfulseaweedfsbrowser/blob/master/resource/model_preview.qml): `resource/model_preview.qml`

### Other components

- **User**
- **SeaweedFS or local files**
- **Model preview process**

## Connections

- User → MainWindow: uses
- MainWindow → Browser and previews: shows interface
- MainWindow → Task manager: starts tasks
- MainWindow → Business workers: constructs workers
- MainWindow → Directory cache: reads and updates
- MainWindow → Config and paths: loads config
- MainWindow → Localization: sets language
- Task manager → Business workers: dispatches
- Task manager → Task models: updates snapshots
- Business workers → Cancellation token: checks cancellation
- Business workers → Storage client: performs I/O
- Business workers → Upload batching: batches uploads
- Business workers → Download batching: batches downloads
- Business workers → Model resources: resolves resources
- Storage client → SeaweedFS or local files: reads and writes
- MainWindow → Model preview process: launches preview
- Model preview process → Model viewer QML: renders with
- MainWindow → Task center: creates task center
- Task center → Task manager: reads and cancels
- Status presenter → Task manager: reads task state
- MainWindow → Status presenter: updates status
- Browser and previews → User: accepts input
