codebase-onboarder 0.6.0 → 0.7.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 (448) hide show
  1. package/README.md +174 -46
  2. package/bin/build-if-source.js +23 -0
  3. package/cli/commands.d.ts +26 -0
  4. package/cli/commands.js +836 -811
  5. package/cli/commands.js.map +1 -0
  6. package/cli/explorer/advanced.d.ts +14 -0
  7. package/cli/explorer/advanced.js +321 -329
  8. package/cli/explorer/advanced.js.map +1 -0
  9. package/cli/explorer/app.d.ts +1 -0
  10. package/cli/explorer/app.js +384 -313
  11. package/cli/explorer/app.js.map +1 -0
  12. package/cli/explorer/assistant.d.ts +9 -0
  13. package/cli/explorer/assistant.js +58 -0
  14. package/cli/explorer/assistant.js.map +1 -0
  15. package/cli/explorer/commands.d.ts +17 -0
  16. package/cli/explorer/commands.js +368 -302
  17. package/cli/explorer/commands.js.map +1 -0
  18. package/cli/explorer/featureViews.d.ts +124 -0
  19. package/cli/explorer/featureViews.js +179 -0
  20. package/cli/explorer/featureViews.js.map +1 -0
  21. package/cli/explorer/github.d.ts +21 -0
  22. package/cli/explorer/github.js +42 -44
  23. package/cli/explorer/github.js.map +1 -0
  24. package/cli/explorer/graphs.d.ts +7 -0
  25. package/cli/explorer/graphs.js +90 -95
  26. package/cli/explorer/graphs.js.map +1 -0
  27. package/cli/explorer/picker.d.ts +22 -0
  28. package/cli/explorer/picker.js +150 -0
  29. package/cli/explorer/picker.js.map +1 -0
  30. package/cli/explorer/report.d.ts +85 -0
  31. package/cli/explorer/report.js +60 -0
  32. package/cli/explorer/report.js.map +1 -0
  33. package/cli/explorer/session.d.ts +449 -0
  34. package/cli/explorer/session.js +143 -144
  35. package/cli/explorer/session.js.map +1 -0
  36. package/cli/explorer/views.d.ts +19 -0
  37. package/cli/explorer/views.js +465 -482
  38. package/cli/explorer/views.js.map +1 -0
  39. package/cli/explorer/wrap.d.ts +1 -0
  40. package/cli/explorer/wrap.js +28 -44
  41. package/cli/explorer/wrap.js.map +1 -0
  42. package/cli/main.d.ts +1 -0
  43. package/cli/main.js +214 -161
  44. package/cli/main.js.map +1 -0
  45. package/cli/prompt.d.ts +5 -0
  46. package/cli/prompt.js +84 -80
  47. package/cli/prompt.js.map +1 -0
  48. package/cli/scanOptions.d.ts +2 -0
  49. package/cli/scanOptions.js +11 -0
  50. package/cli/scanOptions.js.map +1 -0
  51. package/cli/ui.d.ts +33 -0
  52. package/cli/ui.js +35 -44
  53. package/cli/ui.js.map +1 -0
  54. package/cli/wizard.d.ts +187 -0
  55. package/cli/wizard.js +304 -284
  56. package/cli/wizard.js.map +1 -0
  57. package/package.json +15 -4
  58. package/public/app.d.ts +1 -0
  59. package/public/app.js +1057 -1009
  60. package/public/app.js.map +1 -0
  61. package/public/browser.d.ts +68 -0
  62. package/public/browser.js +2 -0
  63. package/public/browser.js.map +1 -0
  64. package/public/index.html +30 -13
  65. package/public/js/about.d.ts +6 -0
  66. package/public/js/about.js +152 -172
  67. package/public/js/about.js.map +1 -0
  68. package/public/js/aiDraft.d.ts +3 -0
  69. package/public/js/aiDraft.js +116 -124
  70. package/public/js/aiDraft.js.map +1 -0
  71. package/public/js/analysisPanel.d.ts +7 -0
  72. package/public/js/analysisPanel.js +166 -166
  73. package/public/js/analysisPanel.js.map +1 -0
  74. package/public/js/analysisReport.d.ts +38 -0
  75. package/public/js/analysisReport.js +105 -110
  76. package/public/js/analysisReport.js.map +1 -0
  77. package/public/js/api.d.ts +26 -0
  78. package/public/js/api.js +176 -167
  79. package/public/js/api.js.map +1 -0
  80. package/public/js/atlas.d.ts +6 -0
  81. package/public/js/atlas.js +50 -58
  82. package/public/js/atlas.js.map +1 -0
  83. package/public/js/blameView.d.ts +2 -0
  84. package/public/js/blameView.js +36 -37
  85. package/public/js/blameView.js.map +1 -0
  86. package/public/js/codeTab.d.ts +3 -0
  87. package/public/js/codeTab.js +175 -180
  88. package/public/js/codeTab.js.map +1 -0
  89. package/public/js/codeViewer.d.ts +5 -0
  90. package/public/js/codeViewer.js +162 -150
  91. package/public/js/codeViewer.js.map +1 -0
  92. package/public/js/components/FileChip.d.ts +9 -0
  93. package/public/js/components/FileChip.js +45 -49
  94. package/public/js/components/FileChip.js.map +1 -0
  95. package/public/js/components/MetricSparkline.d.ts +7 -0
  96. package/public/js/components/MetricSparkline.js +35 -44
  97. package/public/js/components/MetricSparkline.js.map +1 -0
  98. package/public/js/components/RiskBadge.d.ts +9 -0
  99. package/public/js/components/RiskBadge.js +55 -63
  100. package/public/js/components/RiskBadge.js.map +1 -0
  101. package/public/js/deepAnalysisView.d.ts +99 -0
  102. package/public/js/deepAnalysisView.js +282 -302
  103. package/public/js/deepAnalysisView.js.map +1 -0
  104. package/public/js/diagramPane.d.ts +8 -0
  105. package/public/js/diagramPane.js +133 -135
  106. package/public/js/diagramPane.js.map +1 -0
  107. package/public/js/diffView.d.ts +6 -0
  108. package/public/js/diffView.js +222 -209
  109. package/public/js/diffView.js.map +1 -0
  110. package/public/js/docsView.d.ts +2 -0
  111. package/public/js/docsView.js +441 -442
  112. package/public/js/docsView.js.map +1 -0
  113. package/public/js/dom.d.ts +189 -0
  114. package/public/js/dom.js +5 -0
  115. package/public/js/dom.js.map +1 -0
  116. package/public/js/fileSourceBrowser.d.ts +5 -0
  117. package/public/js/fileSourceBrowser.js +33 -41
  118. package/public/js/fileSourceBrowser.js.map +1 -0
  119. package/public/js/flameGraph.d.ts +5 -0
  120. package/public/js/flameGraph.js +62 -72
  121. package/public/js/flameGraph.js.map +1 -0
  122. package/public/js/forceGraph.d.ts +10 -0
  123. package/public/js/forceGraph.js +581 -556
  124. package/public/js/forceGraph.js.map +1 -0
  125. package/public/js/heatmap.d.ts +4 -0
  126. package/public/js/heatmap.js +142 -164
  127. package/public/js/heatmap.js.map +1 -0
  128. package/public/js/highlight.d.ts +2 -0
  129. package/public/js/highlight.js +116 -107
  130. package/public/js/highlight.js.map +1 -0
  131. package/public/js/html.d.ts +2 -0
  132. package/public/js/html.js +14 -44
  133. package/public/js/html.js.map +1 -0
  134. package/public/js/insightsView.d.ts +5 -0
  135. package/public/js/insightsView.js +93 -111
  136. package/public/js/insightsView.js.map +1 -0
  137. package/public/js/inspector.d.ts +37 -0
  138. package/public/js/inspector.js +416 -445
  139. package/public/js/inspector.js.map +1 -0
  140. package/public/js/llm.d.ts +113 -0
  141. package/public/js/llm.js +233 -272
  142. package/public/js/llm.js.map +1 -0
  143. package/public/js/mapView.d.ts +3 -0
  144. package/public/js/mapView.js +121 -120
  145. package/public/js/mapView.js.map +1 -0
  146. package/public/js/markdown.d.ts +3 -0
  147. package/public/js/markdown.js +84 -91
  148. package/public/js/markdown.js.map +1 -0
  149. package/public/js/mindmap.d.ts +32 -0
  150. package/public/js/mindmap.js +244 -259
  151. package/public/js/mindmap.js.map +1 -0
  152. package/public/js/mobilePanels.d.ts +5 -0
  153. package/public/js/mobilePanels.js +50 -0
  154. package/public/js/mobilePanels.js.map +1 -0
  155. package/public/js/repoFiles.d.ts +12 -0
  156. package/public/js/repoFiles.js +28 -27
  157. package/public/js/repoFiles.js.map +1 -0
  158. package/public/js/reviewView.d.ts +28 -0
  159. package/public/js/reviewView.js +256 -0
  160. package/public/js/reviewView.js.map +1 -0
  161. package/public/js/sbomView.d.ts +3 -0
  162. package/public/js/sbomView.js +59 -67
  163. package/public/js/sbomView.js.map +1 -0
  164. package/public/js/scanCache.d.ts +16 -0
  165. package/public/js/scanCache.js +67 -65
  166. package/public/js/scanCache.js.map +1 -0
  167. package/public/js/search.d.ts +7 -0
  168. package/public/js/search.js +868 -800
  169. package/public/js/search.js.map +1 -0
  170. package/public/js/searchLocal.d.ts +42 -0
  171. package/public/js/searchLocal.js +87 -0
  172. package/public/js/searchLocal.js.map +1 -0
  173. package/public/js/serverSettings.d.ts +5 -0
  174. package/public/js/serverSettings.js +153 -164
  175. package/public/js/serverSettings.js.map +1 -0
  176. package/public/js/state.d.ts +798 -0
  177. package/public/js/state.js +114 -122
  178. package/public/js/state.js.map +1 -0
  179. package/public/js/tour.d.ts +6 -0
  180. package/public/js/tour.js +5 -7
  181. package/public/js/tour.js.map +1 -0
  182. package/public/js/transitions.d.ts +2 -0
  183. package/public/js/transitions.js +9 -10
  184. package/public/js/transitions.js.map +1 -0
  185. package/public/js/tree.d.ts +12 -0
  186. package/public/js/tree.js +157 -154
  187. package/public/js/tree.js.map +1 -0
  188. package/public/js/workflowsView.d.ts +3 -0
  189. package/public/js/workflowsView.js +15 -22
  190. package/public/js/workflowsView.js.map +1 -0
  191. package/public/search.css +495 -0
  192. package/public/styles.css +163 -346
  193. package/public/workbench.css +166 -0
  194. package/server/apiAuth.d.ts +3 -0
  195. package/server/apiAuth.js +18 -20
  196. package/server/apiAuth.js.map +1 -0
  197. package/server/apiDiff.d.ts +2 -0
  198. package/server/apiDiff.js +20 -18
  199. package/server/apiDiff.js.map +1 -0
  200. package/server/apiDocs.d.ts +2 -0
  201. package/server/apiDocs.js +38 -40
  202. package/server/apiDocs.js.map +1 -0
  203. package/server/apiFile.d.ts +1 -0
  204. package/server/apiFile.js +14 -17
  205. package/server/apiFile.js.map +1 -0
  206. package/server/apiGitBlame.d.ts +2 -0
  207. package/server/apiGitBlame.js +50 -51
  208. package/server/apiGitBlame.js.map +1 -0
  209. package/server/apiMcp.d.ts +4 -0
  210. package/server/apiMcp.js +64 -66
  211. package/server/apiMcp.js.map +1 -0
  212. package/server/apiReview.d.ts +2 -0
  213. package/server/apiReview.js +45 -0
  214. package/server/apiReview.js.map +1 -0
  215. package/server/apiScan.d.ts +5 -0
  216. package/server/apiScan.js +90 -71
  217. package/server/apiScan.js.map +1 -0
  218. package/server/apiSearch.d.ts +33 -0
  219. package/server/apiSearch.js +184 -200
  220. package/server/apiSearch.js.map +1 -0
  221. package/server/apiSettings.d.ts +4 -0
  222. package/server/apiSettings.js +84 -85
  223. package/server/apiSettings.js.map +1 -0
  224. package/server/apiTools.d.ts +3 -0
  225. package/server/apiTools.js +55 -56
  226. package/server/apiTools.js.map +1 -0
  227. package/server/auth.d.ts +5 -0
  228. package/server/auth.js +54 -51
  229. package/server/auth.js.map +1 -0
  230. package/server/config.d.ts +42 -0
  231. package/server/config.js +189 -194
  232. package/server/config.js.map +1 -0
  233. package/server/daemon.d.ts +12 -0
  234. package/server/daemon.js +124 -114
  235. package/server/daemon.js.map +1 -0
  236. package/server/fileSourceNode.d.ts +2 -0
  237. package/server/fileSourceNode.js +34 -36
  238. package/server/fileSourceNode.js.map +1 -0
  239. package/server/gitClone.d.ts +9 -0
  240. package/server/gitClone.js +59 -61
  241. package/server/gitClone.js.map +1 -0
  242. package/server/gitDiff.d.ts +36 -0
  243. package/server/gitDiff.js +271 -169
  244. package/server/gitDiff.js.map +1 -0
  245. package/server/gitHistory.d.ts +12 -0
  246. package/server/gitHistory.js +80 -80
  247. package/server/gitHistory.js.map +1 -0
  248. package/server/gitRemote.d.ts +12 -0
  249. package/server/gitRemote.js +37 -38
  250. package/server/gitRemote.js.map +1 -0
  251. package/server/htmlText.d.ts +4 -0
  252. package/server/htmlText.js +16 -23
  253. package/server/htmlText.js.map +1 -0
  254. package/server/http.d.ts +5 -0
  255. package/server/http.js +27 -30
  256. package/server/http.js.map +1 -0
  257. package/server/httpGuards.d.ts +2 -0
  258. package/server/httpGuards.js +47 -43
  259. package/server/httpGuards.js.map +1 -0
  260. package/server/https.d.ts +34 -0
  261. package/server/https.js +121 -111
  262. package/server/https.js.map +1 -0
  263. package/server/index.d.ts +40 -0
  264. package/server/index.js +139 -147
  265. package/server/index.js.map +1 -0
  266. package/server/layout.d.ts +26 -0
  267. package/server/layout.js +59 -64
  268. package/server/layout.js.map +1 -0
  269. package/server/llmProxy.d.ts +3 -0
  270. package/server/llmProxy.js +137 -135
  271. package/server/llmProxy.js.map +1 -0
  272. package/server/logger.d.ts +38 -0
  273. package/server/logger.js +198 -211
  274. package/server/logger.js.map +1 -0
  275. package/server/mcp/analysis.d.ts +29 -0
  276. package/server/mcp/analysis.js +99 -120
  277. package/server/mcp/analysis.js.map +1 -0
  278. package/server/mcp/http.d.ts +9 -0
  279. package/server/mcp/http.js +128 -137
  280. package/server/mcp/http.js.map +1 -0
  281. package/server/mcp/runner.d.ts +68 -0
  282. package/server/mcp/runner.js +208 -218
  283. package/server/mcp/runner.js.map +1 -0
  284. package/server/mcp/server.d.ts +29 -0
  285. package/server/mcp/server.js +166 -179
  286. package/server/mcp/server.js.map +1 -0
  287. package/server/mcp/standalone.d.ts +1 -0
  288. package/server/mcp/standalone.js +8 -10
  289. package/server/mcp/standalone.js.map +1 -0
  290. package/server/mcp/tools.d.ts +2020 -0
  291. package/server/mcp/tools.js +523 -574
  292. package/server/mcp/tools.js.map +1 -0
  293. package/server/paths.d.ts +3 -0
  294. package/server/paths.js +17 -15
  295. package/server/paths.js.map +1 -0
  296. package/server/pidfile.d.ts +9 -0
  297. package/server/pidfile.js +43 -45
  298. package/server/pidfile.js.map +1 -0
  299. package/server/review.d.ts +5 -0
  300. package/server/review.js +35 -0
  301. package/server/review.js.map +1 -0
  302. package/server/router.d.ts +33 -0
  303. package/server/router.js +191 -197
  304. package/server/router.js.map +1 -0
  305. package/server/scanRequest.d.ts +3 -0
  306. package/server/scanRequest.js +36 -0
  307. package/server/scanRequest.js.map +1 -0
  308. package/server/searchIndex.d.ts +17 -0
  309. package/server/searchIndex.js +83 -80
  310. package/server/searchIndex.js.map +1 -0
  311. package/server/sessions.d.ts +14 -0
  312. package/server/sessions.js +62 -70
  313. package/server/sessions.js.map +1 -0
  314. package/server/startup.d.ts +118 -0
  315. package/server/startup.js +143 -148
  316. package/server/startup.js.map +1 -0
  317. package/server/static.d.ts +6 -0
  318. package/server/static.js +28 -31
  319. package/server/static.js.map +1 -0
  320. package/server/tools/install.d.ts +4 -0
  321. package/server/tools/install.js +176 -185
  322. package/server/tools/install.js.map +1 -0
  323. package/server/tools/parse.d.ts +8 -0
  324. package/server/tools/parse.js +112 -114
  325. package/server/tools/parse.js.map +1 -0
  326. package/server/tools/platform.d.ts +9 -0
  327. package/server/tools/platform.js +49 -47
  328. package/server/tools/platform.js.map +1 -0
  329. package/server/tools/registry.d.ts +137 -0
  330. package/server/tools/registry.js +173 -172
  331. package/server/tools/registry.js.map +1 -0
  332. package/server/tools/scan.d.ts +34 -0
  333. package/server/tools/scan.js +89 -98
  334. package/server/tools/scan.js.map +1 -0
  335. package/server/tools.d.ts +34 -0
  336. package/server/tools.js +94 -107
  337. package/server/tools.js.map +1 -0
  338. package/server/tunnel.d.ts +29 -0
  339. package/server/tunnel.js +61 -66
  340. package/server/tunnel.js.map +1 -0
  341. package/shared/analyzer/docs.d.ts +16 -0
  342. package/shared/analyzer/docs.js +99 -93
  343. package/shared/analyzer/docs.js.map +1 -0
  344. package/shared/analyzer/explainLocal.d.ts +4 -0
  345. package/shared/analyzer/explainLocal.js +122 -142
  346. package/shared/analyzer/explainLocal.js.map +1 -0
  347. package/shared/analyzer/github.d.ts +37 -0
  348. package/shared/analyzer/github.js +41 -43
  349. package/shared/analyzer/github.js.map +1 -0
  350. package/shared/analyzer/graph.d.ts +41 -0
  351. package/shared/analyzer/graph.js +393 -400
  352. package/shared/analyzer/graph.js.map +1 -0
  353. package/shared/analyzer/health.d.ts +33 -0
  354. package/shared/analyzer/health.js +197 -193
  355. package/shared/analyzer/health.js.map +1 -0
  356. package/shared/analyzer/history.d.ts +29 -0
  357. package/shared/analyzer/history.js +110 -111
  358. package/shared/analyzer/history.js.map +1 -0
  359. package/shared/analyzer/jsonConfig.d.ts +2 -0
  360. package/shared/analyzer/jsonConfig.js +61 -0
  361. package/shared/analyzer/jsonConfig.js.map +1 -0
  362. package/shared/analyzer/languages/csharp.d.ts +26 -0
  363. package/shared/analyzer/languages/csharp.js +83 -88
  364. package/shared/analyzer/languages/csharp.js.map +1 -0
  365. package/shared/analyzer/languages/generic.d.ts +23 -0
  366. package/shared/analyzer/languages/generic.js +94 -105
  367. package/shared/analyzer/languages/generic.js.map +1 -0
  368. package/shared/analyzer/languages/go.d.ts +24 -0
  369. package/shared/analyzer/languages/go.js +45 -54
  370. package/shared/analyzer/languages/go.js.map +1 -0
  371. package/shared/analyzer/languages/index.d.ts +6 -0
  372. package/shared/analyzer/languages/index.js +19 -20
  373. package/shared/analyzer/languages/index.js.map +1 -0
  374. package/shared/analyzer/languages/java.d.ts +20 -0
  375. package/shared/analyzer/languages/java.js +73 -78
  376. package/shared/analyzer/languages/java.js.map +1 -0
  377. package/shared/analyzer/languages/javascript.d.ts +12 -0
  378. package/shared/analyzer/languages/javascript.js +258 -209
  379. package/shared/analyzer/languages/javascript.js.map +1 -0
  380. package/shared/analyzer/languages/python.d.ts +23 -0
  381. package/shared/analyzer/languages/python.js +92 -100
  382. package/shared/analyzer/languages/python.js.map +1 -0
  383. package/shared/analyzer/languages/rust.d.ts +17 -0
  384. package/shared/analyzer/languages/rust.js +96 -98
  385. package/shared/analyzer/languages/rust.js.map +1 -0
  386. package/shared/analyzer/languages/typescript.d.ts +11 -0
  387. package/shared/analyzer/languages/typescript.js +117 -116
  388. package/shared/analyzer/languages/typescript.js.map +1 -0
  389. package/shared/analyzer/licenses.d.ts +18 -0
  390. package/shared/analyzer/licenses.js +130 -133
  391. package/shared/analyzer/licenses.js.map +1 -0
  392. package/shared/analyzer/metrics.d.ts +20 -0
  393. package/shared/analyzer/metrics.js +112 -104
  394. package/shared/analyzer/metrics.js.map +1 -0
  395. package/shared/analyzer/pathUtil.d.ts +10 -0
  396. package/shared/analyzer/pathUtil.js +29 -35
  397. package/shared/analyzer/pathUtil.js.map +1 -0
  398. package/shared/analyzer/patterns.d.ts +11 -0
  399. package/shared/analyzer/patterns.js +231 -253
  400. package/shared/analyzer/patterns.js.map +1 -0
  401. package/shared/analyzer/scan.d.ts +62 -0
  402. package/shared/analyzer/scan.js +451 -442
  403. package/shared/analyzer/scan.js.map +1 -0
  404. package/shared/analyzer/scanControl.d.ts +11 -0
  405. package/shared/analyzer/scanControl.js +62 -0
  406. package/shared/analyzer/scanControl.js.map +1 -0
  407. package/shared/analyzer/security.d.ts +18 -0
  408. package/shared/analyzer/security.js +159 -159
  409. package/shared/analyzer/security.js.map +1 -0
  410. package/shared/analyzer/services.d.ts +5 -0
  411. package/shared/analyzer/services.js +141 -138
  412. package/shared/analyzer/services.js.map +1 -0
  413. package/shared/analyzer/stack.d.ts +6 -0
  414. package/shared/analyzer/stack.js +134 -141
  415. package/shared/analyzer/stack.js.map +1 -0
  416. package/shared/analyzer/tour.d.ts +2 -0
  417. package/shared/analyzer/tour.js +45 -53
  418. package/shared/analyzer/tour.js.map +1 -0
  419. package/shared/analyzer/util.d.ts +8 -0
  420. package/shared/analyzer/util.js +130 -76
  421. package/shared/analyzer/util.js.map +1 -0
  422. package/shared/analyzer/workflows.d.ts +8 -0
  423. package/shared/analyzer/workflows.js +139 -134
  424. package/shared/analyzer/workflows.js.map +1 -0
  425. package/shared/contracts.d.ts +250 -0
  426. package/shared/contracts.js +2 -0
  427. package/shared/contracts.js.map +1 -0
  428. package/shared/diagram/aiFacts.d.ts +35 -0
  429. package/shared/diagram/aiFacts.js +102 -105
  430. package/shared/diagram/aiFacts.js.map +1 -0
  431. package/shared/diagram/aiMermaid.d.ts +5 -0
  432. package/shared/diagram/aiMermaid.js +46 -45
  433. package/shared/diagram/aiMermaid.js.map +1 -0
  434. package/shared/diagram/atlas.d.ts +16 -0
  435. package/shared/diagram/atlas.js +51 -60
  436. package/shared/diagram/atlas.js.map +1 -0
  437. package/shared/diagram/mermaid.d.ts +43 -0
  438. package/shared/diagram/mermaid.js +348 -370
  439. package/shared/diagram/mermaid.js.map +1 -0
  440. package/shared/review/contracts.d.ts +95 -0
  441. package/shared/review/contracts.js +2 -0
  442. package/shared/review/contracts.js.map +1 -0
  443. package/shared/review/review.d.ts +10 -0
  444. package/shared/review/review.js +184 -0
  445. package/shared/review/review.js.map +1 -0
  446. package/shared/search/query.d.ts +32 -0
  447. package/shared/search/query.js +395 -388
  448. package/shared/search/query.js.map +1 -0
package/public/styles.css CHANGED
@@ -73,6 +73,9 @@
73
73
  html, body {
74
74
  margin: 0;
75
75
  height: 100%;
76
+ width: 100%;
77
+ max-width: 100%;
78
+ overflow-x: hidden;
76
79
  background: var(--paper);
77
80
  color: var(--ink);
78
81
  font-family: var(--sans);
@@ -485,6 +488,9 @@ html, body {
485
488
 
486
489
  .stage-actions { margin-left: auto; display: flex; gap: 6px; align-items: center; }
487
490
 
491
+ .mobile-panel-buttons { display: none; }
492
+ .mobile-panel-top { display: none; }
493
+
488
494
  /* ---------- explorer filter row ---------- */
489
495
 
490
496
  .stage-filters {
@@ -642,6 +648,8 @@ html, body {
642
648
  cursor: grab;
643
649
  }
644
650
  .canvas.is-dragging { cursor: grabbing; }
651
+ .canvas { touch-action: none; }
652
+ .canvas:has(.atlas-mode) { touch-action: pan-y; }
645
653
  .canvas::after {
646
654
  content: '';
647
655
  position: absolute;
@@ -1028,6 +1036,7 @@ html, body {
1028
1036
  width: 100%;
1029
1037
  height: 100%;
1030
1038
  display: block;
1039
+ touch-action: none;
1031
1040
  }
1032
1041
 
1033
1042
  .graph-controls {
@@ -1071,6 +1080,7 @@ html, body {
1071
1080
  width: 100%;
1072
1081
  height: 100%;
1073
1082
  display: block;
1083
+ touch-action: manipulation;
1074
1084
  }
1075
1085
 
1076
1086
  .flame-canvas {
@@ -1079,352 +1089,6 @@ html, body {
1079
1089
  display: block;
1080
1090
  }
1081
1091
 
1082
- .search-overlay {
1083
- position: fixed;
1084
- top: 0; left: 0; right: 0; bottom: 0;
1085
- background: rgba(0, 0, 0, 0.45);
1086
- backdrop-filter: blur(8px);
1087
- display: flex;
1088
- justify-content: center;
1089
- padding-top: 12vh;
1090
- z-index: 2000;
1091
- animation: searchFadeIn 0.15s ease-out;
1092
- }
1093
-
1094
- @keyframes searchFadeIn {
1095
- from { opacity: 0; transform: scale(0.98); }
1096
- to { opacity: 1; transform: scale(1); }
1097
- }
1098
-
1099
- .search-modal {
1100
- width: 100%;
1101
- max-width: 680px;
1102
- background: var(--card);
1103
- border-radius: 10px;
1104
- box-shadow: 0 16px 48px rgba(0, 0, 0, 0.22);
1105
- border: 1.5px solid var(--line);
1106
- display: flex;
1107
- flex-direction: column;
1108
- max-height: 65vh;
1109
- overflow: hidden;
1110
- }
1111
-
1112
- .search-header {
1113
- display: flex;
1114
- flex-direction: column;
1115
- border-bottom: 1px solid var(--line);
1116
- background: var(--paper);
1117
- }
1118
-
1119
- .search-input {
1120
- font-family: var(--mono);
1121
- font-size: 14px;
1122
- flex: 1;
1123
- min-width: 0;
1124
- padding: 14px 0;
1125
- border: none;
1126
- background: transparent;
1127
- outline: none;
1128
- color: var(--ink);
1129
- }
1130
- .search-input::placeholder { color: var(--faint); }
1131
-
1132
- .search-modes {
1133
- display: flex;
1134
- gap: 4px;
1135
- padding: 0 12px 8px;
1136
- }
1137
-
1138
- .search-mode-chip {
1139
- font-family: var(--mono);
1140
- font-size: 11px;
1141
- padding: 2px 8px;
1142
- border-radius: 4px;
1143
- border: 1px solid var(--line);
1144
- background: transparent;
1145
- color: var(--faint);
1146
- cursor: pointer;
1147
- transition: all 0.12s ease;
1148
- }
1149
- .search-mode-chip:hover {
1150
- color: var(--ink);
1151
- background: var(--paper-2);
1152
- }
1153
- .search-mode-chip.is-active {
1154
- color: var(--ink);
1155
- background: var(--accent-soft);
1156
- border-color: var(--accent);
1157
- font-weight: 600;
1158
- }
1159
-
1160
- .search-results {
1161
- overflow-y: auto;
1162
- padding: 4px 0;
1163
- flex: 1;
1164
- }
1165
-
1166
- .search-result {
1167
- padding: 8px 14px;
1168
- cursor: pointer;
1169
- display: flex;
1170
- flex-direction: column;
1171
- gap: 4px;
1172
- border-bottom: 1px solid rgba(128,128,128,0.06);
1173
- transition: background 0.08s ease;
1174
- }
1175
-
1176
- .search-result:hover, .search-result.is-selected {
1177
- background: var(--accent-soft);
1178
- }
1179
-
1180
- .search-item-main {
1181
- display: flex;
1182
- align-items: center;
1183
- gap: 8px;
1184
- width: 100%;
1185
- }
1186
-
1187
- .search-ext-badge {
1188
- font-family: var(--mono);
1189
- font-size: 9px;
1190
- font-weight: 700;
1191
- padding: 1px 4px;
1192
- border-radius: 3px;
1193
- background: var(--paper-2);
1194
- border: 1px solid var(--line);
1195
- color: var(--faint);
1196
- flex-shrink: 0;
1197
- }
1198
- .search-ext-badge.is-symbol {
1199
- background: #e0e7ff;
1200
- color: #3730a3;
1201
- border-color: #c7d2fe;
1202
- }
1203
- .search-ext-badge.is-code {
1204
- background: #fef3c7;
1205
- color: #92400e;
1206
- border-color: #fde68a;
1207
- }
1208
-
1209
- .search-title {
1210
- display: flex;
1211
- align-items: baseline;
1212
- gap: 6px;
1213
- flex: 1;
1214
- overflow: hidden;
1215
- }
1216
- .search-name {
1217
- font-family: var(--mono);
1218
- font-size: 12.5px;
1219
- font-weight: 600;
1220
- color: var(--ink);
1221
- white-space: nowrap;
1222
- }
1223
- .search-dir {
1224
- font-family: var(--mono);
1225
- font-size: 11px;
1226
- color: var(--faint);
1227
- overflow: hidden;
1228
- text-overflow: ellipsis;
1229
- white-space: nowrap;
1230
- }
1231
-
1232
- .search-type-tag {
1233
- font-family: var(--mono);
1234
- font-size: 10px;
1235
- color: var(--faint);
1236
- margin-left: auto;
1237
- flex-shrink: 0;
1238
- }
1239
- .search-type-tag.is-sym { color: #4338ca; }
1240
- .search-type-tag.is-code { color: #b45309; }
1241
-
1242
- .search-snippet {
1243
- font-family: var(--mono);
1244
- font-size: 11px;
1245
- background: var(--paper-2);
1246
- border-radius: 4px;
1247
- padding: 4px 8px;
1248
- color: var(--ink-2);
1249
- overflow: hidden;
1250
- text-overflow: ellipsis;
1251
- white-space: nowrap;
1252
- border-left: 2px solid var(--accent);
1253
- }
1254
-
1255
- mark.search-match {
1256
- background: rgba(234, 179, 8, 0.35);
1257
- color: var(--ink);
1258
- padding: 0 1px;
1259
- border-radius: 2px;
1260
- font-weight: 700;
1261
- }
1262
-
1263
- .search-empty {
1264
- padding: 24px 16px;
1265
- text-align: center;
1266
- color: var(--faint);
1267
- font-size: 12.5px;
1268
- font-style: italic;
1269
- }
1270
-
1271
- /* The palette used to end in a shortcut list and nothing else. It now carries
1272
- the query's own state — how many matches, how many files were indexed, what
1273
- was skipped — because "no results" is a different message depending on
1274
- whether the index ever saw the file. */
1275
- .search-inputrow {
1276
- display: flex;
1277
- align-items: center;
1278
- gap: 8px;
1279
- padding: 0 12px 0 14px;
1280
- }
1281
- .search-icon { display: inline-flex; color: var(--faint); flex-shrink: 0; }
1282
-
1283
- .search-toggle {
1284
- font-family: var(--mono);
1285
- font-size: 11px;
1286
- line-height: 1;
1287
- padding: 4px 6px;
1288
- border-radius: 4px;
1289
- border: 1px solid var(--line);
1290
- background: transparent;
1291
- color: var(--faint);
1292
- cursor: pointer;
1293
- flex-shrink: 0;
1294
- }
1295
- .search-toggle:hover { color: var(--ink); background: var(--paper-2); }
1296
- .search-toggle.is-active {
1297
- color: var(--ink);
1298
- border-color: var(--accent);
1299
- background: var(--accent-soft);
1300
- font-weight: 700;
1301
- }
1302
-
1303
- .search-status {
1304
- display: flex;
1305
- justify-content: space-between;
1306
- align-items: center;
1307
- gap: 12px;
1308
- padding: 6px 14px;
1309
- background: var(--paper-2);
1310
- border-top: 1px solid var(--line);
1311
- font-size: 10.5px;
1312
- color: var(--faint);
1313
- }
1314
- .search-status-line { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
1315
- .search-keys { display: flex; gap: 10px; flex-shrink: 0; }
1316
- .search-sep { color: var(--line); }
1317
- .search-err { color: #9a3b2e; }
1318
-
1319
- .search-spinner {
1320
- display: inline-block;
1321
- width: 9px;
1322
- height: 9px;
1323
- border: 1.5px solid var(--line);
1324
- border-top-color: var(--accent);
1325
- border-radius: 50%;
1326
- animation: searchSpin 0.7s linear infinite;
1327
- }
1328
- @keyframes searchSpin { to { transform: rotate(360deg); } }
1329
- .search-keys kbd {
1330
- font-family: var(--mono);
1331
- background: var(--card);
1332
- border: 1px solid var(--line);
1333
- border-radius: 3px;
1334
- padding: 1px 4px;
1335
- margin-right: 2px;
1336
- font-size: 10px;
1337
- }
1338
-
1339
- .search-mode-count {
1340
- font-family: var(--mono);
1341
- font-size: 9.5px;
1342
- margin-left: 5px;
1343
- padding: 0 3px;
1344
- border-radius: 3px;
1345
- background: var(--paper-2);
1346
- color: var(--faint);
1347
- }
1348
- .search-mode-chip.is-active .search-mode-count { background: var(--card); color: var(--ink); }
1349
-
1350
- .search-chips {
1351
- display: flex;
1352
- flex-wrap: wrap;
1353
- align-items: center;
1354
- gap: 5px;
1355
- padding: 0 12px 9px;
1356
- }
1357
- .search-chips[hidden] { display: none; }
1358
-
1359
- .search-chip {
1360
- display: inline-flex;
1361
- align-items: center;
1362
- gap: 4px;
1363
- font-family: var(--mono);
1364
- font-size: 10.5px;
1365
- padding: 2px 4px 2px 6px;
1366
- border-radius: 4px;
1367
- border: 1px solid var(--accent);
1368
- background: var(--accent-soft);
1369
- color: var(--ink);
1370
- }
1371
- .search-chip-kind {
1372
- text-transform: uppercase;
1373
- font-size: 8.5px;
1374
- letter-spacing: 0.05em;
1375
- color: var(--faint);
1376
- }
1377
- .search-chip-remove {
1378
- border: none;
1379
- background: transparent;
1380
- color: var(--faint);
1381
- cursor: pointer;
1382
- font-size: 12px;
1383
- line-height: 1;
1384
- padding: 0 2px;
1385
- }
1386
- .search-chip-remove:hover { color: var(--ink); }
1387
-
1388
- .search-group-head {
1389
- display: flex;
1390
- justify-content: space-between;
1391
- align-items: baseline;
1392
- padding: 9px 14px 4px;
1393
- font-family: var(--mono);
1394
- font-size: 9.5px;
1395
- text-transform: uppercase;
1396
- letter-spacing: 0.07em;
1397
- color: var(--faint);
1398
- background: var(--paper);
1399
- border-bottom: 1px solid var(--line);
1400
- }
1401
- .search-group-count { color: var(--faint); }
1402
-
1403
- .search-ext-badge.is-recent { color: var(--faint); }
1404
- .search-ext-badge.is-syntax {
1405
- background: var(--paper-2);
1406
- color: var(--ink-2);
1407
- border-color: var(--line);
1408
- }
1409
- .search-result.is-example .search-name { font-weight: 500; color: var(--ink-2); }
1410
-
1411
- .search-empty-hint {
1412
- margin-top: 8px;
1413
- font-size: 11.5px;
1414
- font-style: normal;
1415
- line-height: 1.55;
1416
- max-width: 420px;
1417
- margin-left: auto;
1418
- margin-right: auto;
1419
- }
1420
- .search-empty code, .search-empty-hint code {
1421
- font-family: var(--mono);
1422
- background: var(--paper-2);
1423
- border-radius: 3px;
1424
- padding: 0 3px;
1425
- color: var(--ink-2);
1426
- }
1427
-
1428
1092
  .blame-gutter {
1429
1093
  width: 40px;
1430
1094
  flex-shrink: 0;
@@ -2657,6 +2321,154 @@ button.doc-entry-name:hover { text-decoration: underline; }
2657
2321
  .diff-sign { width: 16px; text-align: center; color: var(--faint); user-select: none; }
2658
2322
  .diff-code { flex: 1; white-space: pre-wrap; word-break: break-all; }
2659
2323
 
2324
+ /* A phone or tablet gets one readable workspace. The file tree and inspector
2325
+ are reachable from the stage instead of squeezing the canvas between them. */
2326
+ @media (max-width: 900px) {
2327
+ .topbar {
2328
+ height: 100px;
2329
+ display: grid;
2330
+ grid-template-columns: minmax(0, 1fr) minmax(0, auto);
2331
+ grid-template-rows: 48px 50px;
2332
+ gap: 0 8px;
2333
+ padding: 0 12px;
2334
+ overflow: visible;
2335
+ }
2336
+ .brand { min-width: 0; }
2337
+ .brand-note, .repo-chip, .me-links, .search-key-hint { display: none !important; }
2338
+ .topbar-right {
2339
+ grid-column: 2;
2340
+ grid-row: 1;
2341
+ min-width: 0;
2342
+ max-width: min(64vw, 500px);
2343
+ overflow-x: auto;
2344
+ scrollbar-width: thin;
2345
+ margin-left: 0;
2346
+ padding: 3px 0;
2347
+ }
2348
+ .topbar-right > * { flex: none; }
2349
+ .topbar-right .btn { min-height: 40px; }
2350
+ .views {
2351
+ grid-column: 1 / -1;
2352
+ grid-row: 2;
2353
+ min-width: 0;
2354
+ overflow-x: auto;
2355
+ overscroll-behavior-inline: contain;
2356
+ scrollbar-width: thin;
2357
+ align-items: center;
2358
+ }
2359
+ .view-tab { min-height: 40px; padding: 8px 12px; }
2360
+
2361
+ .topbar:has(.views[hidden]) { height: 48px; grid-template-rows: 48px; }
2362
+ .topbar:has(.views[hidden]) + .landing { min-height: calc(100dvh - 48px); }
2363
+
2364
+ .landing { min-height: calc(100dvh - 100px); }
2365
+ .landing-inner { margin-top: clamp(24px, 5vh, 56px); }
2366
+ .landing-sub { margin-bottom: 24px; }
2367
+
2368
+ .explorer {
2369
+ position: relative;
2370
+ display: block;
2371
+ width: 100%;
2372
+ max-width: 100%;
2373
+ min-width: 0;
2374
+ height: calc(100dvh - 100px);
2375
+ overflow: hidden;
2376
+ }
2377
+ .stage { height: 100%; }
2378
+ .stage-head {
2379
+ display: grid;
2380
+ grid-template-columns: auto minmax(0, 1fr);
2381
+ gap: 6px 10px;
2382
+ padding: 6px 10px;
2383
+ }
2384
+ .mobile-panel-buttons { display: flex; gap: 6px; }
2385
+ .mobile-panel-buttons .btn { min-height: 40px; padding: 7px 10px; }
2386
+ .mobile-panel-buttons [aria-expanded="true"] { background: var(--accent-soft); border-color: var(--accent); }
2387
+ .stage-actions {
2388
+ grid-column: 1 / -1;
2389
+ width: 100%;
2390
+ min-width: 0;
2391
+ margin-left: 0;
2392
+ overflow-x: auto;
2393
+ scrollbar-width: thin;
2394
+ }
2395
+ .stage-actions > * { flex: none; }
2396
+ .stage-actions .btn { min-height: 38px; }
2397
+ .stage-filters { flex-wrap: wrap; gap: 6px; padding: 5px 10px; }
2398
+ .mode-switch {
2399
+ flex: 1 0 100%;
2400
+ min-width: 0;
2401
+ overflow-x: auto;
2402
+ scrollbar-width: thin;
2403
+ }
2404
+ .mode-chip { flex: none; min-height: 38px; padding: 7px 10px; }
2405
+ .node-filter { flex: 1; min-width: 100px; padding: 7px 10px; }
2406
+ .stage-foot { max-height: 54px; overflow-y: auto; padding: 5px 10px; }
2407
+ .stage-foot .langs, .stage-foot .ai-cap { max-width: 48vw; }
2408
+
2409
+ .sidebar, .inspector {
2410
+ display: none;
2411
+ position: absolute;
2412
+ z-index: 22;
2413
+ top: 0;
2414
+ bottom: 0;
2415
+ width: min(330px, calc(100% - 52px));
2416
+ box-shadow: 0 4px 18px rgba(0, 0, 0, 0.22);
2417
+ }
2418
+ .sidebar { left: 0; }
2419
+ .inspector { right: 0; }
2420
+ .mobile-panel-top {
2421
+ display: flex;
2422
+ align-items: center;
2423
+ justify-content: space-between;
2424
+ gap: 10px;
2425
+ padding: 8px 10px;
2426
+ border-bottom: 1px solid var(--line);
2427
+ font-family: var(--mono);
2428
+ font-size: 12px;
2429
+ }
2430
+ .mobile-panel-top .btn { min-height: 38px; }
2431
+ .inspector > .mobile-panel-top { margin: -18px -18px 12px; }
2432
+ .explorer[data-mobile-panel="files"] .sidebar { display: flex; }
2433
+ .explorer[data-mobile-panel="details"] .inspector { display: block; }
2434
+ .mobile-panel-scrim:not([hidden]) {
2435
+ display: block;
2436
+ position: absolute;
2437
+ z-index: 21;
2438
+ inset: 0;
2439
+ width: 100%;
2440
+ border: 0;
2441
+ background: var(--scrim);
2442
+ cursor: pointer;
2443
+ }
2444
+ .tree-dir-head, .tree-file { min-height: 42px; align-items: center; }
2445
+ .graph-controls { max-width: calc(100vw - 20px); overflow-x: auto; }
2446
+ .diff-body { flex-direction: column; }
2447
+ .diff-sidebar { width: 100%; max-height: 210px; border-right: 0; border-bottom: 1px solid var(--line); }
2448
+ .diff-content { min-height: 0; }
2449
+ .drawer { width: min(390px, 100vw); }
2450
+ .field-label { max-width: 100%; }
2451
+ .tourbar { flex-wrap: wrap; gap: 6px; }
2452
+ .tourbar-controls { margin-left: 0; }
2453
+ }
2454
+
2455
+ @media (max-width: 600px) {
2456
+ .brand-mark { font-size: 19px; }
2457
+ .topbar-right { max-width: calc(100vw - 126px); }
2458
+ .landing-inner { width: calc(100% - 28px); }
2459
+ .load-card { padding: 16px; }
2460
+ .landing-foot { padding-inline: 16px; text-align: center; }
2461
+ .text-input, .tree-filter, .node-filter, .depth-select { font-size: 16px; }
2462
+ .docview { min-width: 0; }
2463
+ .atlas-list { padding: 14px 14px 28px; }
2464
+ .atlas-grid { grid-template-columns: minmax(0, 1fr); }
2465
+ .insights-layout, .workflows-layout { padding: 16px 12px 36px; }
2466
+ .insights-section, .workflow-card { padding: 15px; }
2467
+ .diff-content { padding: 10px; }
2468
+ .split-diff-table { min-width: 600px; }
2469
+ .diff-file-card { overflow-x: auto; }
2470
+ }
2471
+
2660
2472
  .split-diff-table { display: flex; flex-direction: column; }
2661
2473
  .split-diff-row { display: flex; font-family: var(--mono); font-size: 12px; line-height: 1.5; }
2662
2474
  .split-pane { flex: 1; display: flex; min-width: 0; padding: 0 4px; border-right: 1px solid var(--line); }
@@ -2765,3 +2577,8 @@ select.text-input { appearance: auto; }
2765
2577
  }
2766
2578
  .server-fresh-key .drawer-fine { margin: 0 0 8px; color: var(--ink); }
2767
2579
 
2580
+ /* Accessible scan feedback follows the existing paper-and-ink controls. */
2581
+ .scan-status-row { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 12px; }
2582
+ .scan-status-row .landing-status { margin: 12px 0; }
2583
+ .scan-progress { display: block; width: min(420px, 100%); height: 6px; margin: 0 auto 16px; accent-color: var(--accent); }
2584
+ .scan-progress[hidden] { display: none; }