Summary
• Implemented global offline mode for all HuggingFace-dependent modules to eliminate unauthenticated request warnings and prevent external connection attempts during startup and runtime. Changes • Global Offline Configuration: Added HF_HUB_OFFLINE=1 and TRANSFORMERS_OFFLINE=1 to the environment variables at the top of edit_api.py, embeddings.py, watcher.py, and pose_llm/pose_llm_api.py. • Explicit Local Files Only: Updated all huggingface_hub.hf_hub_download calls in edit_api.py to include local_files_only=True, ensuring they never attempt to reach the Hub if models are already cached. • LLM Service Optimization: Updated AutoTokenizer and AutoModelForCausalLM calls in pose_llm/pose_llm_api.py to use local_files_only=True. • Consistency: Ensured that shared modules like embeddings.py which uses open_clip are also locked to offline mode to prevent background downloads.
This commit is contained in:
@@ -2299,7 +2299,55 @@
|
||||
|
||||
// --- HYDRATION_START ---
|
||||
const PRELOADED_IMAGES = [
|
||||
"20260628_133544_pad_20260621_032709_image.png",
|
||||
"20260628_165000_sc_image.png",
|
||||
"20260628_164850_sc_sc_image.png",
|
||||
"20260628_154819_sc_image.png",
|
||||
"20260628_154609_image.png",
|
||||
"20260628_154508_sc_image.png",
|
||||
"20260628_154429_dup_20260621_032709_image.png",
|
||||
"20260628_154339_image.png",
|
||||
"20260628_153602_sc_dup_20260621_032709_image.nobg.png",
|
||||
"20260628_153452_sc_image.png",
|
||||
"20260628_153333_sc_image.png",
|
||||
"20260628_151457_sc_image.png",
|
||||
"20260628_151037_sc_image.png",
|
||||
"up_6d311abe_face.png",
|
||||
"20260628_150512_dup_20260621_032709_image.nobg.png",
|
||||
"20260628_145644_dup_20260621_032709_image.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145317_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145305_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145254_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145243_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145232_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145221_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145209_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_145127_pad_20260628_144836_view_001_015deg.nobg.png",
|
||||
"cg_2afca8fc_face.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_144836_view_001_015deg.nobg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_144836_view_001_015deg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_144825_view_001_015deg.png",
|
||||
"_turntable/cg_2afca8fc/views/20260628_144814_view_001_015deg.png",
|
||||
"cg_75340e8e_face.png",
|
||||
"cg_08203e88_face.png",
|
||||
"cg_74544975_face.png",
|
||||
"kk563t.png_face.png",
|
||||
"20260628_143350_kk563t.nobg.png",
|
||||
"20260628_143619_dup_20260628_143350_kk563t.nobg.png",
|
||||
"20260628_143350_kk563t.png",
|
||||
"20260628_143206_kk563t.png",
|
||||
"pass-1.png_face.png",
|
||||
"20260626_231655_sc_image.nobg.png",
|
||||
"20260618_181600_image.png_face.png",
|
||||
"_turntable/20260618_181600_image.png/views/view_000_000deg.png",
|
||||
"_turntable/cg_74544975/views/20260628_140758_view_000_000deg.nobg.png",
|
||||
"_turntable/cg_74544975/views/20260628_142102_dup_20260628_140758_view_000_000deg.nobg.png",
|
||||
"_turntable/cg_74544975/views/20260628_140758_view_000_000deg.png",
|
||||
"up_3a05a2de_face.png",
|
||||
"up_aa1add4d_face.png",
|
||||
"20260628_134529_dup_20260621_032709_image.nobg.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_135858_dup_20260628_035257_dup_20260628_033600_dup_view_000_000deg.nobg.png",
|
||||
"cg_7ec17537_face.png",
|
||||
"20260628_134529_dup_20260621_032709_image.png",
|
||||
"_turntable/up_7b6eaabb/views/view_023_345deg.png",
|
||||
"_turntable/up_7b6eaabb/views/view_022_330deg.png",
|
||||
"_turntable/up_7b6eaabb/views/view_021_315deg.png",
|
||||
@@ -2443,16 +2491,6 @@
|
||||
"_turntable/pass-1.png/views/view_008_120deg.png",
|
||||
"_turntable/pass-1.png/views/view_007_105deg.png",
|
||||
"_turntable/pass-1.png/views/view_006_090deg.png",
|
||||
"20260628_115611_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_115349_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_114542_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_114232_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_114212_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113939_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113737_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113405_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113320_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113242_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_113152_sc_8_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_111908_sc_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"_turntable/pass-1.png/views/view_005_075deg.png",
|
||||
@@ -2477,20 +2515,15 @@
|
||||
"_turntable/cg_9bb8f3bb/views/view_010_150deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_009_135deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_008_120deg.png",
|
||||
"20260628_105942_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_007_105deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_006_090deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_005_075deg.png",
|
||||
"20260628_105539_sc_pad_20260627_212800_4_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_004_060deg.png",
|
||||
"20260628_105040_pad_20260627_212800_4_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_003_045deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_002_030deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_001_015deg.png",
|
||||
"_turntable/cg_9bb8f3bb/views/view_000_000deg.png",
|
||||
"_turntable/pa01.png/views/view_023_345deg.png",
|
||||
"20260628_105307_dup_20260628_105040_pad_20260627_212800_4_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_105040_pad_20260627_212800_4_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||
"_turntable/pa01.png/views/view_022_330deg.png",
|
||||
"_turntable/pa01.png/views/view_021_315deg.png",
|
||||
"20260627_212812_5_20260627_212658_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||
@@ -2563,14 +2596,6 @@
|
||||
"_turntable/up_2687be75/views/view_002_030deg.png",
|
||||
"_turntable/up_2687be75/views/view_001_015deg.png",
|
||||
"_turntable/up_2687be75/views/view_000_000deg.png",
|
||||
"20260628_061520_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061440_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061355_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061322_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061249_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061152_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_061006_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_060550_sc_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_060113_sc_best_00_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_055858_sc_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_055541_sc_dup_20260628_033600_dup_view_000_000deg.png",
|
||||
@@ -2647,11 +2672,6 @@
|
||||
"20260618_053802_image.png_face.png",
|
||||
"20260628_032232_dup_20260618_053932_7_20260618_053802_image.nobg.nobg.nobg.png",
|
||||
"20260628_032232_dup_20260618_053932_7_20260618_053802_image.nobg.nobg.png",
|
||||
"pass-1.png_face.png",
|
||||
"20260628_031641_dup_20260628_031119_pad_pass-1.nobg.png",
|
||||
"20260628_031119_pad_pass-1.nobg.png",
|
||||
"20260628_031316_pad_pass-1.png",
|
||||
"20260628_031119_pad_pass-1.png",
|
||||
"pa01.png_face.png",
|
||||
"20260628_030838_pa01.png",
|
||||
"20260628_030808_pa01.png",
|
||||
@@ -2659,51 +2679,19 @@
|
||||
"20260628_030532_pa01.png",
|
||||
"20260628_030241_pa01.png",
|
||||
"20260628_030115_pa01.png",
|
||||
"kk563t.png_face.png",
|
||||
"20260628_025504_pad_pass-1.png",
|
||||
"up_e25ad102_face.png",
|
||||
"20260628_020853_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020642_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020610_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020546_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020519_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020428_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020302_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_020125_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_015815_pad_20260628_015651_img_12.nobg.png",
|
||||
"20260628_015815_pad_20260628_015651_img_12.png",
|
||||
"20260628_015707_img_12.png",
|
||||
"20260628_015651_img_12.png",
|
||||
"20260615_153426_img_12.png",
|
||||
"20260628_015423_img_12.png",
|
||||
"cg_5991f3f2_face.png",
|
||||
"20260628_012806_pad_20260624_143523_Screenshot_From_2026-06-17_07-41-27.nobg.nobg.png",
|
||||
"20260628_014614_p10.nobg.png",
|
||||
"p10.png_face.png",
|
||||
"20260628_014614_p10.png",
|
||||
"20260628_014603_p10.png",
|
||||
"up_2687be75_face.png",
|
||||
"20260628_013521_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013511_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013459_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013429_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.nobg.png",
|
||||
"20260628_013429_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_013412_pad_20260627_213816_best_01_person_0.874_2026-06-27_12-18-49.png",
|
||||
"20260628_012832_pad_20260624_143523_Screenshot_From_2026-06-17_07-41-27.nobg.nobg.png",
|
||||
"_turntable/cg_5991f3f2/views/view_022_330deg.png",
|
||||
"20260628_011700_pad_20260624_154318_img_72.png",
|
||||
"20260628_012006_pad_20260624_154318_img_72.png",
|
||||
"20260628_011837_pad_20260624_154318_img_72.png",
|
||||
"20260628_012240_crop_20260628_011837_pad_20260624_154318_img_72.png",
|
||||
"20260628_011227_dup_Pasted image (9).png",
|
||||
"20260628_011118_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010957_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010947_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010858_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.nobg.png",
|
||||
"20260628_010858_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010841_pad_20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010755_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010630_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260628_010408_image.png",
|
||||
"20260627_203626_image.png",
|
||||
"up_7b6eaabb_face.png",
|
||||
@@ -2738,12 +2726,6 @@
|
||||
"_turntable/up_6ed4293c/views/view_002_030deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_001_015deg.png",
|
||||
"_turntable/up_6ed4293c/views/view_000_000deg.png",
|
||||
"20260628_001216_pad_20260626_035101_pad_20260626_034830_jb.nobg.png",
|
||||
"20260627_232502_pad_20260626_035101_pad_20260626_034830_jb.nobg.png",
|
||||
"20260627_232843_pad_20260626_035101_pad_20260626_034830_jb.nobg.png",
|
||||
"20260627_232526_pad_20260626_035101_pad_20260626_034830_jb.nobg.png",
|
||||
"20260627_232302_pad_20260627_232133_image.png",
|
||||
"20260627_232238_pad_20260627_232133_image.png",
|
||||
"up_6ed4293c_face.png",
|
||||
"20260627_232209_image.png",
|
||||
"20260627_232151_image.png",
|
||||
@@ -3259,7 +3241,6 @@
|
||||
"20260627_161342_image.nobg.png",
|
||||
"20260618_053458_image.png_face.png",
|
||||
"20260627_161342_image.png",
|
||||
"20260627_161217_pad_20260627_161055_image.png",
|
||||
"20260627_161055_image.png",
|
||||
"20260627_160901_mr_sc_image.png",
|
||||
"20260627_160718_mr_sc_image.png",
|
||||
@@ -3275,7 +3256,6 @@
|
||||
"20260620_031100_20150913_211324.jpg",
|
||||
"20260627_154745_20150913_211324.jpg",
|
||||
"20260627_154404_20150913_211324.jpg",
|
||||
"20260627_153734_pad_20260620_031100_20150913_211324.jpg",
|
||||
"20260625_050554_sc_3_20260618_173728_image.nobg.png",
|
||||
"_turntable/cg_ad73335e/views/view_022_330deg.png",
|
||||
"_turntable/cg_ad73335e/views/view_021_315deg.png",
|
||||
@@ -3286,11 +3266,6 @@
|
||||
"cg_ac6274f0_face.png",
|
||||
"20260618_180939_image.png_face.png",
|
||||
"img_51.png_face.png",
|
||||
"20260627_150448_pad_20260627_150234_pad_20260627_150207_pad_20260627_145719_img_51.png",
|
||||
"20260627_150351_pad_20260627_150234_pad_20260627_150207_pad_20260627_145719_img_51.png",
|
||||
"20260627_150251_pad_20260627_150234_pad_20260627_150207_pad_20260627_145719_img_51.png",
|
||||
"20260627_150234_pad_20260627_150207_pad_20260627_145719_img_51.png",
|
||||
"20260627_150207_pad_20260627_145719_img_51.png",
|
||||
"20260627_150013_img_51.png",
|
||||
"20260627_145730_img_51.png",
|
||||
"20260627_145719_img_51.png",
|
||||
@@ -3345,27 +3320,13 @@
|
||||
"up_ae825fce_face.png",
|
||||
"_turntable/cg_4e2b6449/views/view_000_000deg.png",
|
||||
"_turntable/cg_4e2b6449/views/view_001_015deg.png",
|
||||
"20260627_134506_pad_20260627_130837_image.png",
|
||||
"20260627_134409_pad_20260627_130837_image.png",
|
||||
"_turntable/cg_4e2b6449/views/view_003_045deg.png",
|
||||
"_turntable/cg_4e2b6449/views/view_002_030deg.png",
|
||||
"20260627_133359_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_133236_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_133149_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_133128_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_133024_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_132913_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_132744_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_132456_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_132402_pad_20260627_132332_image.nobg.png",
|
||||
"20260627_132402_pad_20260627_132332_image.png",
|
||||
"20260627_132332_image.png",
|
||||
"_turntable/cg_65f71c4d/views/view_001_015deg.png",
|
||||
"_turntable/cg_65f71c4d/views/view_000_000deg.png",
|
||||
"_turntable/cg_65f71c4d/views/view_023_345deg.png",
|
||||
"20260627_132208_pad_20260626_224632_sc_image.png",
|
||||
"20260627_132151_sc_image.png",
|
||||
"20260627_132035_pad_20260626_224632_sc_image.png",
|
||||
"_turntable/cg_870f3f93/views/view_023_345deg.png",
|
||||
"_turntable/cg_870f3f93/views/view_018_270deg.png",
|
||||
"_turntable/cg_870f3f93/views/view_016_240deg.png",
|
||||
@@ -3382,12 +3343,7 @@
|
||||
"_turntable/cg_870f3f93/views/view_003_045deg.png",
|
||||
"_turntable/cg_870f3f93/views/view_001_015deg.png",
|
||||
"_turntable/cg_870f3f93/views/view_000_000deg.png",
|
||||
"20260627_131628_pad_20260622_053758_2_20260621_115215_image.png",
|
||||
"20260627_131605_pad_20260622_053758_2_20260621_115215_image.png",
|
||||
"20260627_131420_2_20260621_115215_image.png",
|
||||
"20260627_131120_pad_20260627_130837_image.png",
|
||||
"20260627_131008_pad_20260627_130837_image.png",
|
||||
"20260627_130925_pad_20260627_130837_image.png",
|
||||
"20260627_130837_image.png",
|
||||
"20260627_130827_image.png",
|
||||
"_turntable/20260618_133729_image.png/views/view_021_315deg.png",
|
||||
@@ -3482,7 +3438,6 @@
|
||||
"20260627_123945_8_20260627_123731_image.png",
|
||||
"20260627_123935_image.png",
|
||||
"20260627_123928_7_20260627_123731_image.png",
|
||||
"20260627_123911_6_20260627_123731_image.png",
|
||||
"20260627_123855_5_20260627_123731_image.png",
|
||||
"20260627_123838_4_20260627_123731_image.png",
|
||||
"20260627_123822_3_20260627_123731_image.png",
|
||||
@@ -3749,9 +3704,9 @@
|
||||
"_turntable/cg_7ec17537/views/view_003_045deg.png",
|
||||
"_turntable/cg_7ec17537/views/view_002_030deg.png",
|
||||
"_turntable/cg_7ec17537/views/view_001_015deg.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_033831_dup_20260628_033600_dup_view_000_000deg.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_033600_dup_view_000_000deg.png",
|
||||
"_turntable/cg_7ec17537/views/view_000_000deg.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_033600_dup_view_000_000deg.png",
|
||||
"_turntable/cg_7ec17537/views/20260628_033831_dup_20260628_033600_dup_view_000_000deg.png",
|
||||
"_turntable/up_154b502c/views/view_023_345deg.png",
|
||||
"_turntable/up_154b502c/views/view_022_330deg.png",
|
||||
"_turntable/up_154b502c/views/view_021_315deg.png",
|
||||
@@ -4287,8 +4242,6 @@
|
||||
"_turntable/cg_18040099/views/view_002_030deg.png",
|
||||
"_turntable/cg_18040099/views/view_001_015deg.png",
|
||||
"_turntable/cg_18040099/views/view_000_000deg.png",
|
||||
"20260627_044054_pad_20260621_205908_0_20260621_205151_image.png",
|
||||
"20260627_044022_pad_20260621_205908_0_20260621_205151_image.png",
|
||||
"20260627_043800_dup_20260624_055327_image.nobg.nobg.png",
|
||||
"20260624_125511_dup_20260624_055327_image.nobg.nobg.png",
|
||||
"20260624_125511_dup_20260624_055327_image.nobg.nobg.nobg.png",
|
||||
@@ -4296,16 +4249,6 @@
|
||||
"20260627_043555_dup_20260624_055327_image.nobg.nobg.png",
|
||||
"20260627_043455_dup_20260624_055327_image.nobg.png",
|
||||
"20260624_125511_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_043155_crop_20260627_042652_pad_20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_043055_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042900_pad_20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042835_crop_20260627_042652_pad_20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042719_pad_20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042652_pad_20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042652_pad_20260627_042554_pad_20260627_042228_image.nobg.nobg.png",
|
||||
"20260627_042620_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042554_pad_20260627_042228_image.nobg.png",
|
||||
"20260627_042554_pad_20260627_042228_image.nobg.nobg.png",
|
||||
"20260627_042525_image.nobg.png",
|
||||
"20260627_042228_image.nobg.png",
|
||||
"20260627_042228_image.png",
|
||||
@@ -4317,8 +4260,6 @@
|
||||
"20260627_041236_image.nobg.png",
|
||||
"20260627_041236_image.png",
|
||||
"20260621_033259_image.nobg.png",
|
||||
"20260627_040944_pad_20260627_030425_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_040926_pad_20260627_030425_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_040817_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_040738_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_040304_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
@@ -4348,7 +4289,6 @@
|
||||
"20260627_030739_sc_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"cg_18040099_face.png",
|
||||
"20260627_030425_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_030441_crop_20260627_030425_dup_20260624_125526_dup_20260624_055327_image.nobg.png",
|
||||
"20260627_030425_dup_20260624_125526_dup_20260624_055327_image.nobg.nobg.png",
|
||||
"20260627_030344_sc_image.png",
|
||||
"20260627_030145_sc_dup_20260624_055327_image.nobg.png",
|
||||
@@ -4402,10 +4342,6 @@
|
||||
"_turntable/20260618_181600_image.png/views/view_003_090deg.png",
|
||||
"_turntable/20260618_181600_image.png/views/view_002_060deg.png",
|
||||
"_turntable/20260618_181600_image.png/views/view_001_030deg.png",
|
||||
"_turntable/20260618_181600_image.png/views/view_000_000deg.png",
|
||||
"20260626_234431_crop_20260626_231655_sc_image.nobg.png",
|
||||
"20260626_231655_sc_image.nobg.png",
|
||||
"20260618_181600_image.png_face.png",
|
||||
"20260626_234334_dup_20260626_231655_sc_image.png",
|
||||
"20260626_231655_sc_image.png",
|
||||
"20260626_231349_sc_image.png",
|
||||
@@ -4688,7 +4624,6 @@
|
||||
"20260618_015041_20260618_004313_20260616_021938_20160903_200935.nobg.nobg.png",
|
||||
"20260626_124145_20160903_200935.jpg",
|
||||
"cg_4671b6c4_face.png",
|
||||
"20260626_152247_crop_20260626_152107_20160903_200935.nobg.nobg.nobg.nobg.png",
|
||||
"20260626_152107_20160903_200935.nobg.png",
|
||||
"20260626_151945_dup_20260626_151844_20160903_200935.nobg.png",
|
||||
"20260626_151844_20160903_200935.nobg.png",
|
||||
@@ -5056,25 +4991,10 @@
|
||||
"_turntable/b1.png/views/view_002_030deg.png",
|
||||
"_turntable/b1.png/views/view_001_015deg.png",
|
||||
"_turntable/b1.png/views/view_000_000deg.png",
|
||||
"20260626_053719_pad_20260619_224737_img_14.nobg.png",
|
||||
"20260626_053719_pad_20260619_224737_img_14.nobg.nobg.png",
|
||||
"20260626_053754_pad_20260619_224737_img_14.png",
|
||||
"20260626_053719_pad_20260619_224737_img_14.png",
|
||||
"20260626_043734_7_20260618_053802_image.nobg.nobg.png",
|
||||
"20260626_043915_crop_20260626_043734_7_20260618_053802_image.nobg.nobg.png",
|
||||
"20260626_043734_7_20260618_053802_image.nobg.png",
|
||||
"20260628_032038_dup_20260618_053932_7_20260618_053802_image.nobg.png",
|
||||
"20260618_053932_7_20260618_053802_image.nobg.png",
|
||||
"20260626_041550_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_041539_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_041515_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_041456_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_041410_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_041256_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_040655_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_040550_sc_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_035131_pose_pad_20260626_034830_jb.nobg.png",
|
||||
"20260626_035101_pad_20260626_034830_jb.nobg.png",
|
||||
"20260628_032038_dup_20260618_053932_7_20260618_053802_image.nobg.png",
|
||||
"20260626_034830_jb.nobg.png",
|
||||
"20260626_034830_jb.png",
|
||||
"20260626_034708_jb.png",
|
||||
@@ -5094,11 +5014,6 @@
|
||||
"20260626_030918_jb1.png",
|
||||
"20260626_030908_1_20260618_050846_img_4.png",
|
||||
"20260626_025708_2_20260625_205722_image.png",
|
||||
"20260626_025338_pad_20260625_205913_8_20260625_205722_image.png",
|
||||
"20260626_023528_pad_20260625_205913_8_20260625_205722_image.png",
|
||||
"20260626_021942_pad_20260625_205913_8_20260625_205722_image.png",
|
||||
"20260626_021533_pad_20260625_205828_4_20260625_205722_image.png",
|
||||
"20260626_014422_pad_20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260626_005644_dup_20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260626_005504_Pasted image (9).nobg.png",
|
||||
"20260626_005504_Pasted image (9).png",
|
||||
@@ -5112,7 +5027,6 @@
|
||||
"20260625_231601_sc_image.png",
|
||||
"20260625_225929_sc_image.png",
|
||||
"20260625_223304_p12.png",
|
||||
"20260625_213330_pad_20260625_193323_image.png",
|
||||
"20260625_210437_image.png",
|
||||
"20260625_210432_image.png",
|
||||
"20260625_210424_image.png",
|
||||
@@ -5210,8 +5124,8 @@
|
||||
"20260625_021910_image.png",
|
||||
"20260625_021702_sc_image.png",
|
||||
"20260625_021615_sc_image.png",
|
||||
"20260625_015711_sc_image.png",
|
||||
"20260625_020212_dup_20260625_015711_sc_image.png",
|
||||
"20260625_015711_sc_image.png",
|
||||
"20260625_015711_sc_image.nobg.png",
|
||||
"20260625_015900_sc_image.png",
|
||||
"20260625_015413_sc_image.png",
|
||||
@@ -5422,8 +5336,6 @@
|
||||
"20260624_164404_dup_20260624_163951_dup_20260624_163352_dup_20260624_162601_mr_0_20260622_093058_image.png",
|
||||
"20260624_164353_dup_20260624_163951_dup_20260624_163352_dup_20260624_162601_mr_0_20260622_093058_image.png",
|
||||
"20260624_162601_mr_0_20260622_093058_image.nobg.png",
|
||||
"20260624_164240_crop_20260624_162342_1_20260622_093058_image.png",
|
||||
"20260624_164218_crop_20260624_162601_mr_0_20260622_093058_image.nobg.png",
|
||||
"20260624_164059_dup_20260624_163951_dup_20260624_163352_dup_20260624_162601_mr_0_20260622_093058_image.png",
|
||||
"20260624_163951_dup_20260624_163352_dup_20260624_162601_mr_0_20260622_093058_image.png",
|
||||
"20260624_164116_dup_20260624_163951_dup_20260624_163352_dup_20260624_162601_mr_0_20260622_093058_image.png",
|
||||
@@ -9308,12 +9220,38 @@
|
||||
cancelManualCrop();
|
||||
if (asCopy && d.new_filename) {
|
||||
showToast('Cropped to copy', 'success');
|
||||
const newFn = d.new_filename;
|
||||
|
||||
// Clone metadata locally to avoid refresh blink
|
||||
filePrompts[newFn] = filePrompts[fname];
|
||||
filePoses[newFn] = filePoses[fname];
|
||||
fileHasBg[newFn] = fileHasBg[fname];
|
||||
fileHasClothing[newFn] = fileHasClothing[fname];
|
||||
fileContentType[newFn] = fileContentType[fname] || 'image';
|
||||
fileSourceRefs[newFn] = [fname];
|
||||
fileHidden[newFn] = false;
|
||||
fileIsSource[newFn] = false;
|
||||
fileArchived[newFn] = false;
|
||||
|
||||
// Insert the cropped copy right after the original in the studio strip.
|
||||
lbUrls.splice(lbIdx + 1, 0, IMAGE_FOLDER + d.new_filename + '?t=' + Date.now());
|
||||
lbNames.splice(lbIdx + 1, 0, d.new_filename);
|
||||
lbUrls.splice(lbIdx + 1, 0, IMAGE_FOLDER + newFn + '?t=' + Date.now());
|
||||
lbNames.splice(lbIdx + 1, 0, newFn);
|
||||
lbIdx = lbIdx + 1;
|
||||
|
||||
const group = groupData.get(lbCurrentGid);
|
||||
if (group) {
|
||||
const gIdx = group.names.indexOf(fname);
|
||||
if (gIdx !== -1) {
|
||||
group.urls.splice(gIdx + 1, 0, lbUrls[lbIdx]);
|
||||
group.names.splice(gIdx + 1, 0, lbNames[lbIdx]);
|
||||
group.visibleIdx = group.names.map((_, i) => i).filter(i => !fileHidden[group.names[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
updateStudio();
|
||||
refreshNow();
|
||||
_followLatestFilename = newFn;
|
||||
_followLatestGid = lbCurrentGid;
|
||||
refreshNow(true);
|
||||
} else {
|
||||
showToast('Cropped', 'success');
|
||||
lbUrls[lbIdx] = IMAGE_FOLDER + fname + '?t=' + Date.now();
|
||||
@@ -9414,6 +9352,9 @@
|
||||
fileHasClothing[newFn] = fileHasClothing[fname];
|
||||
fileContentType[newFn] = 'image';
|
||||
fileSourceRefs[newFn] = [fname];
|
||||
fileHidden[newFn] = false;
|
||||
fileIsSource[newFn] = false;
|
||||
fileArchived[newFn] = false;
|
||||
|
||||
lbUrls.splice(lbIdx + 1, 0, IMAGE_FOLDER + newFn + '?t=' + Date.now());
|
||||
lbNames.splice(lbIdx + 1, 0, newFn);
|
||||
@@ -9421,9 +9362,12 @@
|
||||
|
||||
const group = groupData.get(lbCurrentGid);
|
||||
if (group) {
|
||||
group.urls.splice(lbIdx, 0, lbUrls[lbIdx]);
|
||||
group.names.splice(lbIdx, 0, lbNames[lbIdx]);
|
||||
group.visibleIdx = group.names.map((_, i) => i).filter(i => !fileHidden[group.names[i]]);
|
||||
const gIdx = group.names.indexOf(fname);
|
||||
if (gIdx !== -1) {
|
||||
group.urls.splice(gIdx + 1, 0, lbUrls[lbIdx]);
|
||||
group.names.splice(gIdx + 1, 0, lbNames[lbIdx]);
|
||||
group.visibleIdx = group.names.map((_, i) => i).filter(i => !fileHidden[group.names[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
updateStudio();
|
||||
@@ -9464,20 +9408,24 @@
|
||||
fileHasClothing[newFn] = fileHasClothing[fname];
|
||||
fileContentType[newFn] = fileContentType[fname] || 'image';
|
||||
fileSourceRefs[newFn] = [fname];
|
||||
fileHidden[newFn] = false;
|
||||
fileIsSource[newFn] = false;
|
||||
fileArchived[newFn] = false;
|
||||
|
||||
// Insert the duplicate right after the current image in the studio strip
|
||||
lbUrls.splice(lbIdx + 1, 0, IMAGE_FOLDER + newFn + '?t=' + Date.now());
|
||||
lbNames.splice(lbIdx + 1, 0, newFn);
|
||||
lbIdx = lbIdx + 1;
|
||||
// Append the duplicate to the end of the filmstrip
|
||||
lbUrls.push(IMAGE_FOLDER + newFn + '?t=' + Date.now());
|
||||
lbNames.push(newFn);
|
||||
lbIdx = lbUrls.length - 1;
|
||||
|
||||
const group = groupData.get(lbCurrentGid);
|
||||
if (group) {
|
||||
group.urls.splice(lbIdx, 0, lbUrls[lbIdx]);
|
||||
group.names.splice(lbIdx, 0, lbNames[lbIdx]);
|
||||
group.urls.push(lbUrls[lbIdx]);
|
||||
group.names.push(lbNames[lbIdx]);
|
||||
group.visibleIdx = group.names.map((_, i) => i).filter(i => !fileHidden[group.names[i]]);
|
||||
}
|
||||
|
||||
updateStudio();
|
||||
_followLatestFilename = newFn;
|
||||
_followLatestGid = lbCurrentGid;
|
||||
refreshNow(true);
|
||||
} else {
|
||||
@@ -10507,21 +10455,50 @@
|
||||
const fresh = groupData.get(lbCurrentGid);
|
||||
if (fresh) {
|
||||
const curName = lbNames[lbIdx];
|
||||
const newIdx = fresh.names.indexOf(curName);
|
||||
// Snapshot ref filenames before overwriting lbNames
|
||||
const oldRefNames = _sbRefIndices.map(i => lbNames[i]).filter(Boolean);
|
||||
lbUrls = fresh.urls;
|
||||
lbNames = fresh.names;
|
||||
// Keep lbIdx stable when current image not yet in fresh data
|
||||
// (e.g. duplicate just created — server JSON may lag by the debounce window).
|
||||
|
||||
// Optimistic merge: retain any locally added names/urls that are not yet in the freshly loaded server list
|
||||
const mergedNames = [...fresh.names];
|
||||
const mergedUrls = [...fresh.urls];
|
||||
|
||||
for (let i = 0; i < lbNames.length; i++) {
|
||||
const localName = lbNames[i];
|
||||
if (!mergedNames.includes(localName)) {
|
||||
if (i === 0) {
|
||||
mergedNames.unshift(localName);
|
||||
mergedUrls.unshift(lbUrls[i]);
|
||||
} else {
|
||||
const prevLocal = lbNames[i - 1];
|
||||
const freshIdx = mergedNames.indexOf(prevLocal);
|
||||
if (freshIdx !== -1) {
|
||||
mergedNames.splice(freshIdx + 1, 0, localName);
|
||||
mergedUrls.splice(freshIdx + 1, 0, lbUrls[i]);
|
||||
} else {
|
||||
mergedNames.push(localName);
|
||||
mergedUrls.push(lbUrls[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Update groupData as well so that other components have correct metadata
|
||||
fresh.names = mergedNames;
|
||||
fresh.urls = mergedUrls;
|
||||
fresh.visibleIdx = fresh.names.map((_, idx) => idx).filter(idx => !fileHidden[fresh.names[idx]]);
|
||||
|
||||
lbUrls = mergedUrls;
|
||||
lbNames = mergedNames;
|
||||
|
||||
const newIdx = lbNames.indexOf(curName);
|
||||
if (newIdx >= 0) {
|
||||
lbIdx = newIdx;
|
||||
} else if (lbIdx >= fresh.names.length) {
|
||||
lbIdx = fresh.names.length - 1;
|
||||
} else if (lbIdx >= lbNames.length) {
|
||||
lbIdx = lbNames.length - 1;
|
||||
}
|
||||
// Re-map multi-ref selections to new positions by filename
|
||||
_sbRefIndices = oldRefNames
|
||||
.map(n => fresh.names.indexOf(n))
|
||||
.map(n => lbNames.indexOf(n))
|
||||
.filter(i => i >= 0);
|
||||
updateStudio();
|
||||
}
|
||||
@@ -11266,13 +11243,32 @@
|
||||
const r = await fetch(`${API}/images/${encodeURIComponent(filename)}/set-preferred`, {method:'POST'});
|
||||
if (!r.ok) { console.error('set-preferred failed', r.status); return; }
|
||||
const data = await r.json();
|
||||
// Update sort orders locally
|
||||
|
||||
const gid = data.group_id;
|
||||
fileSortOrders[filename] = 0;
|
||||
const fresh = groupData.get(gid);
|
||||
if (fresh) {
|
||||
fresh.names.forEach(n => {
|
||||
if (n !== filename) {
|
||||
fileSortOrders[n] = (fileSortOrders[n] || 0) + 1;
|
||||
}
|
||||
});
|
||||
const paired = fresh.names.map((name, i) => ({ name, url: fresh.urls[i] }));
|
||||
paired.sort((a, b) => {
|
||||
const oa = fileSortOrders[a.name] ?? 9999;
|
||||
const ob = fileSortOrders[b.name] ?? 9999;
|
||||
if (oa !== ob) return oa - ob;
|
||||
return a.name.length - b.name.length;
|
||||
});
|
||||
fresh.names = paired.map(p => p.name);
|
||||
fresh.urls = paired.map(p => p.url);
|
||||
fresh.visibleIdx = fresh.names.map((_, i) => i).filter(i => !fileHidden[fresh.names[i]]);
|
||||
}
|
||||
|
||||
// Re-open picker to reflect new order
|
||||
showVariantPicker(filename);
|
||||
// Poll for the freshly-extracted face crop (async on the server).
|
||||
showVariantPicker(gid);
|
||||
loadFaceThumb(gid, 8);
|
||||
setTimeout(refreshNow, 2000);
|
||||
} catch(e) { console.error(e); }
|
||||
}
|
||||
|
||||
@@ -12037,6 +12033,9 @@
|
||||
// Refresh UI as each task completes; auto-follow to newest image
|
||||
if (job.done > prevDone) {
|
||||
prevDone = job.done;
|
||||
if (job.latest_output) {
|
||||
_followLatestFilename = job.latest_output;
|
||||
}
|
||||
_followLatestGid = lbCurrentGid;
|
||||
refreshNow(true);
|
||||
}
|
||||
@@ -12057,6 +12056,9 @@
|
||||
_sbSelectedAngles.clear();
|
||||
_sbPoseEdits = {};
|
||||
_sbGenJobId = null;
|
||||
if (job.latest_output) {
|
||||
_followLatestFilename = job.latest_output;
|
||||
}
|
||||
_followLatestGid = lbCurrentGid;
|
||||
refreshNow(true);
|
||||
renderSidebarGenerate();
|
||||
@@ -13150,10 +13152,43 @@
|
||||
const label = d.used_sam2 ? 'Done (SAM2)' : 'Done (rembg)';
|
||||
if (statusEl) statusEl.textContent = label;
|
||||
showToast('Background removed', 'success');
|
||||
refreshNow(true);
|
||||
// Build URL same way as all gallery images: IMAGE_FOLDER + filename
|
||||
const nobgUrl = IMAGE_FOLDER + d.nobg_filename + '?t=' + Date.now();
|
||||
|
||||
const newFn = d.nobg_filename;
|
||||
const nobgUrl = IMAGE_FOLDER + newFn + '?t=' + Date.now();
|
||||
_nobgSidecars.set(fname, nobgUrl);
|
||||
|
||||
// Clone metadata locally to avoid refresh blink
|
||||
filePrompts[newFn] = filePrompts[fname];
|
||||
filePoses[newFn] = (filePoses[fname] || '') + ' (No BG)';
|
||||
fileHasBg[newFn] = false;
|
||||
fileHasClothing[newFn] = fileHasClothing[fname];
|
||||
fileContentType[newFn] = 'image';
|
||||
fileSourceRefs[newFn] = [fname];
|
||||
fileHidden[newFn] = false;
|
||||
fileIsSource[newFn] = false;
|
||||
fileArchived[newFn] = false;
|
||||
|
||||
// Insert the sidecar right after the current image in the studio strip
|
||||
lbUrls.splice(lbIdx + 1, 0, nobgUrl);
|
||||
lbNames.splice(lbIdx + 1, 0, newFn);
|
||||
|
||||
const group = groupData.get(lbCurrentGid);
|
||||
if (group) {
|
||||
const gIdx = group.names.indexOf(fname);
|
||||
if (gIdx !== -1) {
|
||||
group.urls.splice(gIdx + 1, 0, nobgUrl);
|
||||
group.names.splice(gIdx + 1, 0, newFn);
|
||||
group.visibleIdx = group.names.map((_, i) => i).filter(i => !fileHidden[group.names[i]]);
|
||||
}
|
||||
}
|
||||
|
||||
// Move to the new no-bg image
|
||||
lbIdx = lbIdx + 1;
|
||||
updateStudio();
|
||||
_followLatestFilename = newFn;
|
||||
_followLatestGid = lbCurrentGid;
|
||||
refreshNow(true);
|
||||
|
||||
// Preload before swap to avoid black flash
|
||||
const preload = new Image();
|
||||
preload.onload = () => {
|
||||
@@ -13197,16 +13232,10 @@
|
||||
const d = await r.json();
|
||||
if (statusEl) statusEl.textContent = 'Done (rembg)';
|
||||
showToast('Background removed (rembg)', 'success');
|
||||
fileHasBg[fname] = false;
|
||||
_bustStudioImage(fname);
|
||||
toggleCheckerboard(true);
|
||||
refreshNow(true);
|
||||
const nobgUrl = IMAGE_FOLDER + d.nobg_filename + '?t=' + Date.now();
|
||||
_nobgSidecars.set(fname, nobgUrl);
|
||||
const preload = new Image();
|
||||
preload.onload = () => {
|
||||
const img = document.getElementById('lbImg');
|
||||
if (img) img.src = nobgUrl;
|
||||
toggleCheckerboard(true);
|
||||
};
|
||||
preload.src = nobgUrl;
|
||||
}
|
||||
} catch (e) { if (statusEl) statusEl.textContent = 'Error: ' + e; }
|
||||
if (btn) btn.disabled = false;
|
||||
@@ -13248,25 +13277,42 @@
|
||||
try {
|
||||
const r = await fetch(`${API}/images/${encodeURIComponent(fname)}/set-preferred`, {method:'POST'});
|
||||
if (!r.ok) return;
|
||||
|
||||
// Update sort orders locally to match backend logic
|
||||
const gid = lbCurrentGid;
|
||||
fileSortOrders[fname] = 0;
|
||||
const url = lbUrls[lbIdx];
|
||||
const otherUrls = lbUrls.filter((_, i) => i !== lbIdx);
|
||||
const otherNames = lbNames.filter((_, i) => i !== lbIdx);
|
||||
lbUrls = [url, ...otherUrls];
|
||||
lbNames = [fname, ...otherNames];
|
||||
lbIdx = 0;
|
||||
updateStudio();
|
||||
refreshNow(true);
|
||||
// Fire-and-forget face extraction for face-book
|
||||
fetch(`${API}/images/${encodeURIComponent(fname)}/extract-face`, { method: 'POST' })
|
||||
.then(r => r.ok ? r.json() : null)
|
||||
.then(d => {
|
||||
if (d?.status === 'queued') {
|
||||
showToast('Extracting face reference…', 'info');
|
||||
loadFaceThumb(lbCurrentGid, 8); // poll until the crop lands
|
||||
const fresh = groupData.get(gid);
|
||||
if (fresh) {
|
||||
fresh.names.forEach(n => {
|
||||
if (n !== fname) {
|
||||
fileSortOrders[n] = (fileSortOrders[n] || 0) + 1;
|
||||
}
|
||||
})
|
||||
.catch(() => {});
|
||||
});
|
||||
// Re-sort local group data
|
||||
const paired = fresh.names.map((name, i) => ({ name, url: fresh.urls[i] }));
|
||||
paired.sort((a, b) => {
|
||||
const oa = fileSortOrders[a.name] ?? 9999;
|
||||
const ob = fileSortOrders[b.name] ?? 9999;
|
||||
if (oa !== ob) return oa - ob;
|
||||
return a.name.length - b.name.length;
|
||||
});
|
||||
fresh.names = paired.map(p => p.name);
|
||||
fresh.urls = paired.map(p => p.url);
|
||||
fresh.visibleIdx = fresh.names.map((_, i) => i).filter(i => !fileHidden[fresh.names[i]]);
|
||||
|
||||
lbUrls = fresh.urls;
|
||||
lbNames = fresh.names;
|
||||
lbIdx = lbNames.indexOf(fname);
|
||||
}
|
||||
|
||||
updateStudio();
|
||||
showToast('Set as preferred', 'success');
|
||||
|
||||
// Delayed refresh to reconcile with server without disrupting local state
|
||||
setTimeout(refreshNow, 2000);
|
||||
|
||||
// Poll for the freshly-extracted face crop (async on the server).
|
||||
loadFaceThumb(gid, 8);
|
||||
} catch(e) { console.error(e); }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user