Spaces:
Running
Running
Commit History
21 days ago
-
feat(sync): two-way interior sync against vai-avatar's library
Verified signatureThe field is missing 51 interiors vai-avatar serves, and still holds 151 the user deleted there. Copying files cannot close the gap. The field searches with its own CLIP matrix; vai-avatar's library uses a different model, so a new image has to be encoded with the field's model or it lands in a 512-dim space the field never searches. Measured: cosine between the two datasets on the 377 images they share is 0.6347, and cosine between two different images is 0.6336. Same size, no signal. The script reads the API's live list rather than metadata.json, which retains deleted rows (1,752 rows for 1,122 live images) and would resurrect anything the user removed. Verified against the real files: the headerless float32 codec round-trips the 2.4 MB blob byte-identically, the index and blob agree at 1,222 rows, new records carry exactly the scraper's fields, and a dry run reports +51 / -151. Run: pip install -r scripts/requirements-sync.txt python scripts/sync-interiors.py --dry-run07cd7be
22 days ago
-
feat: product share links + repair Malloca/Hafele misbranding
Verified signatureTwo things. Share links. vai-avatar served share pages for interior images and chat answers but nothing for products, so a product link had nowhere to point. A /share/p/<sku> route now exists there and resolves against VAIX_PRODUCTS, the 11,704-row catalogue that Space already loads. A "Xem thêm" button in the viewer toolbar links products to it and interiors to the existing /share/i/. The link is keyed on the photo, not the image, so paging a gallery still shares the product rather than one of its photographs. Misbranding. 99 rows are named "Malloca | ..." while their brand field says Hafele, and all 1,011 of their image URLs point at Hafele's CDN rather than the Malloca storefront. Hafele resells Malloca, so these are Malloca products catalogued under the wrong brand. 77 now show a real Malloca photograph and the remaining 22, which have no Malloca row anywhere in the file, keep their photo with the brand corrected. No product is dropped and no non-Malloca row is touched. Matching…9bf56b3 -
fix(catalogue): stop dropping 355 Malloca products that are not duplicates
Verified signature3fa0a11 -
feat(catalogue): load the full 8,162-product shop, not just pasted URLs
Verified signaturea301301 -
feat(field): merge Malloca products into the interior image field
Verified signaturee34a847 -
feat(catalogue): seed mirror without a Vite build
Verified signature2a7159f
23 days ago
-
Upload scripts/sync-catalogue.mjs
Verified signature0aa45f0 -
fix(sync): fail loudly on a PARTIAL mirror, and match entrypoint by realpath
Verified signatureTwo defects in the mirror sync, both of which produce "sửa sp không đồng bộ" with no error anywhere. 1) A partial fetch failure exited 0. The good file was written, the bad one was not — but public/catalogue is already committed, so the failed file stayed on disk as its previous version. refresh-catalogue.mjs then passed its requireRealFile + recordCount guards on that stale data, built, committed and printed REFRESH_OK. Result: products.json fresh, promos.json stale, so upstream edits and deletes silently stopped applying. That contradicts this file's own failure policy (and refresh-catalogue.mjs's): the previously committed mirror keeps serving. It did not — the push replaced it with a mixed one. Now ANY source failure fails the run, so the caller aborts before build/push and the last-good mirror stays live. The good file is still written, so one transient error does not discard a successful fetch; it just may not be published. 2) The direct-run c…1a32c2e -
Upload scripts/refresh-catalogue.mjs
Verified signature5a68e72 -
Upload scripts/refresh-catalogue.mjs
Verified signature280908b -
Upload scripts/refresh-catalogue.mjs
Verified signaturefb17130 -
Upload scripts/refresh-catalogue.mjs
Verified signature21d5365 -
Upload scripts/refresh-catalogue.mjs
Verified signature3460919 -
Upload scripts/refresh-catalogue.mjs
Verified signature6c22abf -
Upload scripts/refresh-catalogue.mjs
Verified signaturec573dc7 -
Upload scripts/refresh-catalogue.mjs
Verified signature5b9f2f1 -
fix: restore refresh-catalogue.mjs, truncated by a partial upload
Verified signatureThe previous commit replaced this file with only its middle section: the shebang, imports, main(), clone/install/sync steps and the mirror validation were all dropped, leaving `ok('built')` at top level and a ReferenceError on the first line. This restores the complete script with the intended changes — asset-reference verification moved ahead of the commit, and a guard that fails loudly if the build deletes the committed dist/ data.744798f -
fix: verify the served page before pushing, not after
Verified signatureThe asset-reference check ran after `git push`. index.html is not a Vite build input, so a stale reference is exactly the state that blanks the Space — and it was being published first, then reported. Move the check ahead of the commit so a bad build aborts with the last good bundle still serving. Also assert dist/prodimgs, products-gallery.json and products-index.json survive the build. src/ reads nothing from them, so their disappearance would not break the app or raise any error; this turns a silent 87 MB data loss into a loud failure.3279632 -
Upload scripts/refresh-catalogue.mjs
Verified signatureb19467c -
Add scheduled catalogue refresh script: clone, sync, build, commit, verify index.html refs
Verified signature720759a -
Upload scripts/sync-catalogue.mjs
Verified signaturec86d53a