Skip to content

v2.2.0

Choose a tag to compare

@ProphetSe7en ProphetSe7en released this 24 Apr 19:58
· 402 commits to main since this release

CF Group Builder redesign, startup-pull bug fix, and a responsive topnav from the community. Collapsing what was going to ship as v2.1.2 into v2.2.0 since the builder reorganization outgrew the patch-release scope.

Fixed

  • Settings → TRaSH Guides → Pull interval "Disabled" is now honored on container startup. The scheduled-pull loop already respected the Disabled setting, but the startup-trash-pull goroutine called CloneOrPull unconditionally — so every container restart still did a full git fetch. Startup now checks cfg.PullInterval == "0" and, if the repo is already cloned, loads the existing on-disk data via a new TrashStore.LoadFromDisk() method without any git ops. First-run (no .git dir) still clones.
  • TrashStore.loadAndSwap now records pullError on failure. Pre-existing issue: when parseAll or commit-hash lookup errored, the store returned the error to its caller for logging but never updated pullError, so the Status panel kept showing a clean state on top of a stale/corrupted snapshot. Both error paths now call SetPullError.
  • Row layouts no longer collapse when Alpine :style is used with a string. Two separate rows in the Builder (Card A selected-highlight + Saved cf-groups last-row border) used the string form of :style, which replaces the entire static style attribute instead of merging. The result was display:flex being wiped — checkboxes wrapping above CF names and Edit/Delete buttons dropping to a third line on the only saved group. Both switched to the object form.

Added

  • CF Group Builder — Selected CFs card (live group preview). Full-width card at the top of the builder showing every CF currently in the group being built. Reorder via drag-and-drop in manual mode, set required / default per CF, or remove with the × — all without scrolling back to the Custom Formats list.
  • CF Group Builder — hash lock toggle in the edit banner. When editing or copying a group, a visible lock (🔒 Hash locked / 🔓 Hash tracks name) replaces the earlier save-time "keep vs regenerate" modal. Locked (default for any edit) means typo fixes and minor rewording don't invalidate the trash_id — existing profile includes, prior exports, and synced Arr profiles stay valid. User's explicit unlock choice is preserved across save.
  • CF Group Builder — copy an upstream TRaSH cf-group into the local builder. A collapsed "TRaSH {app} cf-groups" section above the builder form lists every upstream group with an Edit button that seeds the form and saves as a NEW local cf-group under /config/custom/json/{app}/cf-groups/. TRaSH repo clone is never written to.
  • Manual-order CF reorder via drag-and-drop. Replaces the earlier ▲/▼ arrows. Drop on another row to move, with visual feedback (40% opacity on source, blue top-shadow on target).

Changed

  • CF Group Builder is now three cards — Selected CFs (full-width, live preview) + Custom Formats (browse + add) + Quality Profiles (include). Sort-mode toggle + required/default migrate to Selected CFs where order lives.
  • Custom Formats list packs into columns on wide viewports via grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)). Short CF names pack tightly; long names truncate with .
  • Selected CFs rows use a fixed-column grid — drag-handle / # / name / required+default / ×. Consistent alignment across rows.
  • Responsive topnav + icon relocation. Tabs wrap on narrow viewports, Changelog dropdown scales / full-width on mobile. Credit @ColeSpringer via #26.

Internal

  • Refactor: TrashStore.loadAndSwap extracted from CloneOrPull. The "get commit hash + parseAll + atomic snapshot swap" portion became a private helper reused by both CloneOrPull (after git ops) and the new public LoadFromDisk (no git ops).
  • Shared confirmModal supports a secondary action button (reusable extension point, currently unused).

Full changelog