TautWeekly for Plex v0.21.1
v0.21.1 marks movies already watched by the newsletter recipient. This patch
preserves v0.21.0's dynamic Trending shelves and inbox preview text, Top Genre
footer, Binge Champion typography/privacy, and all lifecycle behavior.
Exact watched-state rule
For each selected library scope, request all-time Tautulli get_history with
grouping=1, include_activity=0, media_type=movie, the exact recipient
user_id, and 1,000-row start/length pagination. No weekly after or
before filter is applied. Recheck every row's recipient ID, movie type, and
library scope. A row qualifies only when watched_status=1 or
percent_complete >= WatchedPercent (default 85). Partial grades 0.25,
0.5, and 0.75 are not watched by themselves.
Match only the movie's rating key or metadata GUID. Never match by title,
server popularity, the administrator's Plex watch state, or another user's
activity. The set is recipient-local and in-memory. Missing identity or a
failed historical lookup omits the supplementary marker and emits only a
generic warning; normal newsletter delivery remains available.
Tautulli must retain a qualifying historical row. A manual Plex watched mark,
or a watch before Tautulli's retained history, cannot be inferred from the
administrator's metadata token. See the complete
configuration and privacy rule.
Placement and accessibility
- Desktop full-width movie heroes use the supplied 26×26 shield over the
poster's upper-right corner: 7px inset and 5px raised. Outlook receives a
fixed-coordinate VML group; other clients use a table overlay without CSS
positioning. The unwatched poster keeps its original markup and spacing. - Mobile heroes, release cards, personal movie recaps, and compact Trending
titles use the supplied 20×20 circle immediately
after the title, with uniform 6px left spacing and shared text/icon vertical
centering. Only the final title word stays with its icon; the rest wraps
normally, without leaving an orphaned icon on narrow screens. - Both icons have
alt="Watched"andtitle="Watched". Plain text provides
equivalent status. Unwatched movies add no markup or gap; TV titles remain
unchanged. The dynamic inbox preheader is not polluted with icon text. - Preview, PreviewAll, SendTest, SendTestAll, welcome, scheduled delivery, and
confirmed manual production delivery share the same recipient state.
The original PNGs are unchanged. Both are 8-bit RGBA with transparent pixels,
validated PNG structure, and no added metadata. Exact bytes are packaged in
all maintained renderers, release-owned manifests, ZIP/TAR archives, checksums,
and container build contexts. Email resources are CID-linked only when used.
| Asset | Native dimensions | SHA-256 |
|---|---|---|
watched.png
| 20×20 | 26744be4a08445006673cee9757e88937ff6a98406eca4acf6c4da4fc2b20498
|
watched-desktop.png
| 26×26 | 714bbb0d84c41a22ad38717a52bf177029f8854ec3ace48e753c162d7e97a52e
|
Tautulli v2.18.0 compatibility
The v2.18.0 release
moves history pagination into SQL without changing the consumed filters,
recordsFiltered, or movie identity/watch fields. Its
tagged history implementation
confirms graded watched status; the patch accepts only its definitive value.
The synthetic service identifies as v2.18.0 and covers omitted redundant
section IDs, more than one history page, and HTTP-400 invalid-metadata errors
through the existing exact-identity recovery path. No live Plex, Tautulli, or
SMTP endpoint is needed for these tests.
Validation
Deterministic tests cover exact recipient and library isolation, historical
pagination, completion thresholds, TV exclusion, all lifecycle paths, local
assets, and captured CID/MIME/plain-text output. The repeatable
visual check exercises all
six lifecycle previews plus Index at desktop and mobile widths, checks the
6px text gap and centering within one pixel, and catches orphaned icons and
broken references. It uses synthetic artwork and blocks non-local requests.
Classic Outlook's fixed-coordinate VML fallback is structurally validated;
no native Outlook session or real email delivery is claimed.
Packages and upgrade
Source baselines are Windows 1.10.1, NAS/Docker 1.5.1, macOS 1.4.1, native Linux
1.3.1, and FreeBSD/Podman 1.2.1. No configuration migration is required.
Use the normal verified package/image update flow and retain private runtime
data. After updating, review previews and controlled TestEmail output before
re-enabling production delivery. Windows executables remain unsigned; verify
downloads against SHA256SUMS.txt.
The primary Quickstart feature spotlight intentionally remains v0.21.0.