Skip to content

Commit 8d56404

Browse files
kevinheneveldclaude
andcommitted
Merge canary (v1.0.7 -> v1.0.11) into kevin/live
Catch-up merge bringing upstream canary up to v1.0.11. Net-new from canary: System Storage available-space (Listenarrs#656), Title-folder persistence (Listenarrs#646), sort series by reading order (Listenarrs#626/Listenarrs#660), audiobooks-under-all-series + Primary-series toggle (Listenarrs#658/Listenarrs#659), dependency/vulnerability + lint-config updates (Listenarrs#636). Conflict resolutions of note (series work overlapped kevin/live's series suite): - LibraryListService: kept kevin's importedAt (Recently-Imported) AND adopted canary's series memberships, using canary's sequential shared-DbContext awaits. - SeriesCatalogService: kept kevin's richer GetSeriesCandidates/owned-book ResolveSeriesAsync; added canary's PrioritizeCatalogSeries/FindCatalogSeries. - AudiobooksView: merged kevin's narrator grouping with canary's multi-series grouping (getBookSeriesNames) + formatSeriesMemberships display. - CollectionView: adopted canary's proper series-position sort + multi-series membership matching, superseding kevin's interim "Series Order" relabel, but kept kevin's article/apostrophe-aware normalizeSeriesName for slug matching. - SeriesMonitoringServiceTests: kept both kevin's (old path, +enhancements) and canary's relocated copy (different namespaces, no collision). - Test files: unioned both sides' added cases; dropped kevin's now-superseded "Series Order" option test, adapted the default-sort test to series-position. - Fixed pre-existing unused-var lint now surfaced by canary's stricter config. Validated on the throwaway branch: 1093 backend + 501 frontend tests pass; backend + frontend build, FE lint, and type-check all clean. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2 parents 7af1265 + 52fd240 commit 8d56404

74 files changed

Lines changed: 3189 additions & 2554 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ANTHROPIC.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
# Anthropic/Claude Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Database**: `listenarr.api/config/database/listenarr.db`
9-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Development database**: `.env/development/config/database/listenarr.db`
9+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1010
- **Backend**: http://localhost:4545
1111
- **Frontend**: http://localhost:5173
1212

1313
## Critical Patterns
1414

15-
### Backend (.NET 8.0)
15+
### Backend (.NET 10.0)
1616
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after successful import
1717
2. **File Checks**: Verify `File.Exists(f.Path)` in wanted/library queries (3 locations)
1818
3. **Auth**: Transmission uses 409/session-id retry; qBittorrent uses cookies

.github/AZURE_OPENAI.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Azure OpenAI Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend for automated audiobook downloads. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend for automated audiobook downloads. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Stack**: .NET 8.0 + Vue 3 + TypeScript + Pinia + EF Core + SQLite + SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Stack**: .NET 10.0 + Vue 3 + TypeScript + Pinia + EF Core + SQLite + SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

1212
## Critical Patterns
1313

14-
### Backend (.NET 8.0)
14+
### Backend (.NET 10.0)
1515
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after successful import
1616
2. **File Checks**: Verify `File.Exists(f.Path)` for wanted status (3 locations)
1717
3. **Authentication**: Transmission (409/session-id retry), qBittorrent (cookies)

.github/BARD.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Google Bard/Gemini Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Tech**: .NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Tech**: .NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

1212
## Critical Patterns
1313

14-
### Backend (.NET 8.0)
14+
### Backend (.NET 10.0)
1515
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after import
1616
2. **File Checks**: Verify `File.Exists(f.Path)` for wanted status (3 locations)
1717
3. **Authentication**: Transmission (409/session-id retry), qBittorrent (cookies)

.github/BEDROCK.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Amazon Bedrock Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Tech**: .NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Tech**: .NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

1212
## Critical Patterns
1313

14-
### Backend (.NET 8.0)
14+
### Backend (.NET 10.0)
1515
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after import
1616
2. **File Checks**: Verify `File.Exists(f.Path)` for wanted status (3 locations)
1717
3. **Authentication**: Transmission (409/session-id retry), qBittorrent (cookies)

.github/CLAUDE_LISTENARR.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@
44
This file contains Claude-specific guidance for the Listenarr audiobook management system. For comprehensive secure coding practices, see [AGENTS.md](AGENTS.md) and [CLAUDE.md](CLAUDE.md). For complete project details, see [copilot-instructions.md](copilot-instructions.md).
55

66
## Project Summary
7-
**Listenarr** is a C# .NET 8.0 Web API backend with Vue.js 3 frontend for automated audiobook downloading and processing via torrent/NZB clients (qBittorrent, Transmission, SABnzbd, NZBGet).
7+
**Listenarr** is a C# .NET 10.0 Web API backend with Vue.js 3 frontend for automated audiobook downloading and processing via torrent/NZB clients (qBittorrent, Transmission, SABnzbd, NZBGet).
88

99
## Key Technologies
10-
- **Backend**: ASP.NET Core (.NET 8), Entity Framework Core, SQLite
10+
- **Backend**: ASP.NET Core (.NET 10), Entity Framework Core, SQLite
1111
- **Frontend**: Vue 3, TypeScript, Pinia, Vite, SignalR
1212
- **Architecture**: Clean architecture (Domain, Application, Infrastructure layers)
1313

@@ -32,8 +32,8 @@ This file contains Claude-specific guidance for the Listenarr audiobook manageme
3232

3333
## Development Workflow
3434
1. **Run from repository root**: `npm run dev` (starts both API and frontend)
35-
2. **Database**: SQLite at `listenarr.api/config/database/listenarr.db`
36-
3. **Logs**: Check `listenarr.api/config/logs/listenarr-YYYYMMDD.log` for diagnostics
35+
2. **Development database**: SQLite at `.env/development/config/database/listenarr.db`
36+
3. **Development logs**: Check `.env/development/config/logs/listenarr-YYYYMMDD.log` for diagnostics
3737
4. **Hot Reload**: Backend uses `dotnet watch`, frontend uses Vite HMR
3838

3939
## Common Issues & Solutions
@@ -52,7 +52,7 @@ This file contains Claude-specific guidance for the Listenarr audiobook manageme
5252
- **Backend**: `listenarr.api/`, `listenarr.application/`, `listenarr.domain/`, `listenarr.infrastructure/`
5353
- **Frontend**: `fe/src/`
5454
- **Tests**: `tests/`
55-
- **Config**: `listenarr.api/config/` (database, logs, cache)
55+
- **Development config**: `.env/development/config/` (database, logs, cache)
5656

5757
## When Making Changes
5858
1. Update tests when changing public APIs or DI constructors

.github/CODEOWNERS

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,8 +29,9 @@ listenarr.infrastructure/Migrations/ @listenarrs/maintainers
2929
# Application entry point and DI wiring
3030
listenarr.api/Program.cs @listenarrs/maintainers
3131

32-
# Default configuration shipped with the app
33-
listenarr.api/config/appsettings/ @listenarrs/maintainers
32+
# Configuration docs and launch profiles
33+
listenarr.api/CONFIG.md @listenarrs/maintainers
34+
listenarr.api/Properties/launchSettings.json @listenarrs/maintainers
3435

3536
# Dependency manifests — watch for supply-chain changes
3637
package.json @listenarrs/maintainers

.github/COHERE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Cohere Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Tech**: .NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Tech**: .NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

1212
## Critical Patterns
1313

14-
### Backend (.NET 8.0)
14+
### Backend (.NET 10.0)
1515
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after import
1616
2. **File Checks**: Verify `File.Exists(f.Path)` for wanted status (3 locations)
1717
3. **Authentication**: Transmission (409/session-id retry), qBittorrent (cookies)

.github/HUGGINGFACE.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
# Hugging Face Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Tech**: .NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Tech**: .NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

1212
## Critical Patterns
1313

14-
### Backend (.NET 8.0)
14+
### Backend (.NET 10.0)
1515
1. **Download Status**: Always set `Status = DownloadStatus.Moved` after import
1616
2. **File Checks**: Verify `File.Exists(f.Path)` for wanted status (3 locations)
1717
3. **Authentication**: Transmission (409/session-id retry), qBittorrent (cookies)

.github/OpenAI.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
# OpenAI Instructions for Listenarr
22

33
## Overview
4-
Listenarr is a C# .NET 8.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
4+
Listenarr is a C# .NET 10.0 audiobook management system with Vue.js 3 frontend. See [copilot-instructions.md](copilot-instructions.md) for complete details.
55

66
## Quick Start
77
- **Run**: `npm run dev` from repository root
8-
- **Tech Stack**: .NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9-
- **Database**: `listenarr.api/config/database/listenarr.db`
10-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
8+
- **Tech Stack**: .NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR
9+
- **Development database**: `.env/development/config/database/listenarr.db`
10+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
1111

12-
## Critical Backend Patterns (.NET 8.0)
12+
## Critical Backend Patterns (.NET 10.0)
1313
1. **Download Status Lifecycle**: Always set `Status = DownloadStatus.Moved` after import (8 locations in CompletedDownloadProcessor.cs)
1414
2. **File Existence Validation**: Check `File.Exists(f.Path)` in wanted queries (3 locations)
1515
3. **Download Client Auth**: Transmission uses 409/session-id retry; qBittorrent uses cookies

.github/RULES.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ This folder contains comprehensive instructions for AI assistants working with t
77
### [copilot-instructions.md](copilot-instructions.md) - **MOST COMPREHENSIVE**
88
Complete project documentation including:
99
- Full project structure and architecture
10-
- Technology stack (.NET 8.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR)
10+
- Technology stack (.NET 10.0, Vue 3, TypeScript, Pinia, EF Core, SQLite, SignalR)
1111
- Critical backend patterns (download status lifecycle, file existence validation, authentication)
1212
- Critical frontend patterns (Pinia stores, performance optimization, type safety)
1313
- API endpoints and development workflow
@@ -68,21 +68,21 @@ These files provide quick-start guidance tailored to specific AI providers, with
6868

6969
## Project Overview (Quick Reference)
7070

71-
**Listenarr** is a C# .NET 8.0 Web API backend with Vue.js 3 frontend for automated audiobook downloading and processing.
71+
**Listenarr** is a C# .NET 10.0 Web API backend with Vue.js 3 frontend for automated audiobook downloading and processing.
7272

7373
### Quick Start
7474
```bash
7575
npm run dev # Start both API and frontend from repository root
7676
```
7777

7878
### Key Technologies
79-
- **Backend**: ASP.NET Core (.NET 8), Entity Framework Core, SQLite
79+
- **Backend**: ASP.NET Core (.NET 10), Entity Framework Core, SQLite
8080
- **Frontend**: Vue 3, TypeScript, Pinia, Vite, SignalR
8181
- **Architecture**: Clean architecture (Domain, Application, Infrastructure layers)
8282

8383
### Critical Paths
84-
- **Database**: `listenarr.api/config/database/listenarr.db`
85-
- **Logs**: `listenarr.api/config/logs/listenarr-YYYYMMDD.log`
84+
- **Development database**: `.env/development/config/database/listenarr.db`
85+
- **Development logs**: `.env/development/config/logs/listenarr-YYYYMMDD.log`
8686
- **Backend**: http://localhost:4545
8787
- **Frontend**: http://localhost:5173
8888

0 commit comments

Comments
 (0)