@flyingrobots/bijou-tui 4.4.1 → 5.0.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.
Files changed (139) hide show
  1. package/README.md +92 -20
  2. package/dist/app-frame-actions.d.ts.map +1 -1
  3. package/dist/app-frame-actions.js +2 -0
  4. package/dist/app-frame-actions.js.map +1 -1
  5. package/dist/app-frame-i18n.d.ts.map +1 -1
  6. package/dist/app-frame-i18n.js +49 -0
  7. package/dist/app-frame-i18n.js.map +1 -1
  8. package/dist/app-frame-layers.d.ts +11 -1
  9. package/dist/app-frame-layers.d.ts.map +1 -1
  10. package/dist/app-frame-layers.js +19 -0
  11. package/dist/app-frame-layers.js.map +1 -1
  12. package/dist/app-frame-overlays.d.ts +82 -0
  13. package/dist/app-frame-overlays.d.ts.map +1 -0
  14. package/dist/app-frame-overlays.js +480 -0
  15. package/dist/app-frame-overlays.js.map +1 -0
  16. package/dist/app-frame-render.js +2 -2
  17. package/dist/app-frame-render.js.map +1 -1
  18. package/dist/app-frame-types.d.ts +119 -5
  19. package/dist/app-frame-types.d.ts.map +1 -1
  20. package/dist/app-frame-types.js +17 -1
  21. package/dist/app-frame-types.js.map +1 -1
  22. package/dist/app-frame-utils.d.ts.map +1 -1
  23. package/dist/app-frame-utils.js +6 -5
  24. package/dist/app-frame-utils.js.map +1 -1
  25. package/dist/app-frame.d.ts +18 -84
  26. package/dist/app-frame.d.ts.map +1 -1
  27. package/dist/app-frame.js +377 -625
  28. package/dist/app-frame.js.map +1 -1
  29. package/dist/browsable-list.d.ts +12 -0
  30. package/dist/browsable-list.d.ts.map +1 -1
  31. package/dist/browsable-list.js +17 -6
  32. package/dist/browsable-list.js.map +1 -1
  33. package/dist/canvas.d.ts.map +1 -1
  34. package/dist/canvas.js +27 -7
  35. package/dist/canvas.js.map +1 -1
  36. package/dist/collection-surface.d.ts +8 -0
  37. package/dist/collection-surface.d.ts.map +1 -1
  38. package/dist/collection-surface.js +72 -8
  39. package/dist/collection-surface.js.map +1 -1
  40. package/dist/css/text-style.d.ts +2 -0
  41. package/dist/css/text-style.d.ts.map +1 -1
  42. package/dist/css/text-style.js +18 -8
  43. package/dist/css/text-style.js.map +1 -1
  44. package/dist/debug-overlay.d.ts +19 -0
  45. package/dist/debug-overlay.d.ts.map +1 -0
  46. package/dist/debug-overlay.js +25 -0
  47. package/dist/debug-overlay.js.map +1 -0
  48. package/dist/design-language.d.ts.map +1 -1
  49. package/dist/design-language.js +4 -5
  50. package/dist/design-language.js.map +1 -1
  51. package/dist/driver.d.ts +102 -0
  52. package/dist/driver.d.ts.map +1 -1
  53. package/dist/driver.js +259 -19
  54. package/dist/driver.js.map +1 -1
  55. package/dist/file-picker.d.ts.map +1 -1
  56. package/dist/file-picker.js +2 -2
  57. package/dist/file-picker.js.map +1 -1
  58. package/dist/flex.d.ts.map +1 -1
  59. package/dist/flex.js +6 -6
  60. package/dist/flex.js.map +1 -1
  61. package/dist/focus-area.d.ts +9 -1
  62. package/dist/focus-area.d.ts.map +1 -1
  63. package/dist/focus-area.js +52 -11
  64. package/dist/focus-area.js.map +1 -1
  65. package/dist/grid.d.ts +2 -2
  66. package/dist/grid.d.ts.map +1 -1
  67. package/dist/grid.js +11 -148
  68. package/dist/grid.js.map +1 -1
  69. package/dist/help.d.ts +2 -0
  70. package/dist/help.d.ts.map +1 -1
  71. package/dist/help.js +6 -4
  72. package/dist/help.js.map +1 -1
  73. package/dist/icon-presentation.d.ts +10 -0
  74. package/dist/icon-presentation.d.ts.map +1 -0
  75. package/dist/icon-presentation.js +12 -0
  76. package/dist/icon-presentation.js.map +1 -0
  77. package/dist/index.d.ts +14 -8
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +7 -5
  80. package/dist/index.js.map +1 -1
  81. package/dist/layout-preset.d.ts +1 -1
  82. package/dist/layout-preset.d.ts.map +1 -1
  83. package/dist/motion/reconciler.d.ts +6 -2
  84. package/dist/motion/reconciler.d.ts.map +1 -1
  85. package/dist/motion/reconciler.js +40 -10
  86. package/dist/motion/reconciler.js.map +1 -1
  87. package/dist/motion/types.d.ts +3 -1
  88. package/dist/motion/types.d.ts.map +1 -1
  89. package/dist/navigable-table.d.ts +9 -10
  90. package/dist/navigable-table.d.ts.map +1 -1
  91. package/dist/navigable-table.js +33 -14
  92. package/dist/navigable-table.js.map +1 -1
  93. package/dist/notification.d.ts +15 -0
  94. package/dist/notification.d.ts.map +1 -1
  95. package/dist/notification.js +98 -29
  96. package/dist/notification.js.map +1 -1
  97. package/dist/overlay.d.ts.map +1 -1
  98. package/dist/overlay.js +40 -14
  99. package/dist/overlay.js.map +1 -1
  100. package/dist/pager.d.ts +3 -1
  101. package/dist/pager.d.ts.map +1 -1
  102. package/dist/pager.js +4 -0
  103. package/dist/pager.js.map +1 -1
  104. package/dist/pipeline/middleware/grayscale.d.ts.map +1 -1
  105. package/dist/pipeline/middleware/grayscale.js +5 -5
  106. package/dist/pipeline/middleware/grayscale.js.map +1 -1
  107. package/dist/pipeline/middleware/motion.js +2 -2
  108. package/dist/pipeline/middleware/motion.js.map +1 -1
  109. package/dist/pipeline/middleware/surface-shaders.d.ts +37 -0
  110. package/dist/pipeline/middleware/surface-shaders.d.ts.map +1 -0
  111. package/dist/pipeline/middleware/surface-shaders.js +164 -0
  112. package/dist/pipeline/middleware/surface-shaders.js.map +1 -0
  113. package/dist/pipeline/pipeline.d.ts +29 -1
  114. package/dist/pipeline/pipeline.d.ts.map +1 -1
  115. package/dist/pipeline/pipeline.js +86 -23
  116. package/dist/pipeline/pipeline.js.map +1 -1
  117. package/dist/runtime.d.ts +19 -0
  118. package/dist/runtime.d.ts.map +1 -1
  119. package/dist/runtime.js +183 -30
  120. package/dist/runtime.js.map +1 -1
  121. package/dist/split-pane.d.ts +2 -2
  122. package/dist/split-pane.d.ts.map +1 -1
  123. package/dist/split-pane.js +28 -49
  124. package/dist/split-pane.js.map +1 -1
  125. package/dist/subapp/mount.d.ts +17 -0
  126. package/dist/subapp/mount.d.ts.map +1 -1
  127. package/dist/subapp/mount.js +13 -0
  128. package/dist/subapp/mount.js.map +1 -1
  129. package/dist/surface-layout.d.ts +8 -3
  130. package/dist/surface-layout.d.ts.map +1 -1
  131. package/dist/surface-layout.js +27 -12
  132. package/dist/surface-layout.js.map +1 -1
  133. package/dist/view-output.js +2 -2
  134. package/dist/view-output.js.map +1 -1
  135. package/dist/viewport.d.ts +13 -1
  136. package/dist/viewport.d.ts.map +1 -1
  137. package/dist/viewport.js +33 -11
  138. package/dist/viewport.js.map +1 -1
  139. package/package.json +3 -3
@@ -1,7 +1,18 @@
1
+ /** Key used to store per-frame stage timings in `RenderState.data`. */
2
+ export const RENDER_STAGE_TIMINGS_KEY = '__pipelineStageTimings';
3
+ /**
4
+ * Read per-stage timings captured during the current pipeline execution.
5
+ *
6
+ * The returned array is replaced on each `pipeline.execute(state)` call.
7
+ */
8
+ export function getRenderStageTimings(state) {
9
+ const timings = state.data[RENDER_STAGE_TIMINGS_KEY];
10
+ return Array.isArray(timings) ? timings : [];
11
+ }
1
12
  /**
2
13
  * Create a new programmable rendering pipeline.
3
14
  */
4
- export function createPipeline() {
15
+ export function createPipeline(options = {}) {
5
16
  const stages = {
6
17
  Layout: [],
7
18
  Paint: [],
@@ -9,37 +20,89 @@ export function createPipeline() {
9
20
  Diff: [],
10
21
  Output: [],
11
22
  };
23
+ const stageCompleteHandlers = new Set();
12
24
  const STAGE_ORDER = ['Layout', 'Paint', 'PostProcess', 'Diff', 'Output'];
25
+ let cachedPlan = [];
26
+ let chainDirty = true;
27
+ const readNow = options.now ?? (() => globalThis.performance?.now?.() ?? Date.now());
13
28
  function use(stage, middleware) {
14
29
  stages[stage].push(middleware);
30
+ chainDirty = true;
15
31
  }
16
- function execute(state) {
17
- // Flatten all middleware into a single execution chain based on stage order
18
- const chain = [];
19
- for (const stage of STAGE_ORDER) {
20
- chain.push(...stages[stage]);
32
+ function onStageComplete(handler) {
33
+ stageCompleteHandlers.add(handler);
34
+ return {
35
+ dispose() {
36
+ stageCompleteHandlers.delete(handler);
37
+ },
38
+ };
39
+ }
40
+ function getExecutionPlan() {
41
+ if (chainDirty) {
42
+ cachedPlan = STAGE_ORDER.map((stage) => ({
43
+ stage,
44
+ middlewares: stages[stage],
45
+ }));
46
+ chainDirty = false;
21
47
  }
22
- let index = 0;
23
- const next = () => {
24
- if (index < chain.length) {
25
- const mw = chain[index++];
26
- try {
27
- // Note: The pipeline is currently synchronous. If a middleware returns a Promise,
28
- // it won't block the TEA update loop, but it might resolve out-of-order.
29
- // For now, we expect render middleware to be entirely synchronous.
30
- void mw(state, next);
48
+ return cachedPlan;
49
+ }
50
+ function recordStageTiming(state, timings, stage, durationMs) {
51
+ const timing = { stage, durationMs };
52
+ timings.push(timing);
53
+ for (const handler of stageCompleteHandlers) {
54
+ try {
55
+ handler(stage, durationMs, state);
56
+ }
57
+ catch (err) {
58
+ if (state.ctx.io.writeError) {
59
+ state.ctx.io.writeError(`[Pipeline Observer Error] ${err instanceof Error ? err.stack : err}\n`);
31
60
  }
32
- catch (err) {
33
- // Log and continue if a specific middleware fails, preventing full crash
34
- if (state.ctx.io.writeError) {
35
- state.ctx.io.writeError(`[Pipeline Error] ${err instanceof Error ? err.stack : err}\n`);
36
- }
37
- next();
61
+ }
62
+ }
63
+ }
64
+ function execute(state) {
65
+ const plan = getExecutionPlan();
66
+ const timings = [];
67
+ state.data[RENDER_STAGE_TIMINGS_KEY] = timings;
68
+ const runStage = (stageIndex, middlewareIndex, stageStartMs) => {
69
+ if (stageIndex >= plan.length)
70
+ return;
71
+ const entry = plan[stageIndex];
72
+ if (middlewareIndex >= entry.middlewares.length) {
73
+ recordStageTiming(state, timings, entry.stage, readNow() - stageStartMs);
74
+ runStage(stageIndex + 1, 0, readNow());
75
+ return;
76
+ }
77
+ const middleware = entry.middlewares[middlewareIndex];
78
+ let advanced = false;
79
+ const next = () => {
80
+ if (advanced)
81
+ return;
82
+ advanced = true;
83
+ runStage(stageIndex, middlewareIndex + 1, stageStartMs);
84
+ };
85
+ try {
86
+ // Note: The pipeline is currently synchronous. If a middleware returns a Promise,
87
+ // it won't block the TEA update loop, but it might resolve out-of-order.
88
+ // For now, we expect render middleware to be entirely synchronous.
89
+ void middleware(state, next);
90
+ }
91
+ catch (err) {
92
+ // Log and continue if a specific middleware fails, preventing full crash
93
+ if (state.ctx.io.writeError) {
94
+ state.ctx.io.writeError(`[Pipeline Error] ${err instanceof Error ? err.stack : err}\n`);
38
95
  }
96
+ next();
97
+ }
98
+ // A middleware that does not call next() halts the pipeline. Record the
99
+ // current stage timing so callers can still observe partial execution.
100
+ if (!advanced) {
101
+ recordStageTiming(state, timings, entry.stage, readNow() - stageStartMs);
39
102
  }
40
103
  };
41
- next();
104
+ runStage(0, 0, readNow());
42
105
  }
43
- return { use, execute };
106
+ return { use, onStageComplete, execute };
44
107
  }
45
108
  //# sourceMappingURL=pipeline.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline/pipeline.ts"],"names":[],"mappings":"AA+DA;;GAEG;AACH,MAAM,UAAU,cAAc;IAC5B,MAAM,MAAM,GAA4C;QACtD,MAAM,EAAE,EAAE;QACV,KAAK,EAAE,EAAE;QACT,WAAW,EAAE,EAAE;QACf,IAAI,EAAE,EAAE;QACR,MAAM,EAAE,EAAE;KACX,CAAC;IAEF,MAAM,WAAW,GAAkB,CAAC,QAAQ,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;IAExF,SAAS,GAAG,CAAC,KAAkB,EAAE,UAA4B;QAC3D,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IAED,SAAS,OAAO,CAAC,KAAkB;QACjC,4EAA4E;QAC5E,MAAM,KAAK,GAAuB,EAAE,CAAC;QACrC,KAAK,MAAM,KAAK,IAAI,WAAW,EAAE,CAAC;YAChC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC/B,CAAC;QAED,IAAI,KAAK,GAAG,CAAC,CAAC;QAEd,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBACzB,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1B,IAAI,CAAC;oBACH,kFAAkF;oBAClF,yEAAyE;oBACzE,mEAAmE;oBACnE,KAAK,EAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;gBACxB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,yEAAyE;oBACzE,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC;wBAC5B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,UAAU,CAAC,oBAAoB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;oBAC1F,CAAC;oBACD,IAAI,EAAE,CAAC;gBACT,CAAC;YACH,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,EAAE,CAAC;IACT,CAAC;IAED,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/pipeline/pipeline.ts"],"names":[],"mappings":"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"}
package/dist/runtime.d.ts CHANGED
@@ -1,4 +1,22 @@
1
1
  import type { App, RunOptions } from './types.js';
2
+ import { type RenderStageTiming } from './pipeline/pipeline.js';
3
+ export interface RuntimeRenderSummary<Model> {
4
+ readonly model: Model;
5
+ readonly dt: number;
6
+ readonly timings: readonly RenderStageTiming[];
7
+ readonly viewport: {
8
+ readonly columns: number;
9
+ readonly rows: number;
10
+ };
11
+ }
12
+ export interface RuntimePostRenderEffect<Model> {
13
+ readonly model?: Model;
14
+ readonly requestRender?: boolean;
15
+ }
16
+ export interface RuntimeLifecycleHooks<Model> {
17
+ beforeRender?(model: Model): Model | void;
18
+ afterRender?(summary: RuntimeRenderSummary<Model>): RuntimePostRenderEffect<Model> | void;
19
+ }
2
20
  /**
3
21
  * Run a TEA application.
4
22
  *
@@ -16,4 +34,5 @@ import type { App, RunOptions } from './types.js';
16
34
  * @returns A promise that resolves when the application exits.
17
35
  */
18
36
  export declare function run<Model, M>(app: App<Model, M>, options?: RunOptions<M>): Promise<void>;
37
+ export declare function runWithLifecycleHooks<Model, M>(app: App<Model, M>, options?: RunOptions<M>, hooks?: RuntimeLifecycleHooks<Model>): Promise<void>;
19
38
  //# sourceMappingURL=runtime.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,GAAG,EAAO,UAAU,EAAa,MAAM,YAAY,CAAC;AAyBlE;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,EAChC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CA8Uf"}
1
+ {"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,GAAG,EAAO,UAAU,EAAa,MAAM,YAAY,CAAC;AAIlE,OAAO,EAGL,KAAK,iBAAiB,EAEvB,MAAM,wBAAwB,CAAC;AAuBhC,MAAM,WAAW,oBAAoB,CAAC,KAAK;IACzC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,SAAS,iBAAiB,EAAE,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE;QACjB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;QACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;KACvB,CAAC;CACH;AAED,MAAM,WAAW,uBAAuB,CAAC,KAAK;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,CAAC;IACvB,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,CAAC;CAClC;AAED,MAAM,WAAW,qBAAqB,CAAC,KAAK;IAC1C,YAAY,CAAC,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI,CAAC;IAC1C,WAAW,CAAC,CAAC,OAAO,EAAE,oBAAoB,CAAC,KAAK,CAAC,GAAG,uBAAuB,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;CAC3F;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,GAAG,CAAC,KAAK,EAAE,CAAC,EAChC,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,GACtB,OAAO,CAAC,IAAI,CAAC,CAEf;AAED,wBAAsB,qBAAqB,CAAC,KAAK,EAAE,CAAC,EAClD,GAAG,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,EAClB,OAAO,CAAC,EAAE,UAAU,CAAC,CAAC,CAAC,EACvB,KAAK,CAAC,EAAE,qBAAqB,CAAC,KAAK,CAAC,GACnC,OAAO,CAAC,IAAI,CAAC,CAief"}
package/dist/runtime.js CHANGED
@@ -1,8 +1,8 @@
1
- import { getDefaultContext, createSurface, surfaceToString, resolveClock, installRuntimeViewportOverlay, readRuntimeViewport, updateRuntimeViewport, } from '@flyingrobots/bijou';
1
+ import { getDefaultContext, createSurface, stringToSurface, surfaceToString, resolveClock, installRuntimeViewportOverlay, readRuntimeViewport, updateRuntimeViewport, } from '@flyingrobots/bijou';
2
2
  import { isKeyMsg, isPulseMsg, isResizeMsg } from './types.js';
3
3
  import { clearAndHome, enterScreen, exitScreen, renderSurfaceFrame } from './screen.js';
4
4
  import { createEventBus } from './eventbus.js';
5
- import { createPipeline } from './pipeline/pipeline.js';
5
+ import { createPipeline, getRenderStageTimings, } from './pipeline/pipeline.js';
6
6
  import { bcssMiddleware } from './pipeline/middleware/css.js';
7
7
  import { motionMiddleware } from './pipeline/middleware/motion.js';
8
8
  import { paintMiddleware } from './pipeline/middleware/paint.js';
@@ -19,6 +19,8 @@ const DISABLE_MOUSE = '\x1b[?1000l\x1b[?1002l\x1b[?1006l';
19
19
  * 1006 = SGR extended format (supports large coordinates, explicit release).
20
20
  */
21
21
  const ENABLE_MOUSE = '\x1b[?1000h\x1b[?1002h\x1b[?1006h';
22
+ const FATAL_RENDER_ERROR_KEY = '__fatalRenderError';
23
+ const SHUTDOWN_DRAIN_TIMEOUT_MS = 1000;
22
24
  /**
23
25
  * Run a TEA application.
24
26
  *
@@ -36,6 +38,9 @@ const ENABLE_MOUSE = '\x1b[?1000h\x1b[?1002h\x1b[?1006h';
36
38
  * @returns A promise that resolves when the application exits.
37
39
  */
38
40
  export async function run(app, options) {
41
+ await runWithLifecycleHooks(app, options);
42
+ }
43
+ export async function runWithLifecycleHooks(app, options, hooks) {
39
44
  const ctx = options?.ctx ?? getDefaultContext();
40
45
  const clock = resolveClock(ctx);
41
46
  installRuntimeViewportOverlay(ctx);
@@ -64,6 +69,7 @@ export async function run(app, options) {
64
69
  let resolveQuit = null;
65
70
  let currentDt = 0.016; // Default to 60fps for first frame
66
71
  let fatalError = null;
72
+ let crashMode = false;
67
73
  // Double buffering: keep a visible front buffer and a reusable back buffer.
68
74
  const initialViewport = runtimeViewport();
69
75
  let currentSurface = createSurface(initialViewport.columns, initialViewport.rows);
@@ -93,6 +99,65 @@ export async function run(app, options) {
93
99
  bus.emit(routed);
94
100
  }
95
101
  }
102
+ function formatModelSnapshot(snapshot) {
103
+ try {
104
+ const serialized = JSON.stringify(snapshot, null, 2);
105
+ return serialized ?? String(snapshot);
106
+ }
107
+ catch {
108
+ return '[unserializable model snapshot]';
109
+ }
110
+ }
111
+ function buildCrashSurface(phase, error, snapshot) {
112
+ const viewport = runtimeViewport();
113
+ ensureFramebufferSize(viewport.columns, viewport.rows);
114
+ const detail = error instanceof Error
115
+ ? error.stack ?? error.message
116
+ : String(error);
117
+ const content = [
118
+ 'Bijou runtime crash',
119
+ '',
120
+ `Phase: ${phase}`,
121
+ '',
122
+ 'Error',
123
+ detail,
124
+ '',
125
+ 'Model snapshot',
126
+ formatModelSnapshot(snapshot),
127
+ '',
128
+ ctx.runtime.stdinIsTTY
129
+ ? 'Press Enter to exit.'
130
+ : 'Stdin is not interactive; exiting automatically.',
131
+ ].join('\n');
132
+ return stringToSurface(content, viewport.columns, viewport.rows);
133
+ }
134
+ function enterCrashMode(phase, error, snapshot) {
135
+ if (fatalError === null) {
136
+ fatalError = error;
137
+ }
138
+ const detail = error instanceof Error ? error.stack ?? error.message : String(error);
139
+ writeErrorLine(ctx.io, `[Runtime Error] ${detail}\n`);
140
+ if (crashMode)
141
+ return;
142
+ crashMode = true;
143
+ renderQueued = false;
144
+ disposeTimerHandle(renderHandle);
145
+ renderHandle = null;
146
+ bus.stopPulse();
147
+ try {
148
+ const crashSurface = buildCrashSurface(phase, error, snapshot);
149
+ renderSurfaceFrame(ctx.io, currentSurface, crashSurface, ctx.style, outBuf);
150
+ currentSurface = crashSurface;
151
+ nextSurface = createSurface(crashSurface.width, crashSurface.height);
152
+ if (!ctx.runtime.stdinIsTTY) {
153
+ shutdown(fatalError);
154
+ }
155
+ }
156
+ catch (crashRenderError) {
157
+ writeErrorLine(ctx.io, `[Runtime Error] Failed to render crash surface: ${crashRenderError instanceof Error ? (crashRenderError.stack ?? crashRenderError.message) : String(crashRenderError)}\n`);
158
+ shutdown(fatalError);
159
+ }
160
+ }
96
161
  const bus = createEventBus({
97
162
  clock,
98
163
  onCommandRejected(error) {
@@ -126,7 +191,14 @@ export async function run(app, options) {
126
191
  const pipeline = createPipeline();
127
192
  // 1. Layout Logic Stage
128
193
  pipeline.use('Layout', (state, next) => {
129
- const viewOutput = app.view(state.model);
194
+ let viewOutput;
195
+ try {
196
+ viewOutput = app.view(state.model);
197
+ }
198
+ catch (error) {
199
+ state.data[FATAL_RENDER_ERROR_KEY] = error;
200
+ return;
201
+ }
130
202
  const viewport = runtimeViewport();
131
203
  state.layoutRoot = wrapViewOutputAsLayoutRoot(viewOutput, {
132
204
  width: viewport.columns,
@@ -182,16 +254,27 @@ export async function run(app, options) {
182
254
  ctx.io.write(DISABLE_MOUSE);
183
255
  }
184
256
  // Render helper
185
- let renderRequested = false;
257
+ let renderQueued = false;
258
+ let renderInFlight = false;
186
259
  let renderHandle = null;
187
- /** Render the current model's view to the terminal. */
188
- function render() {
189
- if (!running || renderRequested)
260
+ function scheduleRender() {
261
+ if (renderHandle != null || renderInFlight)
190
262
  return;
191
- renderRequested = true;
192
- let scheduledHandle = null;
193
- scheduledHandle = clock.setTimeout(() => {
263
+ const scheduledHandle = clock.setTimeout(() => {
264
+ if (renderHandle === scheduledHandle) {
265
+ renderHandle = null;
266
+ }
267
+ scheduledHandle.dispose();
268
+ if (!renderQueued) {
269
+ return;
270
+ }
271
+ renderInFlight = true;
272
+ renderQueued = false;
194
273
  try {
274
+ const preRenderModel = hooks?.beforeRender?.(model);
275
+ if (preRenderModel !== undefined) {
276
+ model = preRenderModel;
277
+ }
195
278
  const viewport = runtimeViewport();
196
279
  ensureFramebufferSize(viewport.columns, viewport.rows);
197
280
  nextSurface.clear();
@@ -206,28 +289,45 @@ export async function run(app, options) {
206
289
  data: {},
207
290
  };
208
291
  pipeline.execute(renderState);
292
+ const fatalRenderError = renderState.data[FATAL_RENDER_ERROR_KEY];
293
+ if (fatalRenderError !== undefined) {
294
+ enterCrashMode('render', fatalRenderError, model);
295
+ return;
296
+ }
297
+ if (hooks?.afterRender) {
298
+ const postRender = hooks.afterRender({
299
+ model,
300
+ dt: currentDt,
301
+ timings: getRenderStageTimings(renderState),
302
+ viewport,
303
+ });
304
+ if (postRender?.model !== undefined) {
305
+ model = postRender.model;
306
+ }
307
+ if (postRender?.requestRender) {
308
+ render();
309
+ }
310
+ }
209
311
  }
210
312
  catch (error) {
211
- routeRuntimeIssue({
212
- level: 'error',
213
- source: 'runtime',
214
- message: error instanceof Error ? error.message : String(error),
215
- atMs: clock.now(),
216
- error,
217
- });
218
- writeErrorLine(ctx.io, `[Runtime Error] ${error instanceof Error ? (error.stack ?? error.message) : String(error)}\n`);
219
- shutdown(error);
313
+ enterCrashMode('render', error, model);
220
314
  }
221
315
  finally {
222
- renderRequested = false;
223
- scheduledHandle?.dispose();
224
- if (renderHandle === scheduledHandle) {
225
- renderHandle = null;
316
+ renderInFlight = false;
317
+ if (renderQueued) {
318
+ scheduleRender();
226
319
  }
227
320
  }
228
321
  }, 0);
229
322
  renderHandle = scheduledHandle;
230
323
  }
324
+ /** Render the current model's view to the terminal. */
325
+ function render() {
326
+ if (!running)
327
+ return;
328
+ renderQueued = true;
329
+ scheduleRender();
330
+ }
231
331
  // Execute commands through the bus
232
332
  /** Submit TEA commands to the event bus for async execution. */
233
333
  function executeCommands(cmds) {
@@ -245,6 +345,12 @@ export async function run(app, options) {
245
345
  bus.on((msg) => {
246
346
  if (!running)
247
347
  return;
348
+ if (crashMode) {
349
+ if (isKeyMsg(msg) && (msg.key === 'enter' || (msg.key === 'c' && msg.ctrl))) {
350
+ shutdown(fatalError);
351
+ }
352
+ return;
353
+ }
248
354
  // Track time delta from pulse
249
355
  if (isPulseMsg(msg)) {
250
356
  currentDt = msg.dt;
@@ -264,7 +370,15 @@ export async function run(app, options) {
264
370
  lastCtrlC = now;
265
371
  }
266
372
  const previousModel = model;
267
- const [newModel, cmds] = app.update(msg, model);
373
+ let updateResult;
374
+ try {
375
+ updateResult = app.update(msg, model);
376
+ }
377
+ catch (error) {
378
+ enterCrashMode('update', error, model);
379
+ return;
380
+ }
381
+ const [newModel, cmds] = updateResult;
268
382
  model = newModel;
269
383
  if (isResizeMsg(msg) || newModel !== previousModel) {
270
384
  render();
@@ -279,16 +393,25 @@ export async function run(app, options) {
279
393
  columns: syncedViewport.columns,
280
394
  rows: syncedViewport.rows,
281
395
  };
282
- const [resizedModel, resizeCmds] = app.update(initialResize, model);
283
- model = resizedModel;
396
+ let resizeCmds = [];
397
+ try {
398
+ const [resizedModel, nextResizeCmds] = app.update(initialResize, model);
399
+ model = resizedModel;
400
+ resizeCmds = nextResizeCmds;
401
+ }
402
+ catch (error) {
403
+ enterCrashMode('resize', error, model);
404
+ }
284
405
  // After a potential resize in update, ensure currentSurface matches size
285
406
  // to avoid diffing mismatched grids.
286
407
  const postResizeViewport = runtimeViewport();
287
408
  resetFramebuffers(postResizeViewport.columns, postResizeViewport.rows);
288
409
  // Initial render + startup commands
289
- render();
290
- executeCommands(initCmds);
291
- executeCommands(resizeCmds);
410
+ if (!crashMode) {
411
+ render();
412
+ executeCommands(initCmds);
413
+ executeCommands(resizeCmds);
414
+ }
292
415
  // Wait for quit signal
293
416
  await new Promise((resolve) => {
294
417
  resolveQuit = resolve;
@@ -296,7 +419,7 @@ export async function run(app, options) {
296
419
  resolve();
297
420
  });
298
421
  // Ensure any pending render is flushed before exiting
299
- if (renderRequested) {
422
+ if (renderHandle != null || renderInFlight) {
300
423
  await new Promise((resolve) => {
301
424
  let flushHandle = null;
302
425
  flushHandle = clock.setTimeout(() => {
@@ -306,6 +429,11 @@ export async function run(app, options) {
306
429
  }, 0);
307
430
  });
308
431
  }
432
+ const shutdownDrainResult = await awaitDrainWithinTimeout(bus, clock, SHUTDOWN_DRAIN_TIMEOUT_MS);
433
+ if (shutdownDrainResult === 'timed-out') {
434
+ const message = `Timed out waiting ${SHUTDOWN_DRAIN_TIMEOUT_MS}ms for pending commands to drain during shutdown.`;
435
+ writeErrorLine(ctx.io, `[Runtime Warning] ${message}\n`);
436
+ }
309
437
  // Cleanup — bus disposes all I/O connections
310
438
  disposeTimerHandle(renderHandle);
311
439
  renderHandle = null;
@@ -324,6 +452,31 @@ export async function run(app, options) {
324
452
  function disposeTimerHandle(handle) {
325
453
  handle?.dispose();
326
454
  }
455
+ async function awaitDrainWithinTimeout(bus, clock, timeoutMs) {
456
+ let timeoutHandle = null;
457
+ try {
458
+ return await new Promise((resolve) => {
459
+ let settled = false;
460
+ const finish = (result) => {
461
+ if (settled)
462
+ return;
463
+ settled = true;
464
+ disposeTimerHandle(timeoutHandle);
465
+ timeoutHandle = null;
466
+ resolve(result);
467
+ };
468
+ timeoutHandle = clock.setTimeout(() => {
469
+ finish('timed-out');
470
+ }, timeoutMs);
471
+ void bus.drain().then(() => {
472
+ finish('drained');
473
+ });
474
+ });
475
+ }
476
+ finally {
477
+ disposeTimerHandle(timeoutHandle);
478
+ }
479
+ }
327
480
  /**
328
481
  * Upper-bound byte budget per surface cell for the pooled output buffer.
329
482
  * Each cell can emit at most a CUP move (~10 bytes), a full RGB SGR
@@ -1 +1 @@
1
- {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
@@ -5,9 +5,9 @@
5
5
  * solving for horizontal (`row`) and vertical (`column`) splits.
6
6
  */
7
7
  import type { LayoutRect } from './layout-rect.js';
8
- import { type Surface, type WritePort } from '@flyingrobots/bijou';
8
+ import { type SplitLayoutDirection, type Surface, type WritePort } from '@flyingrobots/bijou';
9
9
  /** Split direction. */
10
- export type SplitPaneDirection = 'row' | 'column';
10
+ export type SplitPaneDirection = SplitLayoutDirection;
11
11
  /** Focused pane identifier. */
12
12
  export type SplitPaneFocus = 'a' | 'b';
13
13
  /** Immutable split pane state. */
@@ -1 +1 @@
1
- {"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"split-pane.d.ts","sourceRoot":"","sources":["../src/split-pane.ts"],"names":[],"mappings":"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"}