specsmd 0.1.54 → 0.1.55

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.
@@ -273,7 +273,7 @@ function readUntrackedFileDiff(repoRoot, absolutePath) {
273
273
  }
274
274
 
275
275
  const result = runGit(
276
- ['-c', 'color.ui=always', '--no-pager', 'diff', '--no-index', '--', '/dev/null', absolutePath],
276
+ ['-c', 'color.ui=false', '--no-pager', 'diff', '--no-index', '--', '/dev/null', absolutePath],
277
277
  repoRoot,
278
278
  { acceptedStatuses: [0, 1] }
279
279
  );
@@ -305,7 +305,7 @@ function loadGitDiffPreview(changeEntry) {
305
305
  }
306
306
  }
307
307
 
308
- const args = ['-c', 'color.ui=always', '--no-pager', 'diff'];
308
+ const args = ['-c', 'color.ui=false', '--no-pager', 'diff'];
309
309
  if (bucket === 'staged') {
310
310
  args.push('--cached');
311
311
  }
@@ -1558,7 +1558,7 @@ function getSectionOrderForView(view, options = {}) {
1558
1558
  return ['standards', 'stats', 'warnings', 'error-details'];
1559
1559
  }
1560
1560
  if (view === 'git') {
1561
- return ['git-changes'];
1561
+ return ['git-status', 'git-changes', 'git-branches', 'git-commits', 'git-stash', 'git-diff'];
1562
1562
  }
1563
1563
  const sections = [];
1564
1564
  if (includeWorktrees) {
@@ -2752,7 +2752,7 @@ function buildQuickHelpText(view, options = {}) {
2752
2752
  }
2753
2753
  parts.push('a current', 'f files');
2754
2754
  } else if (view === 'git') {
2755
- parts.push('d changes', 'c/A/p/P git(soon)');
2755
+ parts.push('6 status', '7 files', '8 branches', '9 commits', '0 stash', '- diff');
2756
2756
  }
2757
2757
  parts.push(`tab1 ${activeLabel}`);
2758
2758
 
@@ -2764,7 +2764,7 @@ function buildQuickHelpText(view, options = {}) {
2764
2764
  return parts.join(' | ');
2765
2765
  }
2766
2766
 
2767
- function buildLazyGitCommandStrip(view, options = {}) {
2767
+ function buildGitCommandStrip(view, options = {}) {
2768
2768
  const {
2769
2769
  hasWorktrees = false,
2770
2770
  previewOpen = false
@@ -2784,7 +2784,7 @@ function buildLazyGitCommandStrip(view, options = {}) {
2784
2784
  } else if (view === 'health') {
2785
2785
  parts.push('s standards', 't stats', 'w warnings');
2786
2786
  } else if (view === 'git') {
2787
- parts.push('d changes', 'space preview', 'c commit (soon)', 'A amend (soon)', 'p push (soon)', 'P pull (soon)');
2787
+ parts.push('6 status', '7 files', '8 branches', '9 commits', '0 stash', '- diff', 'space preview');
2788
2788
  }
2789
2789
 
2790
2790
  if (previewOpen) {
@@ -2797,7 +2797,7 @@ function buildLazyGitCommandStrip(view, options = {}) {
2797
2797
  return parts.join(' | ');
2798
2798
  }
2799
2799
 
2800
- function buildLazyGitCommandLogLine(options = {}) {
2800
+ function buildGitCommandLogLine(options = {}) {
2801
2801
  const {
2802
2802
  statusLine = '',
2803
2803
  activeFlow = 'fire',
@@ -2874,7 +2874,7 @@ function buildHelpOverlayLines(options = {}) {
2874
2874
  { text: '', color: undefined, bold: false },
2875
2875
  { text: 'Tab 5 Git Changes', color: 'yellow', bold: true },
2876
2876
  'select changed files and preview diffs',
2877
- 'commit/push/pull shortcuts are shown in footer for LazyGit-style hierarchy',
2877
+ '6 status | 7 files | 8 branches | 9 commits | 0 stash | - diff',
2878
2878
  { text: '', color: undefined, bold: false },
2879
2879
  { text: `Current view: ${String(view || 'runs').toUpperCase()}`, color: 'gray', bold: false }
2880
2880
  );
@@ -3897,24 +3897,34 @@ function createDashboardApp(deps) {
3897
3897
  return;
3898
3898
  }
3899
3899
  } else if (ui.view === 'git') {
3900
- if (input === 'd') {
3900
+ if (input === '6') {
3901
+ setSectionFocus((previous) => ({ ...previous, git: 'git-status' }));
3902
+ setPaneFocus('main');
3903
+ return;
3904
+ }
3905
+ if (input === '7') {
3901
3906
  setSectionFocus((previous) => ({ ...previous, git: 'git-changes' }));
3907
+ setPaneFocus('main');
3902
3908
  return;
3903
3909
  }
3904
- if (input === 'c') {
3905
- setStatusLine('Git commit action is not wired yet (footer mirrors LazyGit command hierarchy).');
3910
+ if (input === '8') {
3911
+ setSectionFocus((previous) => ({ ...previous, git: 'git-branches' }));
3912
+ setPaneFocus('main');
3906
3913
  return;
3907
3914
  }
3908
- if (input === 'A') {
3909
- setStatusLine('Git amend action is not wired yet (footer mirrors LazyGit command hierarchy).');
3915
+ if (input === '9') {
3916
+ setSectionFocus((previous) => ({ ...previous, git: 'git-commits' }));
3917
+ setPaneFocus('main');
3910
3918
  return;
3911
3919
  }
3912
- if (input === 'p') {
3913
- setStatusLine('Git push action is not wired yet (footer mirrors LazyGit command hierarchy).');
3920
+ if (input === '0') {
3921
+ setSectionFocus((previous) => ({ ...previous, git: 'git-stash' }));
3922
+ setPaneFocus('main');
3914
3923
  return;
3915
3924
  }
3916
- if (input === 'P') {
3917
- setStatusLine('Git pull action is not wired yet (footer mirrors LazyGit command hierarchy).');
3925
+ if (input === '-') {
3926
+ setSectionFocus((previous) => ({ ...previous, git: 'git-diff' }));
3927
+ setPaneFocus('main');
3918
3928
  return;
3919
3929
  }
3920
3930
  }
@@ -4299,11 +4309,11 @@ function createDashboardApp(deps) {
4299
4309
  availableFlowCount: availableFlowIds.length,
4300
4310
  hasWorktrees: worktreeSectionEnabled
4301
4311
  });
4302
- const commandStripText = buildLazyGitCommandStrip(ui.view, {
4312
+ const commandStripText = buildGitCommandStrip(ui.view, {
4303
4313
  hasWorktrees: worktreeSectionEnabled,
4304
4314
  previewOpen
4305
4315
  });
4306
- const commandLogLine = buildLazyGitCommandLogLine({
4316
+ const commandLogLine = buildGitCommandLogLine({
4307
4317
  statusLine,
4308
4318
  activeFlow,
4309
4319
  watchEnabled,
@@ -4391,37 +4401,37 @@ function createDashboardApp(deps) {
4391
4401
  panelCandidates = [
4392
4402
  {
4393
4403
  key: 'git-status',
4394
- title: '[1]-Status',
4404
+ title: '[6]-Status',
4395
4405
  lines: gitStatusPanelLines,
4396
4406
  borderColor: 'green'
4397
4407
  },
4398
4408
  {
4399
4409
  key: 'git-changes',
4400
- title: '[2]-Files',
4410
+ title: '[7]-Files',
4401
4411
  lines: sectionLines['git-changes'],
4402
4412
  borderColor: 'yellow'
4403
4413
  },
4404
4414
  {
4405
4415
  key: 'git-branches',
4406
- title: '[3]-Local branches',
4416
+ title: '[8]-Local branches',
4407
4417
  lines: gitBranchesPanelLines,
4408
4418
  borderColor: 'magenta'
4409
4419
  },
4410
4420
  {
4411
4421
  key: 'git-commits',
4412
- title: '[4]-Commits',
4422
+ title: '[9]-Commits',
4413
4423
  lines: gitCommitsPanelLines,
4414
4424
  borderColor: 'cyan'
4415
4425
  },
4416
4426
  {
4417
4427
  key: 'git-stash',
4418
- title: '[5]-Stash',
4428
+ title: '[0]-Stash',
4419
4429
  lines: gitStashPanelLines,
4420
4430
  borderColor: 'blue'
4421
4431
  },
4422
4432
  {
4423
4433
  key: 'git-diff',
4424
- title: '[0]-Unstaged changes',
4434
+ title: '[-]-Unstaged changes',
4425
4435
  lines: gitInlineDiffLines,
4426
4436
  borderColor: 'yellow'
4427
4437
  }
@@ -4485,7 +4495,7 @@ function createDashboardApp(deps) {
4485
4495
  }
4486
4496
 
4487
4497
  const panels = allocateSingleColumnPanels(panelCandidates, contentRowsBudget);
4488
- const lazyGitHierarchyLayout = ui.view === 'git'
4498
+ const gitHierarchyLayout = ui.view === 'git'
4489
4499
  && !ui.showHelp
4490
4500
  && !worktreeOverlayOpen
4491
4501
  && !overlayPreviewOpen
@@ -4506,7 +4516,7 @@ function createDashboardApp(deps) {
4506
4516
  });
4507
4517
 
4508
4518
  let contentNode;
4509
- if (lazyGitHierarchyLayout) {
4519
+ if (gitHierarchyLayout) {
4510
4520
  const preferredRightPanel = panelCandidates.find((panel) => panel?.key === 'git-diff')
4511
4521
  || (previewOpen && !overlayPreviewOpen
4512
4522
  ? panelCandidates.find((panel) => panel?.key === 'preview')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "specsmd",
3
- "version": "0.1.54",
3
+ "version": "0.1.55",
4
4
  "description": "Multi-agent orchestration system for AI-native software development. Delivers AI-DLC, Agile, and custom SDLC flows as markdown-based agent systems.",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {