0000000000000000000000000000000000000000 3beaae006a11cfbb222918a0675cfaa50233268a Ubuntu <ubuntu@instance-20260630-0134.(none)> 1790789982 +0000	clone: from https://github.com/horizonbymuneeb/novaaimart.git
3beaae006a11cfbb222918a0675cfaa50233268a da07f2d0b5fa8d6043b5eb7e26b04fe480b0b547 Alian <alian@localhost> 1790800627 +0000	commit: fix(admin): make the v2 console actually usable on mobile
da07f2d0b5fa8d6043b5eb7e26b04fe480b0b547 22821ddfe3b82c79accb40afa67db69c9cfadcba Alian <alian@localhost> 1790885441 +0000	commit: redesign(admin): professional ops-console token system for the v2 shell
22821ddfe3b82c79accb40afa67db69c9cfadcba b6d6cdbcac365c8d71d18728a84fbbfc1501229b Alian <alian@localhost> 1790885482 +0000	commit (amend): redesign(admin): professional ops-console token system for the v2 shell
b6d6cdbcac365c8d71d18728a84fbbfc1501229b 17392575030e1663a56795e637abce1172c5c87c Alian <alian@localhost> 1790885888 +0000	commit: redesign(admin): second pass - chrome contrast, dedupe alerts, table numerics, integration hierarchy
17392575030e1663a56795e637abce1172c5c87c 98d633c3a6ddc82ff0038a11120285f96bd8d1c9 Alian <alian@localhost> 1790886165 +0000	commit: fix(admin): fully solid mobile chrome (topbar + bottomnav)
98d633c3a6ddc82ff0038a11120285f96bd8d1c9 bc8069d5bcb226cb865fe09e195c896ba9bc6368 Alian <alian@localhost> 1790886285 +0000	commit: fix(admin): explicit solid hex on mobile topbar (var fallback missed)
bc8069d5bcb226cb865fe09e195c896ba9bc6368 80bb24892c1385197a151f59a1348bd58602acce Alian <alian@localhost> 1790886481 +0000	commit: polish(admin): drop duplicate feed row from Needs attention when banner shows it
80bb24892c1385197a151f59a1348bd58602acce e5b4886e070d9f61c512a9c12554ebc675eb1a3f Alian <alian@localhost> 1790887399 +0000	commit: redesign(admin): third pass - systemic contrast, mobile density, dedupe, hierarchy
e5b4886e070d9f61c512a9c12554ebc675eb1a3f b6fcba4c036000f2f475fd0942a74347565ca54d Alian <alian@localhost> 1790887784 +0000	commit: redesign(admin): final pass - kill false empty-states, dead charts, contradiction
b6fcba4c036000f2f475fd0942a74347565ca54d bf6db870b282623007a23561563392e82af93d44 Alian <alian@localhost> 1790887996 +0000	commit: fix(admin): normalize field/switch/control sizes across the whole platform
bf6db870b282623007a23561563392e82af93d44 d21fbbb4a41baadcfc9fbea5b8657ea1e9d23a1f Alian <alian@localhost> 1790888574 +0000	commit: fix(admin): repair search-field focus artifacts
d21fbbb4a41baadcfc9fbea5b8657ea1e9d23a1f d3fc30719a5bd432f6c022f061c4fdaf6dc95d99 Alian <alian@localhost> 1790888842 +0000	commit: fix(admin): kill double-focus outline on search inputs
d3fc30719a5bd432f6c022f061c4fdaf6dc95d99 64659c8f8d5594040d77b26204abed9ec822987e Alian <alian@localhost> 1790889035 +0000	commit: fix(admin): rewrite v2-search layout — inline-flex wrapper, centered svg + input
64659c8f8d5594040d77b26204abed9ec822987e 1e9bdf6234c8d4e8641e26f88d9fd597a8884cf5 Alian <alian@localhost> 1790889191 +0000	commit: fix(admin): bulletproof v2-search — no inner outline, rigid 20px line box
1e9bdf6234c8d4e8641e26f88d9fd597a8884cf5 e5a683766430a650299de5ed8af207a1388a7472 Alian <alian@localhost> 1790889344 +0000	commit: fix(admin): v2-search — inline-flex with margin-top/bottom auto centering
e5a683766430a650299de5ed8af207a1388a7472 e77f84a05b48e30ef1eaaebc8f15f7edd4957699 Alian <alian@localhost> 1790889483 +0000	commit: fix(admin): v2-search — plain flex wrapper instead of inline-flex
e77f84a05b48e30ef1eaaebc8f15f7edd4957699 9fff09815f108bb142199cca47c43c8b60c9fb32 Alian <alian@localhost> 1790889682 +0000	commit: fix(admin): v2-search — flex row + no margins, rely purely on align-items:center
9fff09815f108bb142199cca47c43c8b60c9fb32 d185b4aff827822d3890586aecdd91c9466722d6 Alian <alian@localhost> 1790889888 +0000	commit: fix(admin): v2-search — pin text to 32px line-height inside a 34px wrapper
d185b4aff827822d3890586aecdd91c9466722d6 4df28cec0a46afad0e40698c4057d6f371969896 Alian <alian@localhost> 1790890097 +0000	commit: fix(admin): v2-search — !important flex layout to beat legacy global input rules
4df28cec0a46afad0e40698c4057d6f371969896 cb4e912d187f33c7c9db3ab690828cc05b9f9d90 Alian <alian@localhost> 1790890908 +0000	commit: fix(admin): persist active tab across hard reloads
cb4e912d187f33c7c9db3ab690828cc05b9f9d90 024eb9e59552b1a9fe3da6ac150ecb219a2c805a Alian <alian@localhost> 1790891220 +0000	commit: fix(admin): surface real refresh error + auto-retry once on transient failures
024eb9e59552b1a9fe3da6ac150ecb219a2c805a d2b5ee50847bb00e9bc6b034038abc647ad5b7ba Alian <alian@localhost> 1790891719 +0000	commit: fix(admin): never blank the catalog during background refresh
d2b5ee50847bb00e9bc6b034038abc647ad5b7ba 9a1bf73af138e6e0961885ab541f6f0bb8be234e Alian <alian@localhost> 1790891876 +0000	commit: debug(admin): log catalog cache seeding on reload
9a1bf73af138e6e0961885ab541f6f0bb8be234e f6f703e46f39cefdda6d17947ff0de00bc41a4d3 Alian <alian@localhost> 1790892086 +0000	commit: debug(admin): log catalog cache writes to trace hard-reload seed
f6f703e46f39cefdda6d17947ff0de00bc41a4d3 53f02e84793694ffb018998720ab64be98dd681b Alian <alian@localhost> 1790892231 +0000	commit: fix(admin): guarantee catalog cache writes so hard reload shows stored products
53f02e84793694ffb018998720ab64be98dd681b 806ccf6889fd9d6ef2e8cf52499e04fed9e153ed Alian <alian@localhost> 1790892403 +0000	commit: debug(admin): trace mapped catalog count
806ccf6889fd9d6ef2e8cf52499e04fed9e153ed b85cdfd8c2de3b7e3d874117cc5c056ff1f6abff Alian <alian@localhost> 1790892710 +0000	commit: fix(admin): repair catalog cache syntax + persist reload diagnostics
b85cdfd8c2de3b7e3d874117cc5c056ff1f6abff 05597d3e5bac798a2dc31eb55511ee55a4ca7d86 Alian <alian@localhost> 1790892837 +0000	commit: fix(admin): catalog cache was blowing localStorage quota (5mb) on 8738 products
05597d3e5bac798a2dc31eb55511ee55a4ca7d86 df1d24f573bb95cfdbe29ec281d31c5eca7ec1c4 Alian <alian@localhost> 1790893049 +0000	commit: fix(admin): tolerate missing active flags in cached catalog
df1d24f573bb95cfdbe29ec281d31c5eca7ec1c4 5968ad70e6d60ee96be3e4fa5896d6c4495dc971 Alian <alian@localhost> 1790893657 +0000	commit: revert(admin): roll back useAdminEngine to last stable (4df28ce)
5968ad70e6d60ee96be3e4fa5896d6c4495dc971 b51ddfa6197f64c500122caf7cb6739961a77c25 Alian <alian@localhost> 1790893814 +0000	commit: fix(admin): restore active tab from sessionStorage on hard reload
b51ddfa6197f64c500122caf7cb6739961a77c25 9e5afabe0550f65bf4707f7c47dd251a9ae5d4cc Alian <alian@localhost> 1790932253 +0000	commit: fix(admin): mobile drawer fully opaque + above bottom nav
9e5afabe0550f65bf4707f7c47dd251a9ae5d4cc 3d501a7478af4f2a1ccbd4aaff0c0f16536dace5 Alian <alian@localhost> 1790932445 +0000	commit: fix(admin): mobile sidebar honors light theme background
3d501a7478af4f2a1ccbd4aaff0c0f16536dace5 0b2456ce295633489f7b003faa1eb5e81725193e Alian <alian@localhost> 1790933186 +0000	commit: fix(admin): remove duplicate logo from top header
0b2456ce295633489f7b003faa1eb5e81725193e 89635e167b6fc088afaa165b58fab991db7d96ea Alian <alian@localhost> 1790933652 +0000	commit: design(admin): new split-screen login page
89635e167b6fc088afaa165b58fab991db7d96ea 375b42fbcb6772c158e88e29722d6143d67c78d6 Alian <alian@localhost> 1790933792 +0000	commit: design(admin): login v3 polish — centered card, full-width inputs, forgot link, better placeholder contrast
375b42fbcb6772c158e88e29722d6143d67c78d6 94dc2645436e9d0f20b756305ecc0dac6cb7293b Alian <alian@localhost> 1790933888 +0000	commit: design(admin): login v3 — full split-screen page and field fixes
94dc2645436e9d0f20b756305ecc0dac6cb7293b ecd7c68c0e40ae1f21463afd75e804d7bc56f3d0 Alian <alian@localhost> 1790934026 +0000	commit: design(admin): login v3 — full split-screen page and field fixes
ecd7c68c0e40ae1f21463afd75e804d7bc56f3d0 a5f575f2023735cbf1252f4ec18b5d108de4da61 Alian <alian@localhost> 1790934176 +0000	commit: polish(admin): login color consistency and balance
a5f575f2023735cbf1252f4ec18b5d108de4da61 ec40ca6ef647dd88e97fad6cd3d20db30a4f7c21 Alian <alian@localhost> 1790936272 +0000	commit: fix(admin): surface catalog refresh errors with real messages
ec40ca6ef647dd88e97fad6cd3d20db30a4f7c21 176a666eb4f5468c95597d8dd569d3a1ff0298ae Alian <alian@localhost> 1790936534 +0000	commit: fix(admin): catalog cache seeding and logging
176a666eb4f5468c95597d8dd569d3a1ff0298ae a5002c92ad330519bee4e4b219df92516fd62a5b Alian <alian@localhost> 1790936740 +0000	commit: fix(admin): catalog cache write logging + localStorage quota trace
a5002c92ad330519bee4e4b219df92516fd62a5b 4da1294b17f2388a14ff891ae29107d4f5b5c78b Alian <alian@localhost> 1790936891 +0000	commit: fix(admin): catalog cache now actually persists to localStorage
4da1294b17f2388a14ff891ae29107d4f5b5c78b 3f7e5111c749ad9a748238146e67833b13ea6740 Alian <alian@localhost> 1790937100 +0000	commit: fix(admin): persist active tab via useEffect restore (safe)
3f7e5111c749ad9a748238146e67833b13ea6740 ad276464cca4b765ac5a087aae9dc9955020e540 Alian <alian@localhost> 1790938197 +0000	commit: fix(db): allow elite supplier in save_supplier_key + get_supplier_key_for_sync
ad276464cca4b765ac5a087aae9dc9955020e540 16a30eb6a186566d77aec29f9874c94ce603455e Alian <alian@localhost> 1790939177 +0000	commit: fix(admin): pre-fill Elite API key
16a30eb6a186566d77aec29f9874c94ce603455e 16a30eb6a186566d77aec29f9874c94ce603455e Alian <alian@localhost> 1790962643 +0000	reset: moving to HEAD
16a30eb6a186566d77aec29f9874c94ce603455e 376dff8b1b6824791f684e8fa7540869013635ee Alian <alian@localhost> 1790963054 +0000	commit: fix(db): drop duplicate elite function def from elite migration
376dff8b1b6824791f684e8fa7540869013635ee 9b6c4c478c423909f7adec1df5273d9a7e8987da Alian <alian@localhost> 1790964002 +0000	commit: docs: vault restoration record after DB re-import — 24 providers re-keyed and synced
9b6c4c478c423909f7adec1df5273d9a7e8987da 00bedcc058458b273c2f88514a8ed6dd0c2c213c Alian <alian@localhost> 1790964271 +0000	commit: fix(storefront): 'Not listed' official price no longer strikethrough
00bedcc058458b273c2f88514a8ed6dd0c2c213c b41e90c637721f3d86d002cedbbb502c02de6302 Alian <alian@localhost> 1790965281 +0000	commit: remove(akunding): full purge — upstream account blocked; drop provider from sync, server, admin UI, normalizers
b41e90c637721f3d86d002cedbbb502c02de6302 2c796070a3ded4e35d927688d2c28aaa7c1ac571 Alian <alian@localhost> 1790965865 +0000	commit: fix(insightx): endpoint moved to api.insightxpro.store; enable provider
2c796070a3ded4e35d927688d2c28aaa7c1ac571 99ad9ab9d960659b8bd70c991a031acd746c0e0e Alian <alian@localhost> 1790966117 +0000	commit: fix(csxstore): endpoint moved to api.cssx.store; defensive JSON parse for concatenated supplier bodies; enable provider
99ad9ab9d960659b8bd70c991a031acd746c0e0e 39babc137d962d02636ff9f580ae554bdfa886bf Alian <alian@localhost> 1790967168 +0000	commit: feat(rabbit): add Rabbit Store provider (cdkallapp2.moonsilo.xyz, VND via price_usdt); constraint migrations for provider lists
39babc137d962d02636ff9f580ae554bdfa886bf f54981ac879e0ef89f4ee847c26800f629558dc0 Alian <alian@localhost> 1790967541 +0000	commit: remove(keyless): purge bunny, duskyr, todgifts, elevate, shopeelabs — all code surfaces + tests; sync loop 34/34
f54981ac879e0ef89f4ee847c26800f629558dc0 f4daebebbd932661ebb5946ee2aaab8c6c70a567 Alian <alian@localhost> 1790969885 +0000	commit: fix(admin): catalog paged fetch ordered by stable id — sync-bumped updated_at no longer shifts pages mid-fetch (empty/flicker fix)
f4daebebbd932661ebb5946ee2aaab8c6c70a567 a210cec39acadc8b62085bc04bb5b8af1ac5515e Alian <alian@localhost> 1790970212 +0000	commit: fix(admin): self-heal catalog cache on refresh failure; bump cache key to v3 (invalidates stale pre-fix caches)
a210cec39acadc8b62085bc04bb5b8af1ac5515e fbd98f7f7950e55e5acb437e82d8971ee482f8d1 Alian <alian@localhost> 1790971177 +0000	commit: fix(db): keep 'manual' provider in CHECK constraints — admin Add product inserts failed after rabbit migration rebuilt them
fbd98f7f7950e55e5acb437e82d8971ee482f8d1 4d5533ec23dfe3c79006cdd5e9b73e26eef695b3 Alian <alian@localhost> 1790971518 +0000	commit: fix(admin+sync): Peak PKR 1 bogus stat removed; sanitize non-finite stock/price before upsert (22P02 hard-fail fix)
4d5533ec23dfe3c79006cdd5e9b73e26eef695b3 4871ab70d6af672234fefc5000583baadc004a36 Alian <alian@localhost> 1790971767 +0000	commit: feat(elevate): re-add provider with new endpoint elevate.mylabsstore.com/api/v1 (HTML stripped from descriptions); CHECK constraints + migration updated
4871ab70d6af672234fefc5000583baadc004a36 223edc460d41781ed82650bcd559aeb9a0f16e8f Alian <alian@localhost> 1790972105 +0000	commit: fix(sync): respect admin publish state — sync no longer re-publishes unpublished products (published flag preserved across cycles)
223edc460d41781ed82650bcd559aeb9a0f16e8f 506a1352fa223495ac4d8cc7ef0f0b803763b8b1 Alian <alian@localhost> 1790972398 +0000	commit: redesign(orders): full V2-native Order Tracking — stats, filter toolbar, clean table, order detail popup with sections/copy actions, new-order modal
506a1352fa223495ac4d8cc7ef0f0b803763b8b1 5bb9178cc486ecbedc6ba2d5552cfb6deaf40f6c Alian <alian@localhost> 1790972568 +0000	commit: fix(orders): portal-scoped V2 tokens — modals rendered to document.body get proper surface colors
5bb9178cc486ecbedc6ba2d5552cfb6deaf40f6c 5593aad1f4ecfc16375b5421a9088e641b6a2aa9 Alian <alian@localhost> 1790972773 +0000	commit: fix(orders): scope modal internals under .v2-modal-backdrop too — portals render outside .admin-ui-v2
5593aad1f4ecfc16375b5421a9088e641b6a2aa9 98bbc7d7862e2e511b14e3c4295d586b2856ebed Alian <alian@localhost> 1790973088 +0000	commit: feat(catalog): bulk visibility tool — hide/publish many products by supplier + price range + stock scope, with live match count
98bbc7d7862e2e511b14e3c4295d586b2856ebed 3772c637761ff376129194d02980572032748772 Alian <alian@localhost> 1790973226 +0000	commit: fix(catalog): import Input in bulk visibility form
3772c637761ff376129194d02980572032748772 0c2a0161b00a2aa71a3cb42ddb0fe3b67e1a248e Alian <alian@localhost> 1790973338 +0000	commit: fix(catalog): bulk visibility safety — confirm dialogs, Cancel button, Publish button hidden when scope is already-published
0c2a0161b00a2aa71a3cb42ddb0fe3b67e1a248e f4d47f6d19c8c7ebd6ba1f805404903c6ebea212 Alian <alian@localhost> 1790973783 +0000	commit: fix(sync): 14 canboso-family providers were falling into the shopeelabs normalizer (productId vs id) — zero usable prices; gave them the proper canboso normalizer
f4d47f6d19c8c7ebd6ba1f805404903c6ebea212 8269b1a218e166ec7c2adb8eb81187b5232adb39 Alian <alian@localhost> 1790974103 +0000	commit: feat(sync): canboso-family rotation — 8 providers per 15-min cycle (full coverage in 45 min), 2.5s spacing between canboso fetches; no more burst 429s
8269b1a218e166ec7c2adb8eb81187b5232adb39 04b9495efbd2765f1eff93e32969a76372bcf0b5 Alian <alian@localhost> 1790974401 +0000	commit: feat(sync): admin publish intent wins — published products survive supplier removal, stock-0 and bad-price (verified live); fixed duplicate invalidIds declaration
04b9495efbd2765f1eff93e32969a76372bcf0b5 fd327bd4a2910d9d6fc22a12c89d53fd8706609d Alian <alian@localhost> 1790974580 +0000	commit: feat(catalog): 'Out of stock' warning chip on live products + Flash chip + 'Live but out of stock' filter — admin visibility for published-but-unfulfillable items
fd327bd4a2910d9d6fc22a12c89d53fd8706609d c9feb7641bd6f91e24dced1a3d152c7a196bbe6b NovaMart Dev <alian@novaaimart.com> 1791216155 +0000	commit: fix(admin): 4 admin/storefront bugs
