Skip to content

chore: sync develop with main - #543

Merged
chodeus merged 1 commit into
developfrom
main
Aug 14, 2026
Merged

chore: sync develop with main#543
chodeus merged 1 commit into
developfrom
main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

@coderabbitai ignore

develop has drifted behind main (releases, fixes, dependency bumps). Do not merge this PR — it reports the drift, it does not fix it.

develop requires branches be up to date, and head:main can never satisfy that without pulling develop's extension files into main, which the branch invariant forbids. Squash or rebase would also leave main unreachable from develop, so this workflow would just open another PR next push.

Sync locally instead:

git checkout develop && git merge origin/main && git push

Then verify git diff main develop is added extension files plus deploy/docker/Dockerfile only. GitHub marks this PR merged on its own once develop contains main's tip. Opened by the sync-develop workflow.

* refactor(api): posters router splits into a package by resource

3622-line module becomes ten resource modules behind the same router.
Route list is byte-identical to the old module — same paths, methods,
names and registration order, which FastAPI matches on; the include order
in __init__ IS that order, so items (the /{poster_id} catch-all) stays
last. One test repointed at the submodule that now owns
preview_poster_file; nothing else reached past router.

* fix(codeql): one import style for the posters module in this test file

py/import-and-import-from 311: the stage-3 test repoint added a
'from ... import' beside the existing 'import ... as'.

* fix(review): validate destructive inputs, confine backfill, live logger config

An unvalidated optimize mode meant a client typo took the destructive
branch and rewrote poster files; apply_match lacked the empty-path guard
its artwork sibling has, so a row could lock as matched with no source.
Backfill confines each cache row before opening it, added_since rejects a
cutoff SQLite would compare as text, and the module logger re-reads config
per request instead of caching it at creation. sort and force are gone
from the two routes that accepted and ignored them.

* fix: serialize module-logger setup, store optimized posters by path

Lock the cache-miss construction, push a live level onto console handlers
that inherit it, and update the poster row by id with an absolute path —
a bare basename could not match the UNIQUE key and inserted a duplicate.

* fix: persist the optimized path before deleting the original

An invalid CONSOLE_LOG_LEVEL now inherits the logger level instead of
freezing the handler, and record_optimized_file raises on a rowcount
other than 1 so a failed update rolls the converted file back.

* style: explain the best-effort rollback suppression

CodeQL py/empty-except wants the note inside the handler.
@chodeus
chodeus merged commit 54a5feb into develop Aug 14, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant