0000000000000000000000000000000000000000 d2e765d641f0bccf76cd63c03f8d4ff0ea12a988 Carla 1780111317 +0700 commit (initial): feat: bootstrap Next.js 16 + Tailwind v4 + design artifacts d2e765d641f0bccf76cd63c03f8d4ff0ea12a988 e71e4c2c2f4ba1786f1580005b716620026a43e2 Carla 1780112051 +0700 commit: feat(infra): Prisma 7 + adapter-pg + Vitest + Playwright + Husky + seed data e71e4c2c2f4ba1786f1580005b716620026a43e2 9f454d984e09f4c7aae14be77b7da557e65cdfe7 Carla 1780112201 +0700 commit: feat(infra): Docker production + dev compose + CI/CD + health endpoint 9f454d984e09f4c7aae14be77b7da557e65cdfe7 999b8a47dbb20d5ceacb3db2b0c78dc510fb4705 Carla 1780112870 +0700 commit: feat(auth): better-auth + email/password + Google OAuth + cookie consent + proxy gate 999b8a47dbb20d5ceacb3db2b0c78dc510fb4705 d0a489301041477caa803f85b0d32308b2bafb42 Carla 1780114002 +0700 commit: feat(ui): Sprint 1.3 — design tokens + layout + home page d0a489301041477caa803f85b0d32308b2bafb42 efcde847ccfe70e953e0f7232a27b4a3cbd2f05d Carla 1780114871 +0700 commit: feat(tu-vi): Sprint 1.4 — tử vi trọn đời (KEYSTONE) efcde847ccfe70e953e0f7232a27b4a3cbd2f05d 456959744b004575e58f32a2c92451cf23cdcb41 Carla 1780115424 +0700 commit: feat(calendar): Sprint 1.5 — Lịch âm dương + Xem ngày tốt 456959744b004575e58f32a2c92451cf23cdcb41 4562ad4bf74c265d95006a1ee1cadd19624884f5 Carla 1780116420 +0700 commit: feat(ai): Sprint 1.6 — Vận mệnh AI chat with streaming 4562ad4bf74c265d95006a1ee1cadd19624884f5 4693de0b1fadd308ec0ba80649907a694f7d2fe0 Carla 1780116732 +0700 commit: feat(feng-shui): Sprint 1.7 — Phong thủy nhà (Bát Trạch) 4693de0b1fadd308ec0ba80649907a694f7d2fe0 0109c141a88d58becf7cfc23bfaa2c8ba0f8a5e4 Carla 1780116938 +0700 commit: feat(legal): Sprint 1.8a — disclaimer + privacy + terms + cookie + contact 0109c141a88d58becf7cfc23bfaa2c8ba0f8a5e4 446260b92f7bcec290e20035d0cd4a34c24963ea Carla 1780122758 +0700 commit: feat(deploy): Sprint 1.8b — runtime-only Dockerfile + LXC deploy 446260b92f7bcec290e20035d0cd4a34c24963ea 4b1d4eab67a830656a33af5576660cd6c5bec80d Carla 1780127684 +0700 commit: fix(nav,deploy): kill 404 dead links + login on prod domain 4b1d4eab67a830656a33af5576660cd6c5bec80d ac88f67a110c8596ed65ea00f80579057d3de499 Carla 1780128076 +0700 commit: fix(tu-vi): equalize palace card heights on lá số grid ac88f67a110c8596ed65ea00f80579057d3de499 bd28981224202fdae061ae0fac10db87438f7e14 Carla 1780128755 +0700 commit: feat(admin): Sprint 1.9 — full Admin CP (dashboard, users, AI, site, audit) bd28981224202fdae061ae0fac10db87438f7e14 e6ec39a88c977d47167ed52ef902269dadbf59b3 Carla 1780129033 +0700 commit: feat(admin/ai): add OpenAI base URL setting for compat endpoints e6ec39a88c977d47167ed52ef902269dadbf59b3 624b64357928697d426eeda2f72d36dd78c945d4 Carla 1780131384 +0700 commit: feat(tools): Sprint 2.1 Wave 1 — 5 lookup tools 624b64357928697d426eeda2f72d36dd78c945d4 350b48afde795b452ff0185009e1d287d9e20a5b Carla 1780131592 +0700 commit: feat(tools): Sprint 2.1 Wave 2 — 3 hợp tuổi tools 350b48afde795b452ff0185009e1d287d9e20a5b dd21790cc9bd65c6f815f0c23d7068c4be4ef8c3 Carla 1780131897 +0700 commit: feat(tools): Sprint 2.1 Wave 3 — 4 naming/picking tools dd21790cc9bd65c6f815f0c23d7068c4be4ef8c3 dd672665794a95ff1421e1916861c4b829086ce1 Carla 1780132232 +0700 commit: feat(tools): Sprint 2.1 Wave 4a — 4 horoscope/lookup tools dd672665794a95ff1421e1916861c4b829086ce1 cc8b8ab862f07707a610733415b35104997e7fb5 Carla 1780132667 +0700 commit: feat(tools): Sprint 2.1 Wave 4b — final 4 tools, Phase 2 tools complete cc8b8ab862f07707a610733415b35104997e7fb5 7a6950eabb4263249d88607c068be9225525f386 Carla 1780133323 +0700 commit: feat(ai): generic /api/ai/insight + provider.streamMessages 7a6950eabb4263249d88607c068be9225525f386 5ed9b3583afca014715b87a0868ee4604d4f7385 Carla 1780133602 +0700 commit: feat(ai): wire AI insight panel into 6 tools 5ed9b3583afca014715b87a0868ee4604d4f7385 35cc0da9065c0bf0649a43705f981c1ecd2d0bb8 Carla 1780134120 +0700 commit: feat(admin): Anthropic provider + AI test connection + bulk user actions 35cc0da9065c0bf0649a43705f981c1ecd2d0bb8 52f482d6090b776dfa8e8d11068517d7891419f1 Carla 1780141379 +0700 commit: feat(charts): Sprint 2.2 — save chart + public share via token 52f482d6090b776dfa8e8d11068517d7891419f1 cc1868875e50230511a29e29a37f01dbbdd63488 Carla 1780141691 +0700 commit: fix(proxy): /la-so/[token] is public — keep gallery /la-so protected only cc1868875e50230511a29e29a37f01dbbdd63488 567db46e8e24646cd9de53929f9140321bb5eac2 Carla 1780143490 +0700 commit: feat(reminders): Sprint 2.3 — email + reminder system 567db46e8e24646cd9de53929f9140321bb5eac2 4bf6700b2aab1072006aa860a30606101cce7949 Carla 1780143793 +0700 commit: feat(dashboard): Sprint 2.4 — polished /me dashboard 4bf6700b2aab1072006aa860a30606101cce7949 4acce525ae7539fdbc3c8595ae7cfbc8230c1357 Carla 1780146488 +0700 commit: feat(blog): Sprint 3.1 — Blog CMS (admin + public + SEO) 4acce525ae7539fdbc3c8595ae7cfbc8230c1357 df620489fb3c2d71d520b565f1f2d6595394b0ec Carla 1780150408 +0700 commit: feat(seo): Sprint 3.3 + 3.4 — tool group pages + sitemap + JSON-LD + OG df620489fb3c2d71d520b565f1f2d6595394b0ec e7aab2945e56ac6238b47863c83a1911c3a9eab2 Carla 1780152195 +0700 commit: feat(admin): runtime site.url config — change domain without rebuild e7aab2945e56ac6238b47863c83a1911c3a9eab2 30751ce373f75d2ce4b26a59ca4c69ce24565ef8 Carla 1780154344 +0700 commit: ping: test PM webhook 30751ce373f75d2ce4b26a59ca4c69ce24565ef8 31ccaa8cc66df99b4bb1260b3f2972ae88c0ba88 Carla 1780158207 +0700 commit: feat(ui): unify date inputs to DD/MM/YYYY mask + calendar picker 31ccaa8cc66df99b4bb1260b3f2972ae88c0ba88 ebd76ddf62da71f1056acff225997d4ab87b1e82 Carla 1780160177 +0700 commit: feat(tuvi): đại vận + lưu niên + tiểu hạn + hạn VN truyền thống ebd76ddf62da71f1056acff225997d4ab87b1e82 bb20f1be157fc6516a9e530159cc76c0cc324987 Carla 1780160804 +0700 commit: feat(feng-shui): bố trí 8 phòng + bánh xe bát quái xoay theo hướng nhà bb20f1be157fc6516a9e530159cc76c0cc324987 4c29547e4b657346ac00dcaac5f37930fef99777 Carla 1780161765 +0700 commit: feat(ai): đọc lá số chuyên sâu theo 6 mục — Mệnh, Tài, Quan, Phối, Tử, Đại Vận 4c29547e4b657346ac00dcaac5f37930fef99777 e408922ebb05744bf74eb519b5c6e2adb89ffcbb Carla 1780162686 +0700 commit: feat(billing): premium tier với manual upgrade flow + admin dashboard e408922ebb05744bf74eb519b5c6e2adb89ffcbb c98d95e96162cce757c21aaa7a90a1244b9005c5 Carla 1780163777 +0700 commit: feat(billing): xuất luận giải PDF (Premium-only) với @react-pdf/renderer c98d95e96162cce757c21aaa7a90a1244b9005c5 cd1cd13b9944596a585de67de4413292665cc67c Carla 1780184168 +0700 commit: feat(feng-shui): Huyền Không phi tinh năm + Lộc Mã Quý Nhân theo trụ năm cd1cd13b9944596a585de67de4413292665cc67c 3544c2018281b60add525cbf80991033b3c7cde9 Carla 1780187193 +0700 commit: feat(tuvi): catalog 14 chính tinh × 12 cung với click-to-view modal 3544c2018281b60add525cbf80991033b3c7cde9 6f2498f34bce2ce1cfdef1cda6a2ad0fe13a9e38 Carla 1780187906 +0700 commit: feat(charts): Q&A AI persisted theo lá số đã lưu (streaming + lịch sử) 6f2498f34bce2ce1cfdef1cda6a2ad0fe13a9e38 fed7802853484af7197f239135e93971d7232523 Carla 1780190340 +0700 commit: feat(rate-limit): Redis-backed anonymous quota cho AI section (IP+cookie) fed7802853484af7197f239135e93971d7232523 77c66a483e67dde2b5093df30d430bdafae6df51 Carla 1780192181 +0700 commit: feat(phone-luck): cá nhân hóa theo cung mệnh từ năm sinh + giới tính 77c66a483e67dde2b5093df30d430bdafae6df51 28a82baf692676a14a4001d87f45af91332ed78d Carla 1780193572 +0700 commit: feat(palmistry): form tự đánh giá + AI vision quét ảnh + luận giải sâu 28a82baf692676a14a4001d87f45af91332ed78d c54bebe740e6cc7307ecfd9c6d52cee5c57d2a2d Carla 1780195420 +0700 commit: fix(palmistry-vision): đọc API key từ Setting table, không phải env c54bebe740e6cc7307ecfd9c6d52cee5c57d2a2d 73769221dcb1f79508c2b0a987b88fda61cc5b98 Carla 1780196562 +0700 commit: feat(feng-shui-colors): cá nhân hoá theo giới tính + 5 ứng dụng + AI insight 73769221dcb1f79508c2b0a987b88fda61cc5b98 b09b2139a5fb7a4fb41976fa43083b9d1d60cb76 Carla 1780196985 +0700 commit: feat(so-mang-60): cá nhân hoá theo giới tính + 5 chủ đề + AI insight b09b2139a5fb7a4fb41976fa43083b9d1d60cb76 94703abc74d89fe966ef987b546bb958c43665a5 Carla 1780197920 +0700 commit: feat(nam-xay-nha): hướng Bát Trạch + vật liệu mệnh + 10 năm tới + AI insight 94703abc74d89fe966ef987b546bb958c43665a5 7e681fb4a141c1929c4c41ecde7aee97b37feb36 Carla 1780198729 +0700 commit: feat(tuoi-ket-hon): bổ sung Hoang Ốc + Tam Tai + hợp tuổi đối phương + AI 7e681fb4a141c1929c4c41ecde7aee97b37feb36 7825a5b2236deed67fc5deb29dd2c60e00af23d3 Carla 1780199078 +0700 commit: feat(cung-hoang-dao): so hợp 12 cung + sự nghiệp/tài chính/sức khoẻ + AI 7825a5b2236deed67fc5deb29dd2c60e00af23d3 4f027be6c7d75733b2288776bc21ba411eaba03e Carla 1780200056 +0700 commit: feat(tu-tru): dụng thần + hướng/màu/số/nghề theo ngũ hành cần bổ sung 4f027be6c7d75733b2288776bc21ba411eaba03e 3177aa148cad71ac521aaf4d6c0fd60b9706fcc8 Carla 1780200798 +0700 commit: feat(numerology): thêm Personality + Birthday + Maturity + Personal Year 3177aa148cad71ac521aaf4d6c0fd60b9706fcc8 4f6bf18d90f751de58a246a02fcfa7d2ccae208b Carla 1780202925 +0700 commit: feat(tuoi-ket-hon): phân tích đa phương pháp 4 hệ thống + AI luận sâu 4f6bf18d90f751de58a246a02fcfa7d2ccae208b 7e08b3a4fced5b1ad721c2c7ceee5f3d5dedf76f Carla 1780203500 +0700 commit: feat(tuoi-ket-hon): AI luận sâu riêng cho từng phương pháp 7e08b3a4fced5b1ad721c2c7ceee5f3d5dedf76f 27835a94a4eb2c0599940ae215d8a79803f7bef0 Carla 1780204183 +0700 commit: feat(branding): đổi 'AI' thành 'Thầy' và rút gọn disclaimer 27835a94a4eb2c0599940ae215d8a79803f7bef0 4b40daf115e69e2c6e1950c4609ea30e980acebc Carla 1780205177 +0700 commit: fix(branding): escape entities cho "Thầy" trong legal/library JSX 4b40daf115e69e2c6e1950c4609ea30e980acebc 27aeeb42ab60a0c7e1b4a3eb00c9974436ce5b95 Carla 1780205427 +0700 commit: fix(branding): giữ 'AI' trong legal pages + SEO metadata 27aeeb42ab60a0c7e1b4a3eb00c9974436ce5b95 5659f921151ccc21102e6954b840edbca9187094 Carla 1780205791 +0700 commit: feat(branding): đổi nốt 'Hỏi AI' và 'Bắt đầu hỏi AI' sang 'Thầy' trong UI 5659f921151ccc21102e6954b840edbca9187094 f4f888e6c07438a8857ca0a25f899ece8ab7cea6 Carla 1780206134 +0700 commit: feat(branding): đổi nốt 9 hint + 5 chỗ trong /me + 5 chỗ FAQ /thu-vien-ai + default insight title f4f888e6c07438a8857ca0a25f899ece8ab7cea6 4d5796ee63c86cf6129bd7fe1dbee059c4f77737 Carla 1780206400 +0700 commit: feat(branding): đổi tool-catalog title + footer + chat header + 4 hint cuối 4d5796ee63c86cf6129bd7fe1dbee059c4f77737 9520fdba9b7e9a53096545f4ce7519c772acfd1d Carla 1780207191 +0700 commit: feat(pricing): thêm thẻ Khách + đổi 'Miễn phí' thành 'Thành Viên Miễn Phí' 9520fdba9b7e9a53096545f4ce7519c772acfd1d 47a9ac0caaeaf0e682f801eaf104daffd6aeb384 Carla 1780207915 +0700 commit: feat(pricing): badge Trial/Miễn Phí góc phải + 3 nút CTA ngang bằng nhau 47a9ac0caaeaf0e682f801eaf104daffd6aeb384 c89f79f098a06ba66ca0cb0555dfe7248373e751 Carla 1780209301 +0700 commit: feat(pricing): chuyển badge 'Đang dùng' lên góc trên trái ngang hàng badge phải c89f79f098a06ba66ca0cb0555dfe7248373e751 8f9c244b65d7f2c8f368e339aecf7a447fb1c1a4 Carla 1780209967 +0700 commit: fix(auth): client baseURL dùng window.location.origin tại runtime 8f9c244b65d7f2c8f368e339aecf7a447fb1c1a4 600a796cdaada41c3e5fa6bece446cc651bace6d Carla 1780210323 +0700 commit: feat(header): hiển thị avatar + dropdown khi đã đăng nhập 600a796cdaada41c3e5fa6bece446cc651bace6d e3921ba0bc7b89645eb5faf565eee5b96410a16d Carla 1780210818 +0700 commit: copy(pricing): đổi 'An lá số' → 'Lập lá số' cho dễ hiểu e3921ba0bc7b89645eb5faf565eee5b96410a16d 362c1b04e6df13943286fc38a12321430cb3bab5 Carla 1780211080 +0700 commit: refactor(catalog): tắt 'hop-tuoi-kuta' + 'so-sanh-duyen-phan' 362c1b04e6df13943286fc38a12321430cb3bab5 9e0e84425fb27faef1f96f933fcf00fcad222d6f Carla 1780211800 +0700 commit: feat(business): /hop-tuoi-lam-an dùng deepCompat 4-method (mode=business) 9e0e84425fb27faef1f96f933fcf00fcad222d6f d292efb668065707ba0807aefd3d716ea6eb7d27 Carla 1780215136 +0700 commit: feat(naming): nâng cấp Đặt Tên Con + Tên Công Ty d292efb668065707ba0807aefd3d716ea6eb7d27 d4990dd870f1464f2768aba9ab57f7e7b27b27be Carla 1780215506 +0700 commit: feat(zodiac): /12-con-giap thêm Vận Năm + AI luận giải d4990dd870f1464f2768aba9ab57f7e7b27b27be 84b62061d4e8504beae0a3ce4367f03fda6f69d8 Carla 1780215689 +0700 commit: feat(insight): thêm AI luận giải vào /so-dien-thoai và /phong-thuy-nha 84b62061d4e8504beae0a3ce4367f03fda6f69d8 e5566fd122968e65458270b5a34617994fd70305 Carla 1780216315 +0700 commit: feat(admin): /admin/analytics — phễu chuyển đổi + top tools + AI usage e5566fd122968e65458270b5a34617994fd70305 b3032571f65ebe116bed2c85c23b47d7d06afb80 Carla 1780217603 +0700 commit: polish(nav): đổi label 'AI' → 'Hỏi Thầy' ở navbar + tool catalog b3032571f65ebe116bed2c85c23b47d7d06afb80 001a8c59eeef28d3ec8e223e570a55a5f3ad4bdb Carla 1780219380 +0700 commit: feat(tuvi): an lưu Đại Vận / Tiểu Hạn / Lưu Niên / Lưu Nguyệt trên lá số