@gzeoneth/gov-tracker 0.2.1-alpha.cli-preview.f8c3a87 → 0.2.1-alpha.cli-preview.a5817b4

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 (171) hide show
  1. package/dist/cli/cli.js +23 -5
  2. package/dist/cli/cli.js.map +1 -1
  3. package/dist/cli/lib/cli.d.ts.map +1 -1
  4. package/dist/cli/lib/cli.js +27 -5
  5. package/dist/cli/lib/cli.js.map +1 -1
  6. package/dist/cli/tui/App.d.ts.map +1 -1
  7. package/dist/cli/tui/App.js +60 -6
  8. package/dist/cli/tui/App.js.map +1 -1
  9. package/dist/cli/tui/components/CollapsibleSection.d.ts +20 -0
  10. package/dist/cli/tui/components/CollapsibleSection.d.ts.map +1 -0
  11. package/dist/cli/tui/components/CollapsibleSection.js +29 -0
  12. package/dist/cli/tui/components/CollapsibleSection.js.map +1 -0
  13. package/dist/cli/tui/components/ConfirmDialog.d.ts +14 -0
  14. package/dist/cli/tui/components/ConfirmDialog.d.ts.map +1 -0
  15. package/dist/cli/tui/components/ConfirmDialog.js +29 -0
  16. package/dist/cli/tui/components/ConfirmDialog.js.map +1 -0
  17. package/dist/cli/tui/components/CopyableText.d.ts +23 -0
  18. package/dist/cli/tui/components/CopyableText.d.ts.map +1 -0
  19. package/dist/cli/tui/components/CopyableText.js +49 -0
  20. package/dist/cli/tui/components/CopyableText.js.map +1 -0
  21. package/dist/cli/tui/components/EmptyState.d.ts +11 -0
  22. package/dist/cli/tui/components/EmptyState.d.ts.map +1 -0
  23. package/dist/cli/tui/components/EmptyState.js +34 -0
  24. package/dist/cli/tui/components/EmptyState.js.map +1 -0
  25. package/dist/cli/tui/components/ErrorDisplay.d.ts +17 -0
  26. package/dist/cli/tui/components/ErrorDisplay.d.ts.map +1 -0
  27. package/dist/cli/tui/components/ErrorDisplay.js +66 -0
  28. package/dist/cli/tui/components/ErrorDisplay.js.map +1 -0
  29. package/dist/cli/tui/components/Header.d.ts +4 -2
  30. package/dist/cli/tui/components/Header.d.ts.map +1 -1
  31. package/dist/cli/tui/components/Header.js +20 -4
  32. package/dist/cli/tui/components/Header.js.map +1 -1
  33. package/dist/cli/tui/components/KeyHelp.d.ts +11 -2
  34. package/dist/cli/tui/components/KeyHelp.d.ts.map +1 -1
  35. package/dist/cli/tui/components/KeyHelp.js +63 -9
  36. package/dist/cli/tui/components/KeyHelp.js.map +1 -1
  37. package/dist/cli/tui/components/ProposalRow.d.ts.map +1 -1
  38. package/dist/cli/tui/components/ProposalRow.js +46 -6
  39. package/dist/cli/tui/components/ProposalRow.js.map +1 -1
  40. package/dist/cli/tui/components/ScrollIndicator.d.ts +26 -0
  41. package/dist/cli/tui/components/ScrollIndicator.d.ts.map +1 -0
  42. package/dist/cli/tui/components/ScrollIndicator.js +59 -0
  43. package/dist/cli/tui/components/ScrollIndicator.js.map +1 -0
  44. package/dist/cli/tui/components/SearchBar.d.ts +12 -0
  45. package/dist/cli/tui/components/SearchBar.d.ts.map +1 -0
  46. package/dist/cli/tui/components/SearchBar.js +36 -0
  47. package/dist/cli/tui/components/SearchBar.js.map +1 -0
  48. package/dist/cli/tui/components/Skeleton.d.ts +22 -0
  49. package/dist/cli/tui/components/Skeleton.d.ts.map +1 -0
  50. package/dist/cli/tui/components/Skeleton.js +35 -0
  51. package/dist/cli/tui/components/Skeleton.js.map +1 -0
  52. package/dist/cli/tui/components/Spinner.d.ts +10 -0
  53. package/dist/cli/tui/components/Spinner.d.ts.map +1 -0
  54. package/dist/cli/tui/components/Spinner.js +24 -0
  55. package/dist/cli/tui/components/Spinner.js.map +1 -0
  56. package/dist/cli/tui/components/StageProgress.d.ts +12 -0
  57. package/dist/cli/tui/components/StageProgress.d.ts.map +1 -0
  58. package/dist/cli/tui/components/StageProgress.js +72 -0
  59. package/dist/cli/tui/components/StageProgress.js.map +1 -0
  60. package/dist/cli/tui/components/StageRow.d.ts.map +1 -1
  61. package/dist/cli/tui/components/StageRow.js +33 -10
  62. package/dist/cli/tui/components/StageRow.js.map +1 -1
  63. package/dist/cli/tui/components/StatusBar.d.ts +12 -0
  64. package/dist/cli/tui/components/StatusBar.d.ts.map +1 -0
  65. package/dist/cli/tui/components/StatusBar.js +14 -0
  66. package/dist/cli/tui/components/StatusBar.js.map +1 -0
  67. package/dist/cli/tui/components/Timeline.d.ts +12 -0
  68. package/dist/cli/tui/components/Timeline.d.ts.map +1 -0
  69. package/dist/cli/tui/components/Timeline.js +91 -0
  70. package/dist/cli/tui/components/Timeline.js.map +1 -0
  71. package/dist/cli/tui/components/Toast.d.ts +13 -0
  72. package/dist/cli/tui/components/Toast.d.ts.map +1 -0
  73. package/dist/cli/tui/components/Toast.js +35 -0
  74. package/dist/cli/tui/components/Toast.js.map +1 -0
  75. package/dist/cli/tui/components/TrackingProgress.d.ts +24 -0
  76. package/dist/cli/tui/components/TrackingProgress.d.ts.map +1 -0
  77. package/dist/cli/tui/components/TrackingProgress.js +82 -0
  78. package/dist/cli/tui/components/TrackingProgress.js.map +1 -0
  79. package/dist/cli/tui/components/ViewLayout.d.ts +9 -1
  80. package/dist/cli/tui/components/ViewLayout.d.ts.map +1 -1
  81. package/dist/cli/tui/components/ViewLayout.js +43 -7
  82. package/dist/cli/tui/components/ViewLayout.js.map +1 -1
  83. package/dist/cli/tui/components/VotingStats.d.ts +11 -0
  84. package/dist/cli/tui/components/VotingStats.d.ts.map +1 -0
  85. package/dist/cli/tui/components/VotingStats.js +87 -0
  86. package/dist/cli/tui/components/VotingStats.js.map +1 -0
  87. package/dist/cli/tui/config.d.ts +42 -0
  88. package/dist/cli/tui/config.d.ts.map +1 -0
  89. package/dist/cli/tui/config.js +144 -0
  90. package/dist/cli/tui/config.js.map +1 -0
  91. package/dist/cli/tui/hooks/index.d.ts +3 -1
  92. package/dist/cli/tui/hooks/index.d.ts.map +1 -1
  93. package/dist/cli/tui/hooks/index.js +5 -1
  94. package/dist/cli/tui/hooks/index.js.map +1 -1
  95. package/dist/cli/tui/hooks/useCache.d.ts.map +1 -1
  96. package/dist/cli/tui/hooks/useCache.js +32 -8
  97. package/dist/cli/tui/hooks/useCache.js.map +1 -1
  98. package/dist/cli/tui/hooks/useCliProcess.d.ts +19 -0
  99. package/dist/cli/tui/hooks/useCliProcess.d.ts.map +1 -0
  100. package/dist/cli/tui/hooks/useCliProcess.js +135 -0
  101. package/dist/cli/tui/hooks/useCliProcess.js.map +1 -0
  102. package/dist/cli/tui/hooks/useNavigation.d.ts +7 -1
  103. package/dist/cli/tui/hooks/useNavigation.d.ts.map +1 -1
  104. package/dist/cli/tui/hooks/useNavigation.js +73 -9
  105. package/dist/cli/tui/hooks/useNavigation.js.map +1 -1
  106. package/dist/cli/tui/hooks/useProposals.d.ts +2 -2
  107. package/dist/cli/tui/hooks/useProposals.d.ts.map +1 -1
  108. package/dist/cli/tui/hooks/useProposals.js +92 -27
  109. package/dist/cli/tui/hooks/useProposals.js.map +1 -1
  110. package/dist/cli/tui/hooks/useStageCalldata.d.ts +1 -1
  111. package/dist/cli/tui/hooks/useStageCalldata.d.ts.map +1 -1
  112. package/dist/cli/tui/hooks/useStageCalldata.js +45 -18
  113. package/dist/cli/tui/hooks/useStageCalldata.js.map +1 -1
  114. package/dist/cli/tui/hooks/useTracker.d.ts +4 -5
  115. package/dist/cli/tui/hooks/useTracker.d.ts.map +1 -1
  116. package/dist/cli/tui/hooks/useTracker.js +118 -78
  117. package/dist/cli/tui/hooks/useTracker.js.map +1 -1
  118. package/dist/cli/tui/index.d.ts +1 -0
  119. package/dist/cli/tui/index.d.ts.map +1 -1
  120. package/dist/cli/tui/index.js +38 -6
  121. package/dist/cli/tui/index.js.map +1 -1
  122. package/dist/cli/tui/types.d.ts +4 -1
  123. package/dist/cli/tui/types.d.ts.map +1 -1
  124. package/dist/cli/tui/utils/clipboard.d.ts +7 -0
  125. package/dist/cli/tui/utils/clipboard.d.ts.map +1 -0
  126. package/dist/cli/tui/utils/clipboard.js +46 -0
  127. package/dist/cli/tui/utils/clipboard.js.map +1 -0
  128. package/dist/cli/tui/utils/index.d.ts +1 -0
  129. package/dist/cli/tui/utils/index.d.ts.map +1 -1
  130. package/dist/cli/tui/utils/index.js +4 -1
  131. package/dist/cli/tui/utils/index.js.map +1 -1
  132. package/dist/cli/tui/utils/text.d.ts.map +1 -1
  133. package/dist/cli/tui/utils/text.js +2 -0
  134. package/dist/cli/tui/utils/text.js.map +1 -1
  135. package/dist/cli/tui/views/CalldataView.d.ts.map +1 -1
  136. package/dist/cli/tui/views/CalldataView.js +35 -21
  137. package/dist/cli/tui/views/CalldataView.js.map +1 -1
  138. package/dist/cli/tui/views/DescriptionView.d.ts.map +1 -1
  139. package/dist/cli/tui/views/DescriptionView.js +29 -21
  140. package/dist/cli/tui/views/DescriptionView.js.map +1 -1
  141. package/dist/cli/tui/views/ElectionView.d.ts.map +1 -1
  142. package/dist/cli/tui/views/ElectionView.js +64 -26
  143. package/dist/cli/tui/views/ElectionView.js.map +1 -1
  144. package/dist/cli/tui/views/HelpView.d.ts +10 -0
  145. package/dist/cli/tui/views/HelpView.d.ts.map +1 -0
  146. package/dist/cli/tui/views/HelpView.js +159 -0
  147. package/dist/cli/tui/views/HelpView.js.map +1 -0
  148. package/dist/cli/tui/views/ProposalDetail.d.ts +1 -1
  149. package/dist/cli/tui/views/ProposalDetail.d.ts.map +1 -1
  150. package/dist/cli/tui/views/ProposalDetail.js +45 -50
  151. package/dist/cli/tui/views/ProposalDetail.js.map +1 -1
  152. package/dist/cli/tui/views/ProposalList.d.ts.map +1 -1
  153. package/dist/cli/tui/views/ProposalList.js +47 -32
  154. package/dist/cli/tui/views/ProposalList.js.map +1 -1
  155. package/dist/cli/tui/views/SettingsView.d.ts +12 -0
  156. package/dist/cli/tui/views/SettingsView.d.ts.map +1 -0
  157. package/dist/cli/tui/views/SettingsView.js +203 -0
  158. package/dist/cli/tui/views/SettingsView.js.map +1 -0
  159. package/dist/cli/tui/views/SimulationView.d.ts.map +1 -1
  160. package/dist/cli/tui/views/SimulationView.js +26 -7
  161. package/dist/cli/tui/views/SimulationView.js.map +1 -1
  162. package/dist/cli/tui/views/StageView.d.ts.map +1 -1
  163. package/dist/cli/tui/views/StageView.js +34 -18
  164. package/dist/cli/tui/views/StageView.js.map +1 -1
  165. package/dist/stages/timelock.d.ts.map +1 -1
  166. package/dist/stages/timelock.js +5 -4
  167. package/dist/stages/timelock.js.map +1 -1
  168. package/dist/tracker/cache.d.ts.map +1 -1
  169. package/dist/tracker/cache.js +4 -0
  170. package/dist/tracker/cache.js.map +1 -1
  171. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useTracker.js","sourceRoot":"","sources":["../../../../src/cli/tui/hooks/useTracker.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface TuiOptions {
9
9
  cachePath: string;
10
10
  providers?: ProviderBundle;
11
11
  verbose?: boolean;
12
+ logFile?: string;
12
13
  }
13
14
  export declare function runTui(options: TuiOptions): Promise<void>;
14
15
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAGpD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAgBD,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAgB/D"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAIpD,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,cAAc,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAgBD,wBAAsB,MAAM,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiD/D"}
@@ -40,7 +40,9 @@ var __importStar = (this && this.__importStar) || (function () {
40
40
  })();
41
41
  Object.defineProperty(exports, "__esModule", { value: true });
42
42
  exports.runTui = runTui;
43
+ const fs = __importStar(require("fs"));
43
44
  const ink_wrapper_js_1 = require("./ink-wrapper.js");
45
+ const config_js_1 = require("./config.js");
44
46
  function checkTtySupport() {
45
47
  if (!process.stdin.isTTY) {
46
48
  console.error("Error: TUI requires an interactive terminal (TTY).");
@@ -57,12 +59,42 @@ function checkTtySupport() {
57
59
  async function runTui(options) {
58
60
  checkTtySupport();
59
61
  (0, ink_wrapper_js_1.checkTuiDependencies)();
62
+ // Set config storage path to same directory as cache
63
+ (0, config_js_1.setConfigBasePath)(options.cachePath);
64
+ // Set up file logging if logFile is specified
65
+ let logStream = null;
66
+ let originalStderrWrite = null;
67
+ if (options.logFile) {
68
+ logStream = fs.createWriteStream(options.logFile, { flags: "a" });
69
+ logStream.write(`\n--- TUI Session Started: ${new Date().toISOString()} ---\n`);
70
+ // Redirect stderr (where debug writes) to file
71
+ originalStderrWrite = process.stderr.write.bind(process.stderr);
72
+ process.stderr.write = ((chunk) => {
73
+ // Write to log file
74
+ logStream?.write(chunk);
75
+ // Don't write debug output to terminal (it would corrupt TUI)
76
+ // Only return true to indicate successful write
77
+ return true;
78
+ });
79
+ }
60
80
  const { App } = await Promise.resolve().then(() => __importStar(require("./App.js")));
61
- const { waitUntilExit } = (0, ink_wrapper_js_1.render)(ink_wrapper_js_1.React.createElement(App, {
62
- cachePath: options.cachePath,
63
- providers: options.providers,
64
- verbose: options.verbose,
65
- }), { fullScreen: true });
66
- await waitUntilExit();
81
+ try {
82
+ const { waitUntilExit } = (0, ink_wrapper_js_1.render)(ink_wrapper_js_1.React.createElement(App, {
83
+ cachePath: options.cachePath,
84
+ providers: options.providers,
85
+ verbose: options.verbose,
86
+ }), { fullScreen: true });
87
+ await waitUntilExit();
88
+ }
89
+ finally {
90
+ // Restore stderr and close log file
91
+ if (originalStderrWrite) {
92
+ process.stderr.write = originalStderrWrite;
93
+ }
94
+ if (logStream) {
95
+ logStream.write(`--- TUI Session Ended: ${new Date().toISOString()} ---\n`);
96
+ logStream.end();
97
+ }
98
+ }
67
99
  }
68
100
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/tui/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyBH,wBAgBC;AAtCD,qDAAuE;AAQvE,SAAS,eAAe;IACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,OAAmB;IAC9C,eAAe,EAAE,CAAC;IAClB,IAAA,qCAAoB,GAAE,CAAC;IAEvB,MAAM,EAAE,GAAG,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;IAEzC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uBAAM,EAC9B,sBAAK,CAAC,aAAa,CAAC,GAAG,EAAE;QACvB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;KACzB,CAAC,EACF,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;IAEF,MAAM,aAAa,EAAE,CAAC;AACxB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/cli/tui/index.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA4BH,wBAiDC;AA3ED,uCAAyB;AAEzB,qDAAuE;AACvE,2CAAgD;AAShD,SAAS,eAAe;IACtB,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QACxC,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACnE,OAAO,CAAC,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC/D,OAAO,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,kDAAkD,CAAC,CAAC;QAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,OAAmB;IAC9C,eAAe,EAAE,CAAC;IAClB,IAAA,qCAAoB,GAAE,CAAC;IAEvB,qDAAqD;IACrD,IAAA,6BAAiB,EAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAErC,8CAA8C;IAC9C,IAAI,SAAS,GAA0B,IAAI,CAAC;IAC5C,IAAI,mBAAmB,GAAuC,IAAI,CAAC;IAEnE,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QACpB,SAAS,GAAG,EAAE,CAAC,iBAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAClE,SAAS,CAAC,KAAK,CAAC,8BAA8B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEhF,+CAA+C;QAC/C,mBAAmB,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAChE,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,CAAC,KAA0B,EAAE,EAAE;YACrD,oBAAoB;YACpB,SAAS,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;YACxB,8DAA8D;YAC9D,gDAAgD;YAChD,OAAO,IAAI,CAAC;QACd,CAAC,CAAgC,CAAC;IACpC,CAAC;IAED,MAAM,EAAE,GAAG,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,uBAAM,EAC9B,sBAAK,CAAC,aAAa,CAAC,GAAG,EAAE;YACvB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,OAAO,EAAE,OAAO,CAAC,OAAO;SACzB,CAAC,EACF,EAAE,UAAU,EAAE,IAAI,EAAE,CACrB,CAAC;QAEF,MAAM,aAAa,EAAE,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,oCAAoC;QACpC,IAAI,mBAAmB,EAAE,CAAC;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,mBAAmB,CAAC;QAC7C,CAAC;QACD,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,KAAK,CAAC,0BAA0B,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;YAC5E,SAAS,CAAC,GAAG,EAAE,CAAC;QAClB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -2,8 +2,9 @@
2
2
  * TUI-specific types
3
3
  */
4
4
  import type { TrackingCheckpoint, TrackerStats, StageType } from "../../types/index.js";
5
- export type ViewType = "list" | "detail" | "calldata" | "stage" | "simulation" | "description" | "election";
5
+ export type ViewType = "list" | "detail" | "calldata" | "stage" | "simulation" | "description" | "election" | "help" | "settings";
6
6
  export type FilterType = "all" | "active" | "complete" | "timelocks";
7
+ export type SortType = "newest" | "oldest" | "progress" | "status";
7
8
  export interface ProposalListItem {
8
9
  key: string;
9
10
  title: string;
@@ -18,7 +19,9 @@ export interface ProposalListItem {
18
19
  }
19
20
  export interface NavigationState {
20
21
  view: ViewType;
22
+ previousView: ViewType | null;
21
23
  filter: FilterType;
24
+ sort: SortType;
22
25
  selectedIndex: number;
23
26
  selectedProposal: ProposalListItem | null;
24
27
  selectedStageIndex: number;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExF,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,OAAO,GACP,YAAY,GACZ,aAAa,GACb,UAAU,CAAC;AAEf,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAErE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC7C,KAAK,EAAE,YAAY,CAAC;CACrB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/tui/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAExF,MAAM,MAAM,QAAQ,GAChB,MAAM,GACN,QAAQ,GACR,UAAU,GACV,OAAO,GACP,YAAY,GACZ,aAAa,GACb,UAAU,GACV,MAAM,GACN,UAAU,CAAC;AAEf,MAAM,MAAM,UAAU,GAAG,KAAK,GAAG,QAAQ,GAAG,UAAU,GAAG,WAAW,CAAC;AAErE,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEnE,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,MAAM,EAAE,QAAQ,GAAG,UAAU,GAAG,QAAQ,CAAC;IACzC,aAAa,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,SAAS,GAAG,IAAI,CAAC;IAC/B,aAAa,EAAE,OAAO,CAAC;IACvB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,EAAE,kBAAkB,CAAC;CAChC;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,QAAQ,CAAC;IACf,YAAY,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,QAAQ,CAAC;IACf,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,kBAAkB,EAAE,MAAM,CAAC;IAC3B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAC7C,KAAK,EAAE,YAAY,CAAC;CACrB"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Clipboard utilities for TUI
3
+ * Uses native OS clipboard commands via safe execFile
4
+ */
5
+ export declare function copyToClipboard(text: string): boolean;
6
+ export declare function formatForCopy(value: string, type: "hash" | "address" | "id"): string;
7
+ //# sourceMappingURL=clipboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/clipboard.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAuBrD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,CAUpF"}
@@ -0,0 +1,46 @@
1
+ "use strict";
2
+ /**
3
+ * Clipboard utilities for TUI
4
+ * Uses native OS clipboard commands via safe execFile
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.copyToClipboard = copyToClipboard;
8
+ exports.formatForCopy = formatForCopy;
9
+ const child_process_1 = require("child_process");
10
+ function copyToClipboard(text) {
11
+ try {
12
+ const platform = process.platform;
13
+ if (platform === "darwin") {
14
+ (0, child_process_1.execFileSync)("pbcopy", [], { input: text });
15
+ }
16
+ else if (platform === "linux") {
17
+ // Try xclip first, then xsel
18
+ try {
19
+ (0, child_process_1.execFileSync)("xclip", ["-selection", "clipboard"], { input: text });
20
+ }
21
+ catch {
22
+ (0, child_process_1.execFileSync)("xsel", ["--clipboard", "--input"], { input: text });
23
+ }
24
+ }
25
+ else if (platform === "win32") {
26
+ (0, child_process_1.execFileSync)("clip", [], { input: text });
27
+ }
28
+ else {
29
+ return false;
30
+ }
31
+ return true;
32
+ }
33
+ catch {
34
+ return false;
35
+ }
36
+ }
37
+ function formatForCopy(value, type) {
38
+ // Remove any display formatting
39
+ const cleaned = value.replace(/\s+/g, "").trim();
40
+ // Ensure proper prefix for addresses and hashes
41
+ if ((type === "hash" || type === "address") && !cleaned.startsWith("0x")) {
42
+ return `0x${cleaned}`;
43
+ }
44
+ return cleaned;
45
+ }
46
+ //# sourceMappingURL=clipboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipboard.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/clipboard.ts"],"names":[],"mappings":";AAAA;;;GAGG;;AAIH,0CAuBC;AAED,sCAUC;AArCD,iDAA6C;AAE7C,SAAgB,eAAe,CAAC,IAAY;IAC1C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;QAElC,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC1B,IAAA,4BAAY,EAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,6BAA6B;YAC7B,IAAI,CAAC;gBACH,IAAA,4BAAY,EAAC,OAAO,EAAE,CAAC,YAAY,EAAE,WAAW,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACtE,CAAC;YAAC,MAAM,CAAC;gBACP,IAAA,4BAAY,EAAC,MAAM,EAAE,CAAC,aAAa,EAAE,SAAS,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YACpE,CAAC;QACH,CAAC;aAAM,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;YAChC,IAAA,4BAAY,EAAC,MAAM,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACN,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAgB,aAAa,CAAC,KAAa,EAAE,IAA+B;IAC1E,gCAAgC;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,gDAAgD;IAChD,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,IAAI,KAAK,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACzE,OAAO,KAAK,OAAO,EAAE,CAAC;IACxB,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export { wrapText, truncate } from "./text.js";
2
2
  export { getTerminalSize, getVisibleRows } from "./terminal.js";
3
3
  export type { TerminalSize } from "./terminal.js";
4
+ export { copyToClipboard, formatForCopy } from "./clipboard.js";
4
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAChE,YAAY,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC"}
@@ -1,10 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
3
+ exports.formatForCopy = exports.copyToClipboard = exports.getVisibleRows = exports.getTerminalSize = exports.truncate = exports.wrapText = void 0;
4
4
  var text_js_1 = require("./text.js");
5
5
  Object.defineProperty(exports, "wrapText", { enumerable: true, get: function () { return text_js_1.wrapText; } });
6
6
  Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return text_js_1.truncate; } });
7
7
  var terminal_js_1 = require("./terminal.js");
8
8
  Object.defineProperty(exports, "getTerminalSize", { enumerable: true, get: function () { return terminal_js_1.getTerminalSize; } });
9
9
  Object.defineProperty(exports, "getVisibleRows", { enumerable: true, get: function () { return terminal_js_1.getVisibleRows; } });
10
+ var clipboard_js_1 = require("./clipboard.js");
11
+ Object.defineProperty(exports, "copyToClipboard", { enumerable: true, get: function () { return clipboard_js_1.copyToClipboard; } });
12
+ Object.defineProperty(exports, "formatForCopy", { enumerable: true, get: function () { return clipboard_js_1.formatForCopy; } });
10
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/index.ts"],"names":[],"mappings":";;;AAAA,qCAA+C;AAAtC,mGAAA,QAAQ,OAAA;AAAE,mGAAA,QAAQ,OAAA;AAC3B,6CAAgE;AAAvD,8GAAA,eAAe,OAAA;AAAE,6GAAA,cAAc,OAAA;AAExC,+CAAgE;AAAvD,+GAAA,eAAe,OAAA;AAAE,6GAAA,aAAa,OAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO9D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAG5D"}
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/utils/text.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;GAEG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAO9D;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAI5D"}
@@ -21,6 +21,8 @@ function wrapText(text, width) {
21
21
  * Truncate text with ellipsis if it exceeds maxLen
22
22
  */
23
23
  function truncate(str, maxLen) {
24
+ if (maxLen <= 1)
25
+ return str.length > 0 ? "…" : "";
24
26
  if (str.length <= maxLen)
25
27
  return str;
26
28
  return str.slice(0, maxLen - 1) + "…";
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/text.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,4BAOC;AAKD,4BAGC;AAlBD;;GAEG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,GAAW,EAAE,MAAc;IAClD,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../../src/cli/tui/utils/text.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAKH,4BAOC;AAKD,4BAIC;AAnBD;;GAEG;AACH,SAAgB,QAAQ,CAAC,IAAY,EAAE,KAAa;IAClD,IAAI,IAAI,CAAC,MAAM,IAAI,KAAK;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,KAAK,GAAa,EAAE,CAAC;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,KAAK,EAAE,CAAC;QAC5C,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;GAEG;AACH,SAAgB,QAAQ,CAAC,GAAW,EAAE,MAAc;IAClD,IAAI,MAAM,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,IAAI,GAAG,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,GAAG,CAAC;IACrC,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACxC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"CalldataView.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/views/CalldataView.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAM7D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAwFD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,GACX,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAgHxC"}
1
+ {"version":3,"file":"CalldataView.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/views/CalldataView.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAW7D,UAAU,iBAAiB;IACzB,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAwFD,wBAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,GACX,EAAE,iBAAiB,GAAG,KAAK,CAAC,YAAY,CAkJxC"}
@@ -7,6 +7,7 @@ exports.CalldataView = CalldataView;
7
7
  const ink_wrapper_js_1 = require("../ink-wrapper.js");
8
8
  const index_js_1 = require("../hooks/index.js");
9
9
  const ViewLayout_js_1 = require("../components/ViewLayout.js");
10
+ const ScrollIndicator_js_1 = require("../components/ScrollIndicator.js");
10
11
  const index_js_2 = require("../utils/index.js");
11
12
  const FOLD_THRESHOLD = 100;
12
13
  function formatParameter(param, indent, keyPrefix) {
@@ -71,10 +72,11 @@ function formatDecodedCalldata(decoded, indent = 0, keyPrefix = "root") {
71
72
  const RESERVED_LINES = 14;
72
73
  function CalldataView({ proposal, navigation, }) {
73
74
  const { state } = navigation;
74
- const stages = proposal.checkpoint.cachedData.completedStages ?? [];
75
- const { actions, loading, error } = (0, index_js_1.useStageCalldata)(stages[0]);
75
+ const stages = (0, ink_wrapper_js_1.useMemo)(() => proposal.checkpoint.cachedData.completedStages ?? [], [proposal.checkpoint.cachedData.completedStages]);
76
+ const { actions, loading, error } = (0, index_js_1.useStageCalldata)(stages[0], stages);
76
77
  const [expandedKeys, setExpandedKeys] = (0, ink_wrapper_js_1.useState)(new Set());
77
- const currentAction = actions[state.calldataActionIndex];
78
+ const safeActionIndex = Math.min(state.calldataActionIndex, Math.max(0, actions.length - 1));
79
+ const currentAction = actions.length > 0 ? actions[safeActionIndex] : undefined;
78
80
  const allLines = currentAction ? formatDecodedCalldata(currentAction.decoded) : [];
79
81
  const displayLines = allLines.filter((line) => {
80
82
  if (!line.isFoldedContent)
@@ -87,16 +89,16 @@ function CalldataView({ proposal, navigation, }) {
87
89
  if (input === "b" || key.escape) {
88
90
  navigation.back();
89
91
  }
90
- else if (key.upArrow) {
92
+ else if (key.upArrow || input === "k") {
91
93
  navigation.moveUp();
92
94
  }
93
- else if (key.downArrow) {
95
+ else if (key.downArrow || input === "j") {
94
96
  navigation.moveDown(displayLines.length);
95
97
  }
96
- else if (key.pageUp) {
98
+ else if (key.pageUp || (key.ctrl && input === "u")) {
97
99
  navigation.pageUp(displayLines.length);
98
100
  }
99
- else if (key.pageDown) {
101
+ else if (key.pageDown || (key.ctrl && input === "d")) {
100
102
  navigation.pageDown(displayLines.length);
101
103
  }
102
104
  else if (key.leftArrow) {
@@ -107,9 +109,11 @@ function CalldataView({ proposal, navigation, }) {
107
109
  }
108
110
  else if (input === "e") {
109
111
  setExpandedKeys(new Set(allFoldableKeys));
112
+ navigation.goToTop();
110
113
  }
111
114
  else if (input === "c") {
112
115
  setExpandedKeys(new Set());
116
+ navigation.goToTop();
113
117
  }
114
118
  else if (input === "g") {
115
119
  navigation.goToTop();
@@ -118,7 +122,8 @@ function CalldataView({ proposal, navigation, }) {
118
122
  navigation.goToBottom(displayLines.length);
119
123
  }
120
124
  else if (key.return) {
121
- const currentLine = displayLines[state.scrollOffset];
125
+ const safeIdx = Math.max(0, Math.min(state.scrollOffset, displayLines.length - 1));
126
+ const currentLine = displayLines[safeIdx];
122
127
  if (currentLine?.foldable && currentLine.foldKey) {
123
128
  setExpandedKeys((prev) => {
124
129
  const next = new Set(prev);
@@ -132,17 +137,30 @@ function CalldataView({ proposal, navigation, }) {
132
137
  });
133
138
  }
134
139
  }
140
+ else if (input === "?") {
141
+ navigation.goToHelp();
142
+ }
135
143
  });
136
- const visibleLines = displayLines.slice(state.scrollOffset, state.scrollOffset + visibleCount);
144
+ // Clamp scrollOffset to valid range in case displayLines shrunk after fold collapse
145
+ const safeOffset = Math.max(0, Math.min(state.scrollOffset, displayLines.length - 1));
146
+ const visibleLines = displayLines.slice(safeOffset, safeOffset + visibleCount);
147
+ const shortTitle = proposal.title.length > 30
148
+ ? proposal.title.substring(0, 30) + "..."
149
+ : proposal.title;
150
+ const breadcrumb = ["Proposals", shortTitle, "Calldata"];
151
+ const keyHelpContext = {
152
+ calldataActionCount: actions.length,
153
+ currentActionIndex: safeActionIndex,
154
+ };
137
155
  if (actions.length === 0) {
138
- return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "calldata", loading: loading, loadingText: "Loading calldata...", error: error },
156
+ return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "calldata", loading: loading, loadingText: "Decoding calldata...", skeletonType: "text", error: error, breadcrumb: breadcrumb },
139
157
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "No calldata to display")));
140
158
  }
141
- return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "calldata", loading: loading, loadingText: "Loading calldata...", error: error },
159
+ return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "calldata", loading: loading, loadingText: "Decoding calldata...", skeletonType: "text", error: error, breadcrumb: breadcrumb, keyHelpContext: keyHelpContext },
142
160
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
143
161
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "cyan" },
144
162
  "Action ",
145
- state.calldataActionIndex + 1,
163
+ safeActionIndex + 1,
146
164
  "/",
147
165
  actions.length),
148
166
  actions.length > 1 && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, " (\u2190 \u2192 navigate)"),
@@ -155,26 +173,22 @@ function CalldataView({ proposal, navigation, }) {
155
173
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" }, "Value: "),
156
174
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, null, currentAction.value)))),
157
175
  ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { flexDirection: "column" },
158
- state.scrollOffset > 0 && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
159
- "\u2191 ",
160
- state.scrollOffset,
161
- " lines above"),
176
+ displayLines.length > visibleCount && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
177
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollPosition, { scrollOffset: safeOffset, visibleRows: visibleCount, totalItems: displayLines.length }))),
178
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollIndicatorTop, { scrollOffset: safeOffset, unit: "lines" }),
162
179
  visibleLines.map((line, i) => {
163
180
  const prefix = " ".repeat(line.indent);
164
181
  const isExpanded = line.foldKey && expandedKeys.has(line.foldKey);
165
182
  const foldIndicator = line.foldable
166
183
  ? isExpanded
167
184
  ? "[-] "
168
- : `[+${line.foldedLineCount}] `
185
+ : `[+${line.foldedLineCount ?? 0}] `
169
186
  : "";
170
187
  return (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { key: i },
171
188
  prefix,
172
189
  line.foldable && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "yellow" }, foldIndicator),
173
190
  line.text));
174
191
  }),
175
- state.scrollOffset + visibleCount < displayLines.length && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
176
- "\u2193 ",
177
- displayLines.length - state.scrollOffset - visibleCount,
178
- " lines below")))));
192
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollIndicatorBottom, { scrollOffset: safeOffset, visibleRows: visibleCount, totalItems: displayLines.length, unit: "lines" }))));
179
193
  }
180
194
  //# sourceMappingURL=CalldataView.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CalldataView.js","sourceRoot":"","sources":["../../../../src/cli/tui/views/CalldataView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CalldataView.js","sourceRoot":"","sources":["../../../../src/cli/tui/views/CalldataView.tsx"],"names":[],"mappings":";AAAA;;GAEG;;AA0GH,oCAqJC;AA7PD,sDAA4F;AAG5F,gDAAqD;AACrD,+DAAyD;AACzD,yEAI0C;AAC1C,gDAA6D;AAiB7D,MAAM,cAAc,GAAG,GAAG,CAAC;AAE3B,SAAS,eAAe,CACtB,KAAuB,EACvB,MAAc,EACd,SAAiB;IAEjB,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,OAAO,GAAG,GAAG,SAAS,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;IAE7C,IAAI,KAAK,GAAG,KAAK,CAAC,YAAY,CAAC;IAC/B,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;QACvB,KAAK,GAAG,GAAG,KAAK,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,GAAG,CAAC;IAC1D,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;IACjD,MAAM,YAAY,GAAG,UAAU,CAAC,CAAC,CAAC,IAAA,mBAAQ,EAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAEhE,KAAK,CAAC,IAAI,CAAC;QACT,IAAI,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,MAAM,YAAY,CAAC,CAAC,CAAC,EAAE;QACzD,MAAM;QACN,QAAQ,EAAE,UAAU;QACpB,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;QACzC,eAAe,EAAE,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS;KAClE,CAAC,CAAC;IAEH,IAAI,UAAU,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC1C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,KAAK,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,MAAM,GAAG,CAAC;gBAClB,QAAQ,EAAE,KAAK;gBACf,eAAe,EAAE,IAAI;gBACrB,OAAO;aACR,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QACzE,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,SAAS,CAAC,CAAC,CAAC;IACtF,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;YACrE,KAAK,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,OAAO,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,qBAAqB,CAAC,OAAwB,EAAE,MAAM,GAAG,CAAC,EAAE,SAAS,GAAG,MAAM;IACrF,MAAM,KAAK,GAAoB,EAAE,CAAC;IAElC,IAAI,MAAc,CAAC;IACnB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,MAAM,GAAG,sBAAsB,OAAO,CAAC,WAAW,EAAE,CAAC;IACvD,CAAC;SAAM,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAC7B,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC;IAC7B,CAAC;SAAM,CAAC;QACN,MAAM,GAAG,qBAAqB,OAAO,CAAC,QAAQ,GAAG,CAAC;IACpD,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,UAAU,EAAE,CAAC;QACvB,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,CAAC,EAAE,GAAG,SAAS,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B,SAAgB,YAAY,CAAC,EAC3B,QAAQ,EACR,UAAU,GACQ;IAClB,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;IAC7B,MAAM,MAAM,GAAG,IAAA,wBAAO,EACpB,GAAG,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,IAAI,EAAE,EAC1D,CAAC,QAAQ,CAAC,UAAU,CAAC,UAAU,CAAC,eAAe,CAAC,CACjD,CAAC;IACF,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,IAAA,2BAAgB,EAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;IACxE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,IAAA,yBAAQ,EAAc,IAAI,GAAG,EAAE,CAAC,CAAC;IAEzE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,mBAAmB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC,qBAAqB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAEnF,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,MAAM,YAAY,GAAG,IAAA,yBAAc,EAAC,cAAc,CAAC,CAAC;IAEpD,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAQ,CAAC,CAAC;IAE/F,IAAA,yBAAQ,EAAC,CAAC,KAAa,EAAE,GAAa,EAAE,EAAE;QACxC,IAAI,KAAK,KAAK,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YAChC,UAAU,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,CAAC,OAAO,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACxC,UAAU,CAAC,MAAM,EAAE,CAAC;QACtB,CAAC;aAAM,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YAC1C,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YACrD,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,CAAC;aAAM,IAAI,GAAG,CAAC,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,KAAK,KAAK,GAAG,CAAC,EAAE,CAAC;YACvD,UAAU,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;aAAM,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;YACzB,UAAU,CAAC,UAAU,EAAE,CAAC;QAC1B,CAAC;aAAM,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;YAC1B,UAAU,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,eAAe,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;YAC1C,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,eAAe,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;YAC3B,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,UAAU,CAAC,OAAO,EAAE,CAAC;QACvB,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,UAAU,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC7C,CAAC;aAAM,IAAI,GAAG,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;YACnF,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,WAAW,EAAE,QAAQ,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;gBACjD,eAAe,CAAC,CAAC,IAAI,EAAE,EAAE;oBACvB,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAQ,CAAC,EAAE,CAAC;wBACnC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAQ,CAAC,CAAC;oBACpC,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,OAAQ,CAAC,CAAC;oBACjC,CAAC;oBACD,OAAO,IAAI,CAAC;gBACd,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;aAAM,IAAI,KAAK,KAAK,GAAG,EAAE,CAAC;YACzB,UAAU,CAAC,QAAQ,EAAE,CAAC;QACxB,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,oFAAoF;IACpF,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,YAAY,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;IACtF,MAAM,YAAY,GAAG,YAAY,CAAC,KAAK,CAAC,UAAU,EAAE,UAAU,GAAG,YAAY,CAAC,CAAC;IAE/E,MAAM,UAAU,GAAG,QAAQ,CAAC,KAAK,CAAC,MAAM,GAAG,EAAE;QAC3C,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK;QACzC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;IAEnB,MAAM,UAAU,GAAG,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,CAAC,CAAC;IAEzD,MAAM,cAAc,GAAG;QACrB,mBAAmB,EAAE,OAAO,CAAC,MAAM;QACnC,kBAAkB,EAAE,eAAe;KACpC,CAAC;IAEF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,CACL,qCAAC,0BAAU,IAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAC,sBAAsB,EAAC,YAAY,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU;YACvI,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,6BAA8B,CACrC,CACd,CAAC;IACJ,CAAC;IAED,OAAO,CACL,qCAAC,0BAAU,IAAC,IAAI,EAAC,UAAU,EAAC,OAAO,EAAE,OAAO,EAAE,WAAW,EAAC,sBAAsB,EAAC,YAAY,EAAC,MAAM,EAAC,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,cAAc;QACvK,qCAAC,oBAAG,IAAC,YAAY,EAAE,CAAC;YAClB,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM;;gBAAS,eAAe,GAAG,CAAC;;gBAAG,OAAO,CAAC,MAAM,CAAQ;YACtE,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,gCAAuB;YAChE,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,oDAAqD,CACnE;QAEL,aAAa,IAAI,CAChB,qCAAC,oBAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,YAAY,EAAE,CAAC;YACzC,qCAAC,oBAAG;gBACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,eAAgB;gBAClC,qCAAC,qBAAI,QAAE,aAAa,CAAC,MAAM,CAAQ,CAC/B;YACN,qCAAC,oBAAG;gBACF,qCAAC,qBAAI,IAAC,KAAK,EAAC,MAAM,cAAe;gBACjC,qCAAC,qBAAI,QAAE,aAAa,CAAC,KAAK,CAAQ,CAC9B,CACF,CACP;QAED,qCAAC,oBAAG,IAAC,aAAa,EAAC,QAAQ;YACxB,YAAY,CAAC,MAAM,GAAG,YAAY,IAAI,CACrC,qCAAC,oBAAG,IAAC,YAAY,EAAE,CAAC;gBAClB,qCAAC,mCAAc,IACb,YAAY,EAAE,UAAU,EACxB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,YAAY,CAAC,MAAM,GAC/B,CACE,CACP;YACD,qCAAC,uCAAkB,IAAC,YAAY,EAAE,UAAU,EAAE,IAAI,EAAC,OAAO,GAAG;YAC5D,YAAY,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE;gBAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACxC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,IAAI,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAClE,MAAM,aAAa,GAAG,IAAI,CAAC,QAAQ;oBACjC,CAAC,CAAC,UAAU;wBACV,CAAC,CAAC,MAAM;wBACR,CAAC,CAAC,KAAK,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI;oBACtC,CAAC,CAAC,EAAE,CAAC;gBACP,OAAO,CACL,qCAAC,qBAAI,IAAC,GAAG,EAAE,CAAC;oBACT,MAAM;oBACN,IAAI,CAAC,QAAQ,IAAI,qCAAC,qBAAI,IAAC,KAAK,EAAC,QAAQ,IAAE,aAAa,CAAQ;oBAC5D,IAAI,CAAC,IAAI,CACL,CACR,CAAC;YACJ,CAAC,CAAC;YACF,qCAAC,0CAAqB,IACpB,YAAY,EAAE,UAAU,EACxB,WAAW,EAAE,YAAY,EACzB,UAAU,EAAE,YAAY,CAAC,MAAM,EAC/B,IAAI,EAAC,OAAO,GACZ,CACE,CACK,CACd,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DescriptionView.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/views/DescriptionView.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAI7D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,mBAAmB,CAAC;CACjC;AA6JD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,GACX,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CAqC3C"}
1
+ {"version":3,"file":"DescriptionView.d.ts","sourceRoot":"","sources":["../../../../src/cli/tui/views/DescriptionView.tsx"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAS7D,UAAU,oBAAoB;IAC5B,QAAQ,EAAE,gBAAgB,CAAC;IAC3B,UAAU,EAAE,mBAAmB,CAAC;CACjC;AAiKD,wBAAgB,eAAe,CAAC,EAC9B,QAAQ,EACR,UAAU,GACX,EAAE,oBAAoB,GAAG,KAAK,CAAC,YAAY,CA4D3C"}
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.DescriptionView = DescriptionView;
7
7
  const ink_wrapper_js_1 = require("../ink-wrapper.js");
8
8
  const ViewLayout_js_1 = require("../components/ViewLayout.js");
9
+ const ScrollIndicator_js_1 = require("../components/ScrollIndicator.js");
9
10
  const index_js_1 = require("../utils/index.js");
10
11
  function getDescription(proposal) {
11
12
  const stages = proposal.checkpoint.cachedData.completedStages ?? [];
@@ -21,6 +22,8 @@ function getDescription(proposal) {
21
22
  function parseMarkdown(text, width) {
22
23
  const result = [];
23
24
  const lines = text.split("\n");
25
+ // Guard against very narrow terminals
26
+ const safeWidth = Math.max(20, width);
24
27
  for (const rawLine of lines) {
25
28
  const trimmed = rawLine.trim();
26
29
  // Empty line
@@ -30,7 +33,7 @@ function parseMarkdown(text, width) {
30
33
  }
31
34
  // Horizontal rule
32
35
  if (/^[-*_]{3,}$/.test(trimmed)) {
33
- result.push({ text: "─".repeat(Math.min(width - 4, 60)), type: "separator", indent: 0 });
36
+ result.push({ text: "─".repeat(Math.min(safeWidth - 4, 60)), type: "separator", indent: 0 });
34
37
  continue;
35
38
  }
36
39
  // Headers
@@ -49,7 +52,7 @@ function parseMarkdown(text, width) {
49
52
  // Bullet points
50
53
  if (/^[-*+] /.test(trimmed)) {
51
54
  const bulletText = trimmed.slice(2);
52
- wrapTextToLines(bulletText, width - 6, "bullet", 2, result);
55
+ wrapTextToLines(bulletText, safeWidth - 6, "bullet", 2, result);
53
56
  continue;
54
57
  }
55
58
  // Numbered lists
@@ -57,9 +60,10 @@ function parseMarkdown(text, width) {
57
60
  const match = trimmed.match(/^(\d+)\. /);
58
61
  if (match) {
59
62
  const numText = trimmed.slice(match[0].length);
60
- result.push({ text: `${match[1]}. ${numText.slice(0, width - 6)}`, type: "bullet", indent: 0 });
61
- if (numText.length > width - 6) {
62
- wrapTextToLines(numText.slice(width - 6), width - 6, "normal", 3, result);
63
+ const textWidth = safeWidth - 6;
64
+ result.push({ text: `${match[1]}. ${numText.slice(0, textWidth)}`, type: "bullet", indent: 0 });
65
+ if (numText.length > textWidth) {
66
+ wrapTextToLines(numText.slice(textWidth), textWidth, "normal", 3, result);
63
67
  }
64
68
  continue;
65
69
  }
@@ -71,18 +75,19 @@ function parseMarkdown(text, width) {
71
75
  // Links - simplify [text](url) to just text
72
76
  const processedLine = trimmed.replace(/\[([^\]]+)\]\([^)]+\)/g, "$1");
73
77
  // Normal paragraph
74
- wrapTextToLines(processedLine, width - 4, "normal", 0, result);
78
+ wrapTextToLines(processedLine, safeWidth - 4, "normal", 0, result);
75
79
  }
76
80
  return result;
77
81
  }
78
82
  function wrapTextToLines(text, width, type, indent, result) {
83
+ const safeWidth = Math.max(10, width);
79
84
  const words = text.split(/\s+/);
80
85
  let currentLine = "";
81
86
  for (const word of words) {
82
87
  if (currentLine.length === 0) {
83
88
  currentLine = word;
84
89
  }
85
- else if (currentLine.length + 1 + word.length <= width) {
90
+ else if (currentLine.length + 1 + word.length <= safeWidth) {
86
91
  currentLine += " " + word;
87
92
  }
88
93
  else {
@@ -134,23 +139,23 @@ function DescriptionView({ proposal, navigation, }) {
134
139
  const { state } = navigation;
135
140
  const description = getDescription(proposal);
136
141
  const terminalWidth = process.stdout.columns || 80;
137
- const lines = parseMarkdown(description, terminalWidth - 4);
142
+ const lines = (0, ink_wrapper_js_1.useMemo)(() => parseMarkdown(description, terminalWidth - 4), [description, terminalWidth]);
138
143
  const visibleCount = (0, index_js_1.getVisibleRows)(RESERVED_LINES);
139
144
  const visibleLines = lines.slice(state.scrollOffset, state.scrollOffset + visibleCount);
140
145
  (0, ink_wrapper_js_1.useInput)((input, key) => {
141
146
  if (input === "b" || key.escape) {
142
147
  navigation.back();
143
148
  }
144
- else if (key.upArrow) {
149
+ else if (key.upArrow || input === "k") {
145
150
  navigation.moveUp();
146
151
  }
147
- else if (key.downArrow) {
152
+ else if (key.downArrow || input === "j") {
148
153
  navigation.moveDown(lines.length);
149
154
  }
150
- else if (key.pageUp) {
155
+ else if (key.pageUp || (key.ctrl && input === "u")) {
151
156
  navigation.pageUp(lines.length);
152
157
  }
153
- else if (key.pageDown) {
158
+ else if (key.pageDown || (key.ctrl && input === "d")) {
154
159
  navigation.pageDown(lines.length);
155
160
  }
156
161
  else if (input === "g") {
@@ -159,16 +164,19 @@ function DescriptionView({ proposal, navigation, }) {
159
164
  else if (input === "G") {
160
165
  navigation.goToBottom(lines.length);
161
166
  }
167
+ else if (input === "?") {
168
+ navigation.goToHelp();
169
+ }
162
170
  });
163
- return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "description", title: "Proposal Description" },
164
- state.scrollOffset > 0 && ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
165
- "\u2191 ",
166
- state.scrollOffset,
167
- " lines above"),
171
+ const shortTitle = proposal.title.length > 30
172
+ ? proposal.title.substring(0, 30) + "..."
173
+ : proposal.title;
174
+ const breadcrumb = ["Proposals", shortTitle, "Description"];
175
+ return (ink_wrapper_js_1.React.createElement(ViewLayout_js_1.ViewLayout, { view: "description", title: "Proposal Description", breadcrumb: breadcrumb },
176
+ lines.length > visibleCount && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Box, { marginBottom: 1 },
177
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollPosition, { scrollOffset: state.scrollOffset, visibleRows: visibleCount, totalItems: lines.length }))),
178
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollIndicatorTop, { scrollOffset: state.scrollOffset, unit: "lines" }),
168
179
  visibleLines.map((line, i) => (ink_wrapper_js_1.React.createElement(FormattedLineComponent, { key: i, line: line }))),
169
- state.scrollOffset + visibleCount < lines.length && (ink_wrapper_js_1.React.createElement(ink_wrapper_js_1.Text, { color: "gray" },
170
- "\u2193 ",
171
- lines.length - state.scrollOffset - visibleCount,
172
- " lines below"))));
180
+ ink_wrapper_js_1.React.createElement(ScrollIndicator_js_1.ScrollIndicatorBottom, { scrollOffset: state.scrollOffset, visibleRows: visibleCount, totalItems: lines.length, unit: "lines" })));
173
181
  }
174
182
  //# sourceMappingURL=DescriptionView.js.map