claudeship 0.2.24 → 0.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/apps/server/dist/chat/chat.module.js +8 -1
  2. package/apps/server/dist/chat/chat.module.js.map +1 -1
  3. package/apps/server/dist/chat/chat.service.d.ts +5 -1
  4. package/apps/server/dist/chat/chat.service.js +35 -4
  5. package/apps/server/dist/chat/chat.service.js.map +1 -1
  6. package/apps/server/dist/chat/framework-detector.service.d.ts +17 -0
  7. package/apps/server/dist/chat/framework-detector.service.js +193 -0
  8. package/apps/server/dist/chat/framework-detector.service.js.map +1 -0
  9. package/apps/server/dist/chat/prompts/backend/django.d.ts +1 -0
  10. package/apps/server/dist/chat/prompts/backend/django.js +207 -0
  11. package/apps/server/dist/chat/prompts/backend/django.js.map +1 -0
  12. package/apps/server/dist/chat/prompts/backend/express.d.ts +1 -0
  13. package/apps/server/dist/chat/prompts/backend/express.js +260 -0
  14. package/apps/server/dist/chat/prompts/backend/express.js.map +1 -0
  15. package/apps/server/dist/chat/prompts/backend/fastapi.d.ts +1 -0
  16. package/apps/server/dist/chat/prompts/backend/fastapi.js +246 -0
  17. package/apps/server/dist/chat/prompts/backend/fastapi.js.map +1 -0
  18. package/apps/server/dist/chat/prompts/backend/index.d.ts +4 -0
  19. package/apps/server/dist/chat/prompts/backend/index.js +12 -0
  20. package/apps/server/dist/chat/prompts/backend/index.js.map +1 -0
  21. package/apps/server/dist/chat/prompts/backend/nestjs.d.ts +1 -0
  22. package/apps/server/dist/chat/prompts/backend/nestjs.js +270 -0
  23. package/apps/server/dist/chat/prompts/backend/nestjs.js.map +1 -0
  24. package/apps/server/dist/chat/prompts/frontend/expo.d.ts +1 -0
  25. package/apps/server/dist/chat/prompts/frontend/expo.js +208 -0
  26. package/apps/server/dist/chat/prompts/frontend/expo.js.map +1 -0
  27. package/apps/server/dist/chat/prompts/frontend/flutter.d.ts +1 -0
  28. package/apps/server/dist/chat/prompts/frontend/flutter.js +271 -0
  29. package/apps/server/dist/chat/prompts/frontend/flutter.js.map +1 -0
  30. package/apps/server/dist/chat/prompts/frontend/index.d.ts +4 -0
  31. package/apps/server/dist/chat/prompts/frontend/index.js +12 -0
  32. package/apps/server/dist/chat/prompts/frontend/index.js.map +1 -0
  33. package/apps/server/dist/chat/prompts/frontend/nextjs.d.ts +1 -0
  34. package/apps/server/dist/chat/prompts/frontend/nextjs.js +195 -0
  35. package/apps/server/dist/chat/prompts/frontend/nextjs.js.map +1 -0
  36. package/apps/server/dist/chat/prompts/frontend/react-native.d.ts +1 -0
  37. package/apps/server/dist/chat/prompts/frontend/react-native.js +224 -0
  38. package/apps/server/dist/chat/prompts/frontend/react-native.js.map +1 -0
  39. package/apps/server/dist/chat/prompts/frontend/react-vite.d.ts +1 -0
  40. package/apps/server/dist/chat/prompts/frontend/react-vite.js +187 -0
  41. package/apps/server/dist/chat/prompts/frontend/react-vite.js.map +1 -0
  42. package/apps/server/dist/chat/prompts/frontend/svelte.d.ts +1 -0
  43. package/apps/server/dist/chat/prompts/frontend/svelte.js +255 -0
  44. package/apps/server/dist/chat/prompts/frontend/svelte.js.map +1 -0
  45. package/apps/server/dist/chat/prompts/frontend/vue.d.ts +1 -0
  46. package/apps/server/dist/chat/prompts/frontend/vue.js +267 -0
  47. package/apps/server/dist/chat/prompts/frontend/vue.js.map +1 -0
  48. package/apps/server/dist/chat/prompts/index.d.ts +4 -0
  49. package/apps/server/dist/chat/prompts/index.js +20 -1
  50. package/apps/server/dist/chat/prompts/index.js.map +1 -1
  51. package/apps/server/dist/chat/prompts/prompt-builder.service.d.ts +15 -0
  52. package/apps/server/dist/chat/prompts/prompt-builder.service.js +177 -0
  53. package/apps/server/dist/chat/prompts/prompt-builder.service.js.map +1 -0
  54. package/apps/server/dist/chat/prompts/sections/core.d.ts +9 -0
  55. package/apps/server/dist/chat/prompts/sections/core.js +149 -0
  56. package/apps/server/dist/chat/prompts/sections/core.js.map +1 -0
  57. package/apps/server/dist/project/dto/create-project.dto.d.ts +3 -2
  58. package/apps/server/dist/project/dto/create-project.dto.js.map +1 -1
  59. package/apps/server/dist/project/project.controller.d.ts +6 -0
  60. package/apps/server/dist/project/project.service.d.ts +6 -0
  61. package/apps/server/dist/project/project.service.js +6 -1
  62. package/apps/server/dist/project/project.service.js.map +1 -1
  63. package/apps/server/dist/tsconfig.tsbuildinfo +1 -1
  64. package/apps/server/package.json +1 -1
  65. package/apps/server/prisma/dev.db +0 -0
  66. package/apps/server/prisma/migrations/20260127071040_add_frontend_framework/migration.sql +24 -0
  67. package/apps/server/prisma/migrations/20260127071520_add_app_type_and_mobile/migration.sql +25 -0
  68. package/apps/server/prisma/schema.prisma +33 -5
  69. package/apps/web/.next/BUILD_ID +1 -1
  70. package/apps/web/.next/app-build-manifest.json +5 -3
  71. package/apps/web/.next/build-manifest.json +2 -2
  72. package/apps/web/.next/cache/.previewinfo +1 -1
  73. package/apps/web/.next/cache/.rscinfo +1 -1
  74. package/apps/web/.next/cache/.tsbuildinfo +1 -1
  75. package/apps/web/.next/cache/config.json +3 -3
  76. package/apps/web/.next/cache/eslint/.cache_j3uhuz +1 -1
  77. package/apps/web/.next/cache/webpack/client-production/0.pack +0 -0
  78. package/apps/web/.next/cache/webpack/client-production/index.pack +0 -0
  79. package/apps/web/.next/cache/webpack/edge-server-production/index.pack +0 -0
  80. package/apps/web/.next/cache/webpack/server-production/0.pack +0 -0
  81. package/apps/web/.next/cache/webpack/server-production/index.pack +0 -0
  82. package/apps/web/.next/prerender-manifest.json +10 -10
  83. package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  84. package/apps/web/.next/server/app/_not-found.html +1 -1
  85. package/apps/web/.next/server/app/_not-found.rsc +2 -2
  86. package/apps/web/.next/server/app/index.html +1 -1
  87. package/apps/web/.next/server/app/index.rsc +3 -3
  88. package/apps/web/.next/server/app/page.js +2 -2
  89. package/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  90. package/apps/web/.next/server/app/project/[id]/page.js +2 -2
  91. package/apps/web/.next/server/app/project/[id]/page_client-reference-manifest.js +1 -1
  92. package/apps/web/.next/server/app/settings/page.js +1 -1
  93. package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  94. package/apps/web/.next/server/app/settings.html +1 -1
  95. package/apps/web/.next/server/app/settings.rsc +2 -2
  96. package/apps/web/.next/server/pages/404.html +1 -1
  97. package/apps/web/.next/server/pages/500.html +1 -1
  98. package/apps/web/.next/server/server-reference-manifest.json +1 -1
  99. package/apps/web/.next/static/chunks/18-22b1cf4231121555.js +1 -0
  100. package/apps/web/.next/static/chunks/app/page-6ea560755549086e.js +1 -0
  101. package/apps/web/.next/static/chunks/app/project/[id]/page-3e4777b355c4aec9.js +1 -0
  102. package/apps/web/.next/static/css/45ddb08a7b4470d5.css +3 -0
  103. package/apps/web/.next/trace +18 -18
  104. package/apps/web/package.json +1 -1
  105. package/apps/web/src/app/page.tsx +2 -5
  106. package/apps/web/src/components/project/CreateProjectModal.tsx +175 -80
  107. package/apps/web/src/components/project/ProjectCard.tsx +122 -31
  108. package/apps/web/src/stores/useProjectStore.ts +2 -1
  109. package/package.json +1 -1
  110. package/packages/shared/src/index.ts +1 -0
  111. package/packages/shared/src/types/project.ts +18 -3
  112. package/packages/shared/src/types/tech-stack.ts +74 -0
  113. package/apps/web/.next/static/chunks/app/page-f73b6424c8cbf96d.js +0 -1
  114. package/apps/web/.next/static/chunks/app/project/[id]/page-e9304c25ba897608.js +0 -1
  115. package/apps/web/.next/static/css/70f2a13cf3d254d8.css +0 -3
  116. /package/apps/web/.next/static/{fQQI0X4R8kXYUbd-0V8mo → 9j_J3qCBspqfGptLfgt5e}/_buildManifest.js +0 -0
  117. /package/apps/web/.next/static/{fQQI0X4R8kXYUbd-0V8mo → 9j_J3qCBspqfGptLfgt5e}/_ssgManifest.js +0 -0
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/project/[id]/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2317","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"4937","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}},"8028":{"*":{"id":"4224","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"638","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/components/DevErrorRecovery.tsx":{"id":4989,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":5016,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":2872,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/globals.css":{"id":8183,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx":{"id":8028,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","974","static/chunks/app/page-f73b6424c8cbf96d.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":9611,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","700","static/chunks/700-75e1212e819e279c.js","78","static/chunks/app/project/%5Bid%5D/page-e9304c25ba897608.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx":{"id":3701,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/70f2a13cf3d254d8.css"}],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page":[]},"rscModuleMapping":{"476":{"*":{"id":"8662","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"400","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9296","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"1865","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"6145","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"8791","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2527","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"3741","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"7619","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"1461","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8028":{"*":{"id":"6479","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"2983","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}}}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/project/[id]/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"1910":{"*":{"id":"2527","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2317","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"4937","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"1079","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/components/DevErrorRecovery.tsx":{"id":4989,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":5016,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":2872,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/globals.css":{"id":8183,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx":{"id":1910,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","18","static/chunks/18-22b1cf4231121555.js","974","static/chunks/app/page-6ea560755549086e.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":9611,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","700","static/chunks/700-75e1212e819e279c.js","18","static/chunks/18-22b1cf4231121555.js","78","static/chunks/app/project/%5Bid%5D/page-3e4777b355c4aec9.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx":{"id":3701,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/45ddb08a7b4470d5.css"}],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page":[]},"rscModuleMapping":{"476":{"*":{"id":"8662","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"400","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9296","name":"*","chunks":[],"async":false}},"1910":{"*":{"id":"6479","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"1865","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"6145","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"8791","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"4908","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"3741","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"7619","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"1461","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"2983","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}}}}
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=662,a.ids=[662],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},293:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},954:(a,b,c)=>{Promise.resolve().then(c.bind(c,2527))},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1084:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},1122:(a,b,c)=>{Promise.resolve().then(c.bind(c,2317))},1815:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},2317:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>q});var d=c(8403),e=c(6038),f=c(7339),g=c(2120),h=c(2282),i=c(5908),j=c(293),k=c(1084),l=c(7803),m=c(9362),n=c(1815),o=c(3826),p=c(4824);function q(){let{t:a}=(0,p.B)(),[b,c]=(0,e.useState)(null),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!0),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!0),[E,F]=(0,e.useState)(!1),G=async()=>{F(!0);try{let a=await o.F.post("/database/refresh");B(a)}catch{}finally{F(!1)}},H=async()=>{v(!0),x(null),z(!1);try{let a=await o.F.put("/settings/projects-path",{path:q});a.success?(z(!0),r(a.path||q),setTimeout(()=>z(!1),3e3)):x(a.error||"Failed to save")}catch(a){x(a instanceof Error?a.message:"Failed to save")}finally{v(!1)}},I=b&&q!==b.projectsBasePath;return(0,d.jsxs)("div",{className:"flex min-h-screen flex-col",children:[(0,d.jsx)(f.Y,{title:a("settings.title"),showBack:!0,backHref:"/"}),(0,d.jsx)("main",{className:"flex-1 p-6",children:(0,d.jsxs)("div",{className:"mx-auto max-w-2xl space-y-8",children:[(0,d.jsxs)("section",{className:"rounded-lg border bg-card p-6",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10",children:(0,d.jsx)(i.A,{className:"h-5 w-5 text-primary"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:a("settings.projectsPath.title")}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("settings.projectsPath.description")})]})]}),s?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(j.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.p,{value:q,onChange:a=>r(a.target.value),placeholder:"~/claudeship-projects",className:"font-mono text-sm"}),(0,d.jsx)(g.$,{onClick:H,disabled:u||!I,children:u?(0,d.jsx)(j.A,{className:"h-4 w-4 animate-spin"}):a("common.save")})]}),w&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive",children:[(0,d.jsx)(k.A,{className:"h-4 w-4"}),w]}),y&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,d.jsx)(l.A,{className:"h-4 w-4"}),a("settings.projectsPath.saved")]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:a("settings.projectsPath.note")})]})]}),(0,d.jsxs)("section",{className:"rounded-lg border bg-card p-6",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10",children:(0,d.jsx)(m.A,{className:"h-5 w-5 text-primary"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"데이터베이스 인프라"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"프로젝트별 데이터베이스 자동 관리"})]})]}),(0,d.jsx)(g.$,{variant:"ghost",size:"icon",onClick:G,disabled:E,children:(0,d.jsx)(n.A,{className:`h-4 w-4 ${E?"animate-spin":""}`})})]}),C?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(j.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):A?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-muted/50 p-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:`h-3 w-3 rounded-full ${A.docker.available?"bg-green-500":"bg-yellow-500"}`}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Docker"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:A.docker.available?`v${A.docker.version}`:"설치되지 않음 또는 실행 중이 아님"})]})]}),(0,d.jsx)("span",{className:`text-sm font-medium ${A.docker.available?"text-green-600":"text-yellow-600"}`,children:A.docker.available?"실행 중":"비활성"})]}),(0,d.jsxs)("div",{className:"rounded-lg bg-muted/50 p-4",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-2",children:"기본 데이터베이스"}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:"postgres_docker"===A.defaultProvider?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded bg-blue-500/10",children:(0,d.jsx)("span",{className:"text-xs font-bold text-blue-600",children:"PG"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"PostgreSQL (Docker)"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"프로젝트별 독립 컨테이너"})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded bg-amber-500/10",children:(0,d.jsx)("span",{className:"text-xs font-bold text-amber-600",children:"SL"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"SQLite"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"경량 파일 기반 DB (폴백)"})]})]})})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:A.docker.available?"Docker가 감지되어 새 프로젝트에 PostgreSQL이 자동으로 생성됩니다.":"Docker가 없어 SQLite로 폴백됩니다. Docker를 설치하면 PostgreSQL을 사용할 수 있습니다."})]}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground py-4",children:"인프라 상태를 불러올 수 없습니다."})]})]})})]})}},2527:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(4405).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx","default")},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{"use strict";a.exports=require("path")},4970:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(8539),e=c(5636),f=c(6112),g=c(1669),h=c(5779),i=c(931),j=c(9882),k=c(7199),l=c(5031),m=c(2829),n=c(3577),o=c(830),p=c(768),q=c(7881),r=c(261),s=c(6128),t=c(8421),u=c(6713),v=c(3833),w=c(3090),x=c(6294),y=c(667),z=c(8885),A=c(1687),B=c(6439),C=c(1865),D=c.n(C),E=c(7041),F=c(6648),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["settings",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,2527)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,9080)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1865,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,5069,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,656,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2019,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=["/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/settings/page",pathname:"/settings",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/settings/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(3873).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
1
+ (()=>{var a={};a.id=662,a.ids=[662],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},293:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("LoaderCircle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]])},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},954:(a,b,c)=>{Promise.resolve().then(c.bind(c,4908))},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1084:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("CircleAlert",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["line",{x1:"12",x2:"12",y1:"8",y2:"12",key:"1pkeuh"}],["line",{x1:"12",x2:"12.01",y1:"16",y2:"16",key:"4dfq90"}]])},1122:(a,b,c)=>{Promise.resolve().then(c.bind(c,2317))},1815:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("RefreshCw",[["path",{d:"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8",key:"v9h5vc"}],["path",{d:"M21 3v5h-5",key:"1q7to0"}],["path",{d:"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16",key:"3uifl3"}],["path",{d:"M8 16H3v5",key:"1cv678"}]])},2317:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>q});var d=c(8403),e=c(6038),f=c(7339),g=c(2120),h=c(2282),i=c(5908),j=c(293),k=c(1084),l=c(7803),m=c(9362),n=c(1815),o=c(3826),p=c(4824);function q(){let{t:a}=(0,p.B)(),[b,c]=(0,e.useState)(null),[q,r]=(0,e.useState)(""),[s,t]=(0,e.useState)(!0),[u,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null),[y,z]=(0,e.useState)(!1),[A,B]=(0,e.useState)(null),[C,D]=(0,e.useState)(!0),[E,F]=(0,e.useState)(!1),G=async()=>{F(!0);try{let a=await o.F.post("/database/refresh");B(a)}catch{}finally{F(!1)}},H=async()=>{v(!0),x(null),z(!1);try{let a=await o.F.put("/settings/projects-path",{path:q});a.success?(z(!0),r(a.path||q),setTimeout(()=>z(!1),3e3)):x(a.error||"Failed to save")}catch(a){x(a instanceof Error?a.message:"Failed to save")}finally{v(!1)}},I=b&&q!==b.projectsBasePath;return(0,d.jsxs)("div",{className:"flex min-h-screen flex-col",children:[(0,d.jsx)(f.Y,{title:a("settings.title"),showBack:!0,backHref:"/"}),(0,d.jsx)("main",{className:"flex-1 p-6",children:(0,d.jsxs)("div",{className:"mx-auto max-w-2xl space-y-8",children:[(0,d.jsxs)("section",{className:"rounded-lg border bg-card p-6",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3 mb-4",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10",children:(0,d.jsx)(i.A,{className:"h-5 w-5 text-primary"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:a("settings.projectsPath.title")}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:a("settings.projectsPath.description")})]})]}),s?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(j.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex gap-2",children:[(0,d.jsx)(h.p,{value:q,onChange:a=>r(a.target.value),placeholder:"~/claudeship-projects",className:"font-mono text-sm"}),(0,d.jsx)(g.$,{onClick:H,disabled:u||!I,children:u?(0,d.jsx)(j.A,{className:"h-4 w-4 animate-spin"}):a("common.save")})]}),w&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-destructive",children:[(0,d.jsx)(k.A,{className:"h-4 w-4"}),w]}),y&&(0,d.jsxs)("div",{className:"flex items-center gap-2 text-sm text-green-600",children:[(0,d.jsx)(l.A,{className:"h-4 w-4"}),a("settings.projectsPath.saved")]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:a("settings.projectsPath.note")})]})]}),(0,d.jsxs)("section",{className:"rounded-lg border bg-card p-6",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10",children:(0,d.jsx)(m.A,{className:"h-5 w-5 text-primary"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("h2",{className:"text-lg font-semibold",children:"데이터베이스 인프라"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:"프로젝트별 데이터베이스 자동 관리"})]})]}),(0,d.jsx)(g.$,{variant:"ghost",size:"icon",onClick:G,disabled:E,children:(0,d.jsx)(n.A,{className:`h-4 w-4 ${E?"animate-spin":""}`})})]}),C?(0,d.jsx)("div",{className:"flex items-center justify-center py-8",children:(0,d.jsx)(j.A,{className:"h-6 w-6 animate-spin text-muted-foreground"})}):A?(0,d.jsxs)("div",{className:"space-y-4",children:[(0,d.jsxs)("div",{className:"flex items-center justify-between rounded-lg bg-muted/50 p-4",children:[(0,d.jsxs)("div",{className:"flex items-center gap-3",children:[(0,d.jsx)("div",{className:`h-3 w-3 rounded-full ${A.docker.available?"bg-green-500":"bg-yellow-500"}`}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"Docker"}),(0,d.jsx)("p",{className:"text-sm text-muted-foreground",children:A.docker.available?`v${A.docker.version}`:"설치되지 않음 또는 실행 중이 아님"})]})]}),(0,d.jsx)("span",{className:`text-sm font-medium ${A.docker.available?"text-green-600":"text-yellow-600"}`,children:A.docker.available?"실행 중":"비활성"})]}),(0,d.jsxs)("div",{className:"rounded-lg bg-muted/50 p-4",children:[(0,d.jsx)("p",{className:"text-sm text-muted-foreground mb-2",children:"기본 데이터베이스"}),(0,d.jsx)("div",{className:"flex items-center gap-2",children:"postgres_docker"===A.defaultProvider?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded bg-blue-500/10",children:(0,d.jsx)("span",{className:"text-xs font-bold text-blue-600",children:"PG"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"PostgreSQL (Docker)"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"프로젝트별 독립 컨테이너"})]})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"flex h-8 w-8 items-center justify-center rounded bg-amber-500/10",children:(0,d.jsx)("span",{className:"text-xs font-bold text-amber-600",children:"SL"})}),(0,d.jsxs)("div",{children:[(0,d.jsx)("p",{className:"font-medium",children:"SQLite"}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:"경량 파일 기반 DB (폴백)"})]})]})})]}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:A.docker.available?"Docker가 감지되어 새 프로젝트에 PostgreSQL이 자동으로 생성됩니다.":"Docker가 없어 SQLite로 폴백됩니다. Docker를 설치하면 PostgreSQL을 사용할 수 있습니다."})]}):(0,d.jsx)("p",{className:"text-sm text-muted-foreground py-4",children:"인프라 상태를 불러올 수 없습니다."})]})]})})]})}},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3873:a=>{"use strict";a.exports=require("path")},4908:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>d});let d=(0,c(4405).registerClientReference)(function(){throw Error("Attempted to call the default export of \"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx\" from the server, but it's on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx","default")},4970:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>D.a,__next_app__:()=>J,handler:()=>L,pages:()=>I,routeModule:()=>K,tree:()=>H});var d=c(8539),e=c(5636),f=c(6112),g=c(1669),h=c(5779),i=c(931),j=c(9882),k=c(7199),l=c(5031),m=c(2829),n=c(3577),o=c(830),p=c(768),q=c(7881),r=c(261),s=c(6128),t=c(8421),u=c(6713),v=c(3833),w=c(3090),x=c(6294),y=c(667),z=c(8885),A=c(1687),B=c(6439),C=c(1865),D=c.n(C),E=c(7041),F=c(6648),G={};for(let a in E)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(G[a]=()=>E[a]);c.d(b,G);let H={children:["",{children:["settings",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,4908)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx"]}]},{}]},{layout:[()=>Promise.resolve().then(c.bind(c,9080)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1865,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,5069,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,656,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2019,23)),"next/dist/client/components/builtin/unauthorized.js"]}]}.children,I=["/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/settings/page",pathname:"/settings",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/settings/page";"/index"===G&&(G="/");let M=(0,h.getRequestMeta)(a,"postponed"),N=(0,h.getRequestMeta)(a,"minimalMode"),O=await K.prepare(a,b,{srcPage:G,multiZoneDraftMode:!1});if(!O)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:P,query:Q,params:R,parsedUrl:S,pageIsDynamic:T,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,serverActionsManifest:X,clientReferenceManifest:Y,subresourceIntegrityManifest:Z,prerenderManifest:$,isDraftMode:_,resolvedPathname:aa,revalidateOnlyGenerated:ab,routerServerContext:ac,nextConfig:ad,interceptionRoutePatterns:ae}=O,af=S.pathname||"/",ag=(0,r.normalizeAppPath)(G),{isOnDemandRevalidate:ah}=O,ai=K.match(af,$),aj=!!$.routes[aa],ak=!!(ai||aj||$.routes[ag]),al=a.headers["user-agent"]||"",am=(0,u.getBotType)(al),an=(0,p.isHtmlBotRequest)(a),ao=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[t.NEXT_ROUTER_PREFETCH_HEADER],ap=(0,h.getRequestMeta)(a,"isRSCRequest")??!!a.headers[t.RSC_HEADER],aq=(0,s.getIsPossibleServerAction)(a),ar=(0,m.checkIsAppPPREnabled)(ad.experimental.ppr)&&(null==(C=$.routes[ag]??$.dynamicRoutes[ag])?void 0:C.renderingMode)==="PARTIALLY_STATIC",as=!1,at=!1,au=ar?M:void 0,av=ar&&ap&&!ao,aw=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ax=!al||(0,p.shouldServeStreamingMetadata)(al,ad.htmlLimitedBots);an&&ar&&(ak=!1,ax=!1);let ay=!0===K.isDev||!ak||"string"==typeof M||av,az=an&&ar,aA=null;_||!ak||ay||aq||au||av||(aA=aa);let aB=aA;!aB&&K.isDev&&(aB=aa),K.isDev||_||!ak||!ap||av||(0,k.d)(a.headers);let aC={...E,tree:H,pages:I,GlobalError:D(),handler:L,routeModule:K,__next_app__:J};X&&Y&&(0,o.setReferenceManifestsSingleton)({page:G,clientReferenceManifest:Y,serverActionsManifest:X,serverModuleMap:(0,q.createServerModuleMap)({serverActionsManifest:X})});let aD=a.method||"GET",aE=(0,g.getTracer)(),aF=aE.getActiveScopeSpan();try{let f=K.getVaryHeader(aa,ae);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return K.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aE.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aD} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aD} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:Q,params:R,page:ag,sharedContext:{buildId:P},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aC,Component:(0,j.T)(aC),params:R,routeModule:K,page:G,postponed:f,shouldWaitOnAllReady:az,serveStreamingMetadata:ax,supportsDynamicResponse:"string"==typeof f||ay,buildManifest:U,nextFontManifest:V,reactLoadableManifest:W,subresourceIntegrityManifest:Z,serverActionsManifest:X,clientReferenceManifest:Y,setIsrStatus:null==ac?void 0:ac.setIsrStatus,dir:c(3873).join(process.cwd(),K.relativeProjectDir),isDraftMode:_,isRevalidate:ak&&!f&&!av,botType:am,isOnDemandRevalidate:ah,isPossibleServerAction:aq,assetPrefix:ad.assetPrefix,nextConfigOutput:ad.output,crossOrigin:ad.crossOrigin,trailingSlash:ad.trailingSlash,previewProps:$.preview,deploymentId:ad.deploymentId,enableTainting:ad.experimental.taint,htmlLimitedBots:ad.htmlLimitedBots,devtoolSegmentExplorer:ad.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ad.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ad.experimental.cacheLife,basePath:ad.basePath,serverActions:ad.experimental.serverActions,...as?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:as}:{},experimental:{isRoutePPREnabled:ar,expireTime:ad.expireTime,staleTimes:ad.experimental.staleTimes,cacheComponents:!!ad.experimental.cacheComponents,clientSegmentCache:!!ad.experimental.clientSegmentCache,clientParamParsing:!!ad.experimental.clientParamParsing,dynamicOnHover:!!ad.experimental.dynamicOnHover,inlineCss:!!ad.experimental.inlineCss,authInterrupts:!!ad.experimental.authInterrupts,clientTraceMetadata:ad.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>K.onRequestError(a,b,d,ac),err:(0,h.getRequestMeta)(a,"invokeError"),dev:K.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[y.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,ak&&(null==n?void 0:n.revalidate)===0&&!K.isDev&&!ar){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${aa}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
2
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:v.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},o=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===K.isDev,l=c||b.writableEnded;if(ah&&ab&&!f&&!N)return(null==ac?void 0:ac.render404)?await ac.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(ai&&(j=(0,w.parseFallbackField)(ai.fallback)),j===w.FallbackMode.PRERENDER&&(0,u.isBot)(al)&&(!ar||an)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ah=!0),ah&&(j!==w.FallbackMode.NOT_FOUND||f)&&(j=w.FallbackMode.BLOCKING_STATIC_RENDER),!N&&j!==w.FallbackMode.BLOCKING_STATIC_RENDER&&aB&&!l&&!_&&T&&(k||!aj)){let b;if((k||ai)&&j===w.FallbackMode.NOT_FOUND)throw new B.NoFallbackError;if(ar&&!ap){let c="string"==typeof(null==ai?void 0:ai.fallback)?ai.fallback:k?ag:null;if(b=await K.handleResponse({cacheKey:c,req:a,nextConfig:ad,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:$,isRoutePPREnabled:ar,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||at?(0,n.u)(ag):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let o=ah||g||!au?void 0:au;if(as&&void 0!==o)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:v.CachedRouteKind.PAGES,html:x.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=T&&ar&&((0,h.getRequestMeta)(a,"renderFallbackShell")||at)?(0,n.u)(af):null;return m({span:i,postponed:o,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,n=await K.handleResponse({cacheKey:aA,responseGenerator:a=>o({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ah,isRoutePPREnabled:ar,req:a,nextConfig:ad,prerenderManifest:$,waitUntil:d.waitUntil});if(_&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),K.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!n){if(aA)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=n.value)?void 0:f.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=n.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof n.value.postponed;ak&&!av&&(!p||ao)&&(N||b.setHeader("x-nextjs-cache",ah?"REVALIDATED":n.isMiss?"MISS":n.isStale?"STALE":"HIT"),b.setHeader(t.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=n;if(au)l={revalidate:0,expire:void 0};else if(N&&ap&&!ao&&ar)l={revalidate:0,expire:void 0};else if(!K.isDev)if(_)l={revalidate:0,expire:void 0};else if(ak){if(n.cacheControl)if("number"==typeof n.cacheControl.revalidate){if(n.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${n.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:n.cacheControl.revalidate,expire:(null==(j=n.cacheControl)?void 0:j.expire)??ad.expireTime}}else l={revalidate:y.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(n.cacheControl=l,"string"==typeof aw&&(null==q?void 0:q.kind)===v.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[y.NEXT_CACHE_TAGS_HEADER];N&&ak&&c&&"string"==typeof c&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(aw);return void 0!==d?(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(d,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl}):(b.statusCode=204,(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.EMPTY,cacheControl:n.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...n,value:{...n.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&au)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(N&&ak||delete a[y.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[y.NEXT_CACHE_TAGS_HEADER];if(N&&ak&&s&&"string"==typeof s&&b.setHeader(y.NEXT_CACHE_TAGS_HEADER,s),!q.status||ap&&ar||(b.statusCode=q.status),!N&&q.status&&F.RedirectStatusCode[q.status]&&ap&&(b.statusCode=200),p&&b.setHeader(t.NEXT_DID_POSTPONE_HEADER,"1"),ap&&!_){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:q.html,cacheControl:av?{revalidate:0,expire:void 0}:n.cacheControl})}return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:x.default.fromStatic(q.rscData,t.RSC_CONTENT_TYPE_HEADER),cacheControl:n.cacheControl})}let u=q.html;if(!p||N||ap)return(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:n.cacheControl});if(as)return u.push(new ReadableStream({start(a){a.enqueue(z.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}});let w=new TransformStream;return u.push(w.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==v.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(w.writable)}).catch(a=>{w.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,A.sendRenderResult)({req:a,res:b,generateEtags:ad.generateEtags,poweredByHeader:ad.poweredByHeader,result:u,cacheControl:{revalidate:0,expire:void 0}})};if(!aF)return await aE.withPropagatedContext(a.headers,()=>aE.trace(i.BaseServerSpan.handleRequest,{spanName:`${aD} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aD,"http.target":a.url}},p));await p(aF)}catch(b){throw b instanceof B.NoFallbackError||await K.onRequestError(a,b,{routerKind:"App Router",routePath:G,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:ak,isOnDemandRevalidate:ah})},ac),b}}},5908:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("FolderOpen",[["path",{d:"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2",key:"usdka0"}]])},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},7803:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("Check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]])},8354:a=>{"use strict";a.exports=require("util")},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")}};var b=require("../../webpack-runtime.js");b.C(a);var c=b.X(0,[673,490,392],()=>b(b.s=4970));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/settings/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2317","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"4937","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}},"8028":{"*":{"id":"4224","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"638","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/components/DevErrorRecovery.tsx":{"id":4989,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":5016,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":2872,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/globals.css":{"id":8183,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx":{"id":8028,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","974","static/chunks/app/page-f73b6424c8cbf96d.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":9611,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx":{"id":3701,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","662","static/chunks/app/settings/page-4512ba57f1c3914d.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/70f2a13cf3d254d8.css"}],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page":[]},"rscModuleMapping":{"476":{"*":{"id":"8662","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"400","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9296","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"1865","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"6145","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"8791","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2527","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"3741","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"7619","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"1461","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8028":{"*":{"id":"6479","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"2983","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}}}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/settings/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"1910":{"*":{"id":"2527","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"2317","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"4937","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"1079","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":2207,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-page.js":{"id":1684,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/client-segment.js":{"id":476,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3597,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/layout-router.js":{"id":5965,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":3737,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":3609,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":496,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":8009,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/components/DevErrorRecovery.tsx":{"id":4989,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist\",\"arguments\":[{\"variable\":\"--font-geist-sans\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistSans\"}":{"id":5016,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/node_modules/.pnpm/next@15.5.9_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/font/google/target.css?{\"path\":\"src/app/layout.tsx\",\"import\":\"Geist_Mono\",\"arguments\":[{\"variable\":\"--font-geist-mono\",\"subsets\":[\"latin\"]}],\"variableName\":\"geistMono\"}":{"id":2872,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/globals.css":{"id":8183,"name":"*","chunks":["177","static/chunks/app/layout-2079789d2a8cf3e0.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx":{"id":1910,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","18","static/chunks/18-22b1cf4231121555.js","974","static/chunks/app/page-6ea560755549086e.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":9611,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx":{"id":3701,"name":"*","chunks":["253","static/chunks/253-ebb21cb223bb373d.js","662","static/chunks/app/settings/page-4512ba57f1c3914d.js"],"async":false}},"entryCSSFiles":{"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/45ddb08a7b4470d5.css"}],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page":[],"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page":[]},"rscModuleMapping":{"476":{"*":{"id":"8662","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"400","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9296","name":"*","chunks":[],"async":false}},"1910":{"*":{"id":"6479","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"1865","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"6145","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"8791","name":"*","chunks":[],"async":false}},"3701":{"*":{"id":"4908","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"3741","name":"*","chunks":[],"async":false}},"4989":{"*":{"id":"7619","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"1461","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","name":"*","chunks":[],"async":false}},"9611":{"*":{"id":"2983","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{"476":{"*":{"id":"1400","name":"*","chunks":[],"async":false}},"496":{"*":{"id":"7934","name":"*","chunks":[],"async":false}},"1684":{"*":{"id":"9494","name":"*","chunks":[],"async":false}},"2207":{"*":{"id":"3927","name":"*","chunks":[],"async":false}},"3597":{"*":{"id":"7735","name":"*","chunks":[],"async":false}},"3609":{"*":{"id":"5897","name":"*","chunks":[],"async":false}},"3737":{"*":{"id":"9671","name":"*","chunks":[],"async":false}},"5965":{"*":{"id":"6719","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}}}}
@@ -1 +1 @@
1
- <!DOCTYPE html><!--fQQI0X4R8kXYUbd_0V8mo--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/70f2a13cf3d254d8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1ff95075f86c177e.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-ad4e539d948e058e.js" async=""></script><script src="/_next/static/chunks/main-app-de4b9be4b7d2b049.js" async=""></script><script src="/_next/static/chunks/app/layout-2079789d2a8cf3e0.js" async=""></script><script src="/_next/static/chunks/253-ebb21cb223bb373d.js" async=""></script><script src="/_next/static/chunks/app/settings/page-4512ba57f1c3914d.js" async=""></script><meta name="next-size-adjust" content=""/><title>ClaudeShip</title><meta name="description" content="AI-Powered App Builder using Claude Code"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen flex-col"><header class="sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"><div class="flex h-14 w-full items-center justify-between px-4"><div class="flex items-center gap-3"><a href="/"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-5 w-5"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg></button></a><h1 class="text-lg font-semibold">설정</h1></div><div class="flex items-center gap-1"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9 text-xs font-medium" title="언어">KO</button><a href="/settings"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9" title="설정"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-5 w-5"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></button></a></div></div></header><main class="flex-1 p-6"><div class="mx-auto max-w-2xl space-y-8"><section class="rounded-lg border bg-card p-6"><div class="flex items-center gap-3 mb-4"><div class="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open h-5 w-5 text-primary"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg></div><div><h2 class="text-lg font-semibold">프로젝트 폴더</h2><p class="text-sm text-muted-foreground">프로젝트가 저장되는 위치</p></div></div><div class="flex items-center justify-center py-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-6 w-6 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></section><section class="rounded-lg border bg-card p-6"><div class="flex items-center justify-between mb-4"><div class="flex items-center gap-3"><div class="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database h-5 w-5 text-primary"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg></div><div><h2 class="text-lg font-semibold">데이터베이스 인프라</h2><p class="text-sm text-muted-foreground">프로젝트별 데이터베이스 자동 관리</p></div></div><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw h-4 w-4"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button></div><div class="flex items-center justify-center py-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-6 w-6 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></section></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[4989,[\"177\",\"static/chunks/app/layout-2079789d2a8cf3e0.js\"],\"DevErrorRecovery\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[1684,[],\"ClientPageRoot\"]\n6:I[3701,[\"253\",\"static/chunks/253-ebb21cb223bb373d.js\",\"662\",\"static/chunks/app/settings/page-4512ba57f1c3914d.js\"],\"default\"]\n9:I[496,[],\"OutletBoundary\"]\nb:I[3737,[],\"AsyncMetadataOutlet\"]\nd:I[496,[],\"ViewportBoundary\"]\nf:I[496,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[2207,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/70f2a13cf3d254d8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"fQQI0X4R8kXYUbd-0V8mo\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/70f2a13cf3d254d8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ClaudeShip\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-Powered App Builder using Claude Code\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--9j_J3qCBspqfGptLfgt5e--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/45ddb08a7b4470d5.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1ff95075f86c177e.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-ad4e539d948e058e.js" async=""></script><script src="/_next/static/chunks/main-app-de4b9be4b7d2b049.js" async=""></script><script src="/_next/static/chunks/app/layout-2079789d2a8cf3e0.js" async=""></script><script src="/_next/static/chunks/253-ebb21cb223bb373d.js" async=""></script><script src="/_next/static/chunks/app/settings/page-4512ba57f1c3914d.js" async=""></script><meta name="next-size-adjust" content=""/><title>ClaudeShip</title><meta name="description" content="AI-Powered App Builder using Claude Code"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div class="flex min-h-screen flex-col"><header class="sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60"><div class="flex h-14 w-full items-center justify-between px-4"><div class="flex items-center gap-3"><a href="/"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-arrow-left h-5 w-5"><path d="m12 19-7-7 7-7"></path><path d="M19 12H5"></path></svg></button></a><h1 class="text-lg font-semibold">설정</h1></div><div class="flex items-center gap-1"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9 text-xs font-medium" title="언어">KO</button><a href="/settings"><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9" title="설정"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-settings h-5 w-5"><path d="M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z"></path><circle cx="12" cy="12" r="3"></circle></svg></button></a></div></div></header><main class="flex-1 p-6"><div class="mx-auto max-w-2xl space-y-8"><section class="rounded-lg border bg-card p-6"><div class="flex items-center gap-3 mb-4"><div class="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-folder-open h-5 w-5 text-primary"><path d="m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2"></path></svg></div><div><h2 class="text-lg font-semibold">프로젝트 폴더</h2><p class="text-sm text-muted-foreground">프로젝트가 저장되는 위치</p></div></div><div class="flex items-center justify-center py-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-6 w-6 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></section><section class="rounded-lg border bg-card p-6"><div class="flex items-center justify-between mb-4"><div class="flex items-center gap-3"><div class="flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-database h-5 w-5 text-primary"><ellipse cx="12" cy="5" rx="9" ry="3"></ellipse><path d="M3 5V19A9 3 0 0 0 21 19V5"></path><path d="M3 12A9 3 0 0 0 21 12"></path></svg></div><div><h2 class="text-lg font-semibold">데이터베이스 인프라</h2><p class="text-sm text-muted-foreground">프로젝트별 데이터베이스 자동 관리</p></div></div><button class="inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 hover:bg-accent hover:text-accent-foreground h-9 w-9"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-refresh-cw h-4 w-4"><path d="M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8"></path><path d="M21 3v5h-5"></path><path d="M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16"></path><path d="M8 16H3v5"></path></svg></button></div><div class="flex items-center justify-center py-8"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-loader-circle h-6 w-6 animate-spin text-muted-foreground"><path d="M21 12a9 9 0 1 1-6.219-8.56"></path></svg></div></section></div></main></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[4989,[\"177\",\"static/chunks/app/layout-2079789d2a8cf3e0.js\"],\"DevErrorRecovery\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[1684,[],\"ClientPageRoot\"]\n6:I[3701,[\"253\",\"static/chunks/253-ebb21cb223bb373d.js\",\"662\",\"static/chunks/app/settings/page-4512ba57f1c3914d.js\"],\"default\"]\n9:I[496,[],\"OutletBoundary\"]\nb:I[3737,[],\"AsyncMetadataOutlet\"]\nd:I[496,[],\"ViewportBoundary\"]\nf:I[496,[],\"MetadataBoundary\"]\n10:\"$Sreact.suspense\"\n12:I[2207,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/45ddb08a7b4470d5.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9j_J3qCBspqfGptLfgt5e\",\"p\":\"\",\"c\":[\"\",\"settings\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"settings\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/45ddb08a7b4470d5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],[]],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]]}],{\"children\":[\"settings\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[\"$\",\"$L5\",null,{\"Component\":\"$6\",\"searchParams\":{},\"params\":{},\"promises\":[\"$@7\",\"$@8\"]}],null,[\"$\",\"$L9\",null,{\"children\":[\"$La\",[\"$\",\"$Lb\",null,{\"promise\":\"$@c\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[null,[[\"$\",\"$Ld\",null,{\"children\":\"$Le\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lf\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$10\",null,{\"fallback\":null,\"children\":\"$L11\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$12\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"7:{}\n8:\"$0:f:0:1:2:children:2:children:1:props:children:0:props:params\"\n"])</script><script>self.__next_f.push([1,"e:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\na:null\n"])</script><script>self.__next_f.push([1,"c:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ClaudeShip\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-Powered App Builder using Claude Code\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"11:\"$c:metadata\"\n"])</script></body></html>
@@ -12,8 +12,8 @@ f:I[496,[],"MetadataBoundary"]
12
12
  12:I[2207,[],""]
13
13
  :HL["/_next/static/media/4cf2300e9c8272f7-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
14
14
  :HL["/_next/static/media/93f479601ee12b01-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}]
15
- :HL["/_next/static/css/70f2a13cf3d254d8.css","style"]
16
- 0:{"P":null,"b":"fQQI0X4R8kXYUbd-0V8mo","p":"","c":["","settings"],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/70f2a13cf3d254d8.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"ko","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":[["$","$L2",null,{}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],null,["$","$L9",null,{"children":["$La",["$","$Lb",null,{"promise":"$@c"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Ld",null,{"children":"$Le"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$Lf",null,{"children":["$","div",null,{"hidden":true,"children":["$","$10",null,{"fallback":null,"children":"$L11"}]}]}]]}],false]],"m":"$undefined","G":["$12",[]],"s":false,"S":true}
15
+ :HL["/_next/static/css/45ddb08a7b4470d5.css","style"]
16
+ 0:{"P":null,"b":"9j_J3qCBspqfGptLfgt5e","p":"","c":["","settings"],"i":false,"f":[[["",{"children":["settings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/45ddb08a7b4470d5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"ko","children":["$","body",null,{"className":"__variable_188709 __variable_9a8899 antialiased","children":[["$","$L2",null,{}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]]}]}]]}],{"children":["settings",["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","$L5",null,{"Component":"$6","searchParams":{},"params":{},"promises":["$@7","$@8"]}],null,["$","$L9",null,{"children":["$La",["$","$Lb",null,{"promise":"$@c"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,[["$","$Ld",null,{"children":"$Le"}],["$","meta",null,{"name":"next-size-adjust","content":""}]],["$","$Lf",null,{"children":["$","div",null,{"hidden":true,"children":["$","$10",null,{"fallback":null,"children":"$L11"}]}]}]]}],false]],"m":"$undefined","G":["$12",[]],"s":false,"S":true}
17
17
  7:{}
18
18
  8:"$0:f:0:1:2:children:2:children:1:props:children:0:props:params"
19
19
  e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]
@@ -1 +1 @@
1
- <!DOCTYPE html><!--fQQI0X4R8kXYUbd_0V8mo--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/70f2a13cf3d254d8.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1ff95075f86c177e.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-ad4e539d948e058e.js" async=""></script><script src="/_next/static/chunks/main-app-de4b9be4b7d2b049.js" async=""></script><script src="/_next/static/chunks/app/layout-2079789d2a8cf3e0.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>ClaudeShip</title><meta name="description" content="AI-Powered App Builder using Claude Code"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[4989,[\"177\",\"static/chunks/app/layout-2079789d2a8cf3e0.js\"],\"DevErrorRecovery\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[496,[],\"OutletBoundary\"]\n7:I[3737,[],\"AsyncMetadataOutlet\"]\n9:I[496,[],\"ViewportBoundary\"]\nb:I[496,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/70f2a13cf3d254d8.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"fQQI0X4R8kXYUbd-0V8mo\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/70f2a13cf3d254d8.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ClaudeShip\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-Powered App Builder using Claude Code\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--9j_J3qCBspqfGptLfgt5e--><html lang="ko"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="preload" href="/_next/static/media/4cf2300e9c8272f7-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="preload" href="/_next/static/media/93f479601ee12b01-s.p.woff2" as="font" crossorigin="" type="font/woff2"/><link rel="stylesheet" href="/_next/static/css/45ddb08a7b4470d5.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-1ff95075f86c177e.js"/><script src="/_next/static/chunks/c476d598-9099ed8b975ae1d6.js" async=""></script><script src="/_next/static/chunks/498-ad4e539d948e058e.js" async=""></script><script src="/_next/static/chunks/main-app-de4b9be4b7d2b049.js" async=""></script><script src="/_next/static/chunks/app/layout-2079789d2a8cf3e0.js" async=""></script><meta name="robots" content="noindex"/><meta name="next-size-adjust" content=""/><title>404: This page could not be found.</title><title>ClaudeShip</title><meta name="description" content="AI-Powered App Builder using Claude Code"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body class="__variable_188709 __variable_9a8899 antialiased"><div hidden=""><!--$--><!--/$--></div><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[4989,[\"177\",\"static/chunks/app/layout-2079789d2a8cf3e0.js\"],\"DevErrorRecovery\"]\n3:I[5965,[],\"\"]\n4:I[3609,[],\"\"]\n5:I[496,[],\"OutletBoundary\"]\n7:I[3737,[],\"AsyncMetadataOutlet\"]\n9:I[496,[],\"ViewportBoundary\"]\nb:I[496,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[2207,[],\"\"]\n:HL[\"/_next/static/media/4cf2300e9c8272f7-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/media/93f479601ee12b01-s.p.woff2\",\"font\",{\"crossOrigin\":\"\",\"type\":\"font/woff2\"}]\n:HL[\"/_next/static/css/45ddb08a7b4470d5.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"9j_J3qCBspqfGptLfgt5e\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/45ddb08a7b4470d5.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ko\",\"children\":[\"$\",\"body\",null,{\"className\":\"__variable_188709 __variable_9a8899 antialiased\",\"children\":[[\"$\",\"$L2\",null,{}],[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],[\"$\",\"meta\",null,{\"name\":\"next-size-adjust\",\"content\":\"\"}]],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"ClaudeShip\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"AI-Powered App Builder using Claude Code\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" defer=""></script><script src="/_next/static/chunks/framework-1c6a486f6592f084.js" defer=""></script><script src="/_next/static/chunks/main-24dc3671587f4aaa.js" defer=""></script><script src="/_next/static/chunks/pages/_app-55552e79b4ca5b96.js" defer=""></script><script src="/_next/static/chunks/pages/_error-da3c1b00689f457b.js" defer=""></script><script src="/_next/static/fQQI0X4R8kXYUbd-0V8mo/_buildManifest.js" defer=""></script><script src="/_next/static/fQQI0X4R8kXYUbd-0V8mo/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"fQQI0X4R8kXYUbd-0V8mo","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-1ff95075f86c177e.js" defer=""></script><script src="/_next/static/chunks/framework-1c6a486f6592f084.js" defer=""></script><script src="/_next/static/chunks/main-24dc3671587f4aaa.js" defer=""></script><script src="/_next/static/chunks/pages/_app-55552e79b4ca5b96.js" defer=""></script><script src="/_next/static/chunks/pages/_error-da3c1b00689f457b.js" defer=""></script><script src="/_next/static/9j_J3qCBspqfGptLfgt5e/_buildManifest.js" defer=""></script><script src="/_next/static/9j_J3qCBspqfGptLfgt5e/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"9j_J3qCBspqfGptLfgt5e","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"hW2vC8RVHsiYhUl72FAwD6b0jph9as27JKiM7Wsg29I="}
1
+ {"node":{},"edge":{},"encryptionKey":"dcAt5tOpOGmdy069kADonS4tEuhi3ZzPplmFcbc31H0="}
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[18],{660:(e,t,r)=>{r.d(t,{F:()=>n});let o="http://localhost:14000/api";async function a(e,t){let r="".concat(o).concat(e),a=await fetch(r,{...t,headers:{"Content-Type":"application/json",...null==t?void 0:t.headers}});if(!a.ok)throw Error((await a.json().catch(()=>({message:"Request failed"}))).message||"HTTP error! status: ".concat(a.status));if(204!==a.status)return a.json()}let n={get:e=>a(e),post:(e,t)=>a(e,{method:"POST",body:t?JSON.stringify(t):void 0}),put:(e,t)=>a(e,{method:"PUT",body:t?JSON.stringify(t):void 0}),delete:(e,t)=>a(e,{method:"DELETE",body:t?JSON.stringify(t):void 0}),uploadFiles:async(e,t)=>{let r=new FormData;t.forEach(e=>r.append("files",e));let a="".concat(o,"/projects/").concat(e,"/files/upload"),n=await fetch(a,{method:"POST",body:r});if(!n.ok)throw Error((await n.json().catch(()=>({message:"Upload failed"}))).message||"HTTP error! status: ".concat(n.status));return n.json()}}},1481:(e,t,r)=>{r.d(t,{uC:()=>a,V_:()=>n,Dt:()=>s,V3:()=>o,Xh:()=>i});var o=function(e){return e.REACT_VITE="REACT_VITE",e.NEXTJS="NEXTJS",e.VUE="VUE",e.SVELTE="SVELTE",e.REACT_NATIVE="REACT_NATIVE",e.FLUTTER="FLUTTER",e.EXPO="EXPO",e.NONE="NONE",e}({}),a=function(e){return e.FULLSTACK_WEB="FULLSTACK_WEB",e.FRONTEND_ONLY="FRONTEND_ONLY",e.API_ONLY="API_ONLY",e.MOBILE="MOBILE",e.MOBILE_WITH_API="MOBILE_WITH_API",e}({}),n=function(e){return e.NONE="NONE",e.EXPRESS="EXPRESS",e.FASTAPI="FASTAPI",e.DJANGO="DJANGO",e.NESTJS="NESTJS",e}({}),s=function(e){return e.POSTGRES_DOCKER="POSTGRES_DOCKER",e.SQLITE="SQLITE",e}({}),i=function(e){return e.USER="USER",e.ASSISTANT="ASSISTANT",e.SYSTEM="SYSTEM",e}({})},4264:(e,t,r)=>{r.d(t,{I:()=>n});var o=r(6386),a=r(660);let n=(0,o.v)((e,t)=>({projects:[],currentProject:null,isLoading:!1,error:null,fetchProjects:async()=>{e({isLoading:!0,error:null});try{let t=await a.F.get("/projects");e({projects:t,isLoading:!1})}catch(t){e({error:t instanceof Error?t.message:"Failed to fetch projects",isLoading:!1})}},createProject:async t=>{e({isLoading:!0,error:null});try{let r=await a.F.post("/projects",t);return e(e=>({projects:[{id:r.id,name:r.name,appType:r.appType,frontendFramework:r.frontendFramework,backendFramework:r.backendFramework,updatedAt:r.updatedAt},...e.projects],isLoading:!1})),r}catch(t){throw e({error:t instanceof Error?t.message:"Failed to create project",isLoading:!1}),t}},deleteProject:async t=>{e({isLoading:!0,error:null});try{await a.F.delete("/projects/".concat(t)),e(e=>({projects:e.projects.filter(e=>e.id!==t),isLoading:!1}))}catch(t){throw e({error:t instanceof Error?t.message:"Failed to delete project",isLoading:!1}),t}},fetchProject:async t=>{e({isLoading:!0,error:null});try{let r=await a.F.get("/projects/".concat(t));e({currentProject:r,isLoading:!1})}catch(t){e({error:t instanceof Error?t.message:"Failed to fetch project",isLoading:!1})}},setCurrentProject:t=>e({currentProject:t}),clearError:()=>e({error:null})}))},5338:(e,t,r)=>{r.d(t,{p:()=>s});var o=r(8481),a=r(8526),n=r(9049);let s=a.forwardRef((e,t)=>{let{className:r,type:a,...s}=e;return(0,o.jsx)("input",{type:a,className:(0,n.cn)("flex h-9 w-full rounded-md border border-input bg-transparent px-3 py-1 text-sm shadow-sm transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:cursor-not-allowed disabled:opacity-50",r),ref:t,...s})});s.displayName="Input"},5594:(e,t,r)=>{r.d(t,{$:()=>c});var o=r(8481),a=r(8526),n=r(4176),s=r(9049);let i=(0,n.F)("inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50",{variants:{variant:{default:"bg-primary text-primary-foreground shadow hover:bg-primary/90",destructive:"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90",outline:"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground",secondary:"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80",ghost:"hover:bg-accent hover:text-accent-foreground",link:"text-primary underline-offset-4 hover:underline"},size:{default:"h-9 px-4 py-2",sm:"h-8 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-8",icon:"h-9 w-9"}},defaultVariants:{variant:"default",size:"default"}}),c=a.forwardRef((e,t)=>{let{className:r,variant:a,size:n,...c}=e;return(0,o.jsx)("button",{className:(0,s.cn)(i({variant:a,size:n,className:r})),ref:t,...c})});c.displayName="Button"},7176:(e,t,r)=>{r.d(t,{Y:()=>u});var o=r(8481),a=r(4816),n=r.n(a),s=r(9432),i=r(9150),c=r(7746),l=r(5594),d=r(9426);function p(){let{locale:e,setLocale:t,t:r}=(0,d.B)();return(0,o.jsx)(l.$,{variant:"ghost",size:"icon",onClick:()=>{t("en"===e?"ko":"en")},className:"h-9 w-9 text-xs font-medium",title:r("language.select"),children:"en"===e?"EN":"KO"})}function u(e){let{title:t,showBack:r,backHref:a="/"}=e,{t:u}=(0,d.B)(),h=t||u("common.appName");return(0,o.jsx)("header",{className:"sticky top-0 z-40 border-b bg-background/95 backdrop-blur supports-[backdrop-filter]:bg-background/60",children:(0,o.jsxs)("div",{className:"flex h-14 w-full items-center justify-between px-4",children:[(0,o.jsxs)("div",{className:"flex items-center gap-3",children:[r?(0,o.jsx)(n(),{href:a,children:(0,o.jsx)(l.$,{variant:"ghost",size:"icon",className:"h-9 w-9",children:(0,o.jsx)(i.A,{className:"h-5 w-5"})})}):(0,o.jsx)(s.default,{src:"/logo.svg",alt:"ClaudeShip",width:36,height:36,className:"rounded-lg"}),(0,o.jsx)("h1",{className:"text-lg font-semibold",children:h})]}),(0,o.jsxs)("div",{className:"flex items-center gap-1",children:[(0,o.jsx)(p,{}),(0,o.jsx)(n(),{href:"/settings",children:(0,o.jsx)(l.$,{variant:"ghost",size:"icon",className:"h-9 w-9",title:u("header.settings"),children:(0,o.jsx)(c.A,{className:"h-5 w-5"})})})]})]})})}},9049:(e,t,r)=>{r.d(t,{cn:()=>n});var o=r(5806),a=r(4159);function n(){for(var e=arguments.length,t=Array(e),r=0;r<e;r++)t[r]=arguments[r];return(0,a.QP)((0,o.$)(t))}},9426:(e,t,r)=>{r.d(t,{B:()=>i});var o=r(6386),a=r(6782);let n={en:JSON.parse('{"common":{"appName":"ClaudeShip","loading":"Loading...","error":"Error","save":"Save","cancel":"Cancel","delete":"Delete","create":"Create","close":"Close","refresh":"Refresh","settings":"Settings"},"header":{"home":"Home","settings":"Settings"},"home":{"title":"My Projects","noProjects":"No projects yet","createFirst":"Create your first project to get started"},"project":{"create":"New Project","createDescription":"Build with AI","createTitle":"Create New Project","name":"Project Name","namePlaceholder":"my-awesome-app","type":"Project Type","typeWeb":"Web App","typeNative":"Native App","backendStack":"Backend Stack","backendNone":"Frontend Only","backendExpress":"Express (Node.js)","backendFastapi":"FastAPI (Python)","delete":"Delete Project","deleteConfirm":"Are you sure you want to delete this project?","updated":"Updated"},"chat":{"title":"Chat","placeholder":"Describe what you want to build...","askPlaceholder":"Ask a question about your project...","queuePlaceholder":"Queue another message...","send":"Send","thinking":"AI is thinking...","uploading":"Uploading files...","queueCount":"{count} message(s) queued","toolRunning":"Running","toolCompleted":"Completed","newConversation":"New Chat","modeAsk":"Ask","modeBuild":"Build"},"preview":{"title":"Preview","start":"Start Preview","stop":"Stop Preview","starting":"Starting...","notReady":"Project not ready for preview","waitForAI":"Wait for AI to create the project files","openInNewTab":"Open in New Tab"},"fileExplorer":{"title":"Files","empty":"No files yet","loading":"Loading files...","error":"Failed to load files","open":"Open File Explorer","close":"Close File Explorer"},"language":{"select":"Language","en":"English","ko":"한국어"},"settings":{"title":"Settings","projectsPath":{"title":"Projects Folder","description":"Location where your projects are stored","saved":"Settings saved successfully","note":"New projects will be created in this folder. Existing projects are not affected."}}}'),ko:JSON.parse('{"common":{"appName":"ClaudeShip","loading":"로딩 중...","error":"오류","save":"저장","cancel":"취소","delete":"삭제","create":"생성","close":"닫기","refresh":"새로고침","settings":"설정"},"header":{"home":"홈","settings":"설정"},"home":{"title":"내 프로젝트","noProjects":"프로젝트가 없습니다","createFirst":"첫 번째 프로젝트를 만들어 시작하세요"},"project":{"create":"새 프로젝트","createDescription":"AI와 함께 만들기","createTitle":"새 프로젝트 생성","name":"프로젝트 이름","namePlaceholder":"my-awesome-app","type":"프로젝트 유형","typeWeb":"웹 앱","typeNative":"네이티브 앱","backendStack":"백엔드 스택","backendNone":"프론트엔드 전용","backendExpress":"Express (Node.js)","backendFastapi":"FastAPI (Python)","delete":"프로젝트 삭제","deleteConfirm":"이 프로젝트를 삭제하시겠습니까?","updated":"업데이트"},"chat":{"title":"채팅","placeholder":"만들고 싶은 것을 설명하세요...","askPlaceholder":"프로젝트에 대해 질문하세요...","queuePlaceholder":"다음 메시지를 입력하세요...","send":"전송","thinking":"AI가 생각 중...","uploading":"파일 업로드 중...","queueCount":"{count}개의 메시지가 대기 중","toolRunning":"실행 중","toolCompleted":"완료","newConversation":"새 대화","modeAsk":"Ask","modeBuild":"Build"},"preview":{"title":"미리보기","start":"미리보기 시작","stop":"미리보기 중지","starting":"시작 중...","notReady":"프로젝트가 미리보기 준비가 되지 않았습니다","waitForAI":"AI가 프로젝트 파일을 생성할 때까지 기다려주세요","openInNewTab":"새 탭에서 열기"},"fileExplorer":{"title":"파일","empty":"파일이 없습니다","loading":"파일 로딩 중...","error":"파일 로드 실패","open":"파일 탐색기 열기","close":"파일 탐색기 닫기"},"language":{"select":"언어","en":"English","ko":"한국어"},"settings":{"title":"설정","projectsPath":{"title":"프로젝트 폴더","description":"프로젝트가 저장되는 위치","saved":"설정이 저장되었습니다","note":"새 프로젝트는 이 폴더에 생성됩니다. 기존 프로젝트에는 영향을 주지 않습니다."}}}')},s=(0,o.v)()((0,a.Zr)(e=>({locale:"ko",setLocale:t=>e({locale:t})}),{name:"claudeship-locale"}));function i(){let e=s(e=>e.locale);return{t:(t,r)=>(function(e,t,r){let o=t||s.getState().locale,a=e.split("."),i=n[o];for(let t of a)if(i&&"object"==typeof i&&t in i)i=i[t];else{for(let t of(i=n.en,a))if(!i||"object"!=typeof i||!(t in i))return e;else i=i[t];break}let c="string"==typeof i?i:e;if(r)for(let[e,t]of Object.entries(r))c=c.replace(RegExp("\\{".concat(e,"\\}"),"g"),String(t));return c})(t,e,r),locale:e,setLocale:s(e=>e.setLocale)}}}}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{559:(e,t,a)=>{Promise.resolve().then(a.bind(a,1910))},1910:(e,t,a)=>{"use strict";a.r(t),a.d(t,{default:()=>D});var r=a(8481),s=a(8526),l=a(3973),n=a(7176),o=a(4816),c=a.n(o),i=a(6224),d=a(3774),u=a(8964);let m=(0,u.A)("Server",[["rect",{width:"20",height:"8",x:"2",y:"2",rx:"2",ry:"2",key:"ngkwjq"}],["rect",{width:"20",height:"8",x:"2",y:"14",rx:"2",ry:"2",key:"iecqi9"}],["line",{x1:"6",x2:"6.01",y1:"6",y2:"6",key:"16zg32"}],["line",{x1:"6",x2:"6.01",y1:"18",y2:"18",key:"nzw8ys"}]]);var x=a(3792);let p=(0,u.A)("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);var h=a(3300),f=a(1858),g=a(9049);let N=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,g.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...s})});N.displayName="Card",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,g.cn)("flex flex-col space-y-1.5 p-6",a),...s})}).displayName="CardHeader",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("h3",{ref:t,className:(0,g.cn)("font-semibold leading-none tracking-tight",a),...s})}).displayName="CardTitle",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("p",{ref:t,className:(0,g.cn)("text-sm text-muted-foreground",a),...s})}).displayName="CardDescription",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,g.cn)("p-6 pt-0",a),...s})}).displayName="CardContent",s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("div",{ref:t,className:(0,g.cn)("flex items-center p-6 pt-0",a),...s})}).displayName="CardFooter";var j=a(5594),y=a(1481),v=a(9426);function b(e){let{project:t,onDelete:a}=e,{locale:s}=(0,v.B)(),l=function(e){switch(e){case y.uC.FULLSTACK_WEB:return"from-blue-500/20 to-indigo-500/5";case y.uC.FRONTEND_ONLY:return"from-yellow-500/20 to-orange-500/5";case y.uC.API_ONLY:return"from-green-500/20 to-emerald-500/5";case y.uC.MOBILE:return"from-purple-500/20 to-pink-500/5";case y.uC.MOBILE_WITH_API:return"from-violet-500/20 to-purple-500/5";default:return"from-gray-500/20 to-slate-500/5"}}(t.appType);return(0,r.jsx)(c(),{href:"/project/".concat(t.id),children:(0,r.jsxs)(N,{className:"group relative cursor-pointer overflow-hidden border transition-all hover:border-primary/50 hover:shadow-lg",children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br ".concat(l," opacity-0 transition-opacity group-hover:opacity-100")}),(0,r.jsxs)("div",{className:"relative p-4",children:[(0,r.jsxs)("div",{className:"flex items-start justify-between gap-2",children:[(0,r.jsxs)("div",{className:"flex items-center gap-3",children:[(0,r.jsx)("div",{className:"flex h-10 w-10 items-center justify-center rounded-lg bg-primary/10 text-primary",children:function(e){switch(e){case y.uC.FULLSTACK_WEB:return(0,r.jsx)(i.A,{className:"h-5 w-5"});case y.uC.FRONTEND_ONLY:return(0,r.jsx)(d.A,{className:"h-5 w-5"});case y.uC.API_ONLY:return(0,r.jsx)(m,{className:"h-5 w-5"});case y.uC.MOBILE:case y.uC.MOBILE_WITH_API:return(0,r.jsx)(x.A,{className:"h-5 w-5"});default:return(0,r.jsx)(p,{className:"h-5 w-5"})}}(t.appType)}),(0,r.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,r.jsx)("h3",{className:"truncate font-semibold",children:t.name}),(0,r.jsx)("p",{className:"text-xs text-muted-foreground",children:function(e,t){let a=new Date().getTime()-new Date(e).getTime(),r=Math.floor(a/6e4),s=Math.floor(a/36e5),l=Math.floor(a/864e5);return"ko"===t?r<1?"방금 전":r<60?"".concat(r,"분 전"):s<24?"".concat(s,"시간 전"):l<7?"".concat(l,"일 전"):new Date(e).toLocaleDateString("ko-KR"):r<1?"Just now":r<60?"".concat(r,"m ago"):s<24?"".concat(s,"h ago"):l<7?"".concat(l,"d ago"):new Date(e).toLocaleDateString("en-US")}(t.updatedAt,s)})]})]}),a&&(0,r.jsx)(j.$,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:e=>{e.preventDefault(),e.stopPropagation(),a(t.id)},children:(0,r.jsx)(h.A,{className:"h-4 w-4 text-destructive"})})]}),(0,r.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,r.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:function(e){switch(e){case y.uC.FULLSTACK_WEB:return"Fullstack";case y.uC.FRONTEND_ONLY:return"Frontend";case y.uC.API_ONLY:return"API";case y.uC.MOBILE:return"Mobile";case y.uC.MOBILE_WITH_API:return"Mobile+API";default:return"Unknown"}}(t.appType)}),t.frontendFramework&&t.frontendFramework!==y.V3.NONE&&(0,r.jsx)("span",{className:"inline-flex items-center gap-1 rounded-full bg-blue-500/10 text-blue-600 px-2.5 py-0.5 text-xs font-medium",children:function(e){switch(e){case y.V3.REACT_VITE:return"React";case y.V3.NEXTJS:return"Next.js";case y.V3.VUE:return"Vue";case y.V3.SVELTE:return"Svelte";case y.V3.REACT_NATIVE:return"RN";case y.V3.EXPO:return"Expo";case y.V3.FLUTTER:return"Flutter";default:return""}}(t.frontendFramework)}),t.backendFramework&&t.backendFramework!==y.V_.NONE&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-green-500/10 text-green-600 px-2.5 py-0.5 text-xs font-medium",children:[(0,r.jsx)(m,{className:"h-3 w-3"}),function(e){switch(e){case y.V_.EXPRESS:return"Express";case y.V_.FASTAPI:return"FastAPI";case y.V_.DJANGO:return"Django";case y.V_.NESTJS:return"NestJS";default:return""}}(t.backendFramework)]}),t.databaseProvider&&(0,r.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ".concat(t.databaseProvider===y.Dt.POSTGRES_DOCKER?"bg-blue-500/10 text-blue-600":"bg-amber-500/10 text-amber-600"),children:[(0,r.jsx)(f.A,{className:"h-3 w-3"}),t.databaseProvider===y.Dt.POSTGRES_DOCKER?"PostgreSQL":"SQLite"]})]})]})]})})}var w=a(4539);let E=(0,u.A)("Sparkles",[["path",{d:"M9.937 15.5A2 2 0 0 0 8.5 14.063l-6.135-1.582a.5.5 0 0 1 0-.962L8.5 9.936A2 2 0 0 0 9.937 8.5l1.582-6.135a.5.5 0 0 1 .963 0L14.063 8.5A2 2 0 0 0 15.5 9.937l6.135 1.581a.5.5 0 0 1 0 .964L15.5 14.063a2 2 0 0 0-1.437 1.437l-1.582 6.135a.5.5 0 0 1-.963 0z",key:"4pj2yx"}],["path",{d:"M20 3v4",key:"1olli1"}],["path",{d:"M22 5h-4",key:"1gvqau"}],["path",{d:"M4 17v2",key:"vumght"}],["path",{d:"M5 18H3",key:"zchphs"}]]);function k(e){let{onClick:t}=e,{t:a}=(0,v.B)();return(0,r.jsxs)(N,{className:"group relative cursor-pointer overflow-hidden border-2 border-dashed transition-all hover:border-primary hover:shadow-lg",onClick:t,children:[(0,r.jsx)("div",{className:"absolute inset-0 bg-gradient-to-br from-primary/10 to-primary/5 opacity-0 transition-opacity group-hover:opacity-100"}),(0,r.jsxs)("div",{className:"relative flex h-full min-h-[140px] flex-col items-center justify-center gap-3 p-6",children:[(0,r.jsxs)("div",{className:"relative",children:[(0,r.jsx)("div",{className:"flex h-12 w-12 items-center justify-center rounded-xl bg-primary/10 transition-colors group-hover:bg-primary/20",children:(0,r.jsx)(w.A,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,r.jsx)(E,{className:"absolute -right-1 -top-1 h-4 w-4 text-primary opacity-0 transition-opacity group-hover:opacity-100"})]}),(0,r.jsxs)("div",{className:"text-center",children:[(0,r.jsx)("span",{className:"font-medium text-muted-foreground transition-colors group-hover:text-foreground",children:a("project.create")}),(0,r.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:a("project.createDescription")})]})]})]})}function C(e){let{projects:t,onCreateClick:a,onDelete:s}=e;return(0,r.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:[t.map(e=>(0,r.jsx)(b,{project:e,onDelete:s},e.id)),(0,r.jsx)(k,{onClick:a})]})}let A=e=>{let{open:t,onOpenChange:a,children:s}=e;return t?(0,r.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,r.jsx)("div",{className:"fixed inset-0 bg-black/80",onClick:()=>null==a?void 0:a(!1)}),s]}):null},T=s.forwardRef((e,t)=>{let{className:a,children:s,...l}=e;return(0,r.jsx)("div",{ref:t,className:(0,g.cn)("fixed left-[50%] top-[50%] z-50 grid w-full max-w-lg translate-x-[-50%] translate-y-[-50%] gap-4 border bg-background p-6 shadow-lg sm:rounded-lg",a),onClick:e=>e.stopPropagation(),...l,children:s})});T.displayName="DialogContent";let _=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,g.cn)("flex flex-col space-y-1.5 text-center sm:text-left",t),...a})};_.displayName="DialogHeader";let S=e=>{let{className:t,...a}=e;return(0,r.jsx)("div",{className:(0,g.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",t),...a})};S.displayName="DialogFooter";let V=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("h2",{ref:t,className:(0,g.cn)("text-lg font-semibold leading-none tracking-tight",a),...s})});V.displayName="DialogTitle";let O=s.forwardRef((e,t)=>{let{className:a,...s}=e;return(0,r.jsx)("p",{ref:t,className:(0,g.cn)("text-sm text-muted-foreground",a),...s})});O.displayName="DialogDescription";var F=a(5338);let I={[y.uC.FULLSTACK_WEB]:{icon:"\uD83C\uDF10",label:"풀스택 웹앱",description:"프론트엔드 + 백엔드",showFrontend:!0,showBackend:!0,webOnly:!0},[y.uC.FRONTEND_ONLY]:{icon:"⚡",label:"프론트엔드",description:"정적 사이트 / SPA",showFrontend:!0,showBackend:!1,webOnly:!0},[y.uC.API_ONLY]:{icon:"\uD83D\uDD0C",label:"API 서버",description:"백엔드만",showFrontend:!1,showBackend:!0,webOnly:!1},[y.uC.MOBILE]:{icon:"\uD83D\uDCF1",label:"모바일 앱",description:"React Native / Flutter",showFrontend:!0,showBackend:!1,webOnly:!1},[y.uC.MOBILE_WITH_API]:{icon:"\uD83D\uDCF1\uD83D\uDD0C",label:"모바일 + API",description:"모바일 앱 + 백엔드",showFrontend:!0,showBackend:!0,webOnly:!1}},L=[{value:y.V3.REACT_VITE,icon:"⚛️",label:"React + Vite"},{value:y.V3.NEXTJS,icon:"▲",label:"Next.js"},{value:y.V3.VUE,icon:"\uD83D\uDC9A",label:"Vue 3"},{value:y.V3.SVELTE,icon:"\uD83D\uDD36",label:"SvelteKit"}],P=[{value:y.V3.EXPO,icon:"\uD83D\uDCF1",label:"Expo"},{value:y.V3.REACT_NATIVE,icon:"⚛️",label:"React Native"},{value:y.V3.FLUTTER,icon:"\uD83D\uDC26",label:"Flutter"}],R=[{value:y.V_.EXPRESS,icon:"\uD83D\uDFE2",label:"Express"},{value:y.V_.FASTAPI,icon:"\uD83D\uDC0D",label:"FastAPI"},{value:y.V_.DJANGO,icon:"\uD83C\uDFB8",label:"Django"},{value:y.V_.NESTJS,icon:"\uD83D\uDD34",label:"NestJS"}];function M(e){let{open:t,onOpenChange:a,onSubmit:l,isLoading:n}=e,{t:o}=(0,v.B)(),[c,i]=(0,s.useState)(""),[d,u]=(0,s.useState)(y.uC.FULLSTACK_WEB),[m,x]=(0,s.useState)(y.V3.REACT_VITE),[p,h]=(0,s.useState)(y.V_.EXPRESS),f=I[d],g=d===y.uC.MOBILE||d===y.uC.MOBILE_WITH_API;return(0,r.jsx)(A,{open:t,onOpenChange:a,children:(0,r.jsx)(T,{className:"max-w-lg max-h-[90vh] overflow-y-auto",children:(0,r.jsxs)("form",{onSubmit:e=>{e.preventDefault(),c.trim()&&(l({name:c.trim(),appType:d,frontendFramework:f.showFrontend?m:void 0,backendFramework:f.showBackend?p:void 0}),i(""),u(y.uC.FULLSTACK_WEB),x(y.V3.REACT_VITE),h(y.V_.EXPRESS))},children:[(0,r.jsxs)(_,{children:[(0,r.jsx)(V,{children:o("project.createTitle")}),(0,r.jsx)(O,{children:"새 프로젝트의 이름과 타입을 선택하세요"})]}),(0,r.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,r.jsxs)("div",{className:"grid gap-2",children:[(0,r.jsx)("label",{htmlFor:"name",className:"text-sm font-medium",children:o("project.name")}),(0,r.jsx)(F.p,{id:"name",value:c,onChange:e=>i(e.target.value),placeholder:o("project.namePlaceholder"),autoFocus:!0})]}),(0,r.jsxs)("div",{className:"grid gap-2",children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:"앱 타입"}),(0,r.jsx)("div",{className:"grid grid-cols-2 gap-2",children:Object.entries(I).map(e=>{let[t,a]=e;return(0,r.jsxs)(j.$,{type:"button",variant:d===t?"default":"outline",className:"h-16 flex-col gap-0.5",onClick:()=>(e=>{u(e);let t=I[e],a=e===y.uC.MOBILE||e===y.uC.MOBILE_WITH_API;t.showFrontend&&x(a?y.V3.EXPO:y.V3.REACT_VITE),t.showBackend&&h(y.V_.EXPRESS)})(t),children:[(0,r.jsx)("span",{className:"text-lg",children:a.icon}),(0,r.jsx)("span",{className:"text-xs font-medium",children:a.label}),(0,r.jsx)("span",{className:"text-[10px] text-muted-foreground",children:a.description})]},t)})})]}),f.showFrontend&&(0,r.jsxs)("div",{className:"grid gap-2",children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:g?"모바일 프레임워크":"프론트엔드"}),(0,r.jsx)("div",{className:"grid grid-cols-4 gap-2",children:(g?P:L).map(e=>(0,r.jsxs)(j.$,{type:"button",variant:m===e.value?"default":"outline",className:"h-14 flex-col gap-0.5",onClick:()=>x(e.value),children:[(0,r.jsx)("span",{className:"text-base",children:e.icon}),(0,r.jsx)("span",{className:"text-[10px]",children:e.label})]},e.value))})]}),f.showBackend&&(0,r.jsxs)("div",{className:"grid gap-2",children:[(0,r.jsx)("label",{className:"text-sm font-medium",children:"백엔드"}),(0,r.jsx)("div",{className:"grid grid-cols-4 gap-2",children:R.map(e=>(0,r.jsxs)(j.$,{type:"button",variant:p===e.value?"default":"outline",className:"h-14 flex-col gap-0.5",onClick:()=>h(e.value),children:[(0,r.jsx)("span",{className:"text-base",children:e.icon}),(0,r.jsx)("span",{className:"text-[10px]",children:e.label})]},e.value))})]})]}),(0,r.jsxs)(S,{children:[(0,r.jsx)(j.$,{type:"button",variant:"outline",onClick:()=>a(!1),children:o("common.cancel")}),(0,r.jsx)(j.$,{type:"submit",disabled:!c.trim()||n,children:o(n?"common.loading":"common.create")})]})]})})})}var B=a(4264);function D(){let e=(0,l.useRouter)(),{t}=(0,v.B)(),[a,o]=(0,s.useState)(!1),{projects:c,isLoading:i,fetchProjects:d,createProject:u,deleteProject:m}=(0,B.I)();(0,s.useEffect)(()=>{d()},[d]);let x=async t=>{try{let a=await u(t);o(!1),e.push("/project/".concat(a.id))}catch(e){console.error("Failed to create project:",e)}},p=async e=>{if(confirm(t("project.deleteConfirm")))try{await m(e)}catch(e){console.error("Failed to delete project:",e)}};return(0,r.jsxs)("div",{className:"min-h-screen bg-background",children:[(0,r.jsx)(n.Y,{}),(0,r.jsxs)("main",{className:"container px-4 py-8",children:[(0,r.jsxs)("div",{className:"mb-8",children:[(0,r.jsx)("h2",{className:"text-2xl font-bold",children:t("home.title")}),(0,r.jsx)("p",{className:"mt-1 text-muted-foreground",children:0===c.length?t("home.createFirst"):"".concat(c.length," ").concat(1===c.length?"project":"projects")})]}),i&&0===c.length?(0,r.jsx)("div",{className:"flex h-40 items-center justify-center text-muted-foreground",children:t("common.loading")}):(0,r.jsx)(C,{projects:c,onCreateClick:()=>o(!0),onDelete:p})]}),(0,r.jsx)(M,{open:a,onOpenChange:o,onSubmit:x,isLoading:i})]})}},3300:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(8964).A)("Trash2",[["path",{d:"M3 6h18",key:"d0wm0j"}],["path",{d:"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6",key:"4alrt4"}],["path",{d:"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2",key:"v07s0e"}],["line",{x1:"10",x2:"10",y1:"11",y2:"17",key:"1uufr5"}],["line",{x1:"14",x2:"14",y1:"11",y2:"17",key:"xtxkd"}]])},3774:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(8964).A)("Zap",[["path",{d:"M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z",key:"1xq2db"}]])},3792:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(8964).A)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]])},3973:(e,t,a)=>{"use strict";var r=a(6145);a.o(r,"useParams")&&a.d(t,{useParams:function(){return r.useParams}}),a.o(r,"useRouter")&&a.d(t,{useRouter:function(){return r.useRouter}})},4539:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(8964).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},6224:(e,t,a)=>{"use strict";a.d(t,{A:()=>r});let r=(0,a(8964).A)("Globe",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M12 2a14.5 14.5 0 0 0 0 20 14.5 14.5 0 0 0 0-20",key:"13o1zl"}],["path",{d:"M2 12h20",key:"9i4pu4"}]])}},e=>{e.O(0,[253,18,59,498,358],()=>e(e.s=559)),_N_E=e.O()}]);