diff --git a/family/how-to/openmediavault-rpi5.md b/family/how-to/openmediavault-rpi5.md index 56baa26d..4af2cb81 100644 --- a/family/how-to/openmediavault-rpi5.md +++ b/family/how-to/openmediavault-rpi5.md @@ -192,6 +192,9 @@ sudo usermod -aG docker kraken < /dev/null | Home Assistant | `/home/kraken/homeassistant/` | :8123 | HDD/docker/homeassistant | | Jellyfin | `/home/kraken/media/` | :8096 | HDD/docker/jellyfin, media:ro | | Transmission | `/home/kraken/media/` | :9091 | HDD/docker/transmission, HDD/media/downloads | +| Prowlarr | `/home/kraken/radarr/` | :9696 | HDD/docker/prowlarr | +| Radarr | `/home/kraken/radarr/` | :7878 | HDD/docker/radarr, media:rw | +| Sonarr | `/home/kraken/radarr/` | :8989 | HDD/docker/sonarr, media:rw | | Rclone | `/home/kraken/rclone/` | — | cron воскр. 03:00 → mailru-crypt:kraken/docker | Управление: @@ -206,6 +209,58 @@ cd /home/kraken/ && sudo docker compose pull && sudo docker compose up -d --- +## Media pipeline — Transmission hook + PGS→SRT + +**Статус: ✅ (2026-05-18)** + +### Схема +``` +Transmission → on-download-complete.sh → media-pipeline:kraken sync (NFO, библиотека) + → pgs-to-srt.sh (PGS субтитры → SRT) +``` + +### Файлы +``` +HDD/docker/media-pipeline/ + on-download-complete.sh — монтирован в Transmission как /config/on-download-complete.sh (ro) + pgs-to-srt.sh — конвертация PGS→SRT через pgsrip + config.json — конфиг media-pipeline + download-complete.log — лог загрузок + pgs-to-srt.log — лог конвертации +``` + +### on-download-complete.sh +Запускается Transmission синхронно при завершении загрузки (`script-torrent-done-filename`). +Получает `TR_TORRENT_DIR` и `TR_TORRENT_NAME` — пути **внутри контейнера** (`/downloads/...`). + +Вызывает `pgs-to-srt.sh` с путём `/downloads/complete/radarr/...` — скрипт сам переводит в хостовый путь. + +> ⚠️ Скрипт выполняется **внутри контейнера Transmission** — хостовые пути недоступны напрямую. +> `/downloads` → `HDD/media/downloads`, `/media` → `HDD/media` смонтированы в контейнере. +> Не вызывать бинарники с хостовых путей (`$HDD/...`) — они недоступны внутри контейнера. + +### pgs-to-srt.sh +- Живёт на **хосте** (`HDD/docker/media-pipeline/`), вызывается из `on-download-complete.sh` +- Использует `mkvmerge -i` для детекции PGS/VobSub (быстрее `mkvinfo`) +- PGS → `~/.local/bin/pgsrip -l ru -l en` +- VobSub → `SKIP` (не реализовано) +- Маркер `.sub-checked` рядом с mkv — пропускать уже проверенные файлы при bulk-скане +- Флаг `-l ru -l en` (два отдельных флага, не через запятую!) + +### Библиотека субтитров (итог скана 2026-05-18) +| Папка | Тип | Статус | +|-------|-----|--------| +| documentaries/пингвины. шпион в толпе (3 файла) | HDMV PGS | ✅ .ru.srt + .en.srt | +| documentaries/жизнь птиц 1998 (10 файлов) | VobSub | ❌ не конвертированы | +| Всё остальное | SRT внутри mkv | ✅ транскода нет | + +### Remote path mapping (Radarr/Sonarr) +Transmission пишет в `/downloads/complete/{radarr,sonarr}/...` (внутри контейнера). +Radarr/Sonarr видят файлы через `/media/downloads/...`. +Маппинг добавлен: `host=transmission, remotePath=/downloads/, localPath=/media/downloads/`. + +--- + ## Шаг 9 — Time Machine share Контейнер: `mbentley/timemachine:smb` diff --git a/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md b/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md index 782873cc..ca87aac3 100644 --- a/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md +++ b/work/wiki/apple-browsers/chat-path-onboarding-tracker-blocking.md @@ -8,14 +8,14 @@ ## PR Stack -| PR | Branch | Review status | -| --------------------------------------------------------------- | ---------------------------------------------------------- | ---------------------------------------------------------- | -| [#4544](https://github.com/duckduckgo/apple-browsers/pull/4544) | `demo-tracker-blocking-onboarding` | Open — review required (Alessandro + Rachel left comments) | -| [#4584](https://github.com/duckduckgo/apple-browsers/pull/4584) | `demo-tracker-blocking-onboarding-eoj-dax-animation` | **Merged** ✅ 2026-05-18 | -| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | **Merged** ✅ 2026-05-15 | -| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | **Merged** ✅ 2026-05-15 | -| [#4855](https://github.com/duckduckgo/apple-browsers/pull/4855) | `demo-tracker-blocking-onboarding-sr-feedback` | Open — no review yet | -| [#4668](https://github.com/duckduckgo/apple-browsers/pull/4668) | `demo-tracker-blocking-onboarding-uti-flow` | Open — no review yet | +| PR | Branch | Review status | +|---|---|---| +| [#4544](https://github.com/duckduckgo/apple-browsers/pull/4544) | `demo-tracker-blocking-onboarding` | Open — review required (Alessandro + Rachel left comments) | +| [#4584](https://github.com/duckduckgo/apple-browsers/pull/4584) | `demo-tracker-blocking-onboarding-eoj-dax-animation` | **Merged** ✅ 2026-05-18 | +| [#4591](https://github.com/duckduckgo/apple-browsers/pull/4591) | `demo-tracker-blocking-onboarding-ui-polish` | **Merged** ✅ 2026-05-15 | +| [#4664](https://github.com/duckduckgo/apple-browsers/pull/4664) | `demo-tracker-blocking-onboarding-chat-path-dialog-polish` | **Merged** ✅ 2026-05-15 | +| [#4855](https://github.com/duckduckgo/apple-browsers/pull/4855) | `demo-tracker-blocking-onboarding-sr-feedback` | Open — no review yet | +| [#4668](https://github.com/duckduckgo/apple-browsers/pull/4668) | `demo-tracker-blocking-onboarding-uti-flow` | Open — no review yet | --- @@ -53,19 +53,19 @@ --- -### 🔴 SR — Design: "Try a Search or AI chat" dialog — Remove pointer/tail +### ✅ SR — Design: "Try a Search or AI chat" dialog — Remove pointer/tail **Source:** [Asana task 1214846580751519](https://app.asana.com/1/137249556945/project/1202406491309510/task/1214846580751519) (Ship Review: Design, May 15). Remove the bubble pointer/tail from the bottom of the "Try a Search or AI chat" dialog container since Dax is not present in this dialog. -**State:** 🔴 NOT done. Not in any PR. NOT in working tree. +**State:** ✅ Done. `tailPosition: nil` in `RebrandedContextualOnboardingDialogs+TrySearch.swift`. Committed in merged PR. --- -### 🔴 SR — Design: "You've Got This!" dialog — Remove pointer/tail +### ✅ SR — Design: "You've Got This!" dialog — Remove pointer/tail **Source:** [Asana task 1214828145455345](https://app.asana.com/1/137249556945/project/1202406491309510/task/1214828145455345) (Ship Review: Design, May 15). Remove the bubble pointer/tail from the bottom of the "You've Got This!" EOJ dialog container since Dax is not present. -**State:** 🔴 NOT done. Not in any PR. NOT in working tree. +**State:** ✅ Done. `tailPosition: nil` in `RebrandedContextualOnboardingDialogs+EndOfJourney.swift`. In uncommitted working tree on `demo-tracker-blocking-onboarding`. --- @@ -445,13 +445,13 @@ All resolved on GitHub. Fixed in later commits on the `#4544` branch. --- -### ⭕ PR #4668 — Bugbot (MainViewController.swift:3457): Protocol method `embedInUnifiedInputEditingAreaIfActive` never called +### 🔴 PR #4668 — Bugbot (MainViewController.swift:3457): Protocol method `embedInUnifiedInputEditingAreaIfActive` never called **Source:** Bugbot on PR #4668, `MainViewController.swift:3457` **Issue:** Method added to `BrowserChromeDelegate` protocol and implemented, but no caller exists. -**State:** ⭕ [OPEN] on GitHub. Deferred until #4544 is done — see BrowserChromeManager item below for full detail. +**State:** 🔴 [OPEN] on GitHub. Deferred until #4544 is done — see BrowserChromeManager item below for full detail. ---