Add plugin system, Automations module, and the 3D Texturing plugin #31
Loading…
Reference in a new issue
No description provided.
Delete branch "texturing-plugin"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Brings Packi's texture-tooling functionality into Garnet as its first plugin, and builds the general plugin plumbing it hooks into. The goal: a Garnet user has little reason to reach for standalone Packi.
Plugin system (compiled-in + registry)
First-party plugins compile into the single binary behind a real boundary: a frontend contribution registry where plugins self-register at startup, descriptive
manifest.jsonmirrors inplugins/, and per-plugin enable/disable inAppSettings.enabled_plugins. The Plugins page is now a real manager. Dynamic loading (cdylib/sidecar) stays deferred — it only matters for an out-of-scope third-party story.Workspace + Workflow model
A Workspace is a user-created entity with a
type; a plugin contributes a Workflow — a specialized workspace-interior UI bound to a type. The baselibrarytype is a named, optionally-filtered view. A newworkspacestable (migration v7) + commands back the sidebar list, New Workspace dialog (type picker), and a right-click → Settings dialog. Workflows can opt into a working folder + file filters (persisted on the workspace).Automations module (base)
Garnet's version of Packi's Batch: a non-destructive pipeline (Convert / Resize / Rename) with a rayon-parallel runner, progress in the global footer, and reusable presets. Plugins extend the step palette through the same registry mechanism the built-in
coreplugin uses.3D Texturing plugin
Ported from Packi and rendered as a workspace Workflow with a Packi-style sidebar (module list + INPUT browser + OUTPUT export dir):
RoomEnvironment(no bundled HDRIs); the 3D panel + three.js lazy-load so the entry bundle stays leanThe working folder feeds the shared file UI: drop zones pre-target their picker to it, INPUT rows drag into any slot, and exports default to the OUTPUT directory.
Backend
New
texturing/module (channel pack, normal map, presets) and a baseimage_io.rs(EXR/TGA-capable, reusable); the editor's I/O now routes through it.exr+ thetgaimage feature added.Notes
Quality: clippy
-D warnings, Biome,tsc, and 114 Rust tests all pass.