0000000000000000000000000000000000000000 8a15baab785a1716614aaea75269d980abe6924e Carla 1780237031 +0700 commit (initial): init 8a15baab785a1716614aaea75269d980abe6924e 904e4e80ec72b25dfe2804d940eacf34fc08086f Carla 1780237753 +0700 commit: feat: scaffold Finzone v2 (Next.js 14 + Prisma + better-auth) 904e4e80ec72b25dfe2804d940eacf34fc08086f c76aad1690951b9abc243d187c51205a03503d9b Giang Trường 1780238394 +0700 commit: feat(admin): /login form + /admin shell với sidebar nav c76aad1690951b9abc243d187c51205a03503d9b c5dadb5fa19c42e68d67dd17327249daa1eda9f4 Giang Trường 1780239049 +0700 commit: feat(api): REST API v1 + API tokens (WordPress-style for agents) c5dadb5fa19c42e68d67dd17327249daa1eda9f4 5c868a2d54b62b0604c941a2ba91ec931b0724e5 Giang Trường 1780239503 +0700 commit: feat(deploy): Dockerfile + compose + /api/health cho LXC 192.168.40.25 5c868a2d54b62b0604c941a2ba91ec931b0724e5 80a605c5fd265273d650f444627a2110e1488731 Giang Trường 1780240138 +0700 commit: deploy: chuyển sang LXC4015 (192.168.40.25), npm install thay npm ci 80a605c5fd265273d650f444627a2110e1488731 3d72df5a92ade71811f0cb2e9b178dc9b72f02e1 Giang Trường 1780240898 +0700 commit: feat(ui): clone editorial theme từ finzone.io.vn 3d72df5a92ade71811f0cb2e9b178dc9b72f02e1 3d72df5a92ade71811f0cb2e9b178dc9b72f02e1 Carla 1780241570 +0700 reset: moving to HEAD 3d72df5a92ade71811f0cb2e9b178dc9b72f02e1 feb5a665f4d8fcc0307e1ff0f131fa71a3a2bcca Giang Trường 1780241905 +0700 commit: feat(ui): clone toàn bộ source từ frontend sản xuất finzone.io.vn (LXC 192.168.40.26) feb5a665f4d8fcc0307e1ff0f131fa71a3a2bcca 9c93e0514ef4376e567078766777864e1436b5f7 Carla 1780244839 +0700 commit: fix(prisma): thêm linux-musl binary target + copy engines vào Docker runner stage 9c93e0514ef4376e567078766777864e1436b5f7 c842603869e2a7d9ddc307726468c1e74b889dd7 Carla 1780245289 +0700 commit: fix(build): tạo public/.gitkeep để Dockerfile COPY không fail c842603869e2a7d9ddc307726468c1e74b889dd7 81d9c4d85fc6b446ae86f7a0c02ad7a414526396 Carla 1780246616 +0700 commit: fix(seed): dùng better-auth /sign-up/email thay bcrypt (better-auth dùng scrypt) 81d9c4d85fc6b446ae86f7a0c02ad7a414526396 bd696ed89ce73b918cfdaa20ab668950bdaf38be Carla 1780246968 +0700 commit: feat(admin): trang quản lý bài viết — list/new/edit + publish/delete bd696ed89ce73b918cfdaa20ab668950bdaf38be 0c7129ac6d1a5c87825ae2db76bda1524af1d8d3 Carla 1780247311 +0700 commit: fix(article): bỏ legacy WP fetchSeoFromUrl, render markdown qua marked + lấy SEO từ DB 0c7129ac6d1a5c87825ae2db76bda1524af1d8d3 f6299b2e4f631c8cab6d2dfa9a0749e4ae0276af Carla 1780248810 +0700 commit: feat(admin): trang Categories CRUD + Audit Log + Settings (3 nav items mới) f6299b2e4f631c8cab6d2dfa9a0749e4ae0276af 21051d085b7ddf18af82c0a27884a1085adae0c3 Carla 1780249162 +0700 commit: feat(admin): trang Redirects + middleware proxy bắt 404 → DB lookup → 301/302 21051d085b7ddf18af82c0a27884a1085adae0c3 888e0abd79df55f323911a057b473dd69965ee8b Carla 1780249320 +0700 commit: fix(redirects): check Redirect table trong [slug] route trước khi 404 (not-found không thể redirect) 888e0abd79df55f323911a057b473dd69965ee8b 6a8758be566ab92ceebbc2700de67a5bab003687 Carla 1780249614 +0700 commit: feat(admin): trang Media — upload/list/edit alt/delete + volume persist 6a8758be566ab92ceebbc2700de67a5bab003687 d245bde35f649d82bc7740561659aa89cd7627be Carla 1780249819 +0700 commit: feat(uploads): route handler /uploads/* serve file từ volume runtime d245bde35f649d82bc7740561659aa89cd7627be ca000100cc1465bdb9c1267555d09eaab54bba19 Carla 1780251059 +0700 commit: feat(admin): trang SEO Health + AI Writer (prompt studio + meta generator) ca000100cc1465bdb9c1267555d09eaab54bba19 e48d69fa5abbc705007fa31d946a42e9f1ae6b35 Carla 1780269349 +0700 commit: feat: tags admin + users admin + search /tim-kiem + RSS feed + view tracking + robots.txt fix e48d69fa5abbc705007fa31d946a42e9f1ae6b35 eee09fdfd2b80386b4f8c98c844f0e8708d9a853 Carla 1780269549 +0700 commit: feat: bulk actions admin/articles + scheduled publish cron + view tracking + lượt xem column eee09fdfd2b80386b4f8c98c844f0e8708d9a853 962e4b82d635da7a010da440a343a72993bb7065 Carla 1780274093 +0700 commit: feat(seo): port Rank Math features — content analyzer (19 checks) + JSON-LD schema graph + OG/Twitter card builder + 404 monitor + internal link suggestions 962e4b82d635da7a010da440a343a72993bb7065 5f1e00aed6d525a42e0e2791d13624860c51ecee Carla 1780274262 +0700 commit: fix(seo): extractSubheadings còn parse HTML headings (cho WP-imported content) 5f1e00aed6d525a42e0e2791d13624860c51ecee 6a99a1dd363a182e7cf787f561173e1d7b3858e7 Carla 1780279613 +0700 commit: feat(seo): Image SEO auto-alt — heuristic + AI refinement (per-image button + bulk action) 6a99a1dd363a182e7cf787f561173e1d7b3858e7 69f5f85c890c5342c896fc084e4b2126ffaa9bb7 Carla 1780279873 +0700 commit: fix(image-alt): source label phải reflect kết quả cuối — context dùng article title nếu filename quá generic 69f5f85c890c5342c896fc084e4b2126ffaa9bb7 17956bd395c77d09080164f01d679b6d780e3819 Carla 1780279987 +0700 commit: fix(image-alt): isMeaningfulHeuristic — filter junk filenames như truonggiang-017-5 17956bd395c77d09080164f01d679b6d780e3819 bed8e1bae3b1e9d40149a0605123529b7ca35b68 Carla 1780280126 +0700 commit: refactor(image-alt): tách heuristic khỏi context — source label giờ chính xác bed8e1bae3b1e9d40149a0605123529b7ca35b68 6adca05e01bd8d2818f45af9fc5512dcd9b9bf04 Carla 1780280928 +0700 commit: feat(seo): live score on save + bulk re-analyze tool 6adca05e01bd8d2818f45af9fc5512dcd9b9bf04 cf5f67698fa1f6b939f9c88f8c605611b5f680af Carla 1780282527 +0700 commit: feat(seo): TG Super SEO umbrella module — gộp toàn bộ SEO tools cf5f67698fa1f6b939f9c88f8c605611b5f680af 0b69f77eee1a8b6421dc9b09bf324189c8b52a3f Carla 1780283423 +0700 commit: feat(super-seo): robots editor + SERP preview + schema validator + auto-alt on upload 0b69f77eee1a8b6421dc9b09bf324189c8b52a3f acb844daa06d1d3fb2c5799daf6322d74bbf6703 Carla 1780293146 +0700 commit: feat(cms): Pages CMS + Featured/Pinned articles + Newsletter persistence acb844daa06d1d3fb2c5799daf6322d74bbf6703 a3391b522d344379c87c6b01d390bf6c7dc8140d Carla 1780297406 +0700 commit: fix(admin/settings): tách SECRET_PLACEHOLDER ra _constants.ts (Next 16 use server strict) a3391b522d344379c87c6b01d390bf6c7dc8140d 46f47cf938a81ec924d7fc4296d1d21c53ed15fa Carla 1780299495 +0700 commit: feat(theme): admin theme switcher (V1 Editorial / V2 Trader Terminal) 46f47cf938a81ec924d7fc4296d1d21c53ed15fa 92db1d7645b77d9a62c5205fda4e2a4dc0621132 Carla 1780301382 +0700 commit: feat(theme/v2): Magazine layout — full-bleed hero, mosaic, quote band, big newsletter footer 92db1d7645b77d9a62c5205fda4e2a4dc0621132 bcfd0495ef97be396d452fadaef6c733b35c19fc Carla 1780304535 +0700 commit: feat(theme/preview): 3 mockup design previews — Quiet Editorial / Cinema Magazine / Swiss Grid bcfd0495ef97be396d452fadaef6c733b35c19fc 18fe372f4511ff536f2e93b5bb5f3adf3d215722 Carla 1780305467 +0700 commit: feat(theme/preview): mockup D "Terminal Live" — anti-publication trading desk