Releases
v0.2.0
Compare
Sorry, something went wrong.
No results found
0.2.0 (2026-05-11)
Features
10-01: establish uv lockfile and Python 3.13 pin (b8d01ce )
10-02: uv sync smoke, py_compile, deprecate pip-first requirements (da084c9 )
11-01: create jellyswipe package directory and init .py skeleton (a95caa6 )
11-01: flatten media_provider modules into jellyswipe/ root (fdffd7e )
11-02: create Flask app in jellyswipe/init .py (182ae8e )
11-02: create jellyswipe/db.py with database functions (c366c00 )
11-02: update app.py to import from jellyswipe (f640591 )
11-03: configure Flask to find templates and static from jellyswipe package (f03ed91 )
11-03: configure pyproject.toml to include templates and static in package data (80dfebd )
11-04: remove broken static volume mount from docker-compose.yml (39ad516 )
11-04: update Dockerfile Gunicorn entry point to jellyswipe:app (574f429 )
11-05: add gevent dependency to pyproject.toml and update lockfile (aa48bb2 )
11-05: configure Gunicorn to use gevent workers in Dockerfile (872515a )
12-01: convert Dockerfile to multi-stage build with uv (86d4153 )
12-02: add Development section to README with uv documentation (b0c9090 )
13-01: delete Plex implementation files (aa15204 )
13-01: remove Plex code and implement Jellyfin-only provider (694de5d )
13-01: remove Plex references from base.py docstrings (f22bd5b )
13-02: remove plexapi from dependencies (2940c25 )
13-02: update database schema to use user_id (7445776 )
13-02: update docker-compose.yml to Jellyfin-only (8b3420f )
13-02: update PROJECT.md to reflect Jellyfin-only support (f47c345 )
13-02: update README to Jellyfin-only documentation (17dcffd )
18-01-01: harden identity resolution sources (6257114 )
30-01: update Dockerfile CMD to Uvicorn; add Flask import guards for framework-agnostic imports (1623725 )
31-01: rewrite Flask factory to FastAPI with full middleware stack (dd10393 )
32-01: implement dependencies.py DI callables (3f356a9 )
32-01: rewrite test_auth.py with FastAPI TestClient (dcee6cd )
33-01: create config.py and routers/init .py (73f786b )
33-01: extract auth, static, media, and proxy routers (4b54b07 )
33-02: create rooms router with swipe transaction integrity (cda056d )
34-01: add sse-starlette>=3.4.1 to dependencies (631f455 )
34-02: add async SSE route to rooms.py (8a14b24 )
34-02: remove inline SSE block from init .py (158e572 )
35-01: rewrite conftest.py with FastAPI TestClient infrastructure (10bb937 )
35-01: wire SECRET_KEY into create_app() SessionMiddleware (ee3bc96 )
35-02: migrate test_routes_room.py to FastAPI TestClient (c97e46e )
35-02: migrate test_routes_xss.py to FastAPI TestClient (c71af23 )
35-03: migrate test_route_authorization.py to use client_real_auth (60797ef )
35-03: migrate test_routes_auth.py to use client_real_auth (9356587 )
35-04: migrate test_routes_sse.py to FastAPI TestClient patterns (d75289f )
add a favicon and serve it (0d09962 )
alembic (#38 ) (505aa64 )
commit some of phase 35 (d0cfbf2 )
EPIC-04: Harden outbound HTTP — TMDB auth, rate limiting, SSRF protection (#31 ) (37cd089 )
Jelly Swipe rebrand (defaults, Docker, manifests, LICENSE) (9d964d4 )
ORCH-001: add include_movies and include_tv_shows columns to Room model (#39 ) (3c1f4d1 )
ORCH-002: add hide_watched column to rooms table (#52 ) (b0fbc77 )
ORCH-003: rename movie_id to media_id in public API (#41 ) (8af3cdd )
ORCH-004: add hide_watched parameter to provider interface (#56 ) (1be7fc4 )
ORCH-005: propagate hide_watched state through SSE stream (#58 ) (655c05c )
ORCH-006: add session setup panel with media type toggles (#46 ) (a2c4a2a )
ORCH-007: add media-type badge to swipe cards (#47 ) (75b0e23 )
ORCH-008: add Hide Watched toggle pill with SSE sync (#60 ) (77dcf9e )
ORCH-008: carry media_type through matches, history, and deep-links (#48 ) (e2e5f1d )
ORCH-014: replace release-ghcr.yml with multi-arch build and add docker-main workflow (#77 ) (25e404d )
phase-01: provider env validation, lazy plexapi, operator docs (ddc5345 )
phase-02: media provider abstraction with executable plans (3621e65 )
phase-03: Jellyfin auth client and factory wiring (56ec757 )
phase-04: Jellyfin library deck, proxy images, and TMDB parity (aee809c )
phase-05: add Jellyfin user parity and packaging plan artifacts (fc6068e )
phase-09: Jellyfin delegate browser session and poster contain (d349ea5 )
Remove residual username/password auth code paths (#73 ) (c525f84 )
rewrite with FastAPI (#37 ) (6ebd9c3 )
SSE stream improvements (#68 ) (deb8855 )
update docker building (b6c3f60 )
v1.6 Plex Reference Cleanup + XSS Security (EPIC-08) (#28 ) (e089544 )
Bug Fixes
04: close jellyfin trailer/cast 500 gap (cfbfae1 )
10x the ratelimits (5e2a455 )
13-01: add Optional import for type hint (bb58577 )
13-03: update SQL statements to use user_id instead of plex_id (82d5d39 )
31: CR-01 fix database connection leak by using get_db_closing() (07b66e5 )
31: CR-02 extend vault TTL to 14 days to match cookie max_age (36daeaa )
31: CR-03 validate movie_id is present before using it (fa996d1 )
31: CR-04 fix path traversal by using StaticFiles mount instead of FileResponse (32ee473 )
31: CR-05 fix broken manual transaction by using single BEGIN IMMEDIATE block (19785ab )
31: WR-01 use XSSSafeJSONResponse instead of JSONResponse for XSS protection (01b2197 )
31: WR-02 URL-encode user data in TMDB URLs to prevent malformed requests (b7d8f74 )
31: WR-03 handle ValueError on page parameter with proper error response (c21a3c4 )
31: WR-04 add authentication to room status and stream endpoints (278d477 )
31: WR-05 use secrets for pairing code with collision detection (2480a6d )
31: WR-06 capture validated JELLYFIN_URL at module level to prevent SSRF bypass (18c4723 )
33-02: update boot validation test to check config.py after Phase 33 extraction (963d31a )
35-05: apply three surgical fixes to test_routes_proxy.py (55a919d )
35-05: migrate test_error_handling.py to FastAPI TestClient (0055399 )
auth: enforce verified identity across protected routes (33b785b )
default SQLite path to project data/ for local dev (fd0e11b )
EPIC-09: route test coverage + CSP compliance (v1.5) (#26 ) (f5c193d )
EPIC-10: cleanup data bind mount usage (#22 ) (5a2924b )
issue 33 and 32 (#34 ) (08be1ec )
jellyfin: support API-key mode user-id fallback (10b3b6e )
resolve ruff E402/F401 errors; add pre-commit config (b2bb87b )
Documentation
01: capture phase context (4f6ecec )
01: execute phase 1 — add plan summaries (CFG-01..03 verified) (76d333c )
02: capture phase context (6eef476 )
03: capture phase 3 discuss context (a266a2a )
03: execute phase — summaries + README recovery step + JAUTH traceability (a184772 )
03: plan phase — RESEARCH + PLAN-01/02 (Jellyfin auth) (cd76fb0 )
03: remove superseded 03-PLAN-*.md filenames from git index (a81bae2 )
03: rename plans to 03-NN-PLAN.md for GSD phase-plan-index (42bf3b2 )
04: add remaining plan + sync state and roadmap (d7cff21 )
04: capture phase 4 discuss context (9d817ee )
04: execute phase — summaries + context alignment + JLIB traceability (f3ee30b )
05: add root causes from diagnosis (1a4c258 )
05: capture phase 5 discuss context (5a113c4 )
06: add phase research validation and plans (193dba6 )
06: capture phase context (5ac6a4a )
07: capture phase context (aaa7218 )
08-01: add Jellyfin-forward operator E2E narrative (08-E2E.md) (10c7809 )
08-01: add plan summary (48b6a97 )
08-02: add 03-VALIDATION and complete 01-VALIDATION (task 08-02-01) (4ca0543 )
08-02: add 04-VALIDATION; complete 02 and 05 validation (task 08-02-02) (c96f06e )
08-02: add plan summary (46069d1 )
08-03: add plan summary (0f72c87 )
08-03: refresh milestone audit, complete 08-VALIDATION, trace Phase 8 in REQUIREMENTS (44f798c )
08: add code review skip and phase verification (bf2c1f0 )
08: capture phase context (dfd5a4e )
09: plan phase — context, UI-SPEC, research, validation, patterns, plans (d122136 )
10-01: add plan summary (59f18a1 )
10-02: add plan summary (aabe67d )
10: add phase plans (uv lockfile) (0f0a4bc )
10: align py_compile action with acceptance (f8502bc )
10: capture phase context (e016ba3 )
10: clarify py_compile includes init (ec58124 )
11-01: complete package structure plan (05487c8 )
11-02: complete database module and Flask app migration plan (f21227d )
11-03: complete templates and static assets package data plan (1d11051 )
11-04: complete package layout migration plan (a130aaf )
11: complete phase 11 - jellyswipe package layout (f61cf1b )
11: create gap closure plan for SSE stream gevent workers (3f735c3 )
11: create phase plan - jellyswipe package layout (7ee2588 )
12: capture phase context (080c0aa )
12: complete docker-maintainer-docs phase (a571488 )
12: create phase plan - Docker & maintainer docs (a23fd85 )
12: research phase domain and validation plan (02b0753 )
13-03: complete plan 13-03 verification (f3a71ea )
13-03: record plan 13-01 and 13-02 completion (4cee56b )
13: create phase plans to remove Plex support (21337f0 )
18-01: record execution summary (9dcf711 )
18: add phase research and validation strategy (62dc8ab )
18: capture phase context (92ca410 )
18: create execution plan (c0d56ed )
19: add research and executable plan (d9e1d61 )
19: capture phase context (c283acb )
19: record execution summary and phase completion (2a18f40 )
20: add research and executable plan (74590d1 )
20: capture phase context (9864361 )
20: mark security regression phase complete (de29992 )
30-01: complete package-deployment-infrastructure plan — FastAPI/Uvicorn stack (048f560 )
30: add code review report (bb4a6cd )
30: capture phase context (b96e18a )
30: create phase plan — package and deployment infrastructure (fb6ea37 )
30: create phase plan — swap Flask/Gunicorn for FastAPI/Uvicorn stack (3d9f6b2 )
31-01: complete FastAPI app factory and session middleware plan summary (d487040 )
31: add code review report (4ac4a83 )
31: add code review report (6fe4494 )
31: add decision coverage to plan must_haves (6f883a1 )
31: add UI design contract for FastAPI app factory phase (67b0593 )
31: capture phase context (1aa6c00 )
31: create phase plan (df23236 )
32-01: complete auth rewrite and dependency injection layer plan (11e563c )
32: add code review report (44efadb )
32: add code review report (f02dd66 )
32: capture phase context (21a922f )
32: create phase plan — auth rewrite and dependency injection layer (b991505 )
32: research auth rewrite and DI layer (624b8f7 )
33-01: complete [create config.py and extract routers] plan (ac5dd24 )
33-02: complete [rooms router and thin app factory] plan (ea6d8b6 )
33: add code review report (e65aa74 )
33: capture phase context (8d22a98 )
33: create phase plan — 2 plans for router extraction (4c64915 )
34: capture phase context (f715525 )
34: complete Phase 34 - SSE Route Migration (651514e )
35-01: complete test suite foundation plan (494c5d2 )
35-02: complete room and XSS test migration plan (854f8a2 )
35-03: complete Migrate Real-Auth Test Files plan (c8c89a2 )
35-04: complete test_routes_sse.py migration plan (71f8392 )
35-05: complete plan 05 - migrate test_routes_proxy.py and test_error_handling.py (5ad5dbc )
35: capture phase context (2f869ee )
35: create phase plan — test suite migration and full validation (b381e3d )
35: research phase domain (347cddf )
add ADR and PRD for next task (2adc0d8 )
add andrewthetechie as a contributor for code, and ideas (#25 ) (803e0de )
add Bergasha as a contributor for code, and ideas (#24 ) (d42a7f0 )
add Jellyfin milestone research (86924f2 )
add roadmap, state, stack research, and GSD Cursor rules (7d7eeac )
clarify phase 2 success criteria for Jellyfin mode (9910d9f )
clear previous phase artifacts for v1.4 (c4fb982 )
codebase: refresh architecture map post-EPIC-05/06 (6d97aa6 )
create milestone v1.2 roadmap (3 phases) (b0d0c8d )
create milestone v1.4 roadmap (3 phases) (28e5153 )
create milestone v2.0 roadmap (6 phases, 9 requirements) (8cc1b95 )
defer incomplete Phase 1/3/4 items to backlog (1b4b590 )
define milestone v1.2 requirements (5a8ac15 )
define milestone v1.4 requirements (339214e )
define milestone v2.0 requirements (9 requirements, Pydantic deferred to v2.1) (a2ee9ad )
fix milestone audit link in archived v1.0 REQUIREMENTS (c99940b )
fix STATE focus after phase 08; mark Phase 8 complete in ROADMAP (6377c04 )
initialize GSD project for Jellyfin milestone (6954ec8 )
map existing codebase (bbbd0bf )
phase-06-01: add Phase 1 CFG verification artifact (649fc73 )
phase-06-02: add Phase 2 ARC verification artifact (01fc38a )
phase-06-03: Phase 6 closure index and REQUIREMENTS sync (f725ca9 )
phase-06: mark Phase 6 complete in ROADMAP and STATE (fef95ee )
phase-06: skip code review (planning-only changes) (04fbced )
phase-08: add research, Nyquist validation strategy, and three executable plans (50e1748 )
phase-08: complete phase execution (bc46955 )
phase-08: evolve PROJECT.md after phase completion (cb99ce0 )
phase-10: verification, review, PROJECT/STATE after phase complete (a7567fa )
phase-18: complete phase execution (fed01e5 )
phase-18: evolve PROJECT.md after phase completion (fe587a0 )
phase-30: complete phase execution (ce58cd4 )
phase-31: complete phase execution (9d1404e )
phase-31: update tracking after wave 1 (592477e )
phase-33: complete phase execution (4984b5d )
phase-33: evolve PROJECT.md after phase completion (423fe6f )
phase-33: update tracking after wave 2 (280fcd5 )
phase-34: create SSE route migration plan (2 plans, 2 waves) (bb36b1c )
phase-35: create phase plan (31a79d4 )
roadmap: add gap closure phases 6-8 (cf323b7 )
roadmap: check off backlog item 999.3 planning artifact (c223471 )
roadmap: check off Phase 999.1 Phase 1 summary debt (ca08abe )
roadmap: Phase 9 goal and plan breakdown after plan-phase (6b2765e )
start milestone v1.2 uv and jellyswipe package layout (edacbd9 )
start milestone v1.4 Authorization Hardening (190475d )
start milestone v2.0 Flask → FastAPI + MVC Refactor (0ac0a67 )
state: advance to phase 5 after gsd-next (564ed6d )
state: align focus after phase 3 discuss chain (eb2471f )
state: align resume file with phase 2 context (91f585e )
state: fix frontmatter after phase 10 plan (78617ba )
state: mark phase 18 planned (8234d03 )
state: mark phase 19 planned (291f938 )
state: mark phase 20 planned (5ec808b )
state: Phase 01 complete — point next step at 999.2 / plan-phase 3 (fbb2ba9 )
state: Phase 03 planned — sync STATE + roadmap 999.2 (72632c0 )
state: point resume to phase 07 context (0cda91a )
state: record phase 07 context session (f61a075 )
state: record phase 08 context session (8c2b358 )
state: record phase 1 discuss session (59428ec )
state: record phase 10 context session (f55dac9 )
state: record phase 12 context session (57b501a )
state: record phase 18 context session (4cbe039 )
state: record phase 19 context session (199e48d )
state: record phase 2 context session (2a9df10 )
state: record phase 20 context session (18d84a3 )
state: record phase 3 context session (b11a56f )
state: record phase 30 context session (b16651f )
state: record phase 31 context session (c083856 )
state: record phase 32 context session (783b654 )
state: record phase 33 context session (c3293d7 )
state: record phase 34 context session (7c60991 )
state: record phase 35 context session (ca9c327 )
state: record phase 6 context session (0691ac3 )
update STATE.md session continuity for v2.0 milestone init complete (a9982b5 )
v1.2: complete milestone v1.2 - uv + jellyswipe package + Docker-only + Plex removal (ca51b7e )
v2.0 Flask->FastAPI migration research complete (8f94b4c )
You can’t perform that action at this time.