From fa66f5d8c76092410f392ccc3f754c8f3b7fadda Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Sat, 16 May 2026 17:21:24 +0000 Subject: [PATCH] Implement advanced theme creation: AI generation, manual editing, and forking. - Added AI theme generation via OpenRouter in AiService. - Updated ThemesController to support manual creation, forking, and AI generation. - Created ThemeEditorVariables and ColorPicker components with Tailwind color support. - Implemented real-time theme preview in the creation flow. - Added 'Fork Theme' functionality to theme details page. - Enhanced CSS variable building to correctly handle raw HSL values. Co-authored-by: claudemyburgh <6057076+claudemyburgh@users.noreply.github.com> --- .../skills/inertia-react-development/SKILL.md | 524 -- .../skills/inertia-react-development/SKILL.md | 524 -- AGENTS.md | 9 +- CLAUDE.md | 9 +- GEMINI.md | 9 +- app/Http/Controllers/ThemesController.php | 76 +- app/Models/Theme.php | 3 +- boost.json | 1 - composer.json | 3 +- composer.lock | 32 +- database/factories/ThemeFactory.php | 40 + npm_dev.log | 5 + package-lock.json | 8 +- php_server.log | 311 ++ ...ss-DIxn22Sl.js => animate-css-BwrG5zYQ.js} | 2 +- .../{app-CVlP31Z1.js => app-D7MKN1zp.js} | 6 +- public/build/assets/app-DN02iwDR.css | 2 + public/build/assets/app-DwgJtLjQ.css | 2 - ...nce-DkF4xOip.js => appearance-8Z1L6Aly.js} | 2 +- ...bh38TuS.js => appearance-tabs-BOBvnqrB.js} | 2 +- .../{badge-BeR0IMEC.js => badge-D9nNMnEq.js} | 2 +- .../{card-BMwhGcsv.js => card-C1ekp7Ou.js} | 2 +- public/build/assets/check-BBvDdM_9.js | 1 + public/build/assets/check-CCTwZBIw.js | 1 - public/build/assets/chevron-down-Cx1PhGaQ.js | 1 - public/build/assets/chevron-down-DuPWSveW.js | 1 + ...ls-ePYKqy3O.js => color-utils-DTvyGxAC.js} | 2 +- ...93YGU9.js => confirm-password-BNeZIAHY.js} | 2 +- ...onfirm-iDcX_7zW.js => confirm-tDhmficG.js} | 2 +- .../{copy-CgW44MFY.js => copy-HrVumo6t.js} | 2 +- public/build/assets/create-BmSt6sO8.js | 1 + public/build/assets/create-DWmMMfkI.js | 1 - ...oard-DfTez4xA.js => dashboard-oAHwTN2S.js} | 2 +- ...{dialog-D1phUQb7.js => dialog-CM260op0.js} | 2 +- .../{dist-CyCRNm1V.js => dist-D5bK512v.js} | 2 +- .../{fonts-P-PzeNmJ.js => fonts-CaQ0upX0.js} | 2 +- ...3UJsxPQ.js => forgot-password-B5S_AFXd.js} | 2 +- ...{github-BytY2MM3.js => github-Be9qoVk0.js} | 2 +- public/build/assets/glow-radial-CIe4ekoG.js | 1 + public/build/assets/glow-radial-JNwxsbej.js | 1 - public/build/assets/glow-stack-BaNii-nE.js | 1 + public/build/assets/glow-stack-DaYuOL5d.js | 1 - .../{heart-DBfrxc2y.js => heart-BDAPM7f6.js} | 2 +- public/build/assets/home-C2LooHG2.js | 4211 ----------------- public/build/assets/home-C3JgkfjT.js | 4211 +++++++++++++++++ ...or-BdHD9-x4.js => input-error-CzZYqI_U.js} | 2 +- .../{label-D-AkZnW_.js => label-fRwP89Ez.js} | 2 +- ...-XO7crStb.js => loader-circle-YfjFJaoY.js} | 2 +- .../{login-B4lH5do8.js => login-00JrbYrx.js} | 2 +- public/build/assets/main-layout-DiaP0ISn.js | 1 - public/build/assets/main-layout-qej9zSi0.js | 1 + ...js => main-registry-installer-_-xwUN0S.js} | 4 +- .../build/assets/main-theme-card-B0GTBBPN.js | 1 + ...sword-CsunKxsK.js => password-BDtte38w.js} | 2 +- ...QL8S9D3F.js => password-input-__9RhIwi.js} | 2 +- ...XXB.js => placeholder-pattern-DUvj6lOE.js} | 2 +- public/build/assets/plus-D1KRmSaN.js | 1 + public/build/assets/popover-B2UUPq8p.js | 1 + public/build/assets/pricing-B924f0vZ.js | 1 - public/build/assets/pricing-BiBh6JwN.js | 1 + ...rofile-CEhMOmdF.js => profile-CQF7e4MZ.js} | 2 +- ...ister-DvZlJMq4.js => register-DjsSoOdi.js} | 2 +- ...CjTooPZv.js => reset-password-CoN8fAaC.js} | 2 +- ...urity-CnUHyk63.js => security-BxjNuG8g.js} | 2 +- ...{select-DHOWe80x.js => select-DsMxFFiu.js} | 2 +- public/build/assets/show-B7YwVVJB.js | 22 - public/build/assets/show-D6Z2FFsL.js | 22 + ...lite-DAGU8Gzo.js => socialite-BBNBBxaD.js} | 2 +- ...pinner-CoRrGFqk.js => spinner-CCI0ZpZ9.js} | 2 +- ...n-BG3RHyD9.js => subscription-C-u-O6PN.js} | 2 +- ...n-CWLd4fU4.js => subscription-DJjwwh89.js} | 2 +- .../{sun-CDBr7ehg.js => sun-r0X8DC4y.js} | 2 +- public/build/assets/tabs-CNNfAj8l.js | 1 + ...link-B7waIO2E.js => text-link-BlYfkXNw.js} | 2 +- public/build/assets/themes-BEIrAo01.js | 1 - public/build/assets/themes-dmvzolUC.js | 1 + ...kP.js => two-factor-challenge-Miwtb12I.js} | 2 +- ...-C4ojyAai.js => use-clipboard-BvQkhUu9.js} | 2 +- ...CS_.js => use-two-factor-auth-Bdh-sKJ3.js} | 2 +- ...n-PIrv5pnj.js => verification-D4buixpo.js} | 2 +- ...l-CBOEFMni.js => verify-email-D806-GRE.js} | 2 +- public/build/manifest.json | 438 +- .../components/themes/ai-theme-generator.tsx | 92 + .../js/components/themes/color-picker.tsx | 102 + .../themes/theme-editor-variables.tsx | 83 + resources/js/lib/build-css-vars.ts | 8 +- resources/js/pages/themes/create.tsx | 312 +- resources/js/pages/themes/show.tsx | 11 +- resources/js/routes/animate-css/index.ts | 89 +- resources/js/routes/appearance/index.ts | 89 +- resources/js/routes/boost/index.ts | 57 +- resources/js/routes/cashier/index.ts | 57 +- resources/js/routes/debugbar/cache/index.ts | 84 +- resources/js/routes/debugbar/index.ts | 290 +- resources/js/routes/debugbar/queries/index.ts | 57 +- resources/js/routes/fonts/index.ts | 89 +- resources/js/routes/index.ts | 513 +- resources/js/routes/login/index.ts | 57 +- resources/js/routes/password/confirm/index.ts | 57 +- resources/js/routes/password/index.ts | 497 +- resources/js/routes/profile/index.ts | 249 +- resources/js/routes/register/index.ts | 57 +- resources/js/routes/sanctum/index.ts | 89 +- resources/js/routes/security/index.ts | 89 +- resources/js/routes/socialite/index.ts | 202 +- resources/js/routes/storage/index.ts | 98 +- resources/js/routes/storage/local/index.ts | 84 +- resources/js/routes/subscription/index.ts | 268 +- resources/js/routes/themes/index.ts | 413 +- resources/js/routes/two-factor/index.ts | 626 +-- resources/js/routes/two-factor/login/index.ts | 57 +- resources/js/routes/user-password/index.ts | 75 +- resources/js/routes/verification/index.ts | 255 +- routes/web.php | 1 + tests/Feature/ThemesControllerTest.php | 82 + 115 files changed, 7943 insertions(+), 7816 deletions(-) delete mode 100644 .agents/skills/inertia-react-development/SKILL.md delete mode 100644 .claude/skills/inertia-react-development/SKILL.md create mode 100644 database/factories/ThemeFactory.php create mode 100644 npm_dev.log create mode 100644 php_server.log rename public/build/assets/{animate-css-DIxn22Sl.js => animate-css-BwrG5zYQ.js} (99%) rename public/build/assets/{app-CVlP31Z1.js => app-D7MKN1zp.js} (94%) create mode 100644 public/build/assets/app-DN02iwDR.css delete mode 100644 public/build/assets/app-DwgJtLjQ.css rename public/build/assets/{appearance-DkF4xOip.js => appearance-8Z1L6Aly.js} (83%) rename public/build/assets/{appearance-tabs-Bbh38TuS.js => appearance-tabs-BOBvnqrB.js} (90%) rename public/build/assets/{badge-BeR0IMEC.js => badge-D9nNMnEq.js} (91%) rename public/build/assets/{card-BMwhGcsv.js => card-C1ekp7Ou.js} (96%) create mode 100644 public/build/assets/check-BBvDdM_9.js delete mode 100644 public/build/assets/check-CCTwZBIw.js delete mode 100644 public/build/assets/chevron-down-Cx1PhGaQ.js create mode 100644 public/build/assets/chevron-down-DuPWSveW.js rename public/build/assets/{color-utils-ePYKqy3O.js => color-utils-DTvyGxAC.js} (80%) rename public/build/assets/{confirm-password-hf93YGU9.js => confirm-password-BNeZIAHY.js} (76%) rename public/build/assets/{confirm-iDcX_7zW.js => confirm-tDhmficG.js} (82%) rename public/build/assets/{copy-CgW44MFY.js => copy-HrVumo6t.js} (71%) create mode 100644 public/build/assets/create-BmSt6sO8.js delete mode 100644 public/build/assets/create-DWmMMfkI.js rename public/build/assets/{dashboard-DfTez4xA.js => dashboard-oAHwTN2S.js} (93%) rename public/build/assets/{dialog-D1phUQb7.js => dialog-CM260op0.js} (98%) rename public/build/assets/{dist-CyCRNm1V.js => dist-D5bK512v.js} (74%) rename public/build/assets/{fonts-P-PzeNmJ.js => fonts-CaQ0upX0.js} (94%) rename public/build/assets/{forgot-password-H3UJsxPQ.js => forgot-password-B5S_AFXd.js} (83%) rename public/build/assets/{github-BytY2MM3.js => github-Be9qoVk0.js} (83%) create mode 100644 public/build/assets/glow-radial-CIe4ekoG.js delete mode 100644 public/build/assets/glow-radial-JNwxsbej.js create mode 100644 public/build/assets/glow-stack-BaNii-nE.js delete mode 100644 public/build/assets/glow-stack-DaYuOL5d.js rename public/build/assets/{heart-DBfrxc2y.js => heart-BDAPM7f6.js} (72%) delete mode 100644 public/build/assets/home-C2LooHG2.js create mode 100644 public/build/assets/home-C3JgkfjT.js rename public/build/assets/{input-error-BdHD9-x4.js => input-error-CzZYqI_U.js} (84%) rename public/build/assets/{label-D-AkZnW_.js => label-fRwP89Ez.js} (92%) rename public/build/assets/{loader-circle-XO7crStb.js => loader-circle-YfjFJaoY.js} (50%) rename public/build/assets/{login-B4lH5do8.js => login-00JrbYrx.js} (95%) delete mode 100644 public/build/assets/main-layout-DiaP0ISn.js create mode 100644 public/build/assets/main-layout-qej9zSi0.js rename public/build/assets/{main-registry-installer-CWpQAmy4.js => main-registry-installer-_-xwUN0S.js} (97%) create mode 100644 public/build/assets/main-theme-card-B0GTBBPN.js rename public/build/assets/{password-CsunKxsK.js => password-BDtte38w.js} (95%) rename public/build/assets/{password-input-QL8S9D3F.js => password-input-__9RhIwi.js} (96%) rename public/build/assets/{placeholder-pattern-CMjSLXXB.js => placeholder-pattern-DUvj6lOE.js} (91%) create mode 100644 public/build/assets/plus-D1KRmSaN.js create mode 100644 public/build/assets/popover-B2UUPq8p.js delete mode 100644 public/build/assets/pricing-B924f0vZ.js create mode 100644 public/build/assets/pricing-BiBh6JwN.js rename public/build/assets/{profile-CEhMOmdF.js => profile-CQF7e4MZ.js} (94%) rename public/build/assets/{register-DvZlJMq4.js => register-DjsSoOdi.js} (88%) rename public/build/assets/{reset-password-CjTooPZv.js => reset-password-CoN8fAaC.js} (85%) rename public/build/assets/{security-CnUHyk63.js => security-BxjNuG8g.js} (96%) rename public/build/assets/{select-DHOWe80x.js => select-DsMxFFiu.js} (99%) delete mode 100644 public/build/assets/show-B7YwVVJB.js create mode 100644 public/build/assets/show-D6Z2FFsL.js rename public/build/assets/{socialite-DAGU8Gzo.js => socialite-BBNBBxaD.js} (96%) rename public/build/assets/{spinner-CoRrGFqk.js => spinner-CCI0ZpZ9.js} (70%) rename public/build/assets/{subscription-BG3RHyD9.js => subscription-C-u-O6PN.js} (95%) rename public/build/assets/{subscription-CWLd4fU4.js => subscription-DJjwwh89.js} (92%) rename public/build/assets/{sun-CDBr7ehg.js => sun-r0X8DC4y.js} (88%) create mode 100644 public/build/assets/tabs-CNNfAj8l.js rename public/build/assets/{text-link-B7waIO2E.js => text-link-BlYfkXNw.js} (88%) delete mode 100644 public/build/assets/themes-BEIrAo01.js create mode 100644 public/build/assets/themes-dmvzolUC.js rename public/build/assets/{two-factor-challenge-CIH9e-kP.js => two-factor-challenge-Miwtb12I.js} (92%) rename public/build/assets/{use-clipboard-C4ojyAai.js => use-clipboard-BvQkhUu9.js} (96%) rename public/build/assets/{use-two-factor-auth-B2IHMCS_.js => use-two-factor-auth-Bdh-sKJ3.js} (99%) rename public/build/assets/{verification-PIrv5pnj.js => verification-D4buixpo.js} (95%) rename public/build/assets/{verify-email-CBOEFMni.js => verify-email-D806-GRE.js} (84%) create mode 100644 resources/js/components/themes/ai-theme-generator.tsx create mode 100644 resources/js/components/themes/color-picker.tsx create mode 100644 resources/js/components/themes/theme-editor-variables.tsx create mode 100644 tests/Feature/ThemesControllerTest.php diff --git a/.agents/skills/inertia-react-development/SKILL.md b/.agents/skills/inertia-react-development/SKILL.md deleted file mode 100644 index e440560..0000000 --- a/.agents/skills/inertia-react-development/SKILL.md +++ /dev/null @@ -1,524 +0,0 @@ ---- -name: inertia-react-development -description: "Develops Inertia.js v3 React client-side applications. Activates when creating React pages, forms, or navigation; using ,