claudeship 0.2.11 → 0.2.14

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 (119) hide show
  1. package/apps/server/dist/app.module.js +8 -0
  2. package/apps/server/dist/app.module.js.map +1 -1
  3. package/apps/server/dist/chat/prompts/fullstack-express-prompt.d.ts +1 -1
  4. package/apps/server/dist/chat/prompts/fullstack-express-prompt.js +110 -1
  5. package/apps/server/dist/chat/prompts/fullstack-express-prompt.js.map +1 -1
  6. package/apps/server/dist/chat/prompts/fullstack-fastapi-prompt.d.ts +1 -1
  7. package/apps/server/dist/chat/prompts/fullstack-fastapi-prompt.js +110 -1
  8. package/apps/server/dist/chat/prompts/fullstack-fastapi-prompt.js.map +1 -1
  9. package/apps/server/dist/chat/prompts/web-system-prompt.d.ts +1 -1
  10. package/apps/server/dist/chat/prompts/web-system-prompt.js +157 -0
  11. package/apps/server/dist/chat/prompts/web-system-prompt.js.map +1 -1
  12. package/apps/server/dist/checkpoint/checkpoint.controller.d.ts +19 -0
  13. package/apps/server/dist/checkpoint/checkpoint.controller.js +93 -0
  14. package/apps/server/dist/checkpoint/checkpoint.controller.js.map +1 -0
  15. package/apps/server/dist/checkpoint/checkpoint.module.d.ts +2 -0
  16. package/apps/server/dist/checkpoint/checkpoint.module.js +25 -0
  17. package/apps/server/dist/checkpoint/checkpoint.module.js.map +1 -0
  18. package/apps/server/dist/checkpoint/checkpoint.service.d.ts +41 -0
  19. package/apps/server/dist/checkpoint/checkpoint.service.js +261 -0
  20. package/apps/server/dist/checkpoint/checkpoint.service.js.map +1 -0
  21. package/apps/server/dist/database/database.controller.d.ts +23 -0
  22. package/apps/server/dist/database/database.controller.js +109 -0
  23. package/apps/server/dist/database/database.controller.js.map +1 -0
  24. package/apps/server/dist/database/database.module.d.ts +2 -0
  25. package/apps/server/dist/database/database.module.js +25 -0
  26. package/apps/server/dist/database/database.module.js.map +1 -0
  27. package/apps/server/dist/database/database.service.d.ts +32 -0
  28. package/apps/server/dist/database/database.service.js +238 -0
  29. package/apps/server/dist/database/database.service.js.map +1 -0
  30. package/apps/server/dist/preview/preview.controller.d.ts +5 -0
  31. package/apps/server/dist/preview/preview.controller.js +41 -0
  32. package/apps/server/dist/preview/preview.controller.js.map +1 -1
  33. package/apps/server/dist/preview/preview.service.d.ts +20 -0
  34. package/apps/server/dist/preview/preview.service.js +51 -2
  35. package/apps/server/dist/preview/preview.service.js.map +1 -1
  36. package/apps/server/dist/project/project.controller.d.ts +10 -1
  37. package/apps/server/dist/project/project.controller.js +57 -0
  38. package/apps/server/dist/project/project.controller.js.map +1 -1
  39. package/apps/server/dist/project/project.service.d.ts +15 -0
  40. package/apps/server/dist/project/project.service.js +111 -0
  41. package/apps/server/dist/project/project.service.js.map +1 -1
  42. package/apps/server/dist/project-context/project-context.controller.d.ts +42 -0
  43. package/apps/server/dist/project-context/project-context.controller.js +127 -0
  44. package/apps/server/dist/project-context/project-context.controller.js.map +1 -0
  45. package/apps/server/dist/project-context/project-context.module.d.ts +2 -0
  46. package/apps/server/dist/project-context/project-context.module.js +25 -0
  47. package/apps/server/dist/project-context/project-context.module.js.map +1 -0
  48. package/apps/server/dist/project-context/project-context.service.d.ts +36 -0
  49. package/apps/server/dist/project-context/project-context.service.js +260 -0
  50. package/apps/server/dist/project-context/project-context.service.js.map +1 -0
  51. package/apps/server/dist/testing/testing.controller.d.ts +24 -0
  52. package/apps/server/dist/testing/testing.controller.js +126 -0
  53. package/apps/server/dist/testing/testing.controller.js.map +1 -0
  54. package/apps/server/dist/testing/testing.module.d.ts +2 -0
  55. package/apps/server/dist/testing/testing.module.js +26 -0
  56. package/apps/server/dist/testing/testing.module.js.map +1 -0
  57. package/apps/server/dist/testing/testing.service.d.ts +62 -0
  58. package/apps/server/dist/testing/testing.service.js +269 -0
  59. package/apps/server/dist/testing/testing.service.js.map +1 -0
  60. package/apps/server/dist/tsconfig.tsbuildinfo +1 -1
  61. package/apps/server/package.json +1 -1
  62. package/apps/web/.next/BUILD_ID +1 -1
  63. package/apps/web/.next/app-build-manifest.json +7 -7
  64. package/apps/web/.next/app-path-routes-manifest.json +2 -2
  65. package/apps/web/.next/build-manifest.json +2 -2
  66. package/apps/web/.next/cache/.previewinfo +1 -1
  67. package/apps/web/.next/cache/.rscinfo +1 -1
  68. package/apps/web/.next/cache/.tsbuildinfo +1 -1
  69. package/apps/web/.next/cache/config.json +3 -3
  70. package/apps/web/.next/cache/eslint/.cache_j3uhuz +1 -1
  71. package/apps/web/.next/cache/webpack/client-production/0.pack +0 -0
  72. package/apps/web/.next/cache/webpack/client-production/index.pack +0 -0
  73. package/apps/web/.next/cache/webpack/edge-server-production/index.pack +0 -0
  74. package/apps/web/.next/cache/webpack/server-production/0.pack +0 -0
  75. package/apps/web/.next/cache/webpack/server-production/index.pack +0 -0
  76. package/apps/web/.next/prerender-manifest.json +13 -13
  77. package/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  78. package/apps/web/.next/server/app/_not-found.html +1 -1
  79. package/apps/web/.next/server/app/_not-found.rsc +2 -2
  80. package/apps/web/.next/server/app/index.html +1 -1
  81. package/apps/web/.next/server/app/index.rsc +3 -3
  82. package/apps/web/.next/server/app/page.js +2 -2
  83. package/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  84. package/apps/web/.next/server/app/project/[id]/page.js +2 -2
  85. package/apps/web/.next/server/app/project/[id]/page_client-reference-manifest.js +1 -1
  86. package/apps/web/.next/server/app/settings/page_client-reference-manifest.js +1 -1
  87. package/apps/web/.next/server/app/settings.html +1 -1
  88. package/apps/web/.next/server/app/settings.rsc +3 -3
  89. package/apps/web/.next/server/app-paths-manifest.json +2 -2
  90. package/apps/web/.next/server/chunks/392.js +1 -1
  91. package/apps/web/.next/server/pages/404.html +1 -1
  92. package/apps/web/.next/server/pages/500.html +1 -1
  93. package/apps/web/.next/server/server-reference-manifest.json +1 -1
  94. package/apps/web/.next/static/chunks/712-11fca77fb30a2a06.js +1 -0
  95. package/apps/web/.next/static/chunks/app/page-0db1c152fbd48359.js +1 -0
  96. package/apps/web/.next/static/chunks/app/project/[id]/page-7c44ae18c8984726.js +1 -0
  97. package/apps/web/.next/static/chunks/app/settings/page-d1318c2fd58729a5.js +1 -0
  98. package/apps/web/.next/static/css/d0f1b036f222bc16.css +3 -0
  99. package/apps/web/.next/trace +18 -17
  100. package/apps/web/node_modules/.bin/eslint +2 -2
  101. package/apps/web/package.json +2 -1
  102. package/apps/web/src/components/checkpoint/CheckpointPanel.tsx +384 -0
  103. package/apps/web/src/components/database/DatabasePanel.tsx +405 -0
  104. package/apps/web/src/components/env/EnvPanel.tsx +356 -0
  105. package/apps/web/src/components/preview/ConsoleViewer.tsx +270 -0
  106. package/apps/web/src/components/preview/ErrorOverlay.tsx +189 -0
  107. package/apps/web/src/components/preview/PreviewPanel.tsx +148 -6
  108. package/apps/web/src/components/testing/TestRunner.tsx +481 -0
  109. package/apps/web/src/components/ui/tabs.tsx +55 -0
  110. package/apps/web/src/components/visual-editor/VisualEditor.tsx +382 -0
  111. package/apps/web/src/lib/api.ts +5 -2
  112. package/package.json +1 -1
  113. package/apps/web/.next/static/chunks/298-6f3d6b321c288cd3.js +0 -1
  114. package/apps/web/.next/static/chunks/app/page-3d093f7f480a8599.js +0 -1
  115. package/apps/web/.next/static/chunks/app/project/[id]/page-e5cda6f9050b0a52.js +0 -1
  116. package/apps/web/.next/static/chunks/app/settings/page-92d28565c3d8c755.js +0 -1
  117. package/apps/web/.next/static/css/8f946046a2047594.css +0 -3
  118. /package/apps/web/.next/static/{zw4FcukMOho6_dzgpEdNW → tV_Qc76rupeogXvWEMw6p}/_buildManifest.js +0 -0
  119. /package/apps/web/.next/static/{zw4FcukMOho6_dzgpEdNW → tV_Qc76rupeogXvWEMw6p}/_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")},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")},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}}},3873:a=>{"use strict";a.exports=require("path")},4406:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>H});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(1985);let l=(0,k.A)("Smartphone",[["rect",{width:"14",height:"20",x:"5",y:"2",rx:"2",ry:"2",key:"1yt0o3"}],["path",{d:"M12 18h.01",key:"mhygvu"}]]),m=(0,k.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"}]]),n=(0,k.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(2835);let p=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...b}));p.displayName="Card",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.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,o.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,o.cn)("text-sm text-muted-foreground",a),...b})).displayName="CardDescription",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("p-6 pt-0",a),...b})).displayName="CardContent",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";var q=c(2120),r=c(6212),s=c(4824);function t({project:a,onDelete:b}){var c;let{locale:e}=(0,s.B)(),f=(a.projectType,(c=a.backendFramework)===r.V_.EXPRESS?"from-green-500/20 to-emerald-500/5":c===r.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)(p,{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 r.gM.WEB:return(0,d.jsx)(j.A,{className:"h-5 w-5"});case r.gM.NATIVE:return(0,d.jsx)(l,{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)(q.$,{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)(m,{className:"h-4 w-4 text-destructive"})})]}),(0,d.jsxs)("div",{className:"mt-4 flex flex-wrap gap-2",children:[a.backendFramework!==r.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===r.V_.EXPRESS?"Express":"FastAPI"]}),(0,d.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:a.projectType===r.gM.WEB?"Web":"Native"})]})]})]})})}let u=(0,k.A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),v=(0,k.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 w({onClick:a}){let{t:b}=(0,s.B)();return(0,d.jsxs)(p,{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)(u,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,d.jsx)(v,{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 x({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)(t,{project:a,onDelete:c},a.id)),(0,d.jsx)(w,{onClick:b})]})}let y=({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,z=e.forwardRef(({className:a,children:b,...c},e)=>(0,d.jsx)("div",{ref:e,className:(0,o.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}));z.displayName="DialogContent";let A=({className:a,...b})=>(0,d.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...b});A.displayName="DialogHeader";let B=({className:a,...b})=>(0,d.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...b});B.displayName="DialogFooter";let C=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h2",{ref:c,className:(0,o.cn)("text-lg font-semibold leading-none tracking-tight",a),...b}));C.displayName="DialogTitle";let D=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,o.cn)("text-sm text-muted-foreground",a),...b}));D.displayName="DialogDescription";var E=c(2282);function F({open:a,onOpenChange:b,onSubmit:c,isLoading:f}){let{t:g}=(0,s.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(r.gM.WEB),[l,m]=(0,e.useState)(r.V_.NONE);return(0,d.jsx)(y,{open:a,onOpenChange:b,children:(0,d.jsx)(z,{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(r.gM.WEB),m(r.V_.NONE))},children:[(0,d.jsxs)(A,{children:[(0,d.jsx)(C,{children:g("project.createTitle")}),(0,d.jsx)(D,{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)(E.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)(q.$,{type:"button",variant:j===r.gM.WEB?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(r.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)(q.$,{type:"button",variant:j===r.gM.NATIVE?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(r.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===r.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)(q.$,{type:"button",variant:l===r.V_.NONE?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(q.$,{type:"button",variant:l===r.V_.EXPRESS?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(q.$,{type:"button",variant:l===r.V_.FASTAPI?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(B,{children:[(0,d.jsx)(q.$,{type:"button",variant:"outline",onClick:()=>b(!1),children:g("common.cancel")}),(0,d.jsx)(q.$,{type:"submit",disabled:!h.trim()||f,children:g(f?"common.loading":"common.create")})]})]})})})}var G=c(7012);function H(){let a=(0,f.useRouter)(),{t:b}=(0,s.B)(),[c,h]=(0,e.useState)(!1),{projects:i,isLoading:j,fetchProjects:k,createProject:l,deleteProject:m}=(0,G.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)(x,{projects:i,onCreateClick:()=>h(!0),onDelete:o})]}),(0,d.jsx)(F,{open:c,onOpenChange:h,onSubmit:n,isLoading:j})]})}},6212:(a,b,c)=>{"use strict";c.d(b,{V_:()=>e,gM:()=>d,Xh:()=>f});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.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(4906),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,4406))},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,811,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")},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")},5025:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>H});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(2835);let p=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("rounded-xl border bg-card text-card-foreground shadow",a),...b}));p.displayName="Card",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.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,o.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,o.cn)("text-sm text-muted-foreground",a),...b})).displayName="CardDescription",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("p-6 pt-0",a),...b})).displayName="CardContent",e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("div",{ref:c,className:(0,o.cn)("flex items-center p-6 pt-0",a),...b})).displayName="CardFooter";var q=c(2120),r=c(6212),s=c(4824);function t({project:a,onDelete:b}){var c;let{locale:e}=(0,s.B)(),f=(a.projectType,(c=a.backendFramework)===r.V_.EXPRESS?"from-green-500/20 to-emerald-500/5":c===r.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)(p,{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 r.gM.WEB:return(0,d.jsx)(j.A,{className:"h-5 w-5"});case r.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)(q.$,{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!==r.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===r.V_.EXPRESS?"Express":"FastAPI"]}),(0,d.jsx)("span",{className:"rounded-full bg-secondary px-2.5 py-0.5 text-xs text-muted-foreground",children:a.projectType===r.gM.WEB?"Web":"Native"})]})]})]})})}let u=(0,m.A)("Plus",[["path",{d:"M5 12h14",key:"1ays0h"}],["path",{d:"M12 5v14",key:"s699le"}]]),v=(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 w({onClick:a}){let{t:b}=(0,s.B)();return(0,d.jsxs)(p,{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)(u,{className:"h-6 w-6 text-primary transition-transform group-hover:scale-110"})}),(0,d.jsx)(v,{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 x({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)(t,{project:a,onDelete:c},a.id)),(0,d.jsx)(w,{onClick:b})]})}let y=({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,z=e.forwardRef(({className:a,children:b,...c},e)=>(0,d.jsx)("div",{ref:e,className:(0,o.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}));z.displayName="DialogContent";let A=({className:a,...b})=>(0,d.jsx)("div",{className:(0,o.cn)("flex flex-col space-y-1.5 text-center sm:text-left",a),...b});A.displayName="DialogHeader";let B=({className:a,...b})=>(0,d.jsx)("div",{className:(0,o.cn)("flex flex-col-reverse sm:flex-row sm:justify-end sm:space-x-2",a),...b});B.displayName="DialogFooter";let C=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("h2",{ref:c,className:(0,o.cn)("text-lg font-semibold leading-none tracking-tight",a),...b}));C.displayName="DialogTitle";let D=e.forwardRef(({className:a,...b},c)=>(0,d.jsx)("p",{ref:c,className:(0,o.cn)("text-sm text-muted-foreground",a),...b}));D.displayName="DialogDescription";var E=c(2282);function F({open:a,onOpenChange:b,onSubmit:c,isLoading:f}){let{t:g}=(0,s.B)(),[h,i]=(0,e.useState)(""),[j,k]=(0,e.useState)(r.gM.WEB),[l,m]=(0,e.useState)(r.V_.NONE);return(0,d.jsx)(y,{open:a,onOpenChange:b,children:(0,d.jsx)(z,{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(r.gM.WEB),m(r.V_.NONE))},children:[(0,d.jsxs)(A,{children:[(0,d.jsx)(C,{children:g("project.createTitle")}),(0,d.jsx)(D,{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)(E.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)(q.$,{type:"button",variant:j===r.gM.WEB?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(r.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)(q.$,{type:"button",variant:j===r.gM.NATIVE?"default":"outline",className:"h-16 flex-col gap-1",onClick:()=>k(r.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===r.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)(q.$,{type:"button",variant:l===r.V_.NONE?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(q.$,{type:"button",variant:l===r.V_.EXPRESS?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(q.$,{type:"button",variant:l===r.V_.FASTAPI?"default":"outline",className:"h-20 flex-col gap-1",onClick:()=>m(r.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)(B,{children:[(0,d.jsx)(q.$,{type:"button",variant:"outline",onClick:()=>b(!1),children:g("common.cancel")}),(0,d.jsx)(q.$,{type:"submit",disabled:!h.trim()||f,children:g(f?"common.loading":"common.create")})]})]})})})}var G=c(7012);function H(){let a=(0,f.useRouter)(),{t:b}=(0,s.B)(),[c,h]=(0,e.useState)(!1),{projects:i,isLoading:j,fetchProjects:k,createProject:l,deleteProject:m}=(0,G.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)(x,{projects:i,onCreateClick:()=>h(!0),onDelete:o})]}),(0,d.jsx)(F,{open:c,onOpenChange:h,onSubmit:n,isLoading:j})]})}},6212:(a,b,c)=>{"use strict";c.d(b,{V_:()=>e,gM:()=>d,Xh:()=>f});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.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(4906),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,5025))},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,811,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}},"882":{"*":{"id":"4406","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}},"7275":{"*":{"id":"5091","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","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":882,"name":"*","chunks":["992","static/chunks/992-806bad722ba16222.js","974","static/chunks/app/page-3d093f7f480a8599.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":7275,"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/8f946046a2047594.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}},"882":{"*":{"id":"6479","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}},"7275":{"*":{"id":"2983","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","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}},"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}},"6940":{"*":{"id":"5791","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"8247","name":"*","chunks":[],"async":false}},"9078":{"*":{"id":"5025","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":9078,"name":"*","chunks":["992","static/chunks/992-806bad722ba16222.js","974","static/chunks/app/page-0db1c152fbd48359.js"],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/settings/page.tsx":{"id":3701,"name":"*","chunks":[],"async":false},"/home/runner/work/ClaudeShip/ClaudeShip/apps/web/src/app/project/[id]/page.tsx":{"id":6940,"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/d0f1b036f222bc16.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}},"6940":{"*":{"id":"2983","name":"*","chunks":[],"async":false}},"8009":{"*":{"id":"941","name":"*","chunks":[],"async":false}},"8183":{"*":{"id":"414","name":"*","chunks":[],"async":false}},"9078":{"*":{"id":"6479","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}}}}