2026-06-08 - 2026-07-08
Overview
121 Pull requests merged by 1 user
Merged
#206 fix(ui): tag-chip left-edge clipping + kind-coloured border
Merged
#205 feat(translation): per-field language detection for mixed-language posts
Merged
#204 Bolder auto-tag accept/reject + larger tag chips
Merged
#203 Graceful shutdown + resilience & Explore polish (m147)
Merged
#202 Re-translate on Interpreter model change — artist-scoped + global (m146)
Merged
#201 Post translation via Interpreter (milestone 143)
Merged
#200 Auto-tag accept/reject as an in-pill yes/no pair; confirm refocuses the tag input
Merged
#199 Surface auto-hide misfires proactively (review strip no longer gated on Show-hidden)
Merged
#198 Presentation-chrome auto-hide (milestone 141) + tagging-UX fixes
Merged
#197 Soft auto-apply (retract + confirm, no self-training) + tagging UX (reject-rest, tag-input race, modal playlist)
Merged
#196 Suggestions perf + UX polish: incremental CCIP + head training, hover label, scroll/toast fixes, dead-preview removal
Merged
#195 Tag-hover → crop-region grounding overlay (#1206, milestone #133)
Merged
#194 Crop-proposer detector config → Settings → Tagging (default-on, lease-announced) (#134)
Merged
#193 Artist identity/storage/display decoupling — rename, move-source, add-time name resolution (#130)
Merged
#192 Recapture image→post linking (#1288) + ugoira timings + system suggestion category
Merged
#191 Pixiv native ingester (#129) + SubscribeStar .art fix, disable-clears-failure, system-tag suggestion floor
Merged
#190 SubscribeStar .art age fix, modal tag-flow sync, system tags / training hygiene (#128)
Merged
#189 Surgical re-fetch for deep posts (ExternalLink reset) — recovery no longer needs deep scans
Merged
#188 Agent sleep mode: empty queue sheds to one downloader, lease poll backs off to 15 min
Merged
#187 Admin IA overhaul, cap-aware autoscaler, optional ml-worker, hardened tag reset
Merged
#186 Settings defaults, GPU error tombstones + failure triage/recovery, agent bandwidth cap, approved retirements
Merged
#185 Agent: short-video sampling fix + "Retry errored jobs" recovery action
Merged
#184 Agent: fix Status freeze — conchint.textContent destroyed #capn (root cause)
Merged
#183 Agent: server-side throughput rates + killable-on-stop ffmpeg
Merged
#182 Agent: DRY pass + Status rate-metrics + real start/stop state machine
Merged
#181 fix(agent): stream videos via ffmpeg-from-URL (no full download) — env-agnostic
Merged
#180 fix(agent): log the real fetch/submit failure reason (diagnose #1225)
Merged
#179 perf(web): 4 MiB file streaming + 4 hypercorn workers (fix 40s downloads)
Merged
#178 gallery: sort by earliest post date across all posts (new default)
Merged
#177 agent: stop downloader pool stampeding a slow curator (congestion collapse)
Merged
#176 explore: more variance in the related rail (stronger MMR diversification)
Merged
#175 agent: temporal video dedup — drop near-duplicate frames before the GPU
Merged
#174 agent: dedupe near-duplicate crops before the SigLIP embed
Merged
#173 agent: download/GPU producer-consumer pipeline + detector fuse fix
Merged
#172 Agent: bound video GPU work (early-exit frame loop at max_regions)
Merged
#171 Agent: huge-image load + figure/region caps + stale-active fix
Merged
#170 Modernise agent base → Ubuntu 24.04 / Python 3.12 / CUDA 12.9
Merged
#169 Fix: agent py3.10 startup crash + submit-path retry + pin agent ruff to py310
Merged
#168 Release: prompt agent stop + lazy curator polling + build marker + agent in CI
Merged
#167 Release: agent per-stage timing breakdown
Merged
#166 perf: GPU-job leasing stays O(batch) — partial indexes + two-phase lease
Merged
#165 Release: unfreeze agent status view + smoothed throughput autoscaler + log pane
Merged
#164 Release: agent page no-store cache header
Merged
#163 Release: graceful Start/Stop (starting/stopping states) + cached GPU reads
Merged
#162 Release: stable util-band autoscaler + live GPU meters
Merged
#161 Release: agent page — centered column + logs fill to bottom
Merged
#160 Release: agent perf (batched crop embeds) + UI (full-width, copy logs, quiet noise) + truncated-image fix
Merged
#159 Release: agent control-page logs console + styling pass
Merged
#158 Release: GPU agent autoscaler (throughput hill-climb, Auto default-on)
Merged
#157 Release: SigLIP 2 default (new installs) + embedder model dropdown
Merged
#156 Release: GPU re-process trigger (apply new crop detectors to the existing library)
Merged
#155 Release: Explore diversification, model-swap, Camie/centroid retirement, tag-API, crop proposers
Merged
#154 Release: SigLIP concept crops + max-over-bag + agent redeploy-survival
Merged
#153 feat(tagging): SigLIP concept crops + max-over-bag scoring (#114)
Merged
#152 CCIP automation + reference quality (auto-enqueue, auto-apply, contamination fix, cache)
Merged
#151 fix(tags): refocus tag input after reject/un-reject too
Merged
#150 CCIP match threshold (tunable, 0.85) + Explore → variance
Merged
#149 agent: raise worker cap to 32 + size HTTP pool
Merged
#148 fix(agent): flatten transparency onto white before RGB
Merged
#147 Agent: GPU load + live worker tuning + fast orphan recovery
Merged
#146 fix(agent): cuDNN base image so onnxruntime-gpu loads
Merged
#145 ci: publish the GPU agent image
Merged
#144 CCIP characters + crop/region pipeline + desktop GPU agent (#114)
Merged
#143 Earned auto-apply (fire + observability + UI), retrain cadences, Explore arrow-nav
Merged
#142 Tagging-v2: heads are the suggestion source (learn-from-tags) + rail accept/reject
Merged
#141 tag-eval: "keep" records a confirmation so doubts stop resurfacing
Merged
#140 fix(tag-eval): stop re-suggesting already-rejected items
Merged
#139 tag-eval: auto-apply operating point + server-side top-N concept discovery
Merged
#138 fix(tag-eval): example thumbnail opens the view modal instead of Explore
Merged
#137 Tag-eval review actions: bigger clickable thumbnails + inline confirm/reject
Merged
#136 Tag-eval (heads vs centroid) + focus/provenance/layout/sticky-header fixes + tag-gaps cleanup
Merged
#135 fix(explore): bound 3-pane grid row so a tall rail can't scroll the page
Merged
#134 Explore: focus-everywhere + provenance in rail; tag-gaps cleanup
Merged
#133 feat(explore): auto-focus tag input on every image change
Merged
#132 fix(modal): place meta + save block under Provenance, above Tags
Merged
#131 Fandom count fix + Explore 3-pane workspace + modal rail layout
Merged
#130 fix(tags): fandom views aggregate images via their characters
Merged
#129 Modal suggestions scroll-cap + Celery broker resilience
Merged
#128 Tagging & viewing roadmap: tag query surface + hygiene projections + Explore view (Clusters A/B/C)
Merged
#127 Provenance archive linkage, post reconciliation close-out, and the cleanup/admin DRY pass
Merged
#126 feat(settings): Maintenance tab compact tiles + centered Settings (pass 2)
Merged
#125 feat(settings): tidy Cleanup tab into sectioned compact tiles (pass 1)
Merged
#124 feat(maintenance): reconcile duplicate posts (gallery-dl→native unify)
Merged
#123 fix(subscribestar): port gallery-dl date extraction (wrapped dates) + parse canary
Merged
#122 feat(subscribestar): port gallery-dl doc + audio attachment extraction
Merged
#121 fix(subscribestar): port gallery-dl content + preview-skip extraction (body bug)
Merged
#120 fix(subscribestar): mirror gallery-dl's full request profile (verify_subscriber gate)
Merged
#119 fix(subscribestar): match gallery-dl's generic post delimiter (live-feed drift)
Merged
#118 fix(subscribestar): initial feed GET is a navigation, not XHR (first-run drift)
Merged
#117 SubscribeStar → native core ingester + native-ingest DRY pass (milestone #71)
Merged
#116 fix(external): recovery-sweep threshold + queue recording + split fetch timeouts (#883)
Merged
#115 test(artist-dir): fix flaky uq_image_record_sha256 collision
Merged
#114 fix(ml): per-task async engine for recompute_centroid (#881)
Merged
#113 fix(maint): resurface dedup/gated-purge results after navigate-away (#877)
Merged
#112 Gated Patreon posts: skip on ingest + cleanup tool (#874)
Merged
#111 Video tag quality: cadence sampling + min-frame aggregation + ML thread cap (#747)
Merged
#110 Tier-1 video dedup: import-time + retroactive cleanup (#871)
Merged
#109 Nested-archive extraction (#718) + post-first ingest (#67) + post-body canary (#862)
Merged
#108 External-attach orphan fix (#859) + image-less post display
Merged
#107 Merge dev → main: read post body from content_json_string (the empty-body fix) (#842)
Merged
#106 Merge dev → main: per-post stdout diagnostics + post-field write DRY (#842/#753)
Merged
#105 Merge dev → main: per-post body-capture diagnostics in the event UI (#842)
Merged
#104 Merge dev → main: recapture body-fetch fix + diagnostics (#842)
Merged
#103 Merge dev → main: Recapture mode (#842) — re-grab post bodies/links + localize on-disk inline images
Merged
#102 Merge dev → main: #830 rich post capture + external-host downloads (+ #768/#789/#739)
Merged
#101 fix(aliases): modal raw-key bug + alias visibility/management
Merged
#100 fix(images): percent-encode original-image URLs ('#' in paths 404'd)
Merged
#99 fix(browse): tabs and search on one row
Merged
#98 Browse search + series numbering rework + kebab fix
Merged
#97 feat(series): flat sequence + cosmetic dividers + pending staging (#789)
Merged
#96 feat(ml): drop image_record.tagger_predictions — image_prediction is sole store (#768 step 3)
Merged
#95 fix(migration): make 0045 DDL-only; backfill image_prediction via batched task (#768)
Merged
#94 perf(migration): 0045 streams json_each (no materialize / no temp blowup)
Merged
#93 fix(migration): 0045 guards json_each against scalar tagger_predictions
Merged
#92 #768 steps 1+2: normalized image_prediction table (read cutover)
Merged
#91 Activity search + RecoverySweep fix + tagger_predictions shrink (#762, #764) + backup polish
Merged
#90 Browse hub, series rename, full-prediction dropdown + a DRY pass (7 sweeps)
Merged
#89 UI batch: tagging flow, series browse, fandom chips, nav
Merged
#88 fix(posts): link duplicate items to every post + prune bare shells
Merged
#87 fix(cleanup): unused-tags delete must use the same predicate as the preview
Merged
#86 Unused-tag fandom fix + ML-worker logging/tuning + unified dropdown Enter