chore(deps)(deps): bump the production-dependencies group across 1 directory with 3 updates#8
Closed
dependabot[bot] wants to merge 698 commits intomainfrom
Closed
Conversation
Next.js docs cache committed so all devs get instant access without running npx @next/codemod agents-md locally. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(my-app): enable React Compiler + blog polish [deploy my-app] - Enable React Compiler for automatic memoization (no manual useMemo/useCallback) - Add Next.js DevTools MCP config for agent-assisted development - Remove hardcoded Korean fallbacks from blog pages (use i18n keys only) - Remove container background color from blog pages - Refine blog description copy (ko/en/ja) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs(my-app): add beta polish sprint devlog Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat(my-app): enable React Compiler + blog polish [deploy my-app] - Enable React Compiler for automatic memoization (no manual useMemo/useCallback) - Add Next.js DevTools MCP config for agent-assisted development - Remove hardcoded Korean fallbacks from blog pages (use i18n keys only) - Remove container background color from blog pages - Refine blog description copy (ko/en/ja) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs(my-app): add beta polish sprint devlog Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(hua-ui): centralize dark mode variant in base.css [deploy my-app] Tailwind v4 defaults dark: to @media prefers-color-scheme, but next-themes uses class="dark". Each app had to manually add @custom-variant dark — now it lives in a single base.css that recommended-theme.css auto-imports and custom-theme apps can import directly. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…attern (#338) Phase 1 — hua-ux entrypoint separation: - Add framework/shared.ts (no "use client") for types + pure functions - Slim down framework/index.ts, re-export shared for backward compat - Extend framework/server.ts with shared re-export - Add tsup entry + package.json exports for framework/shared Phase 2 — CSS variable pattern standardization: - Add dark mode --color-* overrides to recommended-theme.css - Remove @media (prefers-color-scheme: dark) from my-site, my-docs - Fix @theme circular reference in hue (hsl(var(--*)) → direct values) - Migrate my-chat from OKLCH to HSL - Add recommended-theme.css import to my-api - Add @theme block to my-app (Cyan primary) Phase 3 — Documentation: - Update framework README with import paths table - Update my-docs theming guide with standard CSS pattern - Add framework/shared to hua-ux package page exports table - Add devlog Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Extract client components from 6 page.tsx files (admin, announcements, blog) - LoadingOverlay: internal message rotation (5s interval, fade animation) - LoadingSpinner: thicker borders for lg/xl sizes, improved dark mode contrast - i18n loading messages renewal (ko: gentle, en: upbeat, ja: emotional) - Fix offline detection false positive (verifyConnection timeout vs slow dev server) - Unify date formatters in diary/[id] to use useDateFormatter hook Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
P0 hotfixes from PR #339 follow-up: 1. Fix draft reload causing duplicate drafts - Clear currentDraftId after deleting loaded draft - Prevents auto-save from trying to update deleted draft ID 2. Fix HTML entity escape for slash character - Remove unnecessary / -> / escape in sanitizeInput - Slash is not a significant XSS vector Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- DashboardSidebar: auto-close on mobile when menu item clicked - BlogCard: scroll reveal animation with staggered delay - BlogEditor: disable localStorage autoSave (use DB draft instead) Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…ates (#351) Bumps the production-dependencies group with 12 updates: | Package | From | To | | --- | --- | --- | | [@anthropic-ai/claude-code](https://github.com/anthropics/claude-code) | `2.1.19` | `2.1.29` | | [pnpm](https://github.com/pnpm/pnpm/tree/HEAD/pnpm) | `10.28.1` | `10.28.2` | | [zustand](https://github.com/pmndrs/zustand) | `5.0.10` | `5.0.11` | | [next](https://github.com/vercel/next.js) | `16.1.4` | `16.1.6` | | [react](https://github.com/facebook/react/tree/HEAD/packages/react) | `19.2.3` | `19.2.4` | | [react-dom](https://github.com/facebook/react/tree/HEAD/packages/react-dom) | `19.2.3` | `19.2.4` | | [@aws-sdk/client-ses](https://github.com/aws/aws-sdk-js-v3/tree/HEAD/clients/client-ses) | `3.975.0` | `3.980.0` | | [@supabase/supabase-js](https://github.com/supabase/supabase-js/tree/HEAD/packages/core/supabase-js) | `2.91.1` | `2.93.3` | | [next-intl](https://github.com/amannn/next-intl) | `4.7.0` | `4.8.1` | | [framer-motion](https://github.com/motiondivision/motion) | `12.29.0` | `12.29.2` | | [@sentry/nextjs](https://github.com/getsentry/sentry-javascript) | `10.36.0` | `10.38.0` | | [pg](https://github.com/brianc/node-postgres/tree/HEAD/packages/pg) | `8.17.2` | `8.18.0` | Updates `@anthropic-ai/claude-code` from 2.1.19 to 2.1.29 - [Release notes](https://github.com/anthropics/claude-code/releases) - [Changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md) - [Commits](anthropics/claude-code@v2.1.19...v2.1.29) Updates `pnpm` from 10.28.1 to 10.28.2 - [Release notes](https://github.com/pnpm/pnpm/releases) - [Changelog](https://github.com/pnpm/pnpm/blob/v10.28.2/pnpm/CHANGELOG.md) - [Commits](https://github.com/pnpm/pnpm/commits/v10.28.2/pnpm) Updates `zustand` from 5.0.10 to 5.0.11 - [Release notes](https://github.com/pmndrs/zustand/releases) - [Commits](pmndrs/zustand@v5.0.10...v5.0.11) Updates `next` from 16.1.4 to 16.1.6 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](vercel/next.js@v16.1.4...v16.1.6) Updates `react` from 19.2.3 to 19.2.4 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react) Updates `react-dom` from 19.2.3 to 19.2.4 - [Release notes](https://github.com/facebook/react/releases) - [Changelog](https://github.com/facebook/react/blob/main/CHANGELOG.md) - [Commits](https://github.com/facebook/react/commits/v19.2.4/packages/react-dom) Updates `@aws-sdk/client-ses` from 3.975.0 to 3.980.0 - [Release notes](https://github.com/aws/aws-sdk-js-v3/releases) - [Changelog](https://github.com/aws/aws-sdk-js-v3/blob/main/clients/client-ses/CHANGELOG.md) - [Commits](https://github.com/aws/aws-sdk-js-v3/commits/v3.980.0/clients/client-ses) Updates `@supabase/supabase-js` from 2.91.1 to 2.93.3 - [Release notes](https://github.com/supabase/supabase-js/releases) - [Changelog](https://github.com/supabase/supabase-js/blob/master/packages/core/supabase-js/CHANGELOG.md) - [Commits](https://github.com/supabase/supabase-js/commits/v2.93.3/packages/core/supabase-js) Updates `next-intl` from 4.7.0 to 4.8.1 - [Release notes](https://github.com/amannn/next-intl/releases) - [Changelog](https://github.com/amannn/next-intl/blob/main/CHANGELOG.md) - [Commits](amannn/next-intl@v4.7.0...v4.8.1) Updates `framer-motion` from 12.29.0 to 12.29.2 - [Changelog](https://github.com/motiondivision/motion/blob/main/CHANGELOG.md) - [Commits](motiondivision/motion@v12.29.0...v12.29.2) Updates `@sentry/nextjs` from 10.36.0 to 10.38.0 - [Release notes](https://github.com/getsentry/sentry-javascript/releases) - [Changelog](https://github.com/getsentry/sentry-javascript/blob/develop/CHANGELOG.md) - [Commits](getsentry/sentry-javascript@10.36.0...10.38.0) Updates `pg` from 8.17.2 to 8.18.0 - [Changelog](https://github.com/brianc/node-postgres/blob/master/CHANGELOG.md) - [Commits](https://github.com/brianc/node-postgres/commits/pg@8.18.0/packages/pg) --- updated-dependencies: - dependency-name: "@anthropic-ai/claude-code" dependency-version: 2.1.29 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: pnpm dependency-version: 10.28.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: zustand dependency-version: 5.0.11 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: next dependency-version: 16.1.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: react dependency-version: 19.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: react-dom dependency-version: 19.2.4 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: "@aws-sdk/client-ses" dependency-version: 3.980.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: "@supabase/supabase-js" dependency-version: 2.93.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: next-intl dependency-version: 4.8.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: framer-motion dependency-version: 12.29.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: "@sentry/nextjs" dependency-version: 10.38.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies - dependency-name: pg dependency-version: 8.18.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…3 updates (#352) Bumps the development-dependencies group with 23 updates: | Package | From | To | | --- | --- | --- | | [@eslint/js](https://github.com/eslint/eslint/tree/HEAD/packages/js) | `9.39.1` | `9.39.2` | | [@vitest/browser-playwright](https://github.com/vitest-dev/vitest/tree/HEAD/packages/browser-playwright) | `4.0.17` | `4.0.18` | | [@vitest/coverage-v8](https://github.com/vitest-dev/vitest/tree/HEAD/packages/coverage-v8) | `4.0.14` | `4.0.18` | | [node-gyp](https://github.com/nodejs/node-gyp) | `12.1.0` | `12.2.0` | | [playwright](https://github.com/microsoft/playwright) | `1.57.0` | `1.58.1` | | [tsx](https://github.com/privatenumber/tsx) | `4.20.5` | `4.21.0` | | [turbo](https://github.com/vercel/turborepo) | `2.6.3` | `2.8.1` | | [typescript-eslint](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/typescript-eslint) | `8.52.0` | `8.54.0` | | [vitest](https://github.com/vitest-dev/vitest/tree/HEAD/packages/vitest) | `4.0.14` | `4.0.18` | | [@tailwindcss/postcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/@tailwindcss-postcss) | `4.1.13` | `4.1.18` | | [autoprefixer](https://github.com/postcss/autoprefixer) | `10.4.21` | `10.4.24` | | [tailwindcss](https://github.com/tailwindlabs/tailwindcss/tree/HEAD/packages/tailwindcss) | `4.1.13` | `4.1.18` | | [eslint](https://github.com/eslint/eslint) | `9.39.1` | `9.39.2` | | [eslint-config-next](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next) | `16.0.4` | `16.1.6` | | [@typescript-eslint/eslint-plugin](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/eslint-plugin) | `8.48.0` | `8.54.0` | | [@typescript-eslint/parser](https://github.com/typescript-eslint/typescript-eslint/tree/HEAD/packages/parser) | `8.48.0` | `8.54.0` | | [@playwright/test](https://github.com/microsoft/playwright) | `1.57.0` | `1.58.1` | | [@types/nodemailer](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/nodemailer) | `7.0.4` | `7.0.9` | | [@testing-library/jest-dom](https://github.com/testing-library/jest-dom) | `6.8.0` | `6.9.1` | | [@testing-library/react](https://github.com/testing-library/react-testing-library) | `16.3.0` | `16.3.2` | | [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/tree/HEAD/packages/plugin-react) | `5.1.1` | `5.1.2` | | [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.4.3` | `29.4.6` | | [jsdom](https://github.com/jsdom/jsdom) | `27.2.0` | `27.4.0` | Updates `@eslint/js` from 9.39.1 to 9.39.2 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](https://github.com/eslint/eslint/commits/v9.39.2/packages/js) Updates `@vitest/browser-playwright` from 4.0.17 to 4.0.18 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/browser-playwright) Updates `@vitest/coverage-v8` from 4.0.14 to 4.0.18 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/coverage-v8) Updates `node-gyp` from 12.1.0 to 12.2.0 - [Release notes](https://github.com/nodejs/node-gyp/releases) - [Changelog](https://github.com/nodejs/node-gyp/blob/main/CHANGELOG.md) - [Commits](nodejs/node-gyp@v12.1.0...v12.2.0) Updates `playwright` from 1.57.0 to 1.58.1 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.57.0...v1.58.1) Updates `tsx` from 4.20.5 to 4.21.0 - [Release notes](https://github.com/privatenumber/tsx/releases) - [Changelog](https://github.com/privatenumber/tsx/blob/master/release.config.cjs) - [Commits](privatenumber/tsx@v4.20.5...v4.21.0) Updates `turbo` from 2.6.3 to 2.8.1 - [Release notes](https://github.com/vercel/turborepo/releases) - [Changelog](https://github.com/vercel/turborepo/blob/main/RELEASE.md) - [Commits](vercel/turborepo@v2.6.3...v2.8.1) Updates `typescript-eslint` from 8.52.0 to 8.54.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/typescript-eslint/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/typescript-eslint) Updates `vitest` from 4.0.14 to 4.0.18 - [Release notes](https://github.com/vitest-dev/vitest/releases) - [Commits](https://github.com/vitest-dev/vitest/commits/v4.0.18/packages/vitest) Updates `@tailwindcss/postcss` from 4.1.13 to 4.1.18 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/@tailwindcss-postcss) Updates `autoprefixer` from 10.4.21 to 10.4.24 - [Release notes](https://github.com/postcss/autoprefixer/releases) - [Changelog](https://github.com/postcss/autoprefixer/blob/main/CHANGELOG.md) - [Commits](postcss/autoprefixer@10.4.21...10.4.24) Updates `tailwindcss` from 4.1.13 to 4.1.18 - [Release notes](https://github.com/tailwindlabs/tailwindcss/releases) - [Changelog](https://github.com/tailwindlabs/tailwindcss/blob/main/CHANGELOG.md) - [Commits](https://github.com/tailwindlabs/tailwindcss/commits/v4.1.18/packages/tailwindcss) Updates `eslint` from 9.39.1 to 9.39.2 - [Release notes](https://github.com/eslint/eslint/releases) - [Commits](eslint/eslint@v9.39.1...v9.39.2) Updates `eslint-config-next` from 16.0.4 to 16.1.6 - [Release notes](https://github.com/vercel/next.js/releases) - [Changelog](https://github.com/vercel/next.js/blob/canary/release.js) - [Commits](https://github.com/vercel/next.js/commits/v16.1.6/packages/eslint-config-next) Updates `@typescript-eslint/eslint-plugin` from 8.48.0 to 8.54.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/eslint-plugin/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/eslint-plugin) Updates `@typescript-eslint/parser` from 8.48.0 to 8.54.0 - [Release notes](https://github.com/typescript-eslint/typescript-eslint/releases) - [Changelog](https://github.com/typescript-eslint/typescript-eslint/blob/main/packages/parser/CHANGELOG.md) - [Commits](https://github.com/typescript-eslint/typescript-eslint/commits/v8.54.0/packages/parser) Updates `@playwright/test` from 1.57.0 to 1.58.1 - [Release notes](https://github.com/microsoft/playwright/releases) - [Commits](microsoft/playwright@v1.57.0...v1.58.1) Updates `@types/nodemailer` from 7.0.4 to 7.0.9 - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/nodemailer) Updates `@testing-library/jest-dom` from 6.8.0 to 6.9.1 - [Release notes](https://github.com/testing-library/jest-dom/releases) - [Changelog](https://github.com/testing-library/jest-dom/blob/main/CHANGELOG.md) - [Commits](testing-library/jest-dom@v6.8.0...v6.9.1) Updates `@testing-library/react` from 16.3.0 to 16.3.2 - [Release notes](https://github.com/testing-library/react-testing-library/releases) - [Changelog](https://github.com/testing-library/react-testing-library/blob/main/CHANGELOG.md) - [Commits](testing-library/react-testing-library@v16.3.0...v16.3.2) Updates `@vitejs/plugin-react` from 5.1.1 to 5.1.2 - [Release notes](https://github.com/vitejs/vite-plugin-react/releases) - [Changelog](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite-plugin-react/commits/plugin-react@5.1.2/packages/plugin-react) Updates `ts-jest` from 29.4.3 to 29.4.6 - [Release notes](https://github.com/kulshekhar/ts-jest/releases) - [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md) - [Commits](kulshekhar/ts-jest@v29.4.3...v29.4.6) Updates `jsdom` from 27.2.0 to 27.4.0 - [Release notes](https://github.com/jsdom/jsdom/releases) - [Changelog](https://github.com/jsdom/jsdom/blob/main/Changelog.md) - [Commits](jsdom/jsdom@27.2.0...27.4.0) --- updated-dependencies: - dependency-name: "@eslint/js" dependency-version: 9.39.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@vitest/browser-playwright" dependency-version: 4.0.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@vitest/coverage-v8" dependency-version: 4.0.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: node-gyp dependency-version: 12.2.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: playwright dependency-version: 1.58.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: tsx dependency-version: 4.21.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: turbo dependency-version: 2.8.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: typescript-eslint dependency-version: 8.54.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: vitest dependency-version: 4.0.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@tailwindcss/postcss" dependency-version: 4.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: autoprefixer dependency-version: 10.4.24 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: tailwindcss dependency-version: 4.1.18 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: eslint dependency-version: 9.39.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: eslint-config-next dependency-version: 16.1.6 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@typescript-eslint/eslint-plugin" dependency-version: 8.54.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@typescript-eslint/parser" dependency-version: 8.54.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@playwright/test" dependency-version: 1.58.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@types/nodemailer" dependency-version: 7.0.9 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@testing-library/jest-dom" dependency-version: 6.9.1 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies - dependency-name: "@testing-library/react" dependency-version: 16.3.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: "@vitejs/plugin-react" dependency-version: 5.1.2 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: ts-jest dependency-version: 29.4.6 dependency-type: direct:development update-type: version-update:semver-patch dependency-group: development-dependencies - dependency-name: jsdom dependency-version: 27.4.0 dependency-type: direct:development update-type: version-update:semver-minor dependency-group: development-dependencies ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gr22nist <echonet.ais@gmail.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [openai](https://github.com/openai/openai-node) from 4.104.0 to 6.17.0. - [Release notes](https://github.com/openai/openai-node/releases) - [Changelog](https://github.com/openai/openai-node/blob/master/CHANGELOG.md) - [Commits](openai/openai-node@v4.104.0...v6.17.0) --- updated-dependencies: - dependency-name: openai dependency-version: 6.17.0 dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) from 20.19.17 to 25.2.0. - [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases) - [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node) --- updated-dependencies: - dependency-name: "@types/node" dependency-version: 25.2.0 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gr22nist <echonet.ais@gmail.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Bumps [storybook](https://github.com/storybookjs/storybook/tree/HEAD/code/core) from 8.6.14 to 10.2.3. - [Release notes](https://github.com/storybookjs/storybook/releases) - [Changelog](https://github.com/storybookjs/storybook/blob/next/CHANGELOG.md) - [Commits](https://github.com/storybookjs/storybook/commits/v10.2.3/code/core) --- updated-dependencies: - dependency-name: storybook dependency-version: 10.2.3 dependency-type: direct:development update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: gr22nist <echonet.ais@gmail.com> Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
No .storybook config, no .stories files, no source imports. Was installed but never implemented. Can re-add when actually needed. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* chore: remove empty/unused packages and turbo references Remove packages with no source code (only dist/boilerplate): - packages/create-hua (wrapper for create-hua-ux) - packages/hua-i18n-advanced, hua-i18n-ai, hua-i18n-debug, hua-i18n-plugins - packages/hua-motion, hua-motion-advanced (migrated to motion-core) - packages/sdui-core, sdui-inspector, sdui-renderers - apps/hua-labs, hua-motion, sdui-studio Clean up turbo.json references for removed packages. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * docs: add devlog for 2026-02-02 security hardening and cleanup Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* chore: remove unused dependencies from my-app and my-api my-app: remove @google/generative-ai, @hookform/resolvers, react-hook-form, next-intl, dotenv (5 packages) my-api: remove dotenv, next-intl (2 packages) Verified via depcheck + manual source code audit. Kept false positives: @hua-labs/i18n-*, lucide-react (indirect usage), @prisma/client-runtime-utils, pretendard (config/CSS). Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(my-api): fix recharts labelFormatter type error formatDate parameter type changed to accept ReactNode from recharts Tooltip labelFormatter prop. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix: toFixed crash, phosphor icon mapping, and title name leak - Wrap .toFixed() calls with Number() to handle null/string values - Add 'layers' (Stack) and 'ban' (Prohibit) to phosphor icon mapping - Strengthen STRICT_NO_NAMES rule in analysis prompt for title section Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: DiaryDetail toFixed crash, reduce notification polling, remove verbose logs - Wrap cost_usd/total_tokens with Number() in DiaryDetailClient - Change unread notification polling from 30s to 2min when unread > 0 - Remove ~30 console.log statements from draft API routes and quota-check Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(ux): delay auto-save by 2min after entering write page Give users time to pick a date before the first auto-save fires. Also remove remaining console.log noise from useAutoSave hook. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(security): AI 통합 익명화 파이프라인 + phosphor icon fix - anonymizeWithAI(): gpt-4o-mini 단일 호출로 이름 익명화 + PII 마스킹 + 위험 감지 통합 - 실서비스 파이프라인(stream, hua-emotion-analysis) + E2E 테스트 동일 함수 사용 - AI 실패 시 regex fallback 자동 적용 - phosphor 'activity' 아이콘 매핑 수정 (Activity → Pulse) - analysis-e2e 메타데이터 상하 배치 + detectedNames/riskReasoning/method 표시 - 아키텍처 문서 업데이트 (service-layer, api-layer) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(perf): singleton polling for unread notification count useUnreadNotificationCount가 Header, NotificationDrawer, notifications/page 3곳에서 각각 독립 setInterval → 동일 API 3배 호출 문제 수정. 모듈 레벨 글로벌 싱글턴 + useSyncExternalStore로 타이머 1개만 유지. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Remove ~95K lines of outdated, auto-generated, and duplicate documentation: - Delete legacy guides, planning, security, templates, code-review folders - Remove apps/my-app/internal (superseded by collab docs) - Flatten collab/my-app/ → collab/ - Move my-app devlogs to root docs/devlogs/ - Update CLAUDE.md and docs/README.md paths Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* fix(admin): show actual sentiment score instead of hardcoded 51 - Store 1st analysis sentiment (1-100) in HuaEmotionAnalysis.sentiment_score via transformHUAResultForDB() - SentimentScoreCard: add source prop to handle different score scales - Remove token/model panel folding - always show expanded - Document sentiment_score cleanup needed in P1 tasks [deploy my-app] Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(admin): clean up sentiment_score schema and add backfill API - Remove unused convertSentimentToScore/Safe functions from sentiment-utils.ts - Fix schema comment: HuaEmotionAnalysis.sentiment_score is 1-100 integer, not -1~1 - Add POST /api/admin/backfill-sentiment for existing diary backfill (dry_run support) - Update P1 tasks doc with cleanup status [deploy my-app] Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(ux): modal size system overhaul + metrics modal + console cleanup [deploy my-app] - Modal package: fixed-width (md:w-XX) → max-width based responsive system - Reduced modal sizes site-wide (SearchModal 2xl→lg, DraftModal 3xl→xl) - MetricsModal: replaced range/focus with direction/sentiment metrics - i18n guides: individual keys → array using getRawValue - Removed 6 dev console.logs (hydration/sync noise) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: trigger deployment [deploy my-app] Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…app] (#360)
* feat(security): add GCP Cloud KMS envelope encryption support
- Add kms-client.ts: KMS wrap/unwrap, envelope encrypt/decrypt
- Add smart encrypt/decrypt functions with auto format detection
- Envelope format: version(1) + wrappedDEK_len(2) + wrappedDEK + iv + authTag + ciphertext
- Falls back to existing PBKDF2 when KMS is not configured
- Old encrypted data (PBKDF2) is auto-detected and decrypted normally
Env vars needed (when ready):
- GCP_KMS_KEY_NAME: projects/{id}/locations/{loc}/keyRings/{ring}/cryptoKeys/{key}
- GCP_KMS_CREDENTIALS: base64-encoded service account JSON
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add GCP Cloud KMS setup guide for envelope encryption
Step-by-step guide for KMS API activation, key creation,
service account setup, and Vercel env configuration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat(security): add GCP Cloud KMS envelope encryption support
- Add kms-client.ts: KMS wrap/unwrap, envelope encrypt/decrypt
- Add smart encrypt/decrypt functions with auto format detection
- Envelope format: version(1) + wrappedDEK_len(2) + wrappedDEK + iv + authTag + ciphertext
- Falls back to existing PBKDF2 when KMS is not configured
- Old encrypted data (PBKDF2) is auto-detected and decrypted normally
Env vars needed (when ready):
- GCP_KMS_KEY_NAME: projects/{id}/locations/{loc}/keyRings/{ring}/cryptoKeys/{key}
- GCP_KMS_CREDENTIALS: base64-encoded service account JSON
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add GCP Cloud KMS setup guide for envelope encryption
Step-by-step guide for KMS API activation, key creation,
service account setup, and Vercel env configuration.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(my-app): add KMS re-encrypt batch script
Migrates existing PBKDF2-encrypted diary entries and analysis results
to GCP Cloud KMS envelope encryption. Supports dry-run mode.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* docs: add KMS migration TODO + pending devlogs and references
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* feat(my-app): complete KMS envelope encryption migration
Phase 1-5 완료:
- motivation_cues 암호화 (스키마 + 저장로직 + 마이그레이션)
- 새 분석은 KMS envelope encryption으로 암호화
- PBKDF2 함수들 @deprecated 처리
- kms-client.ts server-only 추가
- protobufjs 의존성 추가 (빌드 호환)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
* refactor(i18n): unify "later diary" translation keys and fix MarkdownRenderer type error
- Rename delayed_diary → later_diary in common.json (ko/en/ja)
- Remove duplicate delayedDiary keys from search.json and admin.json
- Rename delayedEntry/delayedDiary → laterEntry/laterDiary in admin.json
- Unify diary.json delayed.title/editorTitle across all languages
- Unify about.json delayed.title across all languages
- Update 5 components to use common:later_diary
- Fix MarkdownRenderer: replace hardcoded APP_NAME map with t('common:brandName')
- Add "fix existing build errors" principle to CLAUDE.md
[deploy my-app]
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Move the preview/edit toggle button from the header to the language tabs bar and make it sticky, so users can switch between edit and preview without scrolling back to the top. Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat(hua-ui): move preview toggle to sticky language tabs Move the preview/edit toggle button from the header to the language tabs bar and make it sticky, so users can switch between edit and preview without scrolling back to the top. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat(my-app): diary list UI redesign with minimal square cards - FilterSortBar: chip-style segmented control instead of dropdowns - DiaryListItem: minimal square card layout (aspect-square) - Title: 2-line fixed height - Question: 3-line preview - Footer: date + later diary badge - Hover: delete/edit buttons - Grid: 4 > 2 > 1 column responsive (lg/sm/mobile) - Items per page: 6 → 8 - i18n keys added for stats and search - StatsCard/Dashboard: unified rounded-2xl - Card component: fixed hoverable prop DOM warning - CalendarSelectedDayList: removed i18n fallbacks, 4px grid Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Drop UserProfileMeta model (privacy compliance) - Add characters_enc field to DiaryKeywords (KMS encrypted) - Remove UserProfileMetaResponse type - Refactor diary API routes - Add CalendarEmptyState component - Minor style fixes Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…age [deploy my-app] (#379) * feat(encryption): extract KMS encryption to @hua-labs/encryption package - Create @hua-labs/encryption package with envelope encryption - Support GCP Cloud KMS with automatic PBKDF2 fallback - Add smart encryption layer with auto-format detection - Include utility functions (hash, HMAC, key generation) - Provide /server export for Next.js App Router - Update my-app to use package via re-export - Add package extraction planning document Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(encryption): complete migration to @hua-labs/encryption package - Add hashUserData and encryptAnalysisResultSmart to package - Refactor lib/encryption.ts to re-export from package - Migrate 14 API routes to use package directly - Remove deprecated kms-client.ts (now in package) - Keep app-specific functions (PBKDF2 for User table, cache-based) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
* feat: add @hua-labs/docs-engine package and encryption tests - Create @hua-labs/docs-engine package with reusable docs components: - SectionNavigation: TOC with scroll spy and mobile support - InstallGuide: npm/yarn/pnpm install tabs with CodeBlock - Types: ComponentMetadata, HookMetadata, I18nMetadata - Update my-docs to use docs-engine via re-exports - Add 26 unit tests for @hua-labs/encryption package: - utils.test.ts: hash functions, HMAC, key generation - legacy-pbkdf2.test.ts: PBKDF2 encrypt/decrypt - smart-encryption.test.ts: smart layer and analysis encryption - kms-client.test.ts: KMS detection and format checking Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(my-app): prevent PWA install prompt from showing after "never" selected Add localStorage check inside beforeinstallprompt event handler to prevent the prompt from reappearing on page navigation after user selects "never". Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor(my-app): simplify PWA install prompt - remove "later" option - Remove "later" button and 24-hour dismiss logic - Keep only "install" and "never" options - X button now triggers "never" (same as dismiss permanently) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- i18n: support single brace {key} interpolation (backward compatible)
- Components: focus → focus-visible for better accessibility
- Badge, Modal, Toast, Dropdown, Alert, Bookmark, ContextMenu, ScrollToTop
- LoadingSpinner dots: bounce → sequential pulse animation
- Add duration-200 ease-in-out to transitions
- Header: add focus:outline-none and ease-in-out
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
…app] (#383) * fix(hua-ui): Tailwind v4 dark mode background color issue CSS 변수 기반 배경색 시스템으로 전환하여 Tailwind v4의 bg-* + dark:bg-* specificity 충돌 문제 해결. - Toast: --toast-*-bg 변수 사용 - Badge: --badge-*-bg/text/border 변수 사용 - Modal: --modal-bg/border 변수 사용 - Dropdown: --dropdown-bg 변수 사용 - LoadingSpinner: 다크모드 track 대비 향상 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(hua-ui): Modal size and centering issues - Remove w-full that was overriding max-w-* size classes - Change min-h-full to h-full for proper vertical centering Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Move i18n-currency/, i18n-date/, i18n-number/ into i18n/formatters/ - Update i18n/README.md with new paths - Add packages/README.md as index Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
- Add Claude skills: auto-impl, parallel-impl, typecheck - Move notification docs out of my-app folder - Delete duplicate blog post (already published elsewhere) - Add component-vars.css for hua-ui styles - Add .claude/settings*.json to gitignore Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
…[deploy my-app] (#396) * docs(claude): add development checklists and type check guide - Add UI feature verification checklist (browser mechanism validation) - Add environment variable removal checklist (build verification) - Add Prisma import consistency rules - Prioritize type check before build in workflow - Add type check command examples Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix(my-app): production console.log cleanup and SEO fixes - Server-side: 22 files migrated from console.log to logger utility - Client-side: 10 files with debug logs removed - offline-storage.ts: 26 console.log instances wrapped with isDev guard - robots.txt: domain corrected to sumdiary.com - sitemap.ts: dynamic sitemap generation for static pages + blog posts - styles.ts: removed TODO comment (cyan confirmed) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * perf(my-app): optimize API polling and fix hook performance issues API call optimization: - Notification polling: add visibilitychange listener, 10min in hidden tabs - useAnnouncements/useBlogPosts/useImportantAnnouncement: hasFetchedRef guard - useGuestDiaryMigration: add AbortController for fetch cleanup - useAutoLogout: reduce activity check interval 1min → 5min Hook performance fixes (16 issues across 12 files): - HIGH: useScrollDetection, useTermsSteps, useKeyboardShortcuts, useBackNavigation — unstable deps stabilized with useRef - MEDIUM: useSocialAuth, useDiaryMenu, useDiaryDelete, useProfileForm, useProfileImageUpload, useProfileSettings, useRegisterForm, useAISettings — handlers wrapped with useCallback - useAISettings: remove debug artifacts, add VALID_PROVIDERS const Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add retention system roadmap, beta checklist v2, and devlogs - Retention & attachment system ideation document - Quick Entry, Sum-up reports, progress signals - 주호소 보고서 (Chief Complaint Report) concept - Multi-language naming: 숨고르기 / Sum-up / すみ記 - Beta launch checklist v2 (consolidated from v1 + new items) - 3 devlogs for 2026-02-06 session work Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: remove legacy cursor skills, graphite plans, and archived docs - .cursorrules: migrated to CLAUDE.md - .cursor/skills/: 18 files — replaced by .claude/skills/ - GRAPHITE_STACK_*.md: obsolete stack plans - _archive/my-docs/: stale package configs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(my-app): improve useAISettings with code review feedback - Extract userId from session for minimal dependency - Add AbortController to loadSettings fetch - Unify localStorage fallback logic (remove try/catch duplication) - Validate provider in handleProviderChange with VALID_PROVIDERS - Type state as AIProvider instead of string - DEFAULT_PROVIDER from env var with type safety Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add React profiling item to beta checklist Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
Lightweight endpoint that responds without DB connection. Used with Uptime Kuma to distinguish Vercel down vs DB down: - /api/ping fails → Vercel is down - /api/health fails (503) → DB is down Also add *.tmp.* to .gitignore to prevent agent temp files from being committed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…onents * refactor(hua-ui): remove merge() from landing + core components (Phase 3) Replace clsx+tailwind-merge merge() calls with dot string composition: - 11 landing components: template literal concatenation - Icon: ternary chains + array.filter(Boolean).join - Action, ActionToolbar: array.filter(Boolean).join Only scrollbar.tsx retains merge() — uses Tailwind scrollbar plugin classes not supported by dot engine. 14 files, 19 merge() calls removed. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * chore: remove tmp file Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ixes (#607) Class mode adapter, 5 Codex findings fixed, 1629 tests pass
* feat(my-app): migrate admin dark: variants to semantic tokens Replace gray/slate dark: variant pairs with CSS variable semantic tokens (bg-background, bg-card, bg-muted, text-foreground, text-muted-foreground, border-border) to eliminate SSR hydration mismatch. Covers P0 (layout/shell), P1 (common components), and P2 pages: - data management: diaries, deleted-diaries, users - content: blog, announcements, test-diary, prompt-test - monitoring: dashboard, errors, crisis, abuse, slip-analytics, performance - not-found Colored variants (red-*, green-*, etc.) intentionally preserved. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(my-app): migrate remaining admin dark: variants to semantic tokens Second pass covering subcomponents and additional pages: - diaries detail cards (DiaryInfo, EmotionFlow, HUAAnalysis, HUAParameters, ModelInfo, TokenUsage) - monitoring (abuse, crisis, errors, performance, slip-analytics) - users (roles, moderation, status) - notifications (list, create, detail) - empathy-beta, multilang-test Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(my-app): 3rd pass admin dark: → semantic tokens Cover remaining patterns in: - announcements, export, invite-codes (forms, inputs, labels) - monitoring: abuse, crisis, performance, slip-analytics (charts, cards) - mock-report: ApproachAvoidanceGauge, SentimentTrendSection, report-registry - prompt-test: all subcomponents (AnalysisSettings, BatchProgress, FileUploader, ResultsPanel) - diaries: TokenUsageCard, DiaryPagination Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(my-app): 4th pass admin dark: → semantic tokens (111→9 remaining) Final sweep covering: - multilang-test (39 patterns) - notifications create/detail/list (50 patterns) - prompt-test TestDataPreview, ResultsPanel - test-diary 9 remaining are intentional keeps: - bg-gray-200 dark:bg-gray-600 (unmapped special combo) - bg-gray-50 dark:bg-gray-800/30 (opacity variant) - border-gray-100 dark:border-gray-800 (uncertain mapping) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(my-app): final sweep — zero gray/slate dark: remaining Clean up last 9 patterns: - bg-gray-200 dark:bg-gray-600 → bg-muted (users badge) - bg-gray-50 dark:bg-gray-750 → bg-muted (typo fix, gray-750 doesn't exist) - bg-gray-100 dark:bg-gray-900 → bg-muted (notifications default badge) - bg-gray-50 dark:bg-gray-800/30 → bg-muted (ResultsPanel) - border-gray-100 dark:border-gray-800 → border-border (test-diary) - text-gray-500 dark:text-gray-400 → text-muted-foreground Admin gray/slate dark: count: 0 (excluding AdminSidebar className) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(ui,ui-dashboard): DashboardSidebar itemDot/activeDot + semantic colors Breaking: rename itemClassName/activeClassName → itemDot/activeDot - hua-ui: replace hardcoded hex colors with CSS variable fallbacks - hua-ui-dashboard: replace all dark:slate-* with semantic tokens (bg-background, text-foreground, text-muted-foreground, border-border, bg-accent, text-accent-foreground, hover:bg-muted) - AdminSidebar: use activeDot/itemDot with semantic tokens Both packages now respect dark mode via CSS variables automatically. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui,ui-dashboard): add deprecated itemClassName/activeClassName aliases Restore backwards compatibility for external consumers: - itemClassName falls back to itemDot - activeClassName falls back to activeDot - Both marked @deprecated in JSDoc Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add devlog for admin semantic tokens migration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Add group/peer to STANDALONE_TOKENS for class mode marker support. Update dot-audit.ts to exclude known class-mode-only and out-of-scope tokens. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
## Summary - 18+ hua-ui components: className → dot prop migration - Responsive/state tokens: dotCSS() class mode for proper @media/@hover CSS rules - Section + EmptyState public dot prop: dotCSS path (fixes API regression) - LandingLogoCloud: removed useId/data-scope/!important tactical hack ## Codex Review 2 rounds — all findings closed. SSR render verified.
… (#611) * chore: add 5 new skills (migrate, typecheck, impact, token-audit, plan) Usage pattern analysis identified gaps in automation: - /migrate: code migration workflow (grep→transform→verify) - /typecheck: type check execution and error analysis - /impact: file/path change impact analysis - /token-audit: hardcoded color/style value audit - /plan: structured execution plan template Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(dot,ui): design system sample page + focus ring + transition arbitrary values - Add /admin/design-system page for spacing/radius/theme decisions - Soften focus ring: box-shadow 1px with color-mix 50% opacity (Input, Textarea, Select) - Select: size-responsive chevron padding (sm:8/md:12/lg:14) - dot: add transition arbitrary value support (transition-[width], duration-[300ms], etc.) - dot: fix unused variable in class.ts - Replace admin-layout CSS class with dot equivalents (fixed inset-0 z-30) - Form accessibility: add id/name to design-system inputs Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui): design-system page dark mode — replace hardcoded hex with CSS variables Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * refactor(ui): decompose dashboard — redistribute to data/feedback/navigation/interactive Dissolve the monolithic advanced/dashboard subpath. Components now exported from semantically appropriate subpaths: - @hua-labs/ui/data: charts, cards, tables, lists, feeds, profiles - @hua-labs/ui/feedback: EmptyState (promoted from DashboardEmptyState) - @hua-labs/ui/navigation: Sidebar (promoted from DashboardSidebar) - @hua-labs/ui/interactive: Toolbar (promoted from DashboardToolbar) - @hua-labs/ui/interactive/kanban: Kanban board (@dnd-kit isolated) PG-named components get generic aliases: TransactionsTable→DataTable, TransactionDetailDrawer→DetailDrawer, RoutingBreakdownCard→BreakdownCard, MerchantList→EntityList @hua-labs/ui/advanced/dashboard kept as deprecated backward-compat re-export barrel. Zero consumer-side breaking changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test: remove test for deleted top-level EmptyState The test imported from the now-deleted components/EmptyState.tsx and tested props (onAction, bordered, secondaryAction) that don't exist on DashboardEmptyState. Consumers use DashboardEmptyState via @hua-labs/ui/feedback or @hua-labs/ui/advanced/dashboard. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(ui): add type aliases to deprecated dashboard barrel The generic aliases (EmptyState, Toolbar, Sidebar, DataTable, etc.) in advanced/dashboard.ts only exported values without corresponding type aliases (EmptyStateProps, ToolbarProps, etc.), causing TSC errors for consumers importing new names from the deprecated path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add devlog — dashboard decomposition Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…DotStyleRegistry, metadata fixes (#614) * docs: full audit — sync 7 doc.yaml (+183 entries), 5 new metadata, i18n fixes [deploy docs] - Sync doc.yaml apiNotes across 7 packages: hua-utils (+27), hua-i18n-formatters (+24), hua-state (+10), hua-dot (+2), hua-motion-core (+40), hua-ui (+50), hua (+30) - Fix empty-state metadata path (root → dashboard subpath) - Create 5 new component metadata: DotNav, HorizontalScroll, ImageReveal, Section, Prose - Convert 2 hardcoded texts to i18n translation keys - Regenerate all README.md + ai.yaml via pnpm generate:docs - Add 3 new skills: security-audit, restructure, changelog - Add autonomous task infrastructure (.claude/tasks/) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(dot): restore responsive layouts — parser security + DotStyleRegistry + 98-file migration dot() inline styles cannot generate @media queries, causing all responsive tokens (md:, sm:, lg:) to be silently dropped after PR #610 migration. Sidebar was permanently hidden, card grids collapsed to single column. - Add arbitrary value whitelist in parseArbitrary() (parser-level security boundary for all adapters: web/native/flutter/compose/swiftui) - Create DotStyleRegistry using useServerInsertedHTML for SSR CSS injection - Migrate 173 responsive dot() → dotClass() across 98 files (0 remaining) - Add 16 security tests (allow safe CSS functions, block injection vectors) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(docs): console errors, duplicate Props headings, metadata audit - Fix gradient-text: extract from dot() to className (4 files) - Fix group/group-hover: convert dot() to dotClass() (8 files, 11 locations) - Fix language-menu-container: separate from dotClass in Header - Fix missing categories.overlay translation key (en/ko) - Add .gradient-text CSS class to globals.css - Fix metadata.description missing t() wrapper (9 pages) - Remove duplicate Props h2 headings (25 component pages) - Audit & fix metadata props: - icon: remove non-existent "inherit" variant, add iconsaxVariant - input: remove className/ref (Omit), add leftIcon - badge: remove className (Omit) - card: replace className with animated prop - modal: rename backdropClassName to backdropDot - Sync en/ko translation keys for all metadata changes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update devlog — console errors, Props audit, metadata fixes Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…le isolation In Next.js App Router, server components and client components are bundled separately. Module-level collectedRules was invisible to DotStyleRegistry (client) when dotClass() was called in server components (pages). This caused all responsive layouts to break in production — class names in HTML but no corresponding CSS rules. Fix: use globalThis for shared CSS collection between RSC server/client bundles, and add browser-side CSS injection for client navigations. [deploy docs] Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- hua-ui: v1.2→2.2 update (new subpaths, primitives, ESM-only build) - dot: new architecture doc (v0.1.0, cross-platform style engine) - i18n: add version/export metadata, dependency graph - hua framework: rewrite to Korean, 18 export paths - my-app: new architecture doc (AI emotion diary SaaS) - my-docs: new architecture doc (docs site structure) - my-site: new architecture doc (landing site structure) Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…eploy docs] * refactor(ui): cherry-pick dashboard consumer migration (non-conflicting) Cherry-picked from #612 — excludes doc page JSX changes that conflict with #614's dotClass migration: - ESLint: tsconfigRootDir + keysFile absolute path fix (4 configs) - hua/hua-pro: split dashboard re-export into 5 semantic subpaths - my-app: about page import migration + tsconfig path aliases - Agent docs: export path tables updated for semantic subpaths - Registry metadata: 22 files updated with new packageName/code examples - i18n: new category translation keys (interactive, data) - Docs: architecture, migration guide, devlog updated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(docs): align doc pages with actual export surface - Fix ui/page.tsx: Progress/ScrollToTop → root, CodeBlock → data, Tabs → interactive, add Data & Interactive categories - Migrate 22 doc pages from advanced/dashboard to semantic subpaths - Update component names to match new exports - Regenerate i18n types for new translation keys - Add 'table' translation key (en/ko) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(docs): unify EmptyState to @hua-labs/ui/feedback + restore eslint fix - EmptyState: packageName, code examples, InstallGuide → all @hua-labs/ui/feedback - Restore eslint keysFile/tsconfigRootDir absolute path (lint-staged reverted) - Regenerate i18n types Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: add devlog for dashboard consumer semantic migration Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…, dot ecosystem [deploy my-app] * fix(my-app): beta security hardening — XSS, error exposure, rate limits, input validation CRITICAL: fix stored XSS in share-image (escapeHtml), remove error.message client exposure (5 routes), remove DB error from /api/health, remove IP from /api/guest/usage. HIGH: migrate 60+ routes from NextResponse.json to apiError() system, add rate limits to upload and notification endpoints, add Zod validation to diary PUT, fail closed when webhook/cron secrets missing. Add ANNOUNCEMENT_NOT_FOUND and BLOG_NOT_FOUND error codes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): medium security fixes — SVG upload block, CORS tightening, timing-safe auth M1: Remove stack trace from draft route logging M2: Admin maintenance already clean (verified) M3: Block SVG uploads — explicit allowlist (jpeg, png, webp, gif) M4: Replace CORS wildcard with origin allowlist + env var override M5: Use crypto.timingSafeEqual for blog/sync GET token comparison M6: Remove fallback secret from export token verification M7: Remove *.vercel.app wildcard from hackathon CORS Also add dot ecosystem strategy document. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): fix diary PUT date validation + profile error format - UpdateDiaryRequestSchema: z.iso.datetime() → YYYY-MM-DD(T...)? pattern (matches CreateDiaryRequestSchema, fixes edit flow 400 error) - useProfileSettings/useProfileForm: read data.error || data.message (supports both new apiError() and legacy response formats) Fixes found by Codex review of PR #618. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(dot): add MCP server, LSP server, VS Code extension + fix 15 test failures New packages: - @hua-labs/dot-mcp: MCP server with dot_resolve, dot_explain, dot_complete, dot_validate tools - @hua-labs/dot-lsp: LSP server with completion (~5000 entries), hover preview, diagnostics - dot-vscode: VS Code extension client for dot-lsp (TS/TSX/JS/JSX activation) Tests: - Fix 15 pre-existing failures (gradient, color hex, padding scale, dotExplain) - Add 51 new edge case tests (arbitrary values, !important, negative, opacity, cross-platform) - Total: 2044 passing, 0 failures Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * feat(my-app): add Edge-safe API middleware + fix jose dependency H8: Create middleware.ts for global /api/* authentication: - Edge Runtime compatible (no Prisma/crypto) - Public path allowlist (health, translations, guest, auth, cron) - GET-only public paths (blog, announcements) - Session cookie existence check (actual validation in route handlers) - Security headers (nosniff, DENY) Also: add jose as devDependency to fix pre-existing build error, sync CURRENT.md mirror. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: review round 2 — VSCode LSP server resolution, vsce dep, contact P2034 409 - extension.ts: resolve LSP server from bundled/node_modules/sibling with fs.existsSync checks, warning on missing server, client.start() error handling - Add @vscode/vsce devDependency + copy-server.mjs packaging script - Add TRANSACTION_CONFLICT error code (409) for Prisma P2034, restoring contact route's conflict response that regressed to 500 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(dot): LSP diagnostic offset + variant prefix stripping + MCP not-sr-only - LSP: track searchFrom to fix duplicate token diagnostic offset (#1) - LSP: strip variant prefixes (hover:, dark:, sm:) and !important before token lookup to prevent false positive diagnostics (#2) - MCP: add not-sr-only to special case allowlist in dot_validate (#6) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: merge middleware auth into proxy.ts + LSP quote nesting + lockfile sync - Delete middleware.ts — Next.js 16 only supports proxy.ts, both cannot coexist - Merge API auth (session cookie check, public path allowlists) into proxy.ts - LSP: split quote patterns so each only excludes its own quote type, fixing nested quote detection (e.g., font-['Inter']) - Sync pnpm-lock.yaml with @vscode/vsce addition Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: move jose to dependencies + fix vscode prepackage hook - my-app: move jose from devDependencies to dependencies — @auth/core imports jose at runtime, so it must be available in production builds - dot-vscode: rename prebuild:package → prepackage so copy-server.mjs runs before `vsce package` Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): add /api/manifest and /api/og to public API allowlist PWA manifest and OG image endpoints must be accessible without auth for crawlers, link previews, and PWA install to work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…eploy docs] * feat(dot-lsp): expand completion coverage — filter, backdrop, grid, animation, transform Add ~170 missing completion entries to match dot engine's full token set: - filter: hue-rotate, drop-shadow, mix-blend modes - backdrop: brightness, contrast, saturate, hue-rotate, opacity - transition: spring/bounce/snap easing - animation: all 5 preset animations - transform: scale-x/y, skew-x/y, transform-origin - grid: col-start/end, row-start/end, subgrid Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * test(dot): add filter, backdrop, animation, transition resolver tests (+201) Comprehensive tests for under-tested resolvers: - filter: blur, brightness, contrast, saturate, grayscale, sepia, invert, hue-rotate, drop-shadow + arbitrary values - backdrop: all backdrop-filter variants - transition: property, duration, timing, delay + combinations - animation: all 5 presets - mix-blend: multiply, screen, overlay - combination tests: multi-token strings Test count: 2044 → 2245 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update devlog with session 27 — review rounds, dot ecosystem, 2245 tests Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(dot-lsp): remove false positive completions — filter-none, backdrop token ranges - Remove filter-none and backdrop-filter-none (dot() can't resolve these) - Split backdrop completion loops to match actual token tables: - backdrop-contrast: [0,50,75,100,125,150,200] (was sharing brightness range) - backdrop-saturate: [0,50,100,150,200] (was sharing brightness range) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…s [deploy my-app] * feat(my-app): provider-agnostic payment system + SaaS starter kit foundation - Prisma schema: replace toss_* fields with provider-agnostic PaymentProvider enum (LEMONSQUEEZY, STRIPE, TOSS), add USD price fields - Payment lib: interface, factory pattern, LemonSqueezy provider, Stripe stub, quota sync - API routes: checkout, plans, subscriptions, webhooks (LemonSqueezy HMAC, Stripe stub) - Error codes: 8 new PAYMENT_* codes - Fix billing route raw error response → apiError() - SaaS starter kit docs: README, QUICKSTART, ARCHITECTURE, CUSTOMIZATION - Extraction manifest: 291-file analysis (162 KEEP / 26 ADAPT / 103 REMOVE) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review — 4 payment system fixes 1. checkout: resolve LemonSqueezy variant ID from Plan.features JSON instead of passing DB plan UUID as variant ID (was 4xx on checkout) 2. webhook: subscription_cancelled no longer strips premium immediately; quota downgrade moved to subscription_expired event (user keeps paid access until period ends) 3. quota: getUserQuotaLimits reads plan-specific limits from UserQuota DB instead of hardcoded 20/500 premium defaults 4. migration: add Prisma migration file for payment-provider-agnostic schema changes (already applied via manual SQL) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review round 2 — checkout, trial, timezone, composite unique 1. checkout: block new purchase when subscription is CANCELLED but current_period_end is still in the future (prevents double-buy) 2. webhook: subscription_created now stores is_trial + trial_end from LemonSqueezy on_trial status so processExpiredTrials() cron works 3. sync-quota: reset times use KST midnight (matching db-quota-store) instead of UTC midnight — fixes 9-hour drift on initial quota create 4. schema: provider_payment_id and provider_billing_key changed from @unique to @@unique([provider, ...]) composite for multi-provider safety Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review round 3 — migration, trial, idempotency 1. migration.sql: single-column unique → composite unique indexes (provider + id) so different providers can share external IDs 2. webhook subscription_updated: clear is_trial/trial_end when transitioning from on_trial → active (prevents processExpiredTrials from incorrectly expiring paid subscriptions) 3. webhook payment handlers: create → upsert on composite unique so webhook retries are idempotent (return 200 instead of 500) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review round 4 — suspended checkout, amount, trial status 1. checkout: block all non-terminal subscriptions (ACTIVE, CANCELLED with remaining period, SUSPENDED) — only EXPIRED or fully-elapsed CANCELLED can start new checkout 2. webhook subscription_created: resolve amount from Plan table instead of LemonSqueezy first_subscription_item.price (field doesn't exist) 3. webhook subscription_updated: add on_trial to statusMap so trial mid-updates don't clear is_trial/trial_end — clearTrial only fires when attrs.status is literally "active" (paid transition) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review round 5 — minor unit, resume cancel_at 1. webhook payment: divide attrs.subtotal by 100 to convert from LemonSqueezy minor units (cents) to display currency (999 → 9.99) 2. webhook subscription_updated: clear cancel_at/cancelled_at when subscription resumes (CANCELLED → ACTIVE with ends_at=null) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix(my-app): address PR #620 review round 6 — legacy TOSS cancel graceful Cancel route: skip provider API call for legacy TOSS subscriptions (no active Toss integration). Cancel locally only with console.warn instead of throwing Unknown payment provider and returning 500. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * docs: update CURRENT.md with sum-data analytics repo setup Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): reduce serverless connection_limit to 1 for Supabase Nano pool stability Supabase Nano compute has pool size of 15. With connection_limit=2, only ~7 concurrent serverless functions could run before pool exhaustion causing ETIMEDOUT errors. Reducing to 1 doubles concurrent capacity to 15. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(my-app): TossPayments provider + quota alignment + plan seed scripts - Add TossPayments billing provider (toss.ts): billing key issuance, auto-payment execution, payment cancellation APIs - Add POST /api/payments/toss/billing-key route: card registration → billing key → first payment → subscription + quota sync - Register TOSS in payment factory alongside LemonSqueezy and Stripe - Align FREE quota limits across sync-quota.ts and db-quota-store.ts (diary 3/50, analysis 3/50) - Add manual migration SQL for provider-agnostic schema reference - Add plan seed/check scripts for DB Plan table management - Replace console.error with logger in payment routes Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(my-app): TossPayments billing test page + CSP + devlog - Add billing register page with TossPayments V1 SDK integration - Add billing success callback page (authKey → billing-key API) - Add tosspayments domains to CSP (script-src, connect-src, frame-src, form-action) - Fix billing-key route: remove email requirement for social login users - Add dev rate limit override (60/min in development) - Add utility scripts: check-db-schema, clear-rate-limit, verify-subscription - Add devlog for session 20 (payment system + toss + lemonsqueezy) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): replace missing wind icon + remove email auth check in checkout - Dashboard: wind → sparkle icon (phosphor registered) - checkout route: remove email requirement for social login users Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 7 — type fixes, cron billing, plan flow - Fix type errors: remove email requirement for social login, wrap logger.error args properly - Checkout route: skip variant check for TOSS provider - Billing register: preserve planId/billingCycle through Toss SDK redirect - Billing success: read planId/billingCycle from URL params (no hardcode) - Add /api/cron/billing: Toss recurring payment execution + expiration handling (MAX_RETRY=3, SUSPENDED→EXPIRED flow) - Register cron in vercel.json (daily UTC 00:00 / KST 09:00) - Process expired trials in same cron run Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 8 — period drift, failUrl, seed - Cron billing: anchor next period on current_period_end (not now()), add calendar-safe addPeriod() for month-end clamping - Billing-key route: same calendar-safe period calculation for initial sub - Billing register failUrl: preserve planId/billingCycle on SDK failure - Seed plans: add lemonsqueezy_variant_yearly placeholder Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 9 — successUrl passthrough, cancel suspended - Toss provider: pass caller successUrl/cancelUrl through billing register flow - Register page: thread successUrl/cancelUrl to SDK success/fail URLs - Success page: redirect to caller successUrl after billing completion - Seed plans: remove falsy yearly variant placeholder (comment only) - Cancel route: allow SUSPENDED subscriptions to be cancelled (stop rebilling) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 10 — cancelUrl redirect, quota downgrade - Register page: use caller cancelUrl as SDK failUrl when provided - Cancel route: downgrade quota immediately when SUSPENDED sub with expired period is cancelled (period_end <= now → EXPIRED + syncQuotaOnSubscriptionEnd) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 11 — XSS via javascript: URL - Checkout schema: replace z.string().url() with http/https-only refine - Success page: validate callerSuccessUrl protocol before router.push - Blocks javascript:, data:, and other non-http schemes at both API input validation and client-side redirect Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 12 — same-origin SDK failUrl - SDK failUrl always same-origin (Toss SDK constraint) - Caller cancelUrl passed as query param, not directly as SDK failUrl - Register page: on error=true return, redirect to caller cancelUrl via app-level router.replace (with http/https protocol check) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #620 review round 13 — window.location for cross-origin redirect - Replace router.push/replace with window.location.assign for external URLs (Next.js router only supports internal navigation) - Remove unused useRouter imports from billing pages - Keep http/https protocol validation on both redirect paths Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update devlog with R7-R13 review fixes and residual items Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat: add maek (맥) autonomous implementation loop skill Ralph Loop + Symphony pattern merged into HUA skill system. /maek skill for PRD/issue-driven task decomposition with stuck detection, context rotation, and build verification. External loop via scripts/maek.sh. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(dot): resolve 19 unknown tokens — animate, divide, prose, arbitrary opacity - T1: arbitrary value + opacity combo (bg-[var(...)]/80) via color-mix - T2: tailwindcss-animate tokens (animate-in, fade-in, slide-in-from-*) - T3: divide-y/divide-x in class adapter (child combinator) - T4: prose/prose-*/prose-lg passthrough (like group/peer) - 5 tokens already supported (gradient, last:, group) - 5 custom class names excluded (app-specific, not utilities) - Tests: 2245 → 2325 (80 added, all pass) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(my-app, ui-dashboard): admin payment dashboard + sidebar collapsible + settings - DashboardSidebar: add collapsible section support with localStorage persist - Admin API: payment stats, subscriptions, history, settings (4 routes) - Admin pages: payment dashboard, subscription list, payment history, settings - AdminSidebar: add payments/settings items, enable collapsible on all sections - i18n: add payments/settings keys for ko/en/ja - Prisma: add auto_renew field to Subscription model Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #621 review — date filter, divide-y inline fallback - history route: to date filter now uses next-day lt instead of lte (fixes same-day data being excluded when input is date-only string) - replace divide-y divide-border on Box (inline style can't do child combinator) with per-item border-t border-border using index guard - add claude-plugins-analysis.md documentation Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #621 review round 2 — KST date boundary Interpret admin date filter inputs as KST (+09:00) instead of UTC. Prevents off-by-9-hours boundary issue where data from next day KST morning (before 09:00) would leak into the previous day's results. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(my-app): address PR #621 review round 3 — currency-aware formatting - stats route: group revenue by currency instead of blind sum - all payment pages: use useCurrencyFormatter() from @hua-labs/hua/formatters instead of hardcoded ₩ prefix - revenue display: shows per-currency breakdown (e.g. ₩4,900 + $4.99) - history/subscriptions: amount formatted with correct currency symbol Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * Revert "feat(dot): resolve 19 unknown tokens — animate, divide, prose, arbitrary opacity" This reverts commit 4ba446046a3656ee84dcf4ac60a7c3d5fa0f4f78. --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
…ests) * feat(packages): SDUI registry expansion + test coverage boost - Expand SDUI defaultRegistry from 40 to 60 components - Layout: Stack, Panel, SectionHeader, ComponentLayout, Pressable - Navigation: Breadcrumb, Pagination, Navigation, PageNavigation, DotNav - Display: FeatureCard, InfoCard, StatsPanel, LanguageToggle, ThemeToggle - Overlay: Modal, Tooltip, Popover, Drawer, BottomSheet - Add 769 tests across 5 packages: - hua meta-framework: 149→440 (a11y, loading, seo/geo) - hua-state: 27→81 (store, i18n, middleware) - hua-i18n-formatters: 120→281 (currency, date, number edge cases) - hua-ui/sdui: 0→215 (core utils, registry, edge/negative) - hua-dot-aot: 37→85 (vite + babel plugins) - Fix validator.ts: null/undefined guard + author.name trim check Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ui): hasComponent uses Object.hasOwn to reject prototype keys Prevents prototype chain keys like 'toString', 'constructor' from being treated as valid SDUI components. Updates edge test to assert false for prototype properties as a regression guard. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(ui): address PR #625 review — hasOwnProperty + rest spread - Replace Object.hasOwn with Object.prototype.hasOwnProperty.call (Object.hasOwn not in TS target/lib → TS2550 build failure) - Add ...rest spread to all 20 new SDUI wrappers so renderer-injected props (id, role, aria-label, style, constraints) pass through - Update prototype key regression test to assert false Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(dot): resolve 19 unknown tokens — animate, divide, prose, arbitrary opacity - T1: arbitrary value + opacity combo (bg-[var(...)]/80) via color-mix - T2: tailwindcss-animate tokens (animate-in, fade-in, slide-in-from-*) - T3: divide-y/divide-x in class adapter (child combinator) - T4: prose/prose-*/prose-lg passthrough (like group/peer) - 5 tokens already supported (gradient, last:, group) - 5 custom class names excluded (app-specific, not utilities) - Tests: 2245 → 2325 (80 added, all pass) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(dot): divide-color child propagation + dotExplain CSS custom property handling - Fix: divide-color (divide-gray-200) now propagates borderColor into child combinator rules (> * + *), not just the parent element - Fix: dotExplain() explicitly detects CSS custom properties (--tw-*) as unsupported on native/flutter targets - Tests: add divide-color propagation assertions Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(dot): cross-bucket divide color, dotExplain class-mode detection, prose variant prefix - Fix(high): divide-color propagation across variant buckets — hover:divide-gray-200 and md:divide-gray-200 now emit child combinator rules with border-color under the correct selector - Fix(medium): dotExplain() detects divide-y/x as class-mode-only tokens and reports them as unsupported on native/flutter - Fix(medium): prose passthrough preserves variant prefixes — dark:prose-invert stays as dark:prose-invert, not prose-invert - Tests: +7 (2326 → 2333, all pass) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(dot): dotExplain reports divide-y-reverse/divide-x-reverse as class-mode-only Extend CLASS_MODE_ONLY_PATTERNS regex to match -reverse suffix. Add test cases for divide-y-reverse (native) and divide-x-reverse (flutter). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…API [skip deploy] * feat(starter-kit): initial SaaS Starter Kit separation — schema + manifests - Create clean Prisma schema (57 → 33 models, domain models removed) - Add PADDLE to PaymentProvider enum - Rename diary/analysis quotas to generic resource/api - Generate lib/ separation manifest (183 files analyzed) - Generate API routes separation manifest (102 routes analyzed) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(starter-kit): copy generic lib/ infrastructure to kit - Copy 128 files from my-app lib/ (auth, payment, quota, infra, errors, security, rate-limit, env, admin, user, i18n, api, route) - Remove domain-specific files: diary-auth, offline-storage, diary/analysis/guest/search translations - Remaining domain references to clean in follow-up commits Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(starter-kit): clean domain references from lib/ - Remove diary/analysis/emotion/crisis/slip references from 31 files - Rename quota fields: diary→resource, analysis→api - Remove AnalysisResult encryption (domain-specific) - Remove concurrent-limit.ts (analysisResult dependency) - Genericize abuse-detection: diaryId→contentId - Clean branding: my-app→saas-kit in auth, cors, dot-config - Add Stripe/Paddle env vars to server-schema - Remove diary/analysis/guest i18n namespaces Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * feat(starter-kit): copy 52 generic API routes to kit Team api-separation (3 agents parallel): - core-api: 20 routes (auth, user, payments, subscriptions, webhooks, health) - admin-api: 22 routes (users, payments, dashboard, monitoring, abuse-alerts) - support-api: 10 routes (notifications, announcements, invite-codes) All diary/analysis/emotion/crisis domain references removed. Branding genericized. Quota fields renamed to resource/api. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): resolve review findings — missing imports + schema mismatch Findings fixed: - Remove tokens route (depends on missing cost/token-tracker) - Remove billing.ts + billing route (BillingRecord model not in kit schema) - Remove decryption-log.ts (DecryptionLog model not in kit schema) - Remove useNamespacedTranslation.ts (depends on generated types) - Inline getClientIP in abuse-detection (was importing from guest/limiter) - Remove concurrent-limit dependency from quota/check.ts - Remove userStatusLog.create from penalty route (model not in kit schema) - Remove billing API route (depends on deleted billing.ts) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(starter-kit): translate all Korean comments to English 45 files updated — JSDoc, inline comments, console strings, and error messages translated from Korean to English. Data strings (nickname generator food names, abuse detection keywords, anonymizer patterns) intentionally kept in Korean as they are functional multilingual data, not comments. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): resolve review round 2 — auth types, presets, branding - Add auth.d.ts for NextAuth Session.user.id type extension - Fix RATE_LIMIT_PRESETS.diary → .resource (2 routes) - Replace "Sum Diary" branding with "Your App" in all i18n JSON (16 files) - Remove "AI-powered emotional analysis diary" references Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): remove remaining branding from i18n assets Replace all remaining Sum Diary / 숨 다이어리 / スムダイアリー / SUM Diary references with generic placeholders in ko/ja/en translation files. Also remove AI-powered emotional analysis diary service description. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): genericize legal/privacy copy — remove diary service refs Replace diary-specific service descriptions in ko/ja terms and privacy: - 감정 분석 일기 서비스 → generic service description - 感情分析日記サービス → generic service description Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * refactor(starter-kit): replace legal docs with generic US-style placeholders Replace all 9 legal JSON files (terms, privacy, security × ko/ja/en) with domain-neutral placeholder templates. Each file includes a _notice field indicating replacement is required before launch. Removes all diary/emotion/AI analysis service descriptions and Korean Article-style legal structure in favor of standard Section-based SaaS terms. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * docs: update saas-starter-kit devlog with review rounds 2-4 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…, .env.example [skip deploy] * feat(starter-kit): add build config — package.json, tsconfig, next.config, .env.example - package.json: clean deps (no openai, no monorepo workspace refs) - tsconfig.json: standalone paths (no ../../packages refs) - next.config.ts: security headers, CSP, no Sentry/Axiom - .env.example: all env vars documented with sections Kit is now independently buildable (pending prisma generate + UI pages). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): resolve build review — missing deps, quota fields, notifier contract Critical: - Add missing deps: @hua-labs/hua, @hua-labs/security, @hua-labs/i18n-loaders, @aws-sdk/client-ses, @prisma/adapter-pg, @vercel/blob High: - Fix invite-codes/apply quota fields: diary→resource, analysis→api Medium: - Fix abuse-detection notifier: contentId→resourceId to match discord-webhook type Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> * fix(starter-kit): pin @HUA-Labs deps to published versions, add openai - @hua-labs/hua ^1.1.0 (published), @hua-labs/security ^1.0.0-alpha.0 - Add openai dependency (used by translation.ts) - Note: full standalone build requires @HUA-Labs packages to be republished with latest exports (hua/dot, security crypto APIs) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- LICENSES: third-party license notices for all public @HUA-Labs packages (10 deps) - docs/memory/: mirror of Claude memory files for office access [skip deploy] Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…em for public - Absorb 18 hua-pro hooks into motion-core (auto-play, orchestration, interaction, specialized) - Delete hua-ui-dashboard (already decomposed into hua-ui semantic subpaths) - Prep dot ecosystem (dot, dot-aot, dot-lsp, dot-mcp, dot-vscode) for first npm publish - Fix sync-to-public.sh: bash '!' history expansion bug, catch-all config cleanup - Version packages: motion-core 2.4.0, hua 1.2.0, i18n 2.2.0, security alpha.1, eslint-plugin 0.1.2 - Full README audit + fixes across 6 packages
- Fix dot API table: escape pipe chars breaking markdown columns - Add npm badges, Related Packages, License to dot-lsp, dot-mcp, dot-vscode READMEs - Add repository/bugs fields to dot-lsp and dot-mcp package.json - Create DETAILED_GUIDE.md for all 5 dot packages (dot, dot-aot, dot-lsp, dot-mcp, dot-vscode) - Exclude dot-vscode from sync-to-public.sh (VS Code extension, not npm) Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
…rectory with 3 updates Bumps the production-dependencies group with 3 updates in the / directory: [@anthropic-ai/claude-code](https://github.com/anthropics/claude-code), [inquirer](https://github.com/SBoudrias/Inquirer.js) and [@floating-ui/react](https://github.com/floating-ui/floating-ui/tree/HEAD/packages/react). Updates `@anthropic-ai/claude-code` from 2.1.56 to 2.1.76 - [Release notes](https://github.com/anthropics/claude-code/releases) - [Changelog](https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md) - [Commits](anthropics/claude-code@v2.1.56...v2.1.76) Updates `inquirer` from 13.3.0 to 13.3.2 - [Release notes](https://github.com/SBoudrias/Inquirer.js/releases) - [Commits](https://github.com/SBoudrias/Inquirer.js/compare/inquirer@13.3.0...inquirer@13.3.2) Updates `@floating-ui/react` from 0.27.18 to 0.27.19 - [Release notes](https://github.com/floating-ui/floating-ui/releases) - [Changelog](https://github.com/floating-ui/floating-ui/blob/master/packages/react/CHANGELOG.md) - [Commits](https://github.com/floating-ui/floating-ui/commits/@floating-ui/react@0.27.19/packages/react) --- updated-dependencies: - dependency-name: "@anthropic-ai/claude-code" dependency-version: 2.1.76 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: inquirer dependency-version: 13.3.2 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies - dependency-name: "@floating-ui/react" dependency-version: 0.27.19 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: production-dependencies ... Signed-off-by: dependabot[bot] <support@github.com>
Contributor
Author
LabelsThe following labels could not be found: Please fix the above issues or remove invalid values from |
Contributor
Author
|
This pull request was built based on a group rule. Closing it will not ignore any of these versions in future pull requests. To ignore these dependencies, configure ignore rules in dependabot.yml |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps the production-dependencies group with 3 updates in the / directory: @anthropic-ai/claude-code, inquirer and @floating-ui/react.
Updates
@anthropic-ai/claude-codefrom 2.1.56 to 2.1.76Release notes
Sourced from
@anthropic-ai/claude-code's releases.... (truncated)
Changelog
Sourced from
@anthropic-ai/claude-code's changelog.... (truncated)
Commits
420a188chore: Update CHANGELOG.md48b1c6cchore: Update CHANGELOG.md2dc1e69Merge pull request #33472 from anthropics/kashyap/code-review-batch-outputdb8834bfeat(code-review): pass confirmed=true when posting inline comments6f049b6chore: Update CHANGELOG.md45b5430chore: Update CHANGELOG.mdf6dbf44chore: Update CHANGELOG.md540b61bchore: Update CHANGELOG.md00553dechore: Update CHANGELOG.md53a5f3echore: Update CHANGELOG.mdUpdates
inquirerfrom 13.3.0 to 13.3.2Release notes
Sourced from inquirer's releases.
Commits
b218fccchore: Publish new releaseb6aabedfix: set prepublish script1ce0319chore: Publish new release62a1b2dMerge pull request #2031 from SBoudrias/sboudrias/debug-xterm-80g09fcc6cchore(@inquirer/testing): fix formatting56bdf30fix(@inquirer/testing): resolve xterm CJS named export error under native Nod...58d3bf0chore(deps): Bump brace-expansion from 1.1.11 to 1.1.12 (#2029)f9a3adbMerge pull request #2026 from SBoudrias/emdash/semver-315264f5dachore(setup-packages): simplify coerce using tryParseRangefeab678chore(setup-packages): replace semver with std-semverUpdates
@floating-ui/reactfrom 0.27.18 to 0.27.19Release notes
Sourced from
@floating-ui/react's releases.Changelog
Sourced from
@floating-ui/react's changelog.Commits
d8020eechore: version packages (#3445)fa093f3fix(react): right-click dismiss with click outside (#3449)d2681d5fix(react): markOthers shadow root host lookup when parent chain contains anc...Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting
@dependabot rebase.Dependabot commands and options
You can trigger Dependabot actions by commenting on this PR:
@dependabot rebasewill rebase this PR@dependabot recreatewill recreate this PR, overwriting any edits that have been made to it@dependabot show <dependency name> ignore conditionswill show all of the ignore conditions of the specified dependency@dependabot ignore <dependency name> major versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)@dependabot ignore <dependency name> minor versionwill close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)@dependabot ignore <dependency name>will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)@dependabot unignore <dependency name>will remove all of the ignore conditions of the specified dependency@dependabot unignore <dependency name> <ignore condition>will remove the ignore condition of the specified dependency and ignore conditions