Stabilize backend foundation and clarify boundaries#686
Open
therobbiedavis wants to merge 20 commits into
Open
Stabilize backend foundation and clarify boundaries#686therobbiedavis wants to merge 20 commits into
therobbiedavis wants to merge 20 commits into
Conversation
Enable deterministic NuGet restores for backend projects by turning on package lock files and CI locked restore mode. Add generated NuGet lock files so local and CI test runs resolve the same dependency graph before `dotnet test --no-restore`. Pull in the dependency updates from `chore/dependency-update`, including the Node engine update to `^24.15.0` and refreshed root/frontend npm lockfiles. Clean up frontend build warnings introduced during dependency validation by removing the auth store's dynamic router import and moving router instance access into a small shared service. Add a narrow Vite/Rolldown warning filter for known upstream `@vueuse/core` pure annotation noise. Validated with: - `dotnet restore listenarr.slnx /p:CI=true` - `dotnet test listenarr.slnx --no-restore` - `npm install` - `cd fe && npm install` - `cd fe && npm run test:unit` - `cd fe && npm run build` - `cd fe && npm run lint:check` - `git diff --check`
This was referenced Jun 12, 2026
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: a2700aa2f7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
# Conflicts: # listenarr.application/Search/SearchService.cs # tests/Features/Api/Services/SearchServiceSortingTests.cs
| using var scope = _scopeFactory.CreateScope(); | ||
| var audible = scope.ServiceProvider.GetRequiredService<AudibleService>(); | ||
|
|
||
| if (audiobook.Authors == null || !audiobook.Authors.Any()) |
| _logger.LogInformation("TryPrepareMyAnonamouseTorrentAsync called for '{Title}', IndexerId: {IndexerId}, TorrentUrl: '{TorrentUrl}'", | ||
| searchResult.Title, searchResult.IndexerId, searchResult.TorrentUrl); | ||
|
|
||
| if (searchResult.IndexerId == null) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR combines #679 and #685 into one backend foundation PR so the dependency/test-loop work and architecture-boundary cleanup can be reviewed and merged together.
The first part gets dependency restores deterministic again. Backend package lock files are committed, CI restore uses locked mode, publish runtime identifiers are covered, and the frontend dependency/build-warning cleanup from the dependency update work is included.
The second part makes the backend layer boundaries more intentional. Application now owns contracts for behavior, while infrastructure owns framework and adapter details like EF/SQLite, HTML parsing, image probing, audio tagging, Data Protection, request context access, and realtime transport wiring.
Refs #677. Supersedes #679 and #685.
Changes
Added
Changed
--no-restore.chore/dependency-update, including Node engine metadata and npm lockfile updates.listenarr.applicationand behind application interfaces.Program.cs.Fixed
Testing
dotnet build listenarr.slnx --no-restore— 0 warnings, 0 errorsdotnet test listenarr.slnx --no-build— 696 passedcd fe && npm run test:unit -- --run— 378 passed, 1 skipped test filecd fe && npm run buildcd fe && npm run lint:checkgit diff --check origin/canary...HEADNotes
This intentionally replaces the separate dependency and architecture PRs so the repo gets one coherent foundation update: first make validation deterministic, then make the backend boundaries cleaner on top of that same validated graph.