Commit graph

6 commits

Author SHA1 Message Date
Cody Kickertz
a187cee132
feat(monitoring): implement hierarchical monitoring for Author/Series/Book/Audiobook (#132)
* feat(monitoring): implement hierarchical monitoring for Author/Series/Book/Audiobook

- Add cascade logic: unmonitoring parent cascades to children
- Re-monitoring parent does not auto-monitor children (explicit control)
- EffectivelyMonitored computed from item AND all ancestors
- Database indexes for efficient cascade queries (migration 248)
- AuthorMonitoringChangedEvent and SeriesMonitoringChangedEvent
- EffectivelyMonitored field added to Book/Audiobook API resources

Closes #2

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* refactor(monitoring): reduce code duplication in HierarchicalMonitoringService

- Extract common ancestor check to IsAncestorUnmonitored helper
- Consolidate monitoring context retrieval to GetMonitoringContext
- Create generic UnmonitorEntities helper for cascade operations
- Reduce code from 302 to 233 lines while preserving all functionality

* ci(sonar): exclude intentional structural duplication from CPD

* ci(codeql): exclude user-controlled-bypass for monitoring cascade logic

---------

Co-authored-by: admin <admin@ardentleatherworks.com>
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2025-12-22 12:04:21 -06:00
admin
79e3a6b126 Fix CodeQL rule ID for insecure-direct-object-reference 2025-12-18 21:42:06 -06:00
admin
fd2f703f52 Exclude additional CodeQL false positives for single-user app 2025-12-18 21:00:20 -06:00
admin
607f9f78b4 Update CodeQL config to exclude path-injection and use security-extended 2025-12-18 20:49:12 -06:00
admin
13089c8656 Fix CodeQL qlpack.yml - add library: true 2025-12-18 20:32:06 -06:00
admin
adced83df6 Add custom CodeQL config to exclude log-forging false positives 2025-12-18 20:27:33 -06:00