My personal data management layer

Output paper thumbnails to local_source_dir for srcsetter

- Move thumbs step before srcsetter so paper thumbnails get processed
- Output PNGs to local_source_dir/papers/ instead of local_output_dir
- Srcsetter will convert these to webp variants automatically

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

+7 -4
+7 -4
lib_sync/bushel_sync.ml
··· 55 55 | "typesense" -> Some Typesense 56 56 | _ -> None 57 57 58 - let all_steps = [Images; Srcsetter; Thumbs; Faces; Videos] 58 + let all_steps = [Images; Thumbs; Srcsetter; Faces; Videos] 59 59 let all_steps_with_remote = all_steps @ [Typesense] 60 60 61 61 (** {1 Step Results} *) ··· 147 147 let generate_paper_thumbnails ~dry_run ~fs ~proc_mgr config = 148 148 Log.info (fun m -> m "Generating paper thumbnails..."); 149 149 let pdfs_dir = config.Bushel_config.paper_pdfs_dir in 150 - let output_dir = Bushel_config.paper_thumbs_dir config in 150 + (* Output to local_source_dir/papers/ so srcsetter processes them *) 151 + let output_dir = Filename.concat config.Bushel_config.local_source_dir "papers" in 151 152 152 153 if not (Sys.file_exists pdfs_dir) then begin 153 154 Log.warn (fun m -> m "PDFs directory does not exist: %s" pdfs_dir); ··· 162 163 let would_run = List.filter_map (fun pdf_file -> 163 164 let slug = Filename.chop_extension pdf_file in 164 165 let pdf_path = Filename.concat pdfs_dir pdf_file in 165 - let output_path = Filename.concat output_dir (slug ^ ".webp") in 166 + (* Output as PNG - srcsetter will convert to webp *) 167 + let output_path = Filename.concat output_dir (slug ^ ".png") in 166 168 if Sys.file_exists output_path then None 167 169 else begin 168 170 let args = [ ··· 186 188 let results = List.map (fun pdf_file -> 187 189 let slug = Filename.chop_extension pdf_file in 188 190 let pdf_path = Filename.concat pdfs_dir pdf_file in 189 - let output_path = Filename.concat output_dir (slug ^ ".webp") in 191 + (* Output as PNG - srcsetter will convert to webp *) 192 + let output_path = Filename.concat output_dir (slug ^ ".png") in 190 193 191 194 if Sys.file_exists output_path then begin 192 195 Log.debug (fun m -> m "Skipping %s: thumbnail exists" slug);