@dendelion/paper-camp 0.15.0 → 0.17.0
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.
- package/dist/app/assets/index-6xeWffZg.js +2 -0
- package/dist/app/assets/{index-Bo0V9-3F.js.map → index-6xeWffZg.js.map} +1 -1
- package/dist/app/assets/{index-BTyua-6D.js → index-B_yczIPZ.js} +2 -2
- package/dist/app/assets/{index-BTyua-6D.js.map → index-B_yczIPZ.js.map} +1 -1
- package/dist/app/assets/index-CASIH0vL.js +2 -0
- package/dist/app/assets/index-CASIH0vL.js.map +1 -0
- package/dist/app/assets/{index-2ahHj0hk.js → index-CYxk5mrY.js} +2 -2
- package/dist/app/assets/{index-2ahHj0hk.js.map → index-CYxk5mrY.js.map} +1 -1
- package/dist/app/assets/index-CjPmPsf0.js +4 -0
- package/dist/app/assets/index-CjPmPsf0.js.map +1 -0
- package/dist/app/assets/{index-Cz9HEIaO.js → index-CnD1dVCC.js} +2 -2
- package/dist/app/assets/{index-Cz9HEIaO.js.map → index-CnD1dVCC.js.map} +1 -1
- package/dist/app/assets/{index-BSp1FE97.js → index-DLgVuxp-.js} +2 -2
- package/dist/app/assets/{index-BSp1FE97.js.map → index-DLgVuxp-.js.map} +1 -1
- package/dist/app/assets/main-DR2ma6V-.js +207 -0
- package/dist/app/assets/main-DR2ma6V-.js.map +1 -0
- package/dist/app/assets/main-Ll-lvqgh.css +1 -0
- package/dist/app/assets/{sidebar-section-BHLbvk_X.js → sidebar-section-DKgV3XAx.js} +2 -2
- package/dist/app/assets/{sidebar-section-BHLbvk_X.js.map → sidebar-section-DKgV3XAx.js.map} +1 -1
- package/dist/app/index.html +2 -2
- package/dist/app/toolbar.js +4356 -4183
- package/dist/app/toolbar.js.map +1 -1
- package/dist/chunks/{parked-questions.BoAnCnQA.js → phase-progress.DsBJvd_o.js} +1204 -1052
- package/dist/chunks/phase-progress.DsBJvd_o.js.map +1 -0
- package/dist/cli/index.js +7800 -7632
- package/dist/cli/index.js.map +1 -1
- package/dist/core/git-log.d.ts +6 -0
- package/dist/core/git-log.d.ts.map +1 -0
- package/dist/core/git-log.test.d.ts +2 -0
- package/dist/core/git-log.test.d.ts.map +1 -0
- package/dist/core/git-pr/branch.d.ts.map +1 -1
- package/dist/core/index.d.ts +1 -0
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js +101 -93
- package/dist/core/parse/parser.d.ts +1 -0
- package/dist/core/parse/parser.d.ts.map +1 -1
- package/dist/core/phase-progress.d.ts +16 -0
- package/dist/core/phase-progress.d.ts.map +1 -0
- package/dist/core/phase-progress.test.d.ts +2 -0
- package/dist/core/phase-progress.test.d.ts.map +1 -0
- package/dist/core/phase-run.d.ts +17 -0
- package/dist/core/phase-run.d.ts.map +1 -0
- package/dist/core/phase-run.test.d.ts +2 -0
- package/dist/core/phase-run.test.d.ts.map +1 -0
- package/dist/core/rate-limit.d.ts +4 -0
- package/dist/core/rate-limit.d.ts.map +1 -0
- package/dist/core/rate-limit.test.d.ts +2 -0
- package/dist/core/rate-limit.test.d.ts.map +1 -0
- package/dist/core/readers.d.ts +1 -1
- package/dist/core/readers.d.ts.map +1 -1
- package/dist/core/sections.d.ts.map +1 -1
- package/dist/core/stats.d.ts +5 -1
- package/dist/core/stats.d.ts.map +1 -1
- package/dist/core/status/status.d.ts +1 -1
- package/dist/core/status/status.d.ts.map +1 -1
- package/dist/core/trail.d.ts +2 -2
- package/dist/core/trail.d.ts.map +1 -1
- package/dist/types/index.d.ts +61 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +8 -8
- package/dist/types/index.js.map +1 -1
- package/dist/vite/index.d.ts +1 -1
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +49 -30
- package/dist/vite/index.js.map +1 -1
- package/dist/vite/proxy.d.ts +3 -1
- package/dist/vite/proxy.d.ts.map +1 -1
- package/package.json +3 -2
- package/dist/app/assets/index-Bi4fur5H.js +0 -4
- package/dist/app/assets/index-Bi4fur5H.js.map +0 -1
- package/dist/app/assets/index-Bo0V9-3F.js +0 -2
- package/dist/app/assets/index-DKjtMMrA.js +0 -2
- package/dist/app/assets/index-DKjtMMrA.js.map +0 -1
- package/dist/app/assets/main-BW24wv9K.js +0 -207
- package/dist/app/assets/main-BW24wv9K.js.map +0 -1
- package/dist/app/assets/main-C-ynmROL.css +0 -1
- package/dist/chunks/parked-questions.BoAnCnQA.js.map +0 -1
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{r as o,j as e,P as x,R as c,T as d,N as m,w as j}from"./main-BW24wv9K.js";import{c as i}from"./tokens-C3C44lLs.js";const p=async()=>{const s=await fetch("/api/stats");if(!s.ok)throw new Error(`Failed to fetch stats: ${s.status}`);return s.json()},h=["open",...d],u={...m,open:"Open"},f=s=>`${Math.round(s*100)}%`,n=({title:s,children:t})=>e.jsx("div",{className:"flex-[1_1_260px] max-w-[360px] max-[480px]:flex-[1_1_100%] max-[480px]:max-w-none",children:e.jsx(j,{size:"small",texture:"kraft",className:"h-full",children:e.jsxs("div",{className:"flex flex-col gap-3",children:[e.jsx("span",{className:"font-handwritten text-xs font-semibold opacity-[0.55]",children:s}),t]})})}),a=({label:s,value:t})=>e.jsxs("div",{className:"flex items-center justify-between gap-2",children:[e.jsx("span",{className:"opacity-70",children:s}),e.jsx("span",{className:"font-semibold",children:t})]}),v=({comments:s})=>e.jsxs(n,{title:"Comment ratio",children:[e.jsx(c,{value:s.ratio*100,color:i.accentSlate}),e.jsx(a,{label:"Ratio",value:f(s.ratio)}),e.jsx(a,{label:"Comment lines",value:s.commentLines}),e.jsx(a,{label:"Source lines",value:s.sourceLines})]}),N=({testCoveragePct:s})=>e.jsx(n,{title:"Test coverage",children:s===null?e.jsx("p",{className:"opacity-50 m-0",children:"Run `pnpm test` to generate a coverage report."}):e.jsxs(e.Fragment,{children:[e.jsx(c,{value:s,color:i.accentGreen}),e.jsx(a,{label:"Line coverage",value:`${Math.round(s)}%`})]})}),S=({sourceLines:s,testLines:t})=>e.jsxs(n,{title:"Codebase size",children:[e.jsx(a,{label:"Source lines",value:s}),e.jsx(a,{label:"Test lines",value:t})]}),g=({entitiesByStatus:s})=>e.jsxs(n,{title:"Entities by status",children:[h.filter(t=>s[t]).map(t=>e.jsx(a,{label:u[t],value:s[t]},t)),Object.keys(s).length===0&&e.jsx("p",{className:"opacity-50 m-0",children:"No entities yet."})]}),b=({openQuestions:s,decisions:t})=>e.jsxs(n,{title:"Notes",children:[e.jsx(a,{label:"Open questions",value:s}),e.jsx(a,{label:"Decisions",value:t})]}),y=({tasksPerWeek:s})=>{const t=Math.max(1,...s.map(l=>l.count));return e.jsxs(n,{title:"Tasks per week",children:[s.length===0&&e.jsx("p",{className:"opacity-50 m-0",children:"No tasks run yet."}),s.map(l=>e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(a,{label:l.week,value:l.count}),e.jsx(c,{value:l.count,max:t,color:i.accentAmber,height:4})]},l.week))]})},C=()=>{const[s,t]=o.useState(null),[l,r]=o.useState(!1);return o.useEffect(()=>{p().then(t).catch(()=>r(!0))},[]),e.jsxs("div",{children:[e.jsx(x,{children:"Stats"}),e.jsx("p",{className:"opacity-50 mb-6",children:"A read-only look at project health — every number here is informational, none of them gate anything."}),l&&e.jsx("p",{className:"opacity-50",children:"Couldn't load stats."}),!l&&!s&&e.jsx("p",{className:"opacity-50",children:"Loading…"}),s&&e.jsxs(e.Fragment,{children:[e.jsxs("div",{className:"flex flex-wrap items-start gap-2.5",children:[e.jsx(v,{comments:s.comments}),e.jsx(N,{testCoveragePct:s.testCoveragePct}),e.jsx(S,{sourceLines:s.comments.sourceLines,testLines:s.testLines}),e.jsx(g,{entitiesByStatus:s.entitiesByStatus}),e.jsx(b,{openQuestions:s.openQuestions,decisions:s.decisions}),e.jsx(y,{tasksPerWeek:s.tasksPerWeek})]}),e.jsxs("p",{className:"opacity-[0.4] text-2xs mt-6",children:["Generated ",new Date(s.generatedAt).toLocaleString()]})]})]})};export{C as StatsPage};
|
|
2
|
-
//# sourceMappingURL=index-DKjtMMrA.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-DKjtMMrA.js","sources":["../../../src/app/services/content/stats-api.ts","../../../src/app/features/stats/stats-page.tsx"],"sourcesContent":["import type { ProjectStats } from '@/types/index';\n\nexport const fetchStats = async () => {\n const res = await fetch('/api/stats');\n if (!res.ok) throw new Error(`Failed to fetch stats: ${res.status}`);\n return res.json() as Promise<ProjectStats>;\n};\n","import { PageTitle } from '@/app/components/page-title';\nimport { STATUS_LABEL } from '@/app/features/plans/constants';\nimport { fetchStats } from '@/app/services/content';\nimport { color } from '@/app/styles/tokens';\nimport { type EntityStatus, PLAN_STATUSES, type ProjectStats } from '@/types/index';\nimport { Card, Progress } from '@dendelion/paper-ui';\nimport { useEffect, useState } from 'react';\n\nconst ENTITY_STATUS_ORDER: EntityStatus[] = ['open', ...PLAN_STATUSES];\n\nconst ENTITY_STATUS_LABEL: Record<EntityStatus, string> = { ...STATUS_LABEL, open: 'Open' };\n\nconst pct = (value: number) => `${Math.round(value * 100)}%`;\n\nconst StatCard = ({ title, children }: { title: string; children: React.ReactNode }) => (\n <div className=\"flex-[1_1_260px] max-w-[360px] max-[480px]:flex-[1_1_100%] max-[480px]:max-w-none\">\n <Card size=\"small\" texture=\"kraft\" className=\"h-full\">\n <div className=\"flex flex-col gap-3\">\n <span className=\"font-handwritten text-xs font-semibold opacity-[0.55]\">{title}</span>\n {children}\n </div>\n </Card>\n </div>\n);\n\nconst StatRow = ({ label, value }: { label: string; value: React.ReactNode }) => (\n <div className=\"flex items-center justify-between gap-2\">\n <span className=\"opacity-70\">{label}</span>\n <span className=\"font-semibold\">{value}</span>\n </div>\n);\n\nconst CommentRatioCard = ({ comments }: { comments: ProjectStats['comments'] }) => (\n <StatCard title=\"Comment ratio\">\n <Progress value={comments.ratio * 100} color={color.accentSlate} />\n <StatRow label=\"Ratio\" value={pct(comments.ratio)} />\n <StatRow label=\"Comment lines\" value={comments.commentLines} />\n <StatRow label=\"Source lines\" value={comments.sourceLines} />\n </StatCard>\n);\n\nconst TestCoverageCard = ({ testCoveragePct }: { testCoveragePct: number | null }) => (\n <StatCard title=\"Test coverage\">\n {testCoveragePct === null ? (\n <p className=\"opacity-50 m-0\">Run `pnpm test` to generate a coverage report.</p>\n ) : (\n <>\n <Progress value={testCoveragePct} color={color.accentGreen} />\n <StatRow label=\"Line coverage\" value={`${Math.round(testCoveragePct)}%`} />\n </>\n )}\n </StatCard>\n);\n\nconst CodebaseSizeCard = ({\n sourceLines,\n testLines,\n}: { sourceLines: number; testLines: number }) => (\n <StatCard title=\"Codebase size\">\n <StatRow label=\"Source lines\" value={sourceLines} />\n <StatRow label=\"Test lines\" value={testLines} />\n </StatCard>\n);\n\nconst EntitiesByStatusCard = ({\n entitiesByStatus,\n}: { entitiesByStatus: ProjectStats['entitiesByStatus'] }) => (\n <StatCard title=\"Entities by status\">\n {ENTITY_STATUS_ORDER.filter((status) => entitiesByStatus[status]).map((status) => (\n <StatRow key={status} label={ENTITY_STATUS_LABEL[status]} value={entitiesByStatus[status]} />\n ))}\n {Object.keys(entitiesByStatus).length === 0 && (\n <p className=\"opacity-50 m-0\">No entities yet.</p>\n )}\n </StatCard>\n);\n\nconst NotesCard = ({ openQuestions, decisions }: { openQuestions: number; decisions: number }) => (\n <StatCard title=\"Notes\">\n <StatRow label=\"Open questions\" value={openQuestions} />\n <StatRow label=\"Decisions\" value={decisions} />\n </StatCard>\n);\n\nconst TasksPerWeekCard = ({ tasksPerWeek }: { tasksPerWeek: ProjectStats['tasksPerWeek'] }) => {\n const max = Math.max(1, ...tasksPerWeek.map((w) => w.count));\n return (\n <StatCard title=\"Tasks per week\">\n {tasksPerWeek.length === 0 && <p className=\"opacity-50 m-0\">No tasks run yet.</p>}\n {tasksPerWeek.map((week) => (\n <div key={week.week} className=\"flex flex-col gap-1\">\n <StatRow label={week.week} value={week.count} />\n <Progress value={week.count} max={max} color={color.accentAmber} height={4} />\n </div>\n ))}\n </StatCard>\n );\n};\n\nexport const StatsPage = () => {\n const [stats, setStats] = useState<ProjectStats | null>(null);\n const [loadFailed, setLoadFailed] = useState(false);\n\n useEffect(() => {\n fetchStats()\n .then(setStats)\n .catch(() => setLoadFailed(true));\n }, []);\n\n return (\n <div>\n <PageTitle>Stats</PageTitle>\n <p className=\"opacity-50 mb-6\">\n A read-only look at project health — every number here is informational, none of them gate\n anything.\n </p>\n {loadFailed && <p className=\"opacity-50\">Couldn't load stats.</p>}\n {!loadFailed && !stats && <p className=\"opacity-50\">Loading…</p>}\n {stats && (\n <>\n <div className=\"flex flex-wrap items-start gap-2.5\">\n <CommentRatioCard comments={stats.comments} />\n <TestCoverageCard testCoveragePct={stats.testCoveragePct} />\n <CodebaseSizeCard\n sourceLines={stats.comments.sourceLines}\n testLines={stats.testLines}\n />\n <EntitiesByStatusCard entitiesByStatus={stats.entitiesByStatus} />\n <NotesCard openQuestions={stats.openQuestions} decisions={stats.decisions} />\n <TasksPerWeekCard tasksPerWeek={stats.tasksPerWeek} />\n </div>\n <p className=\"opacity-[0.4] text-2xs mt-6\">\n Generated {new Date(stats.generatedAt).toLocaleString()}\n </p>\n </>\n )}\n </div>\n );\n};\n"],"names":["fetchStats","res","ENTITY_STATUS_ORDER","PLAN_STATUSES","ENTITY_STATUS_LABEL","STATUS_LABEL","pct","value","StatCard","title","children","jsx","Card","jsxs","StatRow","label","CommentRatioCard","comments","Progress","color","TestCoverageCard","testCoveragePct","Fragment","CodebaseSizeCard","sourceLines","testLines","EntitiesByStatusCard","entitiesByStatus","status","NotesCard","openQuestions","decisions","TasksPerWeekCard","tasksPerWeek","max","w","week","StatsPage","stats","setStats","useState","loadFailed","setLoadFailed","useEffect","PageTitle"],"mappings":"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"}
|