git-impact 0.1.0 → 0.2.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/README.md +13 -6
- package/dist/cli/index.js +30 -2
- package/dist/cli/index.js.map +1 -1
- package/dist/init/templates.d.ts +1 -1
- package/dist/init/templates.d.ts.map +1 -1
- package/dist/init/templates.js +10 -0
- package/dist/init/templates.js.map +1 -1
- package/dist/report/html.d.ts +21 -0
- package/dist/report/html.d.ts.map +1 -0
- package/dist/report/html.js +245 -0
- package/dist/report/html.js.map +1 -0
- package/dist/report/render.d.ts +16 -0
- package/dist/report/render.d.ts.map +1 -0
- package/dist/report/render.js +91 -0
- package/dist/report/render.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,12 +24,14 @@ No API key needed when used through Claude Code.
|
|
|
24
24
|
|
|
25
25
|
## Install
|
|
26
26
|
|
|
27
|
-
Run this once inside any repo:
|
|
27
|
+
Run this once inside any repo — no install step needed, `npx` fetches it on demand:
|
|
28
28
|
|
|
29
29
|
```bash
|
|
30
30
|
npx git-impact init
|
|
31
31
|
```
|
|
32
32
|
|
|
33
|
+
[](https://www.npmjs.com/package/git-impact)
|
|
34
|
+
|
|
33
35
|
The wizard asks four questions, then self-installs into the repo:
|
|
34
36
|
|
|
35
37
|
```
|
|
@@ -236,9 +238,6 @@ Add to `.claude/settings.json` in your project:
|
|
|
236
238
|
}
|
|
237
239
|
```
|
|
238
240
|
|
|
239
|
-
> Until published to npm, use the local path:
|
|
240
|
-
> `"args": ["/path/to/git-impact/dist/mcp/server.js"]`
|
|
241
|
-
|
|
242
241
|
Available tools: `get_git_activity`, `get_github_activity`, `save_impact_entry`, `get_history`, `update_context`.
|
|
243
242
|
|
|
244
243
|
---
|
|
@@ -246,7 +245,7 @@ Available tools: `get_git_activity`, `get_github_activity`, `save_impact_entry`,
|
|
|
246
245
|
## Local development
|
|
247
246
|
|
|
248
247
|
```bash
|
|
249
|
-
git clone https://github.com/
|
|
248
|
+
git clone https://github.com/efraimnafady/git-impact
|
|
250
249
|
cd git-impact
|
|
251
250
|
npm install
|
|
252
251
|
npm run build
|
|
@@ -261,6 +260,14 @@ node dist/cli/index.js today
|
|
|
261
260
|
node dist/mcp/server.js
|
|
262
261
|
```
|
|
263
262
|
|
|
263
|
+
Publishing a new version:
|
|
264
|
+
|
|
265
|
+
```bash
|
|
266
|
+
npm version patch # bump version
|
|
267
|
+
npm publish --otp=123456 # 6-digit code from your authenticator
|
|
268
|
+
git push --follow-tags
|
|
269
|
+
```
|
|
270
|
+
|
|
264
271
|
---
|
|
265
272
|
|
|
266
273
|
## Project structure
|
|
@@ -294,7 +301,7 @@ skill/
|
|
|
294
301
|
|
|
295
302
|
## Roadmap
|
|
296
303
|
|
|
297
|
-
- [
|
|
304
|
+
- [x] `npm publish` — `npx git-impact init` works zero-install
|
|
298
305
|
- [ ] Color output (`chalk`) in CLI mode
|
|
299
306
|
- [ ] `--copy` flag to put output on clipboard
|
|
300
307
|
- [ ] GitHub PR enrichment fully wired into standup output
|
package/dist/cli/index.js
CHANGED
|
@@ -44,11 +44,12 @@ const translate_1 = require("../translator/translate");
|
|
|
44
44
|
const db_1 = require("../storage/db");
|
|
45
45
|
const repo_1 = require("../mcp/repo");
|
|
46
46
|
const installer_1 = require("../init/installer");
|
|
47
|
+
const render_1 = require("../report/render");
|
|
47
48
|
const program = new commander_1.Command();
|
|
48
49
|
program
|
|
49
50
|
.name("git-impact")
|
|
50
51
|
.description("Translate git commits into plain-English business impact")
|
|
51
|
-
.version("0.
|
|
52
|
+
.version("0.2.0");
|
|
52
53
|
// ─── today ────────────────────────────────────────────────────────────────────
|
|
53
54
|
program
|
|
54
55
|
.command("today")
|
|
@@ -80,8 +81,9 @@ program
|
|
|
80
81
|
const result = await (0, translate_1.translateActivity)(git, github, context, dateLabel);
|
|
81
82
|
printResult(dateLabel, result, git);
|
|
82
83
|
if (opts.save !== false) {
|
|
84
|
+
const today = until.toISOString().slice(0, 10);
|
|
83
85
|
(0, db_1.saveEntry)({
|
|
84
|
-
date:
|
|
86
|
+
date: today,
|
|
85
87
|
repoPath: repoRoot,
|
|
86
88
|
repoName: git.repoName,
|
|
87
89
|
totalCommits: result.totalCommits,
|
|
@@ -91,6 +93,9 @@ program
|
|
|
91
93
|
rawJson: result.rawJson,
|
|
92
94
|
createdAt: new Date().toISOString(),
|
|
93
95
|
}, repoRoot);
|
|
96
|
+
// Regenerate HTML report so the user always has a fresh file:// link to share.
|
|
97
|
+
const report = (0, render_1.renderReport)({ repoRoot, open: false, date: today });
|
|
98
|
+
console.log(`🔗 ${report.url}\n`);
|
|
94
99
|
}
|
|
95
100
|
});
|
|
96
101
|
// ─── since ────────────────────────────────────────────────────────────────────
|
|
@@ -154,6 +159,29 @@ program
|
|
|
154
159
|
console.log("\n" + "─".repeat(50));
|
|
155
160
|
console.log(`📊 ${review.stats.total_commits} commits across ${review.stats.working_days} working days\n`);
|
|
156
161
|
});
|
|
162
|
+
// ─── view ─────────────────────────────────────────────────────────────────────
|
|
163
|
+
program
|
|
164
|
+
.command("view")
|
|
165
|
+
.description("Generate / open the HTML report of saved standups")
|
|
166
|
+
.option("-p, --path <path>", "Path to git repository (auto-detected if omitted)")
|
|
167
|
+
.option("--date <date>", "Focus a specific date (YYYY-MM-DD) — opens that day directly")
|
|
168
|
+
.option("--no-open", "Just regenerate the file, don't open the browser")
|
|
169
|
+
.action((opts) => {
|
|
170
|
+
const repoRoot = getRepoOrDie(opts.path);
|
|
171
|
+
const result = (0, render_1.renderReport)({
|
|
172
|
+
repoRoot,
|
|
173
|
+
open: opts.open !== false,
|
|
174
|
+
date: opts.date,
|
|
175
|
+
});
|
|
176
|
+
if (result.entryCount === 0) {
|
|
177
|
+
console.log(`\nNo standups saved yet for ${repoRoot}.\n` +
|
|
178
|
+
`Run \`git-impact today\` (or "do my standup" in Claude Code) to build history.\n` +
|
|
179
|
+
`Empty report still written to: ${result.htmlPath}\n`);
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
console.log(`\nReport regenerated — ${result.entryCount} standup(s)`);
|
|
183
|
+
console.log(` ${result.url}\n`);
|
|
184
|
+
});
|
|
157
185
|
// ─── init ─────────────────────────────────────────────────────────────────────
|
|
158
186
|
program
|
|
159
187
|
.command("init")
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACA,yCAAoC;AACpC,mDAAqC;AACrC,2CAA6B;AAC7B,iDAAmC;AACnC,wCAA6E;AAC7E,8CAAuD;AACvD,uDAA4E;AAC5E,sCAOuB;AACvB,sCAA8C;AAC9C,iDAA2D;AAC3D,6CAAgD;AAEhD,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,YAAY,CAAC;KAClB,WAAW,CAAC,0DAA0D,CAAC;KACvE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,aAAa,EAAE,qBAAqB,CAAC;KAC5C,MAAM,CAAC,WAAW,EAAE,oCAAoC,CAAC;KACzD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAI,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC;IACvC,MAAM,KAAK,GAAM,IAAA,gBAAU,GAAE,CAAC;IAC9B,MAAM,KAAK,GAAM,IAAI,IAAI,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;IAEpC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,6BAA6B,CAAC,CAAC;IAEvE,MAAM,GAAG,GAAG,MAAM,IAAA,qBAAe,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACtE,GAAG,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,SAAS,yBAAyB,CAAC,CAAC;QACrD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,IAAI,CAAC,MAAM,IAAI,OAAO,EAAE,WAAW,EAAE,CAAC;QACxC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QACrD,MAAM,SAAS,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,SAAS,EAAE,CAAC;YACd,MAAM,GAAG,MAAM,IAAA,2BAAkB,EAAC,OAAO,CAAC,WAAW,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;QACpG,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAiB,EAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACxE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;IAEpC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAA,cAAS,EACP;YACE,IAAI,EAAE,KAAK;YACX,QAAQ,EAAE,QAAQ;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,UAAU,EAAI,MAAM,CAAC,UAAU;YAC/B,YAAY,EAAE,MAAM,CAAC,YAAY;YACjC,KAAK,EAAS,MAAM,CAAC,KAAK;YAC1B,OAAO,EAAO,MAAM,CAAC,OAAO;YAC5B,SAAS,EAAK,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACvC,EACD,QAAQ,CACT,CAAC;QACF,+EAA+E;QAC/E,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;IACpC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,oEAAoE,CAAC;KACjF,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,MAAM,QAAQ,GAAI,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAK,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC;IACxC,MAAM,KAAK,GAAO,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,MAAM,KAAK,GAAO,IAAI,IAAI,EAAE,CAAC;IAC7B,MAAM,SAAS,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;IAEhE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,QAAQ,2BAA2B,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE7F,MAAM,GAAG,GAAG,MAAM,IAAA,qBAAe,EAAC,QAAQ,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CACtE,GAAG,CAAC,+BAAgC,GAAa,CAAC,OAAO,EAAE,CAAC,CAC7D,CAAC;IAEF,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,4BAA4B,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAChE,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,MAAM,IAAA,6BAAiB,EAAC,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACtE,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC;AACtC,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,eAAe,EAAE,mBAAmB,EAAE,IAAI,CAAC;KAClD,MAAM,CAAC,eAAe,EAAE,sBAAsB,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,OAAO,GAAI,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC;IAEvC,IAAI,OAAO,CAAC;IACZ,IAAI,WAAmB,CAAC;IAExB,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAChD,OAAO,GAAO,IAAA,uBAAkB,EAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACrD,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,GAAI,QAAQ,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACtC,OAAO,GAAO,IAAA,yBAAoB,EAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;QACnD,WAAW,GAAG,QAAQ,IAAI,OAAO,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,0BAA0B,WAAW,OAAO,QAAQ,uDAAuD,CAAC,CAAC;QACzH,OAAO;IACT,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,2BAA2B,WAAW,KAAK,OAAO,CAAC,MAAM,eAAe,CAAC,CAAC;IAC/F,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAc,EAAC,OAAO,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;IAEnE,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACvD,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,QAAQ,IAAI,CAAC,CAAC;IAEtC,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,KAAK,CAAC,YAAY,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;QACjG,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACvC,KAAK,MAAM,MAAM,IAAI,KAAK,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACnC,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC,aAAa,mBAAmB,MAAM,CAAC,KAAK,CAAC,YAAY,iBAAiB,CAAC,CAAC;AAC7G,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,mDAAmD,CAAC;KAChE,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,eAAe,EAAE,8DAA8D,CAAC;KACvF,MAAM,CAAC,WAAW,EAAE,kDAAkD,CAAC;KACvE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,MAAM,GAAG,IAAA,qBAAY,EAAC;QAC1B,QAAQ;QACR,IAAI,EAAE,IAAI,CAAC,IAAI,KAAK,KAAK;QACzB,IAAI,EAAE,IAAI,CAAC,IAAI;KAChB,CAAC,CAAC;IACH,IAAI,MAAM,CAAC,UAAU,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CACT,+BAA+B,QAAQ,KAAK;YAC5C,kFAAkF;YAClF,kCAAkC,MAAM,CAAC,QAAQ,IAAI,CACtD,CAAC;QACF,OAAO;IACT,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,0BAA0B,MAAM,CAAC,UAAU,aAAa,CAAC,CAAC;IACtE,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,sEAAsE,CAAC;KACnF,MAAM,CAAC,mBAAmB,EAAE,mDAAmD,CAAC;KAChF,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,IAAA,gBAAW,EAAC,QAAQ,CAAC,CAAC;IAEvC,wFAAwF;IACxF,MAAM,EAAE,OAAO,EAAE,YAAY,EAAE,GAAG,MAAM,IAAA,yBAAa,EAAC,QAAQ,CAAC,CAAC;IAEhE,+EAA+E;IAC/E,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,IAAI,OAAO,CAAS,CAAC,GAAG,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAE7E,MAAM,eAAe,GAAG,MAAM,GAAG,CAC/B,+EAA+E;QAC/E,CAAC,QAAQ,EAAE,eAAe,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,mCAAmC,CAAC;QAC5G,MAAM,CACP,CAAC;IACF,MAAM,WAAW,GAAG,MAAM,GAAG,CAC3B,gEAAgE;QAChE,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC,CAAC,wCAAwC,CAAC,CAAC,CAAC,2BAA2B,CAAC;QAChG,MAAM,CACP,CAAC;IAEF,EAAE,CAAC,KAAK,EAAE,CAAC;IAEX,kDAAkD;IAClD,MAAM,WAAW,GAAgB;QAC/B,GAAG,OAAO;QACV,eAAe,EAAE,eAAe,CAAC,IAAI,EAAE,IAAI,QAAQ,EAAE,eAAe;QACpE,WAAW,EAAM,WAAW,CAAC,IAAI,EAAE,IAAQ,QAAQ,EAAE,WAAW;KACjE,CAAC;IACF,IAAA,gBAAW,EAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAEnC,qFAAqF;IACrF,MAAM,SAAS,GAAG,IAAA,mBAAO,EAAC,EAAE,QAAQ,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IAE9E,gBAAgB;IAChB,OAAO,CAAC,GAAG,CAAC,OAAO,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;IACxC,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,GAAG,GAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;QAClF,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,KAAK,GAAG,EAAE,CAAC,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,yFAAyF,CAAC,CAAC;IACvG,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;AAC7D,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,SAAS,YAAY,CAAC,YAAqB;IACzC,IAAI,CAAC;QACH,OAAO,IAAA,sBAAe,EAAC,YAAY,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAE,GAAa,CAAC,OAAO,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,SAAS,WAAW,CAClB,SAAiB,EACjB,MAAqD,EACrD,GAAgD;IAEhD,OAAO,CAAC,GAAG,CAAC,MAAM,SAAS,IAAI,CAAC,CAAC;IACjC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;IACnD,CAAC;SAAM,CAAC;QACN,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;YAChD,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM;gBAAU,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5D,IAAI,IAAI,CAAC,cAAc;gBAAE,OAAO,CAAC,GAAG,CAAC,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;YACpE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,iBAAiB,YAAY,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,OAAO,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAAM,IAAI,CAAC,CAAC;AACvE,CAAC;AAED,SAAS,UAAU,CAAC,CAAO;IACzB,OAAO,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE;QACnC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS;KAChE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,IAAI,IAAI,KAAK,WAAW;QAAE,OAAO,IAAA,oBAAc,EAAC,CAAC,CAAC,CAAC;IACnD,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,SAAS;QAAE,OAAO,IAAA,oBAAc,EAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,MAAM,CAAC;IAC5C,GAAG,CAAC,0BAA0B,IAAI,4CAA4C,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,YAAY,CAAC,CAAS;IAC7B,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IAC7C,IAAI,CAAC,KAAK;QAAE,GAAG,CAAC,oDAAoD,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAM,QAAQ,CAAC,KAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAK,UAAU,GAAG,CAAC,CAAC;IAClC,MAAM,IAAI,GAAG,GAAG,IAAI,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,KAAK,CAAC;IACjE,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;IACtD,MAAM,EAAE,GAAK,GAAG,IAAI,IAAI,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,OAAO,EAAE,CAAC;IACvE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC;AACtB,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,QAAgB;IAC1C,MAAM,SAAS,GAAG,MAAM,kDAAO,YAAY,IAAE,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,QAAQ,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,IAAI,EAAE,KAAK,IAAI,IAAI,CAAC;AACvE,CAAC;AAED,SAAS,GAAG,CAAC,GAAW;IACtB,OAAO,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IACnC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC"}
|
package/dist/init/templates.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* This means the package works correctly after `npm install -g`
|
|
4
4
|
* without needing to locate template files on disk.
|
|
5
5
|
*/
|
|
6
|
-
export declare const CLAUDE_SKILL = "---\nname: git-impact\ndescription: >\n Translates git commits into plain-English business impact \u2014 for standups,\n manager updates, and performance reviews. Use this skill whenever the user\n says: \"do my standup\", \"translate my commits\", \"what did I ship today/this\n week\", \"write my standup\", \"show my impact\", \"git-impact\", \"/git-impact\",\n \"generate a performance review\", \"what have I done this quarter\", or any\n request to turn technical git output into something a non-technical manager\n can understand.\n---\n\n# git-impact\n\nTranslate git commits into plain-English business impact without an API key.\nRead git data with bash, load the repo's context file, and write the translation\ninline.\n\n## Sub-commands\n\n| User says | Mode |\n|---|---|\n| `do my standup`, `today`, no args | **today** |\n| `since yesterday`, `since 3d`, `since 2026-05-01` | **since \\<when\\>** |\n| `review`, `last 30 days`, `Q2 review` | **review** |\n| `init`, `set up context` | **init** |\n\n## Step 1 \u2014 Find the repo root\n\n```bash\ngit rev-parse --show-toplevel 2>/dev/null\n```\n\nIf it fails: *\"No git repository found. Open a project folder first.\"* Stop.\n\n## Step 2 \u2014 Load context\n\n```bash\ncat \"$REPO_ROOT/.git-impact/context.json\" 2>/dev/null || echo \"NONE\"\n```\n\nApply the glossary (technical term \u2192 plain English) and frame impact around\nmanager priorities. If no context file exists, use general language and\nsuggest running init.\n\n## Mode: today / since \\<when\\>\n\nFetch commits:\n```bash\n# today\ngit -C \"$REPO_ROOT\" log \\\n --since=\"$(date '+%Y-%m-%d') 00:00:00\" \\\n --format=\"%h|%s|%b|%an|%ad\" --date=short HEAD\n\n# since Nd \u2192 --since=\"N days ago 00:00:00\"\n# since YYYY-MM-DD \u2192 --since=\"YYYY-MM-DD 00:00:00\"\n```\n\nFetch files changed:\n```bash\nFIRST=$(git -C \"$REPO_ROOT\" log --since=\"...\" --format=\"%h\" HEAD | tail -1)\ngit -C \"$REPO_ROOT\" diff --stat \"$FIRST\"^ HEAD 2>/dev/null\n```\n\n**Translation rules:**\n1. Each bullet = what was done + WHY it matters to the business. Never restate the commit message.\n2. Apply glossary \u2014 replace every technical term listed in context.json.\n3. If impact can't be inferred \u2192 \"technical foundation work for [area]\". Never hallucinate.\n4. Group related commits \u2014 4 auth commits = 1 bullet.\n5. WIP commits \u2192 \"\u23F3 In progress: [what] \u2192 [expected outcome]\"\n6. Be specific \u2014 use numbers from commit messages when they exist.\n\n**Output:**\n```\n\uD83D\uDCC5 [Day, Date]\n\n\u2705 [Plain-English summary]\n \u2192 [Business impact \u2014 who it unblocks, what risk it reduces]\n\n\u23F3 In progress: [what]\n \u2192 [Expected outcome]\n\n\uD83D\uDCC1 [N] files changed across [areas]\n [N] commit(s) on [branch]\n```\n\nSave to history after printing:\n```bash\nmkdir -p \"$REPO_ROOT/.git-impact\"\nsqlite3 \"$REPO_ROOT/.git-impact/history.db\" \"\n CREATE TABLE IF NOT EXISTS impact_entries (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n date TEXT NOT NULL, repo_name TEXT NOT NULL,\n total_commits INTEGER NOT NULL DEFAULT 0,\n total_files INTEGER NOT NULL DEFAULT 0,\n items_json TEXT NOT NULL DEFAULT '[]',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n INSERT INTO impact_entries (date, repo_name, total_commits, total_files, items_json)\n VALUES ('$(date +%Y-%m-%d)', '$(basename $REPO_ROOT)', $COMMITS, $FILES, '$JSON');\n\" 2>/dev/null || true\n```\n\n## Mode: review\n\nQuery history and synthesise a performance review:\n```bash\nsqlite3 \"$REPO_ROOT/.git-impact/history.db\" \\\n \"SELECT date, repo_name, total_commits, items_json\n FROM impact_entries WHERE date >= '$FROM' AND date <= '$TO'\n ORDER BY date ASC;\" 2>/dev/null\n```\n\nIf no history: *\"No saved history yet. Run the standup daily for a few weeks first.\"*\n\nFormat:\n```\nPerformance Review \u2014 [Period]\n[Headline sentence \u2014 biggest contribution]\n\n\uD83D\uDE80 [High-impact theme]\n \u2022 Specific achievement with numbers...\n\n\u2705 [Medium theme] ...\n\uD83D\uDD27 [Lower theme] ...\n\n\uD83D\uDCCA [N] commits across [N] working days\n```\n\n## Mode: init\n\nAsk one at a time:\n1. \"What does your company/product do? (1\u20132 sentences)\"\n2. \"What does your manager care most about?\"\n3. \"Technical terms to translate? e.g. RLS=data security (blank to skip)\"\n\nWrite `.git-impact/context.json` and confirm:\n*\"Saved. Commit context.json to share the glossary with your team.\"*\n\n## Tone\n\nNon-technical manager audience. Short sentences. No filler. Confident \u2014 if\nyou know the impact, state it. 2 accurate bullets > 5 vague ones.\n";
|
|
6
|
+
export declare const CLAUDE_SKILL = "---\nname: git-impact\ndescription: >\n Translates git commits into plain-English business impact \u2014 for standups,\n manager updates, and performance reviews. Use this skill whenever the user\n says: \"do my standup\", \"translate my commits\", \"what did I ship today/this\n week\", \"write my standup\", \"show my impact\", \"git-impact\", \"/git-impact\",\n \"generate a performance review\", \"what have I done this quarter\", or any\n request to turn technical git output into something a non-technical manager\n can understand.\n---\n\n# git-impact\n\nTranslate git commits into plain-English business impact without an API key.\nRead git data with bash, load the repo's context file, and write the translation\ninline.\n\n## Sub-commands\n\n| User says | Mode |\n|---|---|\n| `do my standup`, `today`, no args | **today** |\n| `since yesterday`, `since 3d`, `since 2026-05-01` | **since \\<when\\>** |\n| `review`, `last 30 days`, `Q2 review` | **review** |\n| `init`, `set up context` | **init** |\n\n## Step 1 \u2014 Find the repo root\n\n```bash\ngit rev-parse --show-toplevel 2>/dev/null\n```\n\nIf it fails: *\"No git repository found. Open a project folder first.\"* Stop.\n\n## Step 2 \u2014 Load context\n\n```bash\ncat \"$REPO_ROOT/.git-impact/context.json\" 2>/dev/null || echo \"NONE\"\n```\n\nApply the glossary (technical term \u2192 plain English) and frame impact around\nmanager priorities. If no context file exists, use general language and\nsuggest running init.\n\n## Mode: today / since \\<when\\>\n\nFetch commits:\n```bash\n# today\ngit -C \"$REPO_ROOT\" log \\\n --since=\"$(date '+%Y-%m-%d') 00:00:00\" \\\n --format=\"%h|%s|%b|%an|%ad\" --date=short HEAD\n\n# since Nd \u2192 --since=\"N days ago 00:00:00\"\n# since YYYY-MM-DD \u2192 --since=\"YYYY-MM-DD 00:00:00\"\n```\n\nFetch files changed:\n```bash\nFIRST=$(git -C \"$REPO_ROOT\" log --since=\"...\" --format=\"%h\" HEAD | tail -1)\ngit -C \"$REPO_ROOT\" diff --stat \"$FIRST\"^ HEAD 2>/dev/null\n```\n\n**Translation rules:**\n1. Each bullet = what was done + WHY it matters to the business. Never restate the commit message.\n2. Apply glossary \u2014 replace every technical term listed in context.json.\n3. If impact can't be inferred \u2192 \"technical foundation work for [area]\". Never hallucinate.\n4. Group related commits \u2014 4 auth commits = 1 bullet.\n5. WIP commits \u2192 \"\u23F3 In progress: [what] \u2192 [expected outcome]\"\n6. Be specific \u2014 use numbers from commit messages when they exist.\n\n**Output:**\n```\n\uD83D\uDCC5 [Day, Date]\n\n\u2705 [Plain-English summary]\n \u2192 [Business impact \u2014 who it unblocks, what risk it reduces]\n\n\u23F3 In progress: [what]\n \u2192 [Expected outcome]\n\n\uD83D\uDCC1 [N] files changed across [areas]\n [N] commit(s) on [branch]\n```\n\nSave to history after printing:\n```bash\nmkdir -p \"$REPO_ROOT/.git-impact\"\nsqlite3 \"$REPO_ROOT/.git-impact/history.db\" \"\n CREATE TABLE IF NOT EXISTS impact_entries (\n id INTEGER PRIMARY KEY AUTOINCREMENT,\n date TEXT NOT NULL, repo_name TEXT NOT NULL,\n total_commits INTEGER NOT NULL DEFAULT 0,\n total_files INTEGER NOT NULL DEFAULT 0,\n items_json TEXT NOT NULL DEFAULT '[]',\n created_at TEXT NOT NULL DEFAULT (datetime('now'))\n );\n INSERT INTO impact_entries (date, repo_name, total_commits, total_files, items_json)\n VALUES ('$(date +%Y-%m-%d)', '$(basename $REPO_ROOT)', $COMMITS, $FILES, '$JSON');\n\" 2>/dev/null || true\n```\n\nThen regenerate the HTML report and tell the user where to find it:\n```bash\ncd \"$REPO_ROOT\" && npx -y git-impact view --no-open --date \"$(date +%Y-%m-%d)\" 2>/dev/null || true\n```\n\nPrint the file URL on the last line so the user can \u2318-click to open it:\n```\n\uD83D\uDD17 file://$REPO_ROOT/.git-impact/result.html?date=$(date +%Y-%m-%d)\n```\n\n## Mode: review\n\nQuery history and synthesise a performance review:\n```bash\nsqlite3 \"$REPO_ROOT/.git-impact/history.db\" \\\n \"SELECT date, repo_name, total_commits, items_json\n FROM impact_entries WHERE date >= '$FROM' AND date <= '$TO'\n ORDER BY date ASC;\" 2>/dev/null\n```\n\nIf no history: *\"No saved history yet. Run the standup daily for a few weeks first.\"*\n\nFormat:\n```\nPerformance Review \u2014 [Period]\n[Headline sentence \u2014 biggest contribution]\n\n\uD83D\uDE80 [High-impact theme]\n \u2022 Specific achievement with numbers...\n\n\u2705 [Medium theme] ...\n\uD83D\uDD27 [Lower theme] ...\n\n\uD83D\uDCCA [N] commits across [N] working days\n```\n\n## Mode: init\n\nAsk one at a time:\n1. \"What does your company/product do? (1\u20132 sentences)\"\n2. \"What does your manager care most about?\"\n3. \"Technical terms to translate? e.g. RLS=data security (blank to skip)\"\n\nWrite `.git-impact/context.json` and confirm:\n*\"Saved. Commit context.json to share the glossary with your team.\"*\n\n## Tone\n\nNon-technical manager audience. Short sentences. No filler. Confident \u2014 if\nyou know the impact, state it. 2 accurate bullets > 5 vague ones.\n";
|
|
7
7
|
export declare const CLAUDE_MD_BLOCK = "\n## git-impact\n\nThis repo uses [git-impact](https://github.com/you/git-impact) for standup and\nperformance review generation.\n\n- Say **\"do my standup\"** to translate today's commits into business impact\n- Say **\"git-impact since 3d\"** to look back further\n- Say **\"generate a performance review\"** after a few weeks of standups\n- Say **\"set up context for this repo\"** to configure the glossary\n\nContext is stored in `.git-impact/context.json` (committed, team-shared).\nHistory is stored in `.git-impact/history.db` (gitignored, per-machine).\n";
|
|
8
8
|
export declare const COPILOT_INSTRUCTIONS = "# git-impact\n\nTranslate git commits into plain-English standup bullets when the user asks\nto \"do my standup\", \"translate my commits\", \"what did I ship today\", or\n\"generate a performance review\".\n\n## How to translate commits\n\n1. Run `git log --since=\"today 00:00:00\" --format=\"%h|%s|%b\" HEAD` to get commits\n2. Read `.git-impact/context.json` for glossary and company context\n3. Translate into 2\u20135 bullets following these rules:\n - What was done + WHY it matters (never restate commit messages)\n - Apply glossary terms from context.json\n - Group related commits into one bullet\n - WIP commits \u2192 \"\u23F3 In progress: [what] \u2192 [expected outcome]\"\n - If impact can't be inferred \u2192 \"technical foundation work for [area]\"\n\n## Output format\n\n```\n\uD83D\uDCC5 [Date]\n\u2705 [Summary] \u2192 [Business impact]\n\u23F3 In progress: [What] \u2192 [Expected outcome]\n\uD83D\uDCC1 [N] files changed across [areas]\n```\n\nFor performance reviews, query `.git-impact/history.db` and group by theme.\n";
|
|
9
9
|
export declare const CURSOR_RULES = "---\ndescription: git-impact standup and performance review generation\nglobs: []\nalwaysApply: false\n---\n\n# git-impact\n\nWhen the user asks to \"do my standup\", \"translate commits\", \"what did I ship\",\nor \"generate a performance review\":\n\n1. Find repo root: `git rev-parse --show-toplevel`\n2. Load context: `cat .git-impact/context.json`\n3. Fetch commits: `git log --since=\"today 00:00:00\" --format=\"%h|%s|%b\" HEAD`\n4. Translate into 2\u20135 plain-English bullets:\n - Apply glossary from context.json\n - Each bullet = what + why it matters (never restate commit messages)\n - Group related commits, flag WIP with \u23F3\n5. Format: \u2705 [summary] \u2192 [business impact]\n6. Save to `.git-impact/history.db` via sqlite3\n\nFor reviews: query history.db and group by theme (Features, Security, Reliability, etc.)\n";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,YAAY,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,eAAO,MAAM,YAAY,g8JAyJxB,CAAC;AAIF,eAAO,MAAM,eAAe,yjBAa3B,CAAC;AAIF,eAAO,MAAM,oBAAoB,miCA2BhC,CAAC;AAIF,eAAO,MAAM,YAAY,m1BAsBxB,CAAC;AAIF,eAAO,MAAM,cAAc,yhCA+B1B,CAAC;AAIF,eAAO,MAAM,gBAAgB,GAC3B,oBAAoB,MAAM,EAC1B,mBAAmB,MAAM,EACzB,UAAU,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,KAC/B,MAKO,CAAC"}
|
package/dist/init/templates.js
CHANGED
|
@@ -110,6 +110,16 @@ sqlite3 "$REPO_ROOT/.git-impact/history.db" "
|
|
|
110
110
|
" 2>/dev/null || true
|
|
111
111
|
\`\`\`
|
|
112
112
|
|
|
113
|
+
Then regenerate the HTML report and tell the user where to find it:
|
|
114
|
+
\`\`\`bash
|
|
115
|
+
cd "$REPO_ROOT" && npx -y git-impact view --no-open --date "$(date +%Y-%m-%d)" 2>/dev/null || true
|
|
116
|
+
\`\`\`
|
|
117
|
+
|
|
118
|
+
Print the file URL on the last line so the user can ⌘-click to open it:
|
|
119
|
+
\`\`\`
|
|
120
|
+
🔗 file://$REPO_ROOT/.git-impact/result.html?date=$(date +%Y-%m-%d)
|
|
121
|
+
\`\`\`
|
|
122
|
+
|
|
113
123
|
## Mode: review
|
|
114
124
|
|
|
115
125
|
Query history and synthesise a performance review:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iFAAiF;AAEpE,QAAA,YAAY,GAAG
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/init/templates.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;AAEH,iFAAiF;AAEpE,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyJ3B,CAAC;AAEF,iFAAiF;AAEpE,QAAA,eAAe,GAAG;;;;;;;;;;;;;CAa9B,CAAC;AAEF,iFAAiF;AAEpE,QAAA,oBAAoB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BnC,CAAC;AAEF,iFAAiF;AAEpE,QAAA,YAAY,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsB3B,CAAC;AAEF,iFAAiF;AAEpE,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+B7B,CAAC;AAEF,iFAAiF;AAE1E,MAAM,gBAAgB,GAAG,CAC9B,kBAA0B,EAC1B,iBAAyB,EACzB,QAAgC,EACxB,EAAE,CACV,IAAI,CAAC,SAAS,CACZ,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,QAAQ,EAAE,EACnD,IAAI,EACJ,CAAC,CACF,GAAG,IAAI,CAAC;AATE,QAAA,gBAAgB,oBASlB"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generates a self-contained HTML report from saved standup history.
|
|
3
|
+
* Open `.git-impact/result.html` directly in a browser via file://
|
|
4
|
+
* → optional ?date=YYYY-MM-DD selects a specific day
|
|
5
|
+
*/
|
|
6
|
+
export interface ReportItem {
|
|
7
|
+
status: "done" | "in_progress" | "blocked";
|
|
8
|
+
summary: string;
|
|
9
|
+
impact?: string;
|
|
10
|
+
technical_note?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface ReportEntry {
|
|
13
|
+
date: string;
|
|
14
|
+
repoName: string;
|
|
15
|
+
totalCommits: number;
|
|
16
|
+
totalFiles: number;
|
|
17
|
+
filesSummary?: string;
|
|
18
|
+
items: ReportItem[];
|
|
19
|
+
}
|
|
20
|
+
export declare function renderReportHtml(entries: ReportEntry[], repoName: string): string;
|
|
21
|
+
//# sourceMappingURL=html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.d.ts","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS,CAAC;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,UAAU,EAAE,CAAC;CACrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmOjF"}
|
|
@@ -0,0 +1,245 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Generates a self-contained HTML report from saved standup history.
|
|
4
|
+
* Open `.git-impact/result.html` directly in a browser via file://
|
|
5
|
+
* → optional ?date=YYYY-MM-DD selects a specific day
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.renderReportHtml = renderReportHtml;
|
|
9
|
+
function renderReportHtml(entries, repoName) {
|
|
10
|
+
// Newest first for the picker
|
|
11
|
+
const sorted = [...entries].sort((a, b) => b.date.localeCompare(a.date));
|
|
12
|
+
const dataJson = JSON.stringify(sorted).replace(/</g, "\\u003c");
|
|
13
|
+
return `<!doctype html>
|
|
14
|
+
<html lang="en">
|
|
15
|
+
<head>
|
|
16
|
+
<meta charset="utf-8" />
|
|
17
|
+
<meta name="viewport" content="width=device-width, initial-scale=1" />
|
|
18
|
+
<title>git-impact — ${escapeHtml(repoName)}</title>
|
|
19
|
+
<style>
|
|
20
|
+
:root {
|
|
21
|
+
--bg: #0d1117;
|
|
22
|
+
--panel: #161b22;
|
|
23
|
+
--border: #30363d;
|
|
24
|
+
--text: #e6edf3;
|
|
25
|
+
--muted: #8b949e;
|
|
26
|
+
--accent: #58a6ff;
|
|
27
|
+
--green: #3fb950;
|
|
28
|
+
--amber: #d29922;
|
|
29
|
+
--red: #f85149;
|
|
30
|
+
}
|
|
31
|
+
@media (prefers-color-scheme: light) {
|
|
32
|
+
:root {
|
|
33
|
+
--bg: #ffffff;
|
|
34
|
+
--panel: #f6f8fa;
|
|
35
|
+
--border: #d0d7de;
|
|
36
|
+
--text: #1f2328;
|
|
37
|
+
--muted: #59636e;
|
|
38
|
+
--accent: #0969da;
|
|
39
|
+
--green: #1a7f37;
|
|
40
|
+
--amber: #9a6700;
|
|
41
|
+
--red: #cf222e;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
* { box-sizing: border-box; }
|
|
45
|
+
body {
|
|
46
|
+
margin: 0;
|
|
47
|
+
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", system-ui, sans-serif;
|
|
48
|
+
background: var(--bg);
|
|
49
|
+
color: var(--text);
|
|
50
|
+
line-height: 1.55;
|
|
51
|
+
}
|
|
52
|
+
header {
|
|
53
|
+
border-bottom: 1px solid var(--border);
|
|
54
|
+
padding: 18px 28px;
|
|
55
|
+
display: flex;
|
|
56
|
+
align-items: center;
|
|
57
|
+
gap: 18px;
|
|
58
|
+
flex-wrap: wrap;
|
|
59
|
+
background: var(--panel);
|
|
60
|
+
}
|
|
61
|
+
header h1 {
|
|
62
|
+
margin: 0;
|
|
63
|
+
font-size: 18px;
|
|
64
|
+
font-weight: 600;
|
|
65
|
+
letter-spacing: -0.01em;
|
|
66
|
+
}
|
|
67
|
+
header .repo {
|
|
68
|
+
color: var(--muted);
|
|
69
|
+
font-family: ui-monospace, "SF Mono", Menlo, monospace;
|
|
70
|
+
font-size: 13px;
|
|
71
|
+
}
|
|
72
|
+
header .spacer { flex: 1; }
|
|
73
|
+
header select {
|
|
74
|
+
background: var(--bg);
|
|
75
|
+
color: var(--text);
|
|
76
|
+
border: 1px solid var(--border);
|
|
77
|
+
border-radius: 6px;
|
|
78
|
+
padding: 6px 10px;
|
|
79
|
+
font-size: 13px;
|
|
80
|
+
font-family: inherit;
|
|
81
|
+
}
|
|
82
|
+
main {
|
|
83
|
+
max-width: 760px;
|
|
84
|
+
margin: 0 auto;
|
|
85
|
+
padding: 36px 28px 80px;
|
|
86
|
+
}
|
|
87
|
+
.date {
|
|
88
|
+
font-size: 28px;
|
|
89
|
+
font-weight: 600;
|
|
90
|
+
margin: 0 0 6px;
|
|
91
|
+
letter-spacing: -0.02em;
|
|
92
|
+
}
|
|
93
|
+
.meta {
|
|
94
|
+
color: var(--muted);
|
|
95
|
+
font-size: 13px;
|
|
96
|
+
margin-bottom: 32px;
|
|
97
|
+
}
|
|
98
|
+
.item {
|
|
99
|
+
border-left: 3px solid var(--border);
|
|
100
|
+
padding: 6px 0 6px 18px;
|
|
101
|
+
margin: 0 0 24px;
|
|
102
|
+
}
|
|
103
|
+
.item.done { border-color: var(--green); }
|
|
104
|
+
.item.in_progress { border-color: var(--amber); }
|
|
105
|
+
.item.blocked { border-color: var(--red); }
|
|
106
|
+
.item .summary {
|
|
107
|
+
font-weight: 600;
|
|
108
|
+
margin-bottom: 6px;
|
|
109
|
+
}
|
|
110
|
+
.item .summary::before {
|
|
111
|
+
margin-right: 8px;
|
|
112
|
+
}
|
|
113
|
+
.item.done .summary::before { content: "✅"; }
|
|
114
|
+
.item.in_progress .summary::before { content: "⏳"; }
|
|
115
|
+
.item.blocked .summary::before { content: "🚫"; }
|
|
116
|
+
.item .impact {
|
|
117
|
+
color: var(--muted);
|
|
118
|
+
font-size: 14px;
|
|
119
|
+
}
|
|
120
|
+
.item .impact::before {
|
|
121
|
+
content: "→ ";
|
|
122
|
+
color: var(--accent);
|
|
123
|
+
}
|
|
124
|
+
.item .note {
|
|
125
|
+
color: var(--muted);
|
|
126
|
+
font-size: 12px;
|
|
127
|
+
margin-top: 4px;
|
|
128
|
+
font-family: ui-monospace, "SF Mono", Menlo, monospace;
|
|
129
|
+
}
|
|
130
|
+
footer {
|
|
131
|
+
color: var(--muted);
|
|
132
|
+
font-size: 12px;
|
|
133
|
+
padding-top: 24px;
|
|
134
|
+
border-top: 1px solid var(--border);
|
|
135
|
+
margin-top: 40px;
|
|
136
|
+
}
|
|
137
|
+
.empty {
|
|
138
|
+
text-align: center;
|
|
139
|
+
color: var(--muted);
|
|
140
|
+
padding: 80px 0;
|
|
141
|
+
}
|
|
142
|
+
@media print {
|
|
143
|
+
header { display: none; }
|
|
144
|
+
main { max-width: none; padding: 0; }
|
|
145
|
+
}
|
|
146
|
+
</style>
|
|
147
|
+
</head>
|
|
148
|
+
<body>
|
|
149
|
+
<header>
|
|
150
|
+
<h1>git-impact</h1>
|
|
151
|
+
<span class="repo">${escapeHtml(repoName)}</span>
|
|
152
|
+
<span class="spacer"></span>
|
|
153
|
+
<select id="date-picker" aria-label="Select date"></select>
|
|
154
|
+
</header>
|
|
155
|
+
<main id="content"><div class="empty">Loading…</div></main>
|
|
156
|
+
<script>
|
|
157
|
+
const ENTRIES = ${dataJson};
|
|
158
|
+
|
|
159
|
+
const picker = document.getElementById("date-picker");
|
|
160
|
+
const content = document.getElementById("content");
|
|
161
|
+
|
|
162
|
+
function getRequestedDate() {
|
|
163
|
+
const params = new URLSearchParams(window.location.search);
|
|
164
|
+
return params.get("date");
|
|
165
|
+
}
|
|
166
|
+
|
|
167
|
+
function formatDateLabel(iso) {
|
|
168
|
+
const d = new Date(iso + "T00:00:00");
|
|
169
|
+
return d.toLocaleDateString(undefined, {
|
|
170
|
+
weekday: "long", year: "numeric", month: "long", day: "numeric"
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
174
|
+
function renderEntry(entry) {
|
|
175
|
+
if (!entry) {
|
|
176
|
+
content.innerHTML = '<div class="empty">No standup found for that date.</div>';
|
|
177
|
+
return;
|
|
178
|
+
}
|
|
179
|
+
const items = entry.items.map(function(item) {
|
|
180
|
+
const cls = item.status || "done";
|
|
181
|
+
const note = item.technical_note
|
|
182
|
+
? '<div class="note">' + escape(item.technical_note) + '</div>' : '';
|
|
183
|
+
const impact = item.impact
|
|
184
|
+
? '<div class="impact">' + escape(item.impact) + '</div>' : '';
|
|
185
|
+
return '<div class="item ' + cls + '">' +
|
|
186
|
+
'<div class="summary">' + escape(item.summary) + '</div>' +
|
|
187
|
+
impact + note +
|
|
188
|
+
'</div>';
|
|
189
|
+
}).join("");
|
|
190
|
+
|
|
191
|
+
const filesLine = entry.filesSummary
|
|
192
|
+
? '📁 ' + entry.totalFiles + ' files — ' + escape(entry.filesSummary) + '<br>'
|
|
193
|
+
: '📁 ' + entry.totalFiles + ' files changed<br>';
|
|
194
|
+
|
|
195
|
+
content.innerHTML =
|
|
196
|
+
'<h2 class="date">📅 ' + formatDateLabel(entry.date) + '</h2>' +
|
|
197
|
+
'<div class="meta">' + entry.totalCommits + ' commit(s) on ' + escape(entry.repoName) + '</div>' +
|
|
198
|
+
items +
|
|
199
|
+
'<footer>' + filesLine + '</footer>';
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
function escape(s) {
|
|
203
|
+
return String(s).replace(/[&<>"']/g, function(c) {
|
|
204
|
+
return ({ "&":"&", "<":"<", ">":">", '"':""", "'":"'" })[c];
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
|
|
208
|
+
// Populate date picker (newest first)
|
|
209
|
+
ENTRIES.forEach(function(e) {
|
|
210
|
+
const opt = document.createElement("option");
|
|
211
|
+
opt.value = e.date;
|
|
212
|
+
opt.textContent = formatDateLabel(e.date);
|
|
213
|
+
picker.appendChild(opt);
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
// Default to ?date= in URL or newest
|
|
217
|
+
const requested = getRequestedDate();
|
|
218
|
+
const defaultDate = requested || (ENTRIES[0] && ENTRIES[0].date);
|
|
219
|
+
if (defaultDate) {
|
|
220
|
+
picker.value = defaultDate;
|
|
221
|
+
renderEntry(ENTRIES.find(function(e) { return e.date === defaultDate; }));
|
|
222
|
+
} else {
|
|
223
|
+
content.innerHTML = '<div class="empty">No standups saved yet. Run "do my standup" in your repo.</div>';
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
picker.addEventListener("change", function() {
|
|
227
|
+
const params = new URLSearchParams(window.location.search);
|
|
228
|
+
params.set("date", picker.value);
|
|
229
|
+
history.replaceState(null, "", "?" + params.toString());
|
|
230
|
+
renderEntry(ENTRIES.find(function(e) { return e.date === picker.value; }));
|
|
231
|
+
});
|
|
232
|
+
</script>
|
|
233
|
+
</body>
|
|
234
|
+
</html>`;
|
|
235
|
+
}
|
|
236
|
+
function escapeHtml(s) {
|
|
237
|
+
return s.replace(/[&<>"']/g, (c) => ({
|
|
238
|
+
"&": "&",
|
|
239
|
+
"<": "<",
|
|
240
|
+
">": ">",
|
|
241
|
+
'"': """,
|
|
242
|
+
"'": "'",
|
|
243
|
+
}[c]));
|
|
244
|
+
}
|
|
245
|
+
//# sourceMappingURL=html.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"html.js","sourceRoot":"","sources":["../../src/report/html.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAkBH,4CAmOC;AAnOD,SAAgB,gBAAgB,CAAC,OAAsB,EAAE,QAAgB;IACvE,8BAA8B;IAC9B,MAAM,MAAM,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAEjE,OAAO;;;;;sBAKa,UAAU,CAAC,QAAQ,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBAqInB,UAAU,CAAC,QAAQ,CAAC;;;;;;oBAMvB,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA6EpB,CAAC;AACT,CAAC;AAED,SAAS,UAAU,CAAC,CAAS;IAC3B,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,GAAG,EAAE,OAAO;QACZ,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,MAAM;QACX,GAAG,EAAE,QAAQ;QACb,GAAG,EAAE,OAAO;KACb,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;AACV,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reads history.db, writes `.git-impact/result.html`, optionally opens in browser.
|
|
3
|
+
* Wired into the `git-impact view` CLI and the Claude Code skill (post-standup hook).
|
|
4
|
+
*/
|
|
5
|
+
export interface RenderOptions {
|
|
6
|
+
repoRoot: string;
|
|
7
|
+
open?: boolean;
|
|
8
|
+
date?: string;
|
|
9
|
+
}
|
|
10
|
+
export interface RenderResult {
|
|
11
|
+
htmlPath: string;
|
|
12
|
+
url: string;
|
|
13
|
+
entryCount: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function renderReport(opts: RenderOptions): RenderResult;
|
|
16
|
+
//# sourceMappingURL=render.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAQH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAoC9D"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Reads history.db, writes `.git-impact/result.html`, optionally opens in browser.
|
|
4
|
+
* Wired into the `git-impact view` CLI and the Claude Code skill (post-standup hook).
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.renderReport = renderReport;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const child_process_1 = require("child_process");
|
|
44
|
+
const db_1 = require("../storage/db");
|
|
45
|
+
const html_1 = require("./html");
|
|
46
|
+
function renderReport(opts) {
|
|
47
|
+
const { repoRoot, open = false, date } = opts;
|
|
48
|
+
// Pull every saved standup. Wide date range is intentional — a few thousand
|
|
49
|
+
// rows is fine for inline-embedding in a single static file.
|
|
50
|
+
const entries = (0, db_1.getEntriesForRange)("0000-01-01", "9999-12-31", repoRoot);
|
|
51
|
+
const repoName = entries[0]?.repoName ?? path.basename(repoRoot);
|
|
52
|
+
const reportEntries = entries.map((e) => ({
|
|
53
|
+
date: e.date,
|
|
54
|
+
repoName: e.repoName,
|
|
55
|
+
totalCommits: e.totalCommits,
|
|
56
|
+
totalFiles: e.totalFiles,
|
|
57
|
+
filesSummary: e.filesSummary,
|
|
58
|
+
items: e.items.map((it) => ({
|
|
59
|
+
status: it.status,
|
|
60
|
+
summary: it.summary,
|
|
61
|
+
impact: it.impact,
|
|
62
|
+
technical_note: it.technical_note,
|
|
63
|
+
})),
|
|
64
|
+
}));
|
|
65
|
+
const html = (0, html_1.renderReportHtml)(reportEntries, repoName);
|
|
66
|
+
const outDir = path.join(repoRoot, ".git-impact");
|
|
67
|
+
fs.mkdirSync(outDir, { recursive: true });
|
|
68
|
+
const htmlPath = path.join(outDir, "result.html");
|
|
69
|
+
fs.writeFileSync(htmlPath, html, "utf-8");
|
|
70
|
+
const url = `file://${htmlPath}${date ? `?date=${date}` : ""}`;
|
|
71
|
+
if (open) {
|
|
72
|
+
openInBrowser(url);
|
|
73
|
+
}
|
|
74
|
+
return { htmlPath, url, entryCount: entries.length };
|
|
75
|
+
}
|
|
76
|
+
function openInBrowser(url) {
|
|
77
|
+
const platform = process.platform;
|
|
78
|
+
const cmd = platform === "darwin" ? "open" :
|
|
79
|
+
platform === "win32" ? "cmd" :
|
|
80
|
+
"xdg-open";
|
|
81
|
+
const args = platform === "win32" ? ["/c", "start", "", url] : [url];
|
|
82
|
+
// Detached so we don't block the CLI; ignore errors silently — the URL is
|
|
83
|
+
// printed regardless so the user can copy-paste.
|
|
84
|
+
try {
|
|
85
|
+
(0, child_process_1.spawn)(cmd, args, { detached: true, stdio: "ignore" }).unref();
|
|
86
|
+
}
|
|
87
|
+
catch {
|
|
88
|
+
/* no-op */
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"render.js","sourceRoot":"","sources":["../../src/report/render.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,oCAoCC;AAtDD,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AACtC,sCAAmD;AACnD,iCAAuD;AAcvD,SAAgB,YAAY,CAAC,IAAmB;IAC9C,MAAM,EAAE,QAAQ,EAAE,IAAI,GAAG,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;IAE9C,4EAA4E;IAC5E,6DAA6D;IAC7D,MAAM,OAAO,GAAG,IAAA,uBAAkB,EAAC,YAAY,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;IACzE,MAAM,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,EAAE,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEjE,MAAM,aAAa,GAAkB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACvD,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,UAAU,EAAE,CAAC,CAAC,UAAU;QACxB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YAC1B,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,MAAM,EAAE,EAAE,CAAC,MAAM;YACjB,cAAc,EAAE,EAAE,CAAC,cAAc;SAClC,CAAC,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,MAAM,IAAI,GAAG,IAAA,uBAAgB,EAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;IAEvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;IAClD,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClD,EAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;IAE1C,MAAM,GAAG,GAAG,UAAU,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IAE/D,IAAI,IAAI,EAAE,CAAC;QACT,aAAa,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,UAAU,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACvD,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;IAClC,MAAM,GAAG,GACP,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;QAChC,QAAQ,KAAK,OAAO,CAAE,CAAC,CAAC,KAAK,CAAE,CAAC;YAChC,UAAU,CAAC;IACb,MAAM,IAAI,GAAG,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IAErE,0EAA0E;IAC1E,iDAAiD;IACjD,IAAI,CAAC;QACH,IAAA,qBAAK,EAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,WAAW;IACb,CAAC;AACH,CAAC"}
|