commitshow 0.3.16 → 0.3.18

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.
@@ -17,7 +17,12 @@ export const c = {
17
17
  // matched the Claude Code logo too literally — CEO pulled it back to
18
18
  // brand on 2026-05-02.)
19
19
  pixelInk: rgb(0xF0, 0xC0, 0x40),
20
- cream: rgb(0xF8, 0xF5, 0xEE),
20
+ // `cream` was originally truecolor #F8F5EE (near-white), which is
21
+ // invisible on light-background terminals. Use the terminal's default
22
+ // foreground color (no escape) so body text reads on both light and
23
+ // dark backgrounds. The brand cream is preserved for accents (gold ·
24
+ // scarlet · teal) which stay readable on both.
25
+ cream: (s) => s,
21
26
  teal: rgb(0x00, 0xD4, 0xAA),
22
27
  scarlet: rgb(0xC8, 0x10, 0x2E),
23
28
  muted: rgb(0x6B, 0x72, 0x80),
@@ -239,20 +239,43 @@ export function renderAudit(view) {
239
239
  // ── 3 strengths + 2 concerns box · errors-first reorder (2026-04-30) ──
240
240
  // CONCERNS render before STRENGTHS · the value prop is "what your AI
241
241
  // missed", so they lead. Score follows as the receipt below.
242
+ //
243
+ // 3-tier severity (2026-05-04): the engine ranks weaknesses[] by impact,
244
+ // so we treat concerns[0] as CRITICAL (✕ scarlet) and the remainder as
245
+ // WARNING (⚠ gold). Strengths stay as ↑ teal. A one-line counter above
246
+ // the box gives a scannable tone summary without needing finding IDs.
242
247
  const strengths = asStringArray(snapshot?.rich_analysis?.scout_brief?.strengths, 3);
243
248
  const concerns = asStringArray(snapshot?.rich_analysis?.scout_brief?.weaknesses, 2);
244
249
  if (strengths.length > 0 || concerns.length > 0) {
245
250
  const bulletWidth = CONTENT_W - 2;
251
+ // Findings counter line · sits ABOVE the box so a quick scan picks up
252
+ // the tone (any criticals?) before reading the bullets.
253
+ const critCount = Math.min(concerns.length, 1);
254
+ const warnCount = Math.max(0, concerns.length - 1);
255
+ const counterParts = [];
256
+ if (critCount > 0)
257
+ counterParts.push(c.scarlet(`${critCount} critical`));
258
+ if (warnCount > 0)
259
+ counterParts.push(c.gold(`${warnCount} warning`));
260
+ if (strengths.length > 0)
261
+ counterParts.push(c.teal(`${strengths.length} strength${strengths.length === 1 ? '' : 's'}`));
262
+ if (counterParts.length > 0) {
263
+ lines.push(' ' + c.muted('Findings · ') + counterParts.join(c.muted(' · ')));
264
+ lines.push('');
265
+ }
246
266
  lines.push(' ' + boxTop());
247
267
  // Heading row inside the box · "What this build missed" lead.
248
268
  if (concerns.length > 0) {
249
269
  const heading = 'What this build missed';
250
270
  lines.push(' ' + boxRow(heading.length, c.bold(c.scarlet(heading))));
251
271
  }
252
- for (const s of concerns) {
272
+ concerns.forEach((s, i) => {
253
273
  const txt = truncate(s, bulletWidth);
254
- lines.push(' ' + boxRow(2 + txt.length, c.scarlet('↓ ') + c.cream(txt)));
255
- }
274
+ const isCrit = i === 0;
275
+ const icon = isCrit ? '✕ ' : '⚠ ';
276
+ const tone = isCrit ? c.scarlet : c.gold;
277
+ lines.push(' ' + boxRow(2 + txt.length, tone(icon) + c.cream(txt)));
278
+ });
256
279
  if (strengths.length > 0) {
257
280
  if (concerns.length > 0)
258
281
  lines.push(' ' + boxBlank());
@@ -396,6 +419,14 @@ export function renderAudit(view) {
396
419
  const url = `https://commit.show/projects/${p.id}`;
397
420
  lines.push(' ' + c.muted('→ ') + c.cream(url));
398
421
  lines.push('');
422
+ // Agent-loop hint · nudges users into the `--json | jq` workflow that
423
+ // makes this CLI useful inside Claude Code · Cursor · etc. Static for
424
+ // V1 — could go contextual (CRIT-aware suggestions) in V1.5.
425
+ if (concerns.length > 0) {
426
+ const cmd = `commitshow audit ${p.github_url?.replace(/^https?:\/\//, '') ?? '.'} --json | jq .concerns`;
427
+ lines.push(' ' + c.muted('next · feed your AI loop → ') + c.cream(cmd));
428
+ lines.push('');
429
+ }
399
430
  const wordmark = 'commit.show';
400
431
  const footerPad = Math.max(0, BOX_W - wordmark.length);
401
432
  lines.push(' '.repeat(footerPad) + c.gold(wordmark));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "commitshow",
3
- "version": "0.3.16",
3
+ "version": "0.3.18",
4
4
  "description": "commit.show CLI — audit any vibe-coded project from your terminal.",
5
5
  "type": "module",
6
6
  "bin": {