• bvandeusen released this 2026-05-25 21:26:53 -04:00 | 637 commits to dev since this release

    What's new

    Worker-blocking import bug fixed

    • gallery-dl produces filenames with URL-encoded basenames (...https___www.patreon.com_media-u_Z0F...); Path.suffix returned 50+ chars of base64-ish junk and blew the PostAttachment.ext varchar(32) column, crashing the import worker on every such file.
    • New _safe_ext() helper in backend/app/services/importer.py returns empty string for anything >16 chars or containing non-alphanumeric characters; bounded column stays as load-bearing safety net for future drift. Pinned by test_mangled_filename_extension_is_sanitized.
    • Memory reference_path_suffix_sanitize.md banked so future bounded-string columns populated from Path.suffix don't repeat the pattern.

    CI: integration suite now runs in 3 parallel shards

    • intapi (api tests) + intimp (importer/migration/phash/sidecar/scan) + intcore (everything else). Each shard gets its own pgvector + redis service containers. Newly feasible after act_runner capacity bump 2→6.
    • First push used int_api/int_imp/int_core names but act_runner strips underscores in container labels — switched to no-separator names + added a diagnostic docker ps -a dump so any future naming-convention shift surfaces in the log instead of a guess-and-push cycle.
    • Approximate split — rebalance once --durations=15 output reveals which shard is the long pole.

    UI: BrowserExtensionCard moved from Maintenance → Overview

    • Overview is the discovery surface for "things to set up"; Maintenance is housekeeping for already-set-up systems.

    Extension publish diagnostic in place

    • set -x + targeted echos on the commit step so the next run reveals why run #309 silent-failed to commit the XPI back to main.

    Known follow-up: extension XPI publish race (v26.05.25.5 candidate)

    • build.yml and extension.yml fire in parallel on the merge commit, so the docker image tagged :latest doesn't carry the XPI; if extension.yml does commit the XPI back, a second build.yml run overwrites :latest correctly within ~5 min.
    • AMO additionally now rejects re-signing the same extension version (Version 1.0.1 already exists), so subsequent sign attempts need a version bump.
    • Architectural fix coming: move extension sign into build.yml as a dependency of build-web so :latest is always built post-XPI. Cache strategy under discussion (see PR notes for v26.05.25.5).

    🤖 Generated with Claude Code

    Downloads