Skip to content

feat: complete compatibility and hardening backlog - #138

Merged
thedancingdeveloper merged 5 commits into
mainfrom
issue/104-compat-harness
Sep 9, 2026
Merged

feat: complete compatibility and hardening backlog#138
thedancingdeveloper merged 5 commits into
mainfrom
issue/104-compat-harness

Conversation

@thedancingdeveloper

Copy link
Copy Markdown
Collaborator

What changed

Completes the compatibility and hardening backlog on top of the existing issue/104-compat-harness uplift.

  • WI-132: harden auth, setup, WebDAV, post-processing, archive paths, and cleanup boundaries.
  • WI-133: persist per-article outcomes and retry only missing articles, with legacy full-retry fallback.
  • WI-134: add safe TAR detection and extraction.
  • WI-135: expand SABnzbd 5.x compatibility behavior and contract coverage.
  • WI-136: add RSS age filtering and downloaded-item expiry.
  • WI-137: add configurable cleanup patterns and unwanted extensions.
  • WI-138: unify disk-full checks across temporary, output, and category roots.
  • WI-139: add stable manual and optional automatic queue sorting by remaining percentage.
  • WI-140: add bounded, timeout-aware post-processing script execution with status and file environment.
  • WI-141: add benchmark cache/connection controls and result reporting.

Validation

  • cargo fmt --all --check
  • cargo check --workspace --all-targets
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace
  • cargo test --manifest-path benchnzb/Cargo.toml --all-targets --locked
  • Frontend: 17 test files / 88 tests passed
  • Production frontend build passed; Angular reports the existing queue component style budget warning

Tracking

Vogt items WI-132 through WI-141 are in review.

This branch intentionally includes the prior harness uplift commit and targets main.

Comment thread crates/nzb-web/src/auth.rs Fixed
Comment thread crates/nzb-web/src/auth.rs Fixed
Comment thread crates/nzb-web/src/auth.rs Fixed
@thedancingdeveloper
thedancingdeveloper merged commit b61afa1 into main Sep 9, 2026
11 checks passed
thedancingdeveloper added a commit that referenced this pull request Sep 10, 2026
* chore(nzb-*): raise crate versions above crates.io floor (WI-168)

PR #138 committed the in-flight bumps to nzb-core 0.2.17, nzb-postproc
0.2.7 and nzb-web 0.4.21 — numbers crates.io already holds with the
July 2026 sync's content. The other four crates sat below their
crates.io versions. Publishing from a synced tag would collide.

Raise every nzb-* crate strictly above its crates.io maximum so the
monorepo owns version numbers and a synced publish lands on a fresh
number, keeping internal path-dependency requirements in lockstep:

  nzb-core     0.2.17 -> 0.2.18
  nzb-nntp     0.2.22 -> 0.2.24
  nzb-decode   0.1.2  -> 0.1.4
  nzb-news     0.1.12 -> 0.1.14
  nzb-dispatch 0.2.6  -> 0.2.8
  nzb-postproc 0.2.7  -> 0.2.8
  nzb-web      0.4.21 -> 0.4.22

Refresh the workspace and desktop lockfiles. No code changes;
cargo check --workspace --all-targets is clean.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TpoFnScdkRq7qxQLQZe1we

* ci(nzb-*): add crate sync tooling and a drift gate (WI-168)

The seven nzb-* crates publish to crates.io from standalone repos, kept
in sync from this monorepo by hand. The last sync was 2026-07-29; four
crates fell behind crates.io and three (nzb-core, nzb-postproc,
nzb-web) drifted by hundreds to thousands of source lines, invisibly,
because nothing gated it.

Add the missing automation, with the monorepo as the head that owns
version numbers:

- ci/nzb-crates.txt: the synced crate list, one source of truth.
- ci/tasks/sync-crate <name>: export crates/<name> at HEAD and open a
  PR on that crate's standalone repo. Never publishes, never pushes to
  the monorepo; publishing stays a post-merge tag step.
- ci/tasks/crate-drift: clone each standalone repo and fail when its
  src/ or package version differs from the monorepo, naming the fix.
- quality-schedule.yml: run crate-drift on the weekly schedule.
- docs/RELEASING.md: document the ownership and sync rule.

The drift gate will report the existing lag until the crates are
re-synced and published from a tag (the outward WI-168 step).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01TpoFnScdkRq7qxQLQZe1we

---------

Co-authored-by: thedancingdeveloper <306930456+thedancingdeveloper@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
thedancingdeveloper added a commit that referenced this pull request Sep 10, 2026
)

Sets the base version the app reports (RUSTNZB_BUILD_VERSION =
CARGO_PKG_VERSION + build ref) ahead of cutting v1.5.0-beta.1. Main is
ahead of v1.4.7 by the history_retention fix (#137) and the compat +
hardening feature backlog (#138: TAR extraction, RSS age rules,
configurable cleanup, queue sorting, post-processing script contract),
which is a minor release. Refreshes both lockfiles.


Claude-Session: https://claude.ai/code/session_01G4d3N8VRucC7WVwNw8gwfV

Co-authored-by: thedancingdeveloper <306930456+thedancingdeveloper@users.noreply.github.com>
Co-authored-by: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants