Skip to content

docs(build): note optional setup-deepfilter.sh prereq for local DFNR#4282

Merged
ten9876 merged 2 commits into
mainfrom
docs/dfnr-local-setup-note
Jul 19, 2026
Merged

docs(build): note optional setup-deepfilter.sh prereq for local DFNR#4282
ten9876 merged 2 commits into
mainfrom
docs/dfnr-local-setup-note

Conversation

@ten9876

@ten9876 ten9876 commented Jul 17, 2026

Copy link
Copy Markdown
Collaborator

What

Adds a short note to the Build section of AGENTS.md documenting the optional scripts/setup/setup-deepfilter.sh step that enables DFNR (DeepFilterNet3) noise reduction for local dev builds.

Why

On a clean checkout, CMake configure reports:

DFNR (DeepFilterNet3) disabled — library not found ... (run ./scripts/setup/setup-deepfilter.sh before cmake to enable)

CI already runs this setup step automatically (cached) in every build workflow — ci.yml, macos-dmg.yml, appimage.yml, windows-installer.yml — so release binaries always ship DFNR. The only gap was the local dev path, where the step was undocumented in AGENTS.md / README / CONTRIBUTING and surfaced only via the configure message. This documents it (including the Windows .ps1 variant) and clarifies NR still works without it via NR4 (libspecbleach).

Docs-only; no code or CI changes.

🤖 Generated with Claude Code

CMake gates DFNR off with "library not found" when the prebuilt
libdeepfilter isn't present. CI fetches it automatically (cached) in
every build workflow, so this trips up only local dev builds. Document
the one-time setup step (and Windows .ps1 variant) in the Build section.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@ten9876
ten9876 requested a review from a team as a code owner July 17, 2026 20:13
@NF0T

NF0T commented Jul 18, 2026

Copy link
Copy Markdown
Collaborator

Verified the factual claims directly rather than a full review pass, since there's no logic here to test -- this is docs-only:

  • scripts/setup/setup-deepfilter.sh and setup-deepfilter.ps1 both exist.
  • CMake's message matches exactly: "DFNR (DeepFilterNet3) disabled -- library not found at ${DFNR_LIB}...".
  • All four workflows named (ci.yml, macos-dmg.yml, appimage.yml, windows-installer.yml) do reference setup-deepfilter.

Everything checks out, CI is green. Nothing to request changes on.

One process note, not about this PR's content: this touches AGENTS.md, which CODEOWNERS routes specifically to @aethersdr/maintainers (overriding the broader Tier 3 default), and you're currently the sole member of that team. GitHub hard-blocks self-approval regardless of team membership, so as it stands nobody -- including us -- can satisfy that gate to merge this. Worth knowing for any future AGENTS.md-only PR you author yourself, not just this one.

@NF0T NF0T self-assigned this Jul 18, 2026

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, well-targeted docs addition — thanks @ten9876. I verified every concrete claim against the tree and they all hold up:

  • Both scripts/setup/setup-deepfilter.sh and the .ps1 Windows variant exist.
  • The quoted configure message matches CMakeLists.txt:450 verbatim, including the (run ./scripts/setup/setup-deepfilter.sh before cmake to enable) hint and the ENABLE_DFNR OFF gating right above it.
  • All four named workflows (ci.yml, macos-dmg.yml, appimage.yml, windows-installer.yml) do invoke setup-deepfilter, so the "release binaries always ship DFNR" framing is correct.
  • The NR4/libspecbleach fallback is real (CMakeLists.txt:358), so "NR still works without it via NR4" is accurate.

The note lands in the right place (Build section, right after the build block) and is appropriately scoped as an optional local-dev prereq. Clean, accurate, signed. No blockers.

Non-blocking note

  • Minor: "every build workflow" is really "every release-producing build workflow" — sanitizers.yml / build-macos-qt.yml also compile but don't run the step. Not worth a change; the four you name are the ones that matter for shipped binaries.

Happy to see this merge as-is.


🤖 aethersdr-agent · cost: $9.6422 · model: claude-opus-4-8

@K5PTB

K5PTB commented Jul 19, 2026

Copy link
Copy Markdown
Contributor

Red-Team Review — PR #4282

Adversarial review, not a behavior-preservation pass. Read AGENTS.md/CONSTITUTION.md, verified every concrete claim in the PR body against the actual tree rather than trusting it, checked CI/reviews, and refreshed both before finalizing.

Tiny, low-risk, docs-only PR. There's already a bot review (@aethersdr-agent, COMMENTED, no blockers) that independently verified the same core claims I did — not duplicating that, just noting where my pass adds something it missed.


Findings

1. [Non-blocking, but real] The PR's own stated gap ("undocumented in AGENTS.md / README / CONTRIBUTING") is only half-closed.
The PR body explicitly says: "the step was undocumented in AGENTS.md / README / CONTRIBUTING..." The diff, however, touches only AGENTS.md. I checked: README.md's "Building from Source" / "Build & Run" section (the doc AGENTS.md itself points to — "Full dependency list is in README.md") mentions NR2 (libfftw3-dev) but has zero mention of DFNR or the setup script anywhere in that section. CONTRIBUTING.md likewise still only lists HAVE_DFNR in a build-flag table, no setup-step note. Since AGENTS.md is this project's AI-agent-facing doc and README.md is the human-facing entry point, a human contributor following README will still hit the exact undocumented "DFNR disabled" surprise this PR sets out to fix.

Not a reason to block this PR — it's still a correct, net-positive addition on its own — but worth a fast follow-up mirroring the same ~9 lines into README.md's build section (and optionally CONTRIBUTING.md), consistent with how this project has synced this kind of note across files before (e.g. #4261's AGENTS.md/CONTRIBUTING.md sync).

2. [Trivial, arguable] Minor placement nit — not worth acting on. The note reads "run … once before cmake" but is textually placed after the 3-line build-command block rather than before it. The existing bot review characterized the placement as correct, and I'd call this a genuine style toss-up rather than a real usability problem. Mentioning only for completeness.

Everything else checks out. Independently re-verified: both setup-deepfilter.sh/.ps1 exist; the quoted CMake message matches CMakeLists.txt:450 verbatim; all four named workflows genuinely invoke the script (gated behind a cache-hit check, not just mentioned); ENABLE_SPECBLEACH/NR4 is a fully independent CMake option from ENABLE_DFNR, so "NR still works without it" holds.

No blocking findings

Docs-only, zero functional/behavioral risk. CI fully green (build, check-macos, check-windows, accessibility, CodeQL JS/Python — no CodeQL cpp job for a docs-only change, expected). mergeable: MERGEABLE; mergeStateStatus: BLOCKED is just the branch-protection approval gate.

Checks run

Diffed against the live tree: script existence, exact CMake message text, all 4 workflow files' actual invocation, ENABLE_SPECBLEACH/ENABLE_DFNR independence, and cross-checked README.md/CONTRIBUTING.md for the same gap the PR claims to close. Reviews/reviewThreads/CI/mergeable refreshed a final time immediately before this comment.

Review limits

None of note — small enough diff that static verification against the actual scripts/CMake/CI files is fully conclusive.

Summary: 0 blocking findings. Safe to merge as-is. One real, non-blocking gap worth a fast follow-up: the same note doesn't yet exist in README.md, where a human (non-AI-agent) contributor would actually encounter this surprise.

🤖 Generated with Claude Code

@aethersdr-agent aethersdr-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice, useful doc fix — this closes a real gap in the local dev path. I verified every claim against the tree and they all hold:

  • scripts/setup/setup-deepfilter.sh and the .ps1 variant both exist under scripts/setup/.
  • The quoted configure message matches CMakeLists.txt:450-451 verbatim, including the run ./scripts/setup/setup-deepfilter.sh before cmake to enable hint.
  • The setup step is invoked in all four named workflows (ci.yml, macos-dmg.yml, appimage.yml, windows-installer.yml), so "CI runs it automatically, release binaries ship DFNR" is accurate.
  • "NR still works via NR4 (libspecbleach)" checks out — AudioEngine.h:228 documents NR4 as the libspecbleach spectral path, and it's a separate build option from DFNR.

The note is placed correctly right above the "full dependency list is in README.md" line, and framing it as an optional local prereq (not a duplicated dependency) respects that boundary. Accurate, well-scoped, and correctly signed.

No blocking issues, no polish notes. Thanks for documenting this, @ten9876.


🤖 aethersdr-agent · cost: $1.0409 · model: claude-opus-4-8

Address review nits on the DFNR setup note:
- 'every build workflow' overstated (codeql/sanitizers/build-macos-qt build
  the app but don't run setup-deepfilter) -> 'the release-build workflows',
  which is what the 'shipped binaries include DFNR' claim actually rests on.
- Name RN2 (RNNoise) as the no-setup NR fallback instead of NR4: RN2 is
  bundled (third_party/rnnoise, own kiss_fft) and always compiled, whereas
  NR4/libspecbleach needs FFTW + LLVM (clang-cl) on Windows and can be gated off.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ten9876
ten9876 enabled auto-merge (squash) July 19, 2026 00:50
@ten9876
ten9876 merged commit f1c033c into main Jul 19, 2026
6 checks passed
@ten9876
ten9876 deleted the docs/dfnr-local-setup-note branch July 19, 2026 00:52
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.

3 participants