62 Commits

Author SHA1 Message Date
4e0c66ea9e chore: bump version 2026-06-07 17:43:01 +02:00
f3042206a8 chore: bump version 2026-06-07 16:01:01 +02:00
fd3ec5df83 chore: bump version 2026-06-06 23:48:09 +02:00
576d9f7a7b chore: bump version 2026-06-06 23:09:47 +02:00
a05795bb35 chore: bump version 2026-06-06 22:47:56 +02:00
8bb8c6aa64 chore: bump version 2026-06-06 21:53:57 +02:00
6a934db8ac chore: bump version 2026-06-06 20:38:21 +02:00
ac5ee3bb27 chore: bump version 2026-06-06 20:08:05 +02:00
be9f2a4c0c chore: bump version 2026-06-06 19:40:21 +02:00
dc7d9ee5f7 chore: bump version 2026-06-05 22:34:09 +02:00
2876cef24b chore: bump version 2026-06-05 22:10:56 +02:00
01e4dec8d7 chore: bump version 2026-06-05 21:08:23 +02:00
84487d7571 fix: use fuzzy title matching in _resolve_key_via_search
- Add _normalize_title() to strip anime suffixes (TV, OVA, Movie, etc.)
- Add _titles_match() using SequenceMatcher for similarity (threshold 0.85)
- Replace exact string match with fuzzy match to fix skipped folders
- Add debug logging for title mismatches and multiple results
- Set LOG_LEVEL=DEBUG in docker-compose.yml
2026-06-05 20:37:06 +02:00
e02d65778f chore: bump version 2026-06-05 20:25:20 +02:00
7b8de8d988 chore: bump version 2026-06-05 20:11:56 +02:00
dbaf80e941 chore: bump version 2026-06-03 21:49:02 +02:00
a77bb371df chore: bump version 2026-06-03 21:41:30 +02:00
49cd84f3e5 chore: bump version 2026-06-02 20:59:42 +02:00
4dc5ffa19e copy version to docker file 2026-06-02 20:53:11 +02:00
1649a22418 chore: bump version 2026-06-02 20:39:18 +02:00
84b24ed79e chore: bump version 2026-06-02 20:33:01 +02:00
ed8f5cae10 chore: bump version 2026-06-01 21:38:37 +02:00
c58b42dfa5 feat(services): add key resolution for orphaned anime folders
- Add key_resolution_service.py to resolve provider keys for folders without key/data files
- Search anime provider and match folder names (case-insensitive, exact match required)
- Only save to DB if exactly one match found; otherwise skip
- Add comprehensive unit tests (28 tests)
- Integrate into scheduler_service after nfo_repair scan
- Update ARCHITECTURE.md documentation
2026-06-01 20:43:13 +02:00
76b849fc91 chore: bump version 2026-05-30 12:02:48 +02:00
a6f2399aca chore: bump version 2026-05-29 19:25:30 +02:00
5190d32665 chore: bump version 2026-05-28 22:03:52 +02:00
7ded5a6e4d chore: bump version 2026-05-27 21:41:45 +02:00
fc4e52f1a2 chore: bump version 2026-05-26 20:23:20 +02:00
50a77976d5 chore: bump version 2026-05-26 13:28:12 +02:00
6c9605e896 chore: bump version 2026-05-26 08:58:37 +02:00
a3176f5ac1 chore: bump version 2026-05-25 21:31:46 +02:00
810346bc8b chore: bump version 2026-05-24 21:17:39 +02:00
e74b602f60 Add ffmpeg for HLS stream download support
- Add ffmpeg to Dockerfile.app for container HLS support
- Configure yt-dlp with --downloader ffmpeg --hls-use-mpegts
- Add startup health check warns if ffmpeg missing
- Update DEVELOPMENT.md with ffmpeg prerequisites and troubleshooting
- Add tests for ffmpeg HLS options and health check
2026-05-23 21:18:39 +02:00
db65e28854 backup 2026-05-21 22:10:07 +02:00
11e231a4ab chore: bump version 2026-05-21 21:42:13 +02:00
a11f8c4fa0 fix(vpn): add explicit host route for health-check target
Without a /32 route in the main table, CHECK_HOST (1.1.1.1) fell through
to the VPN default route where source-address selection was defeated by
the priority-100 'from ETH0_IP' policy rule, causing pings to bypass
wg0 and be dropped by the kill switch.

Also add secondary google.com ping to distinguish IP vs DNS failures.
2026-05-21 21:41:51 +02:00
cf5a06af11 chore: bump version 2026-05-21 21:22:08 +02:00
e07f75432e backup 2026-05-21 21:21:13 +02:00
1696d5c65b chore: bump version 2026-05-21 21:04:51 +02:00
c8b386f47a chore: bump version 2026-05-20 20:00:45 +02:00
06e104db42 chore: bump version 2026-05-20 19:41:58 +02:00
d4594bd1d9 chore: bump version 2026-05-20 19:40:17 +02:00
7bcd0600d5 chore: bump version 2026-05-18 09:57:51 +02:00
a333329ae2 backup 2026-05-18 09:56:59 +02:00
a08a8f7408 backup 2026-05-17 18:57:12 +02:00
54ac5e9ab7 chore: release v1.1.4 2026-05-17 18:51:09 +02:00
c93ac3e7b8 chore: release v1.1.3 2026-05-17 18:40:37 +02:00
68c4335348 feat(vpn): add startup connectivity checks and PersistentKeepalive
Add check_vpn_connectivity() that runs once after wg0 comes up:
- Waits for handshake (up to 15s) and prints public key if missing
- Measures RX bytes before/after curl to detect server-side routing issues
- Tests DNS resolution and dumps resolv.conf on failure
- On failure prints exact server-side commands to fix (sysctl, iptables, wg)

Add PersistentKeepalive=25 to wg0.conf to keep NAT mappings alive.
2026-05-17 18:40:24 +02:00
be87f2e230 chore: release v1.1.2 2026-05-17 18:31:59 +02:00
c56e0f507d fix(vpn): fix DNS iptables rules and add NET_RAW cap
DNS OUTPUT was restricted to -o wg0, but routing decision happens
after iptables OUTPUT — so DNS to VPN-internal addresses (198.18.0.x)
was blocked before the kernel selected the outgoing interface.
Allow DNS unconditionally; routing still sends it through wg0.

Add NET_RAW capability so ping works inside the container.
2026-05-17 18:31:38 +02:00