Spaces:
Running
Running
Commit History
3 days ago
-
load timeList (newest-first interiors) and pass it to PhotoViewer for date-based navigation
Verified signaturebcd06d8 -
Upload src/App.jsx
Verified signature31e0336
9 days ago
-
fix: restore Eurogold images + kệ xoong search precision
- catalogue.js: SKU upsert prefers the row whose lead image is live, so a dead V.AISTUDIO /eurogold_img/ row can no longer clobber a live www.eurogold.vn photo (221 dead Eurogold leads -> 5). - catalogue.js: recoverDeadLeads maps dead-only SKUs through the dead filename itself (EPD4635VX->EPD4635.jpg, EUM101->EUM101L.jpg ...), restoring 16 more products deterministically. - product-search.js: kệ/giá name synonyms so 'kệ xoong' finds Eurogold 'Giá xoong nồi' racks; per-score-group round-robin tie-break so one brand family cannot swallow the field (Eurogold now visible in top-24). - merge.js: a strong product query (every term in a product name) drops CLIP interiors from the field -- kệ xoong shows ONLY racks; keywordFeatured defaults to productLimit so every relevant hit gets the neon ring+scale; leadImage refuses dead V.AISTUDIO dirs; PRODUCT_LIMIT 12->24. - App.jsx/worker.js: search-products limit 24->48. - tests: updated caps test (24), worker-shape score, added cro…aba5d22
10 days ago
-
feat: newest added products appear in 'mới' front row with neon ring (like newest interiors) (#5)
- src/worker.js: recentProductsOf + composite changed signature (36578e6ba682766e6bcb9e38c3b586c3ee9a8b39) - src/App.jsx: recentProducts state + handler + mergeResults option (a60dc2af7a78597a5906cc4432e5f9a77cb2b772) - src/merge.js: recentProducts ringed prepend (15f4e8989ef33830d9f50c984bd093dcd3237573) - dist bundle: recentProducts state/handler + merge ringed prepend (c82a18b21d6f385b1152325b477ed2ac06ad7278) - dist worker: recentProductsOf + composite changed (avatar-updated recentProducts) (1b1735130baf3afc4d92b550c64d66d72075459d)58b6cf1
11 days ago
-
Ring every exact hit with running neon, and sync vai-avatar's newest photos
ML InternFour changes, all of them visible at a glance: 1. The neon outline now RUNS. It was a static ring with a breathing glow; it is a conic gradient masked to a 2px border and rotated every frame, so the light travels around the edge. An animated border-color cannot do this (borders take no gradient) and an animated box-shadow only pulses in place. The stroke is on ::before and the halo on ::after, because one pseudo-element can hold only one background and the ring needs both. mask-composite turns the full-size gradient into an outline; without it the gradient would fill the tile and hide the photograph, so the test asserts the mask is present. 2. Interiors published on vai-avatar now appear here. src/avatar-interiors.js reads bep40/vai-avatar2-interior/index.json, which is the file carrying created_at -- 153 rows, newest 2026-10-05. metadata.json has 1,752 rows but no timestamps at all, so it cannot answer "newest". These are matched by TEXT, not by th…eb92bc7 -
V.AI STUDIO backdrop, vai-avatar's product search, size/position, neon
ML InternFour changes, all on the search field. Background. The same artwork vai-avatar shows on its body (public/avatars/vaistudio_center.png, copied byte-for-byte, md5 checked) at 30% opacity. It is a separate fixed layer rather than a background-image on .app because opacity on .app would fade the photographs and the search pill with it, and background-attachment:fixed cannot compose with the .vignette and .grain layers already sitting on top of the field. Product search. Ranking is now vai-avatar's own scoreProduct(), ported to product-search.js rather than extended in place, so the two modules can be diffed against each other when the original changes. The whole rule set carries over: exact SKU/model/title must win outright, millimetre sizes are compared numerically (the specs write "900 mm", "900mm" and "W900" for the same shelf), material words are matched against specs as well as title, and brand names get a flat bonus. 35 tests in scripts/test-product-search.mjs pin each rule. Both s…0df020e
14 days ago
-
feat(field): merge Malloca products into the interior image field
Verified signaturee34a847 -
feat(catalogue): read vai-avatar datasets directly so add/edit/delete sync without a writer
Verified signatureThe catalogue could only ever be as fresh as the last commit to this Space, and the only writer (the reconciler in the vai-avatar Space) stays disabled until that Space is given a write token. huggingface.co now reflects the caller's Origin in Access-Control-Allow-Origin on both the /resolve hop and the /api/resolve-cache hop it redirects to, so this Space can read the two datasets cross-origin and needs no token at all. fetchJSON() now tries the live dataset first and keeps the committed mirror as a same-origin fallback, so a Hub wobble cannot empty the shop and a stale mirror is no longer a ceiling. Every candidate is parsed and shape-checked, so a truncated or HTML body cannot pass as a catalogue. App.jsx polls every 30s (was 90s), which is now the whole end-to-end delay.e85692d
15 days ago
-
Upload src/App.jsx
Verified signature44a97d8 -
Upload src/App.jsx
Verified signatureaa815f9
16 days ago
-
fix(app): drop stray re-export, fix typo, declare refs before the worker effect reads them
Verified signature2156fc0 -
feat(app): poll the live catalogue so vai-avatar add/edit/delete propagate, and route products through the photo viewer
Verified signature291d837 -
Upload src/App.jsx
Verified signaturea68d11b
17 days ago
-
Deploy Vietnamese interior image field (1222 imgs, multilingual CLIP text tower)
Verified signaturec9e39f3