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,2 +1,2 @@
1
- (()=>{var a={};a.id=974,a.ids=[974],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1587:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3280:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]])},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3764:(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:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,6479)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/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"]}],I=["/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/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
- 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}}},3802:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).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"}]])},3873:a=>{"use strict";a.exports=require("path")},4224:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>I});var d=c(8403),e=c(6038),f=c(9529),g=c(7339),h=c(9266),i=c.n(h),j=c(7218),k=c(3280),l=c(3802),m=c(1985);let n=(0,m.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 o=c(9362),p=c(2835);let q=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,p.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...b}));q.displayName="Card",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,p.cn)("flex flex-col space-y-1.5 p-6",a),...b})).displayName="CardHeader",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h3",{ref:c,className:(0,p.cn)("font-semibold leading-none tracking-tight",a),...b})).displayName="CardTitle",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,p.cn)("text-sm text-muted-foreground",a),...b})).displayName="CardDescription",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,p.cn)("p-6 pt-0",a),...b})).displayName="CardContent",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,p.cn)("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";var r=c(2120),s=c(6212),t=c(4824);function u({project:a,onDelete:b}){var c;let{locale:e}=(0,t.B)(),f=(a.projectType,(c=a.backendFramework)===s.V_.EXPRESS?"from-green-500/20 to-emerald-500/5":c===s.V_.FASTAPI?"from-teal-500/20 to-cyan-500/5":"from-blue-500/20 to-indigo-500/5");return(0,d.jsx)(i(),{href:`/project/${a.id}`,children:(0,d.jsxs)(q,{className:"group relative cursor-pointer overflow-hidden border transition-all hover:border-primary/50 hover:shadow-lg",children:[(0,d.jsx)("div",{className:`absolute inset-0 bg-gradient-to-br ${f} opacity-0 transition-opacity group-hover:opacity-100`}),(0,d.jsxs)("div",{className:"relative p-4",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-2",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 text-primary",children:function(a){switch(a){case s.gM.WEB:return(0,d.jsx)(j.A,{className:"h-5 w-5"});case s.gM.NATIVE:return(0,d.jsx)(k.A,{className:"h-5 w-5"});default:return(0,d.jsx)(j.A,{className:"h-5 w-5"})}}(a.projectType)}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("h3",{className:"truncate font-semibold",children:a.name}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:function(a,b){let c=new Date().getTime()-new Date(a).getTime(),d=Math.floor(c/6e4),e=Math.floor(c/36e5),f=Math.floor(c/864e5);return"ko"===b?d<1?"방금 μ „":d<60?`${d}λΆ„ μ „`:e<24?`${e}μ‹œκ°„ μ „`:f<7?`${f}일 μ „`:new Date(a).toLocaleDateString("ko-KR"):d<1?"Just now":d<60?`${d}m ago`:e<24?`${e}h ago`:f<7?`${f}d ago`:new Date(a).toLocaleDateString("en-US")}(a.updatedAt,e)})]})]}),b&&(0,d.jsx)(r.$,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:c=>{c.preventDefault(),c.stopPropagation(),b(a.id)},children:(0,d.jsx)(l.A,{className:"h-4 w-4 text-destructive"})})]}),(0,d.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[a.backendFramework!==s.V_.NONE&&(0,d.jsxs)("span",{className:"inline-flex items-center gap-1 rounded-full bg-secondary px-2.5 py-0.5 text-xs font-medium",children:[(0,d.jsx)(n,{className:"h-3 w-3"}),a.backendFramework===s.V_.EXPRESS?"Express":"FastAPI"]}),a.databaseProvider&&(0,d.jsxs)("span",{className:`inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ${a.databaseProvider===s.Dt.POSTGRES_DOCKER?"bg-blue-500/10 text-blue-600":"bg-amber-500/10 text-amber-600"}`,children:[(0,d.jsx)(o.A,{className:"h-3 w-3"}),a.databaseProvider===s.Dt.POSTGRES_DOCKER?"PostgreSQL":"SQLite"]}),(0,d.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:a.projectType===s.gM.WEB?"Web":"Native"})]})]})]})})}var v=c(1587);let w=(0,m.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 x({onClick:a}){let{t:b}=(0,t.B)();return(0,d.jsxs)(q,{className:"group relative cursor-pointer overflow-hidden border-2 border-dashed transition-all hover:border-primary hover:shadow-lg",onClick:a,children:[(0,d.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,d.jsxs)("div",{className:"relative flex h-full min-h-[140px] flex-col items-center justify-center gap-3 p-6",children:[(0,d.jsxs)("div",{className:"relative",children:[(0,d.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,d.jsx)(v.A,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,d.jsx)(w,{className:"absolute -right-1 -top-1 h-4 w-4 text-primary opacity-0 transition-opacity group-hover:opacity-100"})]}),(0,d.jsxs)("div",{className:"text-center",children:[(0,d.jsx)("span",{className:"font-medium text-muted-foreground transition-colors group-hover:text-foreground",children:b("project.create")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:b("project.createDescription")})]})]})]})}function y({projects:a,onCreateClick:b,onDelete:c}){return(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:[a.map(a=>(0,d.jsx)(u,{project:a,onDelete:c},a.id)),(0,d.jsx)(x,{onClick:b})]})}let z=({open:a,onOpenChange:b,children:c})=>a?(0,d.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,d.jsx)("div",{className:"fixed inset-0 bg-black/80",onClick:()=>b?.(!1)}),c]}):null,A=e.forwardRef(({className:a,children:b,...c},e)=>(0,d.jsx)("div",{ref:e,className:(0,p.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:a=>a.stopPropagation(),...c,children:b}));A.displayName="DialogContent";let B=({className:a,...b})=>(0,d.jsx)("div",{className:(0,p.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...b});B.displayName="DialogHeader";let C=({className:a,...b})=>(0,d.jsx)("div",{className:(0,p.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...b});C.displayName="DialogFooter";let D=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h2",{ref:c,className:(0,p.cn)("text-lg font-semibold leading-none tracking-tight",a),...b}));D.displayName="DialogTitle";let E=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,p.cn)("text-sm text-muted-foreground",a),...b}));E.displayName="DialogDescription";var F=c(2282);function G({open:a,onOpenChange:b,onSubmit:c,isLoading:f}){let{t:g}=(0,t.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(s.gM.WEB),[l,m]=(0,e.useState)(s.V_.NONE);return(0,d.jsx)(z,{open:a,onOpenChange:b,children:(0,d.jsx)(A,{className:"max-w-lg",children:(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),h.trim()&&(c({name:h.trim(),projectType:j,backendFramework:l}),i(""),k(s.gM.WEB),m(s.V_.NONE))},children:[(0,d.jsxs)(B,{children:[(0,d.jsx)(D,{children:g("project.createTitle")}),(0,d.jsx)(E,{children:g("project.name")})]}),(0,d.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{htmlFor:"name",className:"text-sm font-medium",children:g("project.name")}),(0,d.jsx)(F.p,{id:"name",value:h,onChange:a=>i(a.target.value),placeholder:g("project.namePlaceholder"),autoFocus:!0})]}),(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{className:"text-sm font-medium",children:g("project.type")}),(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,d.jsxs)(r.$,{type:"button",variant:j===s.gM.WEB?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(s.gM.WEB),children:[(0,d.jsx)("span",{className:"text-xl",children:"\uD83C\uDF10"}),(0,d.jsx)("span",{className:"text-xs",children:g("project.typeWeb")})]}),(0,d.jsxs)(r.$,{type:"button",variant:j===s.gM.NATIVE?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(s.gM.NATIVE),children:[(0,d.jsx)("span",{className:"text-xl",children:"\uD83D\uDCF1"}),(0,d.jsx)("span",{className:"text-xs",children:g("project.typeNative")})]})]})]}),j===s.gM.WEB&&(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{className:"text-sm font-medium",children:g("project.backendStack")}),(0,d.jsxs)("div",{className:"grid grid-cols-3 gap-2",children:[(0,d.jsxs)(r.$,{type:"button",variant:l===s.V_.NONE?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(s.V_.NONE),children:[(0,d.jsx)("span",{className:"text-lg",children:"⚑"}),(0,d.jsx)("span",{className:"text-xs text-center leading-tight",children:g("project.backendNone")})]}),(0,d.jsxs)(r.$,{type:"button",variant:l===s.V_.EXPRESS?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(s.V_.EXPRESS),children:[(0,d.jsx)("span",{className:"text-lg",children:"\uD83D\uDFE2"}),(0,d.jsxs)("span",{className:"text-xs text-center leading-tight",children:["Express",(0,d.jsx)("br",{}),"(Node.js)"]})]}),(0,d.jsxs)(r.$,{type:"button",variant:l===s.V_.FASTAPI?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(s.V_.FASTAPI),children:[(0,d.jsx)("span",{className:"text-lg",children:"\uD83D\uDC0D"}),(0,d.jsxs)("span",{className:"text-xs text-center leading-tight",children:["FastAPI",(0,d.jsx)("br",{}),"(Python)"]})]})]})]})]}),(0,d.jsxs)(C,{children:[(0,d.jsx)(r.$,{type:"button",variant:"outline",onClick:()=>b(!1),children:g("common.cancel")}),(0,d.jsx)(r.$,{type:"submit",disabled:!h.trim()||f,children:g(f?"common.loading":"common.create")})]})]})})})}var H=c(7012);function I(){let a=(0,f.useRouter)(),{t:b}=(0,t.B)(),[c,h]=(0,e.useState)(!1),{projects:i,isLoading:j,fetchProjects:k,createProject:l,deleteProject:m}=(0,H.I)(),n=async b=>{try{let c=await l(b);h(!1),a.push(`/project/${c.id}`)}catch(a){console.error("Failed to create project:",a)}},o=async a=>{if(confirm(b("project.deleteConfirm")))try{await m(a)}catch(a){console.error("Failed to delete project:",a)}};return(0,d.jsxs)("div",{className:"min-h-screen bg-background",children:[(0,d.jsx)(g.Y,{}),(0,d.jsxs)("main",{className:"container px-4 py-8",children:[(0,d.jsxs)("div",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"text-2xl font-bold",children:b("home.title")}),(0,d.jsx)("p",{className:"mt-1 text-muted-foreground",children:0===i.length?b("home.createFirst"):`${i.length} ${1===i.length?"project":"projects"}`})]}),j&&0===i.length?(0,d.jsx)("div",{className:"flex h-40 items-center justify-center text-muted-foreground",children:b("common.loading")}):(0,d.jsx)(y,{projects:i,onCreateClick:()=>h(!0),onDelete:o})]}),(0,d.jsx)(G,{open:c,onOpenChange:h,onSubmit:n,isLoading:j})]})}},6212:(a,b,c)=>{"use strict";c.d(b,{V_:()=>e,Dt:()=>f,gM:()=>d,Xh:()=>g});var d=function(a){return a.WEB="WEB",a.NATIVE="NATIVE",a}({}),e=function(a){return a.NONE="NONE",a.EXPRESS="EXPRESS",a.FASTAPI="FASTAPI",a}({}),f=function(a){return a.POSTGRES_DOCKER="POSTGRES_DOCKER",a.SQLITE="SQLITE",a}({}),g=function(a){return a.USER="USER",a.ASSISTANT="ASSISTANT",a.SYSTEM="SYSTEM",a}({})},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6479:(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/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/page.tsx","default")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},7012:(a,b,c)=>{"use strict";c.d(b,{I:()=>f});var d=c(6211),e=c(3826);let f=(0,d.v)((a,b)=>({projects:[],currentProject:null,isLoading:!1,error:null,fetchProjects:async()=>{a({isLoading:!0,error:null});try{let b=await e.F.get("/projects");a({projects:b,isLoading:!1})}catch(b){a({error:b instanceof Error?b.message:"Failed to fetch projects",isLoading:!1})}},createProject:async b=>{a({isLoading:!0,error:null});try{let c=await e.F.post("/projects",b);return a(a=>({projects:[{id:c.id,name:c.name,projectType:c.projectType,backendFramework:c.backendFramework,updatedAt:c.updatedAt},...a.projects],isLoading:!1})),c}catch(b){throw a({error:b instanceof Error?b.message:"Failed to create project",isLoading:!1}),b}},deleteProject:async b=>{a({isLoading:!0,error:null});try{await e.F.delete(`/projects/${b}`),a(a=>({projects:a.projects.filter(a=>a.id!==b),isLoading:!1}))}catch(b){throw a({error:b instanceof Error?b.message:"Failed to delete project",isLoading:!1}),b}},fetchProject:async b=>{a({isLoading:!0,error:null});try{let c=await e.F.get(`/projects/${b}`);a({currentProject:c,isLoading:!1})}catch(b){a({error:b instanceof Error?b.message:"Failed to fetch project",isLoading:!1})}},setCurrentProject:b=>a({currentProject:b}),clearError:()=>a({error:null})}))},7218:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).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"}]])},8354:a=>{"use strict";a.exports=require("util")},8756:(a,b,c)=>{Promise.resolve().then(c.bind(c,4224))},8900:(a,b,c)=>{Promise.resolve().then(c.bind(c,6479))},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")},9529:(a,b,c)=>{"use strict";var d=c(9065);c.o(d,"useParams")&&c.d(b,{useParams:function(){return d.useParams}}),c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}})}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[673,490,392],()=>b(b.s=3764));module.exports=c})();
1
+ (()=>{var a={};a.id=974,a.ids=[974],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1587:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]])},2527:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>O});var d=c(8403),e=c(6038),f=c(9529),g=c(7339),h=c(9266),i=c.n(h),j=c(7218),k=c(9500),l=c(1985);let m=(0,l.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 n=c(3280);let o=(0,l.A)("Code",[["polyline",{points:"16 18 22 12 16 6",key:"z7tu5w"}],["polyline",{points:"8 6 2 12 8 18",key:"1eg1df"}]]);var p=c(3802),q=c(9362),r=c(2835);let s=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,r.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...b}));s.displayName="Card",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,r.cn)("flex flex-col space-y-1.5 p-6",a),...b})).displayName="CardHeader",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h3",{ref:c,className:(0,r.cn)("font-semibold leading-none tracking-tight",a),...b})).displayName="CardTitle",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,r.cn)("text-sm text-muted-foreground",a),...b})).displayName="CardDescription",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,r.cn)("p-6 pt-0",a),...b})).displayName="CardContent",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,r.cn)("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";var t=c(2120),u=c(7113),v=c(4824);function w({project:a,onDelete:b}){let{locale:c}=(0,v.B)(),e=function(a){switch(a){case u.uC.FULLSTACK_WEB:return"from-blue-500/20 to-indigo-500/5";case u.uC.FRONTEND_ONLY:return"from-yellow-500/20 to-orange-500/5";case u.uC.API_ONLY:return"from-green-500/20 to-emerald-500/5";case u.uC.MOBILE:return"from-purple-500/20 to-pink-500/5";case u.uC.MOBILE_WITH_API:return"from-violet-500/20 to-purple-500/5";default:return"from-gray-500/20 to-slate-500/5"}}(a.appType);return(0,d.jsx)(i(),{href:`/project/${a.id}`,children:(0,d.jsxs)(s,{className:"group relative cursor-pointer overflow-hidden border transition-all hover:border-primary/50 hover:shadow-lg",children:[(0,d.jsx)("div",{className:`absolute inset-0 bg-gradient-to-br ${e} opacity-0 transition-opacity group-hover:opacity-100`}),(0,d.jsxs)("div",{className:"relative p-4",children:[(0,d.jsxs)("div",{className:"flex items-start justify-between gap-2",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 text-primary",children:function(a){switch(a){case u.uC.FULLSTACK_WEB:return(0,d.jsx)(j.A,{className:"h-5 w-5"});case u.uC.FRONTEND_ONLY:return(0,d.jsx)(k.A,{className:"h-5 w-5"});case u.uC.API_ONLY:return(0,d.jsx)(m,{className:"h-5 w-5"});case u.uC.MOBILE:case u.uC.MOBILE_WITH_API:return(0,d.jsx)(n.A,{className:"h-5 w-5"});default:return(0,d.jsx)(o,{className:"h-5 w-5"})}}(a.appType)}),(0,d.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,d.jsx)("h3",{className:"truncate font-semibold",children:a.name}),(0,d.jsx)("p",{className:"text-xs text-muted-foreground",children:function(a,b){let c=new Date().getTime()-new Date(a).getTime(),d=Math.floor(c/6e4),e=Math.floor(c/36e5),f=Math.floor(c/864e5);return"ko"===b?d<1?"방금 μ „":d<60?`${d}λΆ„ μ „`:e<24?`${e}μ‹œκ°„ μ „`:f<7?`${f}일 μ „`:new Date(a).toLocaleDateString("ko-KR"):d<1?"Just now":d<60?`${d}m ago`:e<24?`${e}h ago`:f<7?`${f}d ago`:new Date(a).toLocaleDateString("en-US")}(a.updatedAt,c)})]})]}),b&&(0,d.jsx)(t.$,{variant:"ghost",size:"icon",className:"h-8 w-8 shrink-0 opacity-0 transition-opacity group-hover:opacity-100",onClick:c=>{c.preventDefault(),c.stopPropagation(),b(a.id)},children:(0,d.jsx)(p.A,{className:"h-4 w-4 text-destructive"})})]}),(0,d.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[(0,d.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:function(a){switch(a){case u.uC.FULLSTACK_WEB:return"Fullstack";case u.uC.FRONTEND_ONLY:return"Frontend";case u.uC.API_ONLY:return"API";case u.uC.MOBILE:return"Mobile";case u.uC.MOBILE_WITH_API:return"Mobile+API";default:return"Unknown"}}(a.appType)}),a.frontendFramework&&a.frontendFramework!==u.V3.NONE&&(0,d.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(a){switch(a){case u.V3.REACT_VITE:return"React";case u.V3.NEXTJS:return"Next.js";case u.V3.VUE:return"Vue";case u.V3.SVELTE:return"Svelte";case u.V3.REACT_NATIVE:return"RN";case u.V3.EXPO:return"Expo";case u.V3.FLUTTER:return"Flutter";default:return""}}(a.frontendFramework)}),a.backendFramework&&a.backendFramework!==u.V_.NONE&&(0,d.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,d.jsx)(m,{className:"h-3 w-3"}),function(a){switch(a){case u.V_.EXPRESS:return"Express";case u.V_.FASTAPI:return"FastAPI";case u.V_.DJANGO:return"Django";case u.V_.NESTJS:return"NestJS";default:return""}}(a.backendFramework)]}),a.databaseProvider&&(0,d.jsxs)("span",{className:`inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium ${a.databaseProvider===u.Dt.POSTGRES_DOCKER?"bg-blue-500/10 text-blue-600":"bg-amber-500/10 text-amber-600"}`,children:[(0,d.jsx)(q.A,{className:"h-3 w-3"}),a.databaseProvider===u.Dt.POSTGRES_DOCKER?"PostgreSQL":"SQLite"]})]})]})]})})}var x=c(1587);let y=(0,l.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 z({onClick:a}){let{t:b}=(0,v.B)();return(0,d.jsxs)(s,{className:"group relative cursor-pointer overflow-hidden border-2 border-dashed transition-all hover:border-primary hover:shadow-lg",onClick:a,children:[(0,d.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,d.jsxs)("div",{className:"relative flex h-full min-h-[140px] flex-col items-center justify-center gap-3 p-6",children:[(0,d.jsxs)("div",{className:"relative",children:[(0,d.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,d.jsx)(x.A,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,d.jsx)(y,{className:"absolute -right-1 -top-1 h-4 w-4 text-primary opacity-0 transition-opacity group-hover:opacity-100"})]}),(0,d.jsxs)("div",{className:"text-center",children:[(0,d.jsx)("span",{className:"font-medium text-muted-foreground transition-colors group-hover:text-foreground",children:b("project.create")}),(0,d.jsx)("p",{className:"mt-1 text-xs text-muted-foreground/70",children:b("project.createDescription")})]})]})]})}function A({projects:a,onCreateClick:b,onDelete:c}){return(0,d.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4",children:[a.map(a=>(0,d.jsx)(w,{project:a,onDelete:c},a.id)),(0,d.jsx)(z,{onClick:b})]})}let B=({open:a,onOpenChange:b,children:c})=>a?(0,d.jsxs)("div",{className:"fixed inset-0 z-50",children:[(0,d.jsx)("div",{className:"fixed inset-0 bg-black/80",onClick:()=>b?.(!1)}),c]}):null,C=e.forwardRef(({className:a,children:b,...c},e)=>(0,d.jsx)("div",{ref:e,className:(0,r.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:a=>a.stopPropagation(),...c,children:b}));C.displayName="DialogContent";let D=({className:a,...b})=>(0,d.jsx)("div",{className:(0,r.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...b});D.displayName="DialogHeader";let E=({className:a,...b})=>(0,d.jsx)("div",{className:(0,r.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...b});E.displayName="DialogFooter";let F=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h2",{ref:c,className:(0,r.cn)("text-lg font-semibold leading-none tracking-tight",a),...b}));F.displayName="DialogTitle";let G=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,r.cn)("text-sm text-muted-foreground",a),...b}));G.displayName="DialogDescription";var H=c(2282);let I={[u.uC.FULLSTACK_WEB]:{icon:"\uD83C\uDF10",label:"ν’€μŠ€νƒ μ›Ήμ•±",description:"ν”„λ‘ νŠΈμ—”λ“œ + λ°±μ—”λ“œ",showFrontend:!0,showBackend:!0,webOnly:!0},[u.uC.FRONTEND_ONLY]:{icon:"⚑",label:"ν”„λ‘ νŠΈμ—”λ“œ",description:"정적 μ‚¬μ΄νŠΈ / SPA",showFrontend:!0,showBackend:!1,webOnly:!0},[u.uC.API_ONLY]:{icon:"\uD83D\uDD0C",label:"API μ„œλ²„",description:"λ°±μ—”λ“œλ§Œ",showFrontend:!1,showBackend:!0,webOnly:!1},[u.uC.MOBILE]:{icon:"\uD83D\uDCF1",label:"λͺ¨λ°”일 μ•±",description:"React Native / Flutter",showFrontend:!0,showBackend:!1,webOnly:!1},[u.uC.MOBILE_WITH_API]:{icon:"\uD83D\uDCF1\uD83D\uDD0C",label:"λͺ¨λ°”일 + API",description:"λͺ¨λ°”일 μ•± + λ°±μ—”λ“œ",showFrontend:!0,showBackend:!0,webOnly:!1}},J=[{value:u.V3.REACT_VITE,icon:"βš›οΈ",label:"React + Vite"},{value:u.V3.NEXTJS,icon:"β–²",label:"Next.js"},{value:u.V3.VUE,icon:"\uD83D\uDC9A",label:"Vue 3"},{value:u.V3.SVELTE,icon:"\uD83D\uDD36",label:"SvelteKit"}],K=[{value:u.V3.EXPO,icon:"\uD83D\uDCF1",label:"Expo"},{value:u.V3.REACT_NATIVE,icon:"βš›οΈ",label:"React Native"},{value:u.V3.FLUTTER,icon:"\uD83D\uDC26",label:"Flutter"}],L=[{value:u.V_.EXPRESS,icon:"\uD83D\uDFE2",label:"Express"},{value:u.V_.FASTAPI,icon:"\uD83D\uDC0D",label:"FastAPI"},{value:u.V_.DJANGO,icon:"\uD83C\uDFB8",label:"Django"},{value:u.V_.NESTJS,icon:"\uD83D\uDD34",label:"NestJS"}];function M({open:a,onOpenChange:b,onSubmit:c,isLoading:f}){let{t:g}=(0,v.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(u.uC.FULLSTACK_WEB),[l,m]=(0,e.useState)(u.V3.REACT_VITE),[n,o]=(0,e.useState)(u.V_.EXPRESS),p=I[j],q=j===u.uC.MOBILE||j===u.uC.MOBILE_WITH_API;return(0,d.jsx)(B,{open:a,onOpenChange:b,children:(0,d.jsx)(C,{className:"max-w-lg max-h-[90vh] overflow-y-auto",children:(0,d.jsxs)("form",{onSubmit:a=>{a.preventDefault(),h.trim()&&(c({name:h.trim(),appType:j,frontendFramework:p.showFrontend?l:void 0,backendFramework:p.showBackend?n:void 0}),i(""),k(u.uC.FULLSTACK_WEB),m(u.V3.REACT_VITE),o(u.V_.EXPRESS))},children:[(0,d.jsxs)(D,{children:[(0,d.jsx)(F,{children:g("project.createTitle")}),(0,d.jsx)(G,{children:"μƒˆ ν”„λ‘œμ νŠΈμ˜ 이름과 νƒ€μž…μ„ μ„ νƒν•˜μ„Έμš”"})]}),(0,d.jsxs)("div",{className:"grid gap-4 py-4",children:[(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{htmlFor:"name",className:"text-sm font-medium",children:g("project.name")}),(0,d.jsx)(H.p,{id:"name",value:h,onChange:a=>i(a.target.value),placeholder:g("project.namePlaceholder"),autoFocus:!0})]}),(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{className:"text-sm font-medium",children:"μ•± νƒ€μž…"}),(0,d.jsx)("div",{className:"grid grid-cols-2 gap-2",children:Object.entries(I).map(([a,b])=>(0,d.jsxs)(t.$,{type:"button",variant:j===a?"default":"outline",className:"h-16 flex-col gap-0.5",onClick:()=>(a=>{k(a);let b=I[a],c=a===u.uC.MOBILE||a===u.uC.MOBILE_WITH_API;b.showFrontend&&m(c?u.V3.EXPO:u.V3.REACT_VITE),b.showBackend&&o(u.V_.EXPRESS)})(a),children:[(0,d.jsx)("span",{className:"text-lg",children:b.icon}),(0,d.jsx)("span",{className:"text-xs font-medium",children:b.label}),(0,d.jsx)("span",{className:"text-[10px] text-muted-foreground",children:b.description})]},a))})]}),p.showFrontend&&(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{className:"text-sm font-medium",children:q?"λͺ¨λ°”일 ν”„λ ˆμž„μ›Œν¬":"ν”„λ‘ νŠΈμ—”λ“œ"}),(0,d.jsx)("div",{className:"grid grid-cols-4 gap-2",children:(q?K:J).map(a=>(0,d.jsxs)(t.$,{type:"button",variant:l===a.value?"default":"outline",className:"h-14 flex-col gap-0.5",onClick:()=>m(a.value),children:[(0,d.jsx)("span",{className:"text-base",children:a.icon}),(0,d.jsx)("span",{className:"text-[10px]",children:a.label})]},a.value))})]}),p.showBackend&&(0,d.jsxs)("div",{className:"grid gap-2",children:[(0,d.jsx)("label",{className:"text-sm font-medium",children:"λ°±μ—”λ“œ"}),(0,d.jsx)("div",{className:"grid grid-cols-4 gap-2",children:L.map(a=>(0,d.jsxs)(t.$,{type:"button",variant:n===a.value?"default":"outline",className:"h-14 flex-col gap-0.5",onClick:()=>o(a.value),children:[(0,d.jsx)("span",{className:"text-base",children:a.icon}),(0,d.jsx)("span",{className:"text-[10px]",children:a.label})]},a.value))})]})]}),(0,d.jsxs)(E,{children:[(0,d.jsx)(t.$,{type:"button",variant:"outline",onClick:()=>b(!1),children:g("common.cancel")}),(0,d.jsx)(t.$,{type:"submit",disabled:!h.trim()||f,children:g(f?"common.loading":"common.create")})]})]})})})}var N=c(7012);function O(){let a=(0,f.useRouter)(),{t:b}=(0,v.B)(),[c,h]=(0,e.useState)(!1),{projects:i,isLoading:j,fetchProjects:k,createProject:l,deleteProject:m}=(0,N.I)(),n=async b=>{try{let c=await l(b);h(!1),a.push(`/project/${c.id}`)}catch(a){console.error("Failed to create project:",a)}},o=async a=>{if(confirm(b("project.deleteConfirm")))try{await m(a)}catch(a){console.error("Failed to delete project:",a)}};return(0,d.jsxs)("div",{className:"min-h-screen bg-background",children:[(0,d.jsx)(g.Y,{}),(0,d.jsxs)("main",{className:"container px-4 py-8",children:[(0,d.jsxs)("div",{className:"mb-8",children:[(0,d.jsx)("h2",{className:"text-2xl font-bold",children:b("home.title")}),(0,d.jsx)("p",{className:"mt-1 text-muted-foreground",children:0===i.length?b("home.createFirst"):`${i.length} ${1===i.length?"project":"projects"}`})]}),j&&0===i.length?(0,d.jsx)("div",{className:"flex h-40 items-center justify-center text-muted-foreground",children:b("common.loading")}):(0,d.jsx)(A,{projects:i,onCreateClick:()=>h(!0),onDelete:o})]}),(0,d.jsx)(M,{open:c,onOpenChange:h,onSubmit:n,isLoading:j})]})}},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3280:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).A)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]])},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3764:(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:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,6479)),"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/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"]}],I=["/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/page.tsx"],J={require:c,loadChunk:()=>Promise.resolve()},K=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:H},distDir:".next",relativeProjectDir:""});async function L(a,b,d){var C;let G="/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
+ 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}}},3802:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).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"}]])},3873:a=>{"use strict";a.exports=require("path")},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6479:(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/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/page.tsx","default")},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},7012:(a,b,c)=>{"use strict";c.d(b,{I:()=>f});var d=c(6211),e=c(3826);let f=(0,d.v)((a,b)=>({projects:[],currentProject:null,isLoading:!1,error:null,fetchProjects:async()=>{a({isLoading:!0,error:null});try{let b=await e.F.get("/projects");a({projects:b,isLoading:!1})}catch(b){a({error:b instanceof Error?b.message:"Failed to fetch projects",isLoading:!1})}},createProject:async b=>{a({isLoading:!0,error:null});try{let c=await e.F.post("/projects",b);return a(a=>({projects:[{id:c.id,name:c.name,appType:c.appType,frontendFramework:c.frontendFramework,backendFramework:c.backendFramework,updatedAt:c.updatedAt},...a.projects],isLoading:!1})),c}catch(b){throw a({error:b instanceof Error?b.message:"Failed to create project",isLoading:!1}),b}},deleteProject:async b=>{a({isLoading:!0,error:null});try{await e.F.delete(`/projects/${b}`),a(a=>({projects:a.projects.filter(a=>a.id!==b),isLoading:!1}))}catch(b){throw a({error:b instanceof Error?b.message:"Failed to delete project",isLoading:!1}),b}},fetchProject:async b=>{a({isLoading:!0,error:null});try{let c=await e.F.get(`/projects/${b}`);a({currentProject:c,isLoading:!1})}catch(b){a({error:b instanceof Error?b.message:"Failed to fetch project",isLoading:!1})}},setCurrentProject:b=>a({currentProject:b}),clearError:()=>a({error:null})}))},7113:(a,b,c)=>{"use strict";c.d(b,{uC:()=>e,V_:()=>f,Dt:()=>g,V3:()=>d,Xh:()=>h});var d=function(a){return a.REACT_VITE="REACT_VITE",a.NEXTJS="NEXTJS",a.VUE="VUE",a.SVELTE="SVELTE",a.REACT_NATIVE="REACT_NATIVE",a.FLUTTER="FLUTTER",a.EXPO="EXPO",a.NONE="NONE",a}({}),e=function(a){return a.FULLSTACK_WEB="FULLSTACK_WEB",a.FRONTEND_ONLY="FRONTEND_ONLY",a.API_ONLY="API_ONLY",a.MOBILE="MOBILE",a.MOBILE_WITH_API="MOBILE_WITH_API",a}({}),f=function(a){return a.NONE="NONE",a.EXPRESS="EXPRESS",a.FASTAPI="FASTAPI",a.DJANGO="DJANGO",a.NESTJS="NESTJS",a}({}),g=function(a){return a.POSTGRES_DOCKER="POSTGRES_DOCKER",a.SQLITE="SQLITE",a}({}),h=function(a){return a.USER="USER",a.ASSISTANT="ASSISTANT",a.SYSTEM="SYSTEM",a}({})},7218:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).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"}]])},8354:a=>{"use strict";a.exports=require("util")},8756:(a,b,c)=>{Promise.resolve().then(c.bind(c,2527))},8900:(a,b,c)=>{Promise.resolve().then(c.bind(c,6479))},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")},9500:(a,b,c)=>{"use strict";c.d(b,{A:()=>d});let d=(0,c(1985).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"}]])},9529:(a,b,c)=>{"use strict";var d=c(9065);c.o(d,"useParams")&&c.d(b,{useParams:function(){return d.useParams}}),c.o(d,"useRouter")&&c.d(b,{useRouter:function(){return d.useRouter}})}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[673,490,392],()=>b(b.s=3764));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/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":[],"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":[]},"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["/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":[],"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":[]},"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}}}}