Repository navigation
feat(scan): skip formats Immich cannot accept (#95) - #99
Merged
Merged
Conversation
The client now holds Immich's supported extensions in one allowlist, so a file the server cannot accept is never queued: no state row, no attempt, no dead letter. The scan counts the files it refused per folder, logs the count and the extensions it saw, and the folder detail names them. A failed row recorded before the allowlist existed is dropped by the next scan.
…ws (#95) The review found the count field read like a flag, the scan's folder write mixing two facts, and the cleanup deleting only failed rows. The count is now unsupported_count, the count has its own store write, and every row without a server asset is dropped, while a row that holds an asset keeps its mapping and version chain. The startup requeue no longer sends a refused format.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #95.
Summary
The client now holds Immich's supported extensions in one list, so a file the
server cannot accept is never a sync item — no state row, no attempt, no
failure.
folder row (V14 migration) last_scan_ns, last_upload_ns + unsupported # files the last scan refusedno extension,
.wma,.mp3,.flacare refused. The sidecar, temporary andsystem rules still win, so an
.xmpof a skipped file is skipped with it.Files Immich cannot accept: 3, only when itis above zero. Nothing on the dashboard, and the pending/uploaded/failed
counts do not move. The count lives on the folder row, so it survives a
restart and the signed-out view (operator decision).
(
infowhen above zero,debugwhen zero), per-file detail atdebug.refuses and holding no server asset, is deleted by the next scan that sees
the file; the startup requeue no longer sends such a path. A row that holds
an asset keeps its mapping and version chain (R4).
refuses remains the permanent
unsupported_formatfailure with its readablereason.
Files:
sync-core/src/{skip,scan,engine,store,status}.rs,app/src/{status,engine,folder_panel}.rs,SPEC.mdR2.2,GLOSSARY.md.Evidence
.wmain a source folder was queued, answered 415, and landedin Failed as a dead letter (issue Supported file formats #95).
After:
sync-core::it engine::a_format_immich_cannot_accept_is_never_an_item_or_a_failure— one refused
.wmaand one accepted.jpg: the.wmahas no row, noattempt, no failed item, one upload request in total, and the folder detail
count is 1.
a_later_scan_clears_the_count_once_the_refused_file_is_gone,store::the_unsupported_count_arrives_on_a_v13_database.a_scan_drops_rows_without_an_asset_for_a_format_the_allowlist_refuses(dropped with its attempt log; a row holding an asset kept).
a_415_is_one_permanent_failure_and_is_never_retriednowpins the readable reason.
folder_detail::the_detail_names_the_files_immich_cannot_acceptand the480 px window test assert the label;
DashboardModel::from_enginekeeps theglobal card at zero.
cargo fmt --all -- --check,cargo clippy --workspace --all-targets -D warnings,cargo nextest run --workspace— 951 passed, 2 skipped.https://github.com/elementalvoid/immich-sync/actions/runs/43374658579 —
immich-sync_0.3.0_x64-setup.exe, sha256a068f1ab…70ea7.Merge Danger
Door: one-way for an install that has run this build — V14 adds
source_folder.unsupported(NOT NULL DEFAULT 0), and rolling the client backafter it opened a V14 database makes the older schema check refuse that
database. The migration itself is additive and safe to run forward.
Blast Radius: small — one new column, one count line in the folder detail,
and deletion of asset-less rows for formats the allowlist refuses.