mixdog 0.9.27 → 0.9.29

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.
@@ -64,7 +64,11 @@ export function resolveTuiRuntimeNotificationDelivery(event, text) {
64
64
  // UI-only notices (e.g. boot auto-update outcome): render as a transcript
65
65
  // notice, never enqueue anything model-visible.
66
66
  if (meta.kind === 'update-notice') {
67
- return { action: 'notice', displayText: trimmed, tone: meta.tone === 'warn' ? 'warn' : 'info' };
67
+ // Wording lives here (the notice surface), not in the emitting runtime:
68
+ // the emitter only supplies meta.version; the sentence is composed here.
69
+ const ver = String(meta.version || '').trim();
70
+ const displayText = ver ? `mixdog v${ver} ready — restart to apply.` : trimmed;
71
+ return { action: 'notice', displayText, tone: meta.tone === 'warn' ? 'warn' : 'info' };
68
72
  }
69
73
  if (!isExecutionNotification(event, trimmed, parsed)) {
70
74
  return { action: 'enqueue', displayText: trimmed, modelContent: trimmed };
package/src/tui/index.jsx CHANGED
@@ -18,6 +18,7 @@ import { emitTerminalBackground, loadThemeSettingFromConfig, theme } from './the
18
18
  import { POP_KITTY, DISABLE_MODIFY_OTHER_KEYS } from './keyboard-protocol.mjs';
19
19
  import { displayWidth } from './display-width.mjs';
20
20
  import { rotateBoundedLog, PLUGIN_LOG_MAX_BYTES, PLUGIN_LOG_KEEP_BYTES } from '../lib/mixdog-debug.cjs';
21
+ import { localPackageVersion } from '../runtime/shared/update-checker.mjs';
21
22
 
22
23
  // Trailing `\x1b[>0s` restores XTSHIFTESCAPE (shift-to-select-extend) to its
23
24
  // terminal default; MOUSE_TRACKING_ON opts into `\x1b[>1s`, so every mouse/alt
@@ -290,7 +291,7 @@ function paintBootSplash() {
290
291
  out += `${bold}${fg}${center(logo[i])}${reset}\r\n`;
291
292
  }
292
293
  out += '\r\n';
293
- out += `${subtleFg}${center(`mixdog coding agent · ${process.cwd()}`)}${reset}`;
294
+ out += `${subtleFg}${center(`mixdog coding agent · v${localPackageVersion()} · ${process.cwd()}`)}${reset}`;
294
295
 
295
296
  // Park the cursor at home so ink's first frame paints top-down over the
296
297
  // splash instead of starting at the bottom row and scrolling the screen.
@@ -13,20 +13,24 @@ exploration only. Diagnosis agreement or problem-pointing is NOT approval.
13
13
 
14
14
  Lead supervises: delegates, coordinates, judges, decides. Route by complexity
15
15
  (after approval):
16
- - Lead directly: simple 1–2 step work, coordination, config, git deployment.
17
- - Worker: multi-step implementation. Heavy Worker: high-complexity scopes.
16
+ - Lead directly: only one-step fixes doable in a single turn, plus
17
+ coordination, config, and git deployment. Everything else delegates.
18
+ - Worker: any multi-step or multi-file implementation. Heavy Worker:
19
+ high-complexity scopes.
18
20
  - Reviewer: verify implementation scopes. Debugger: very high complexity, or
19
21
  root-causing already failed once.
20
22
 
21
23
  1. Plan — present a draft plan before ANY implementation; if not approved,
22
24
  revise and re-present (ping-pong) until an explicit go-ahead.
23
- 2. Delegate — split into the maximum independent scopes; spawn all in the
24
- SAME turn (parallel by default; sequential steps only inside one complex
25
- scope, gated build/test-green). Shared/cross-cutting code does NOT justify
26
- merging scopes split per path, verify shared parts yourself; a genuinely
27
- inseparable single scope must be stated. Briefs per the Lead brief
28
- contract. After spawning async agents, END THE TURN.
29
- 3. Review pair one reviewer 1:1 per implementation scope, same turn.
25
+ 2. Delegate — maximize distribution: split the work into as many independent
26
+ implementation scopes as possible and hand each to its own worker or
27
+ heavy-worker, all spawned in the SAME turn (parallel by default; sequential
28
+ steps only inside one complex scope, gated build/test-green). Fan them out
29
+ across agents, never one at a time. Only a genuinely inseparable single
30
+ scope stays whole, and say so. Briefs per the Lead brief contract. After
31
+ spawning async agents, END THE TURN.
32
+ 3. Review — spawn one reviewer 1:1 per implementation scope, all reviewers in
33
+ the same turn once their scopes land.
30
34
  Cross-check agent results yourself; send fixes back to the original scope
31
35
  and loop fix -> re-verify until clean. Skip only for simple low-risk work.
32
36
  Debugger first when the user asks for debugging or a bug survives 2+ fix
@@ -35,7 +39,7 @@ Lead supervises: delegates, coordinates, judges, decides. Route by complexity
35
39
  and how work proceeds, marked in-progress — never as a conclusion.
36
40
  4. Report — final report briefs the whole work vs the approved plan and the
37
41
  verified result, distinct from interim updates. Never forward raw agent
38
- output. Ask about ship/deploy when relevant; deploy/build/commit only
39
- after user feedback with no issues.
42
+ output. Ask about ship/deploy when relevant; deploy/build/commit only on an
43
+ explicit user request, after feedback with no issues.
40
44
 
41
45
  On major direction shifts mid-work, pause and re-consult the user.
@@ -24,7 +24,9 @@ import stringWidth from 'string-width';
24
24
  const graphemeSegmenter = new Intl.Segmenter(undefined, { granularity: 'grapheme' });
25
25
 
26
26
  function isProblemCodePoint(cp) {
27
- return (cp >= 0x2460 && cp <= 0x24ff) || (cp >= 0x2194 && cp <= 0x21ff);
27
+ // [mixdog fork] U+21BB (↻ quota-reset marker) excluded: WT draws it 1 cell,
28
+ // so widening it shifted the right-aligned statusline label one col left.
29
+ return (cp >= 0x2460 && cp <= 0x24ff) || (cp >= 0x2194 && cp <= 0x21ff && cp !== 0x21bb);
28
30
  }
29
31
 
30
32
  // [mixdog fork] Fast precheck for the problem ranges above. Lets the hot path