ultravisor 1.0.3 → 1.0.8

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 (248) hide show
  1. package/.claude/launch.json +11 -0
  2. package/.claude/ultravisor-dev-config.json +3 -0
  3. package/card-audit.json +1545 -0
  4. package/docs/_sidebar.md +17 -0
  5. package/docs/css/docuserve.css +73 -0
  6. package/docs/features/beacon-authentication.md +209 -0
  7. package/docs/features/beacon-providers.md +1299 -0
  8. package/docs/features/beacons.md +530 -0
  9. package/docs/features/capabilities.md +193 -0
  10. package/docs/features/llm-model-setup.md +505 -0
  11. package/docs/features/llm.md +262 -0
  12. package/docs/features/tasks-content-system.md +110 -0
  13. package/docs/features/tasks-data-transform.md +233 -0
  14. package/docs/features/tasks-extension.md +36 -0
  15. package/docs/features/tasks-file-system.md +203 -0
  16. package/docs/features/tasks-flow-control.md +125 -0
  17. package/docs/features/tasks-http-client.md +119 -0
  18. package/docs/features/tasks-llm.md +118 -0
  19. package/docs/features/tasks-meadow-api.md +163 -0
  20. package/docs/features/tasks-user-interaction.md +49 -0
  21. package/docs/features/tasks.md +14 -0
  22. package/docs/index.html +1 -1
  23. package/docs/retold-catalog.json +1 -1
  24. package/docs/retold-keyword-index.json +17374 -5
  25. package/operation-library/api-data-pipeline.json +143 -0
  26. package/operation-library/beacon-remote-command.json +72 -0
  27. package/operation-library/conditional-file-backup.json +143 -0
  28. package/operation-library/config-processor.json +136 -0
  29. package/operation-library/csv-data-analysis.json +228 -0
  30. package/operation-library/csv-to-json.json +160 -0
  31. package/operation-library/directory-inventory.json +128 -0
  32. package/operation-library/expression-calculator.json +114 -0
  33. package/operation-library/file-search-replace.json +175 -0
  34. package/operation-library/git-status-report.json +368 -0
  35. package/operation-library/health-check-ping.json +329 -0
  36. package/operation-library/json-config-merge.json +313 -0
  37. package/operation-library/llm-embedding-tool-use.json +314 -0
  38. package/operation-library/llm-multi-turn-analysis.json +322 -0
  39. package/operation-library/llm-summarize.json +264 -0
  40. package/operation-library/log-line-counter.json +185 -0
  41. package/operation-library/meadow-crud-lifecycle.json +264 -0
  42. package/operation-library/npm-project-validator.json +193 -0
  43. package/operation-library/rest-api-orchestrator.json +218 -0
  44. package/operation-library/shell-system-info.json +137 -0
  45. package/operation-library/simple-echo.json +95 -0
  46. package/operation-library/template-processor.json +299 -0
  47. package/operation-library/text-sanitizer.json +176 -0
  48. package/package.json +12 -8
  49. package/source/Ultravisor.cjs +30 -3
  50. package/source/beacon/Ultravisor-Beacon-CLI.cjs +143 -0
  51. package/source/beacon/Ultravisor-Beacon-CapabilityProvider.cjs +129 -0
  52. package/source/beacon/Ultravisor-Beacon-Client.cjs +568 -0
  53. package/source/beacon/Ultravisor-Beacon-Executor.cjs +500 -0
  54. package/source/beacon/Ultravisor-Beacon-ProviderRegistry.cjs +330 -0
  55. package/source/beacon/providers/Ultravisor-Beacon-Provider-FileSystem.cjs +331 -0
  56. package/source/beacon/providers/Ultravisor-Beacon-Provider-LLM.cjs +966 -0
  57. package/source/beacon/providers/Ultravisor-Beacon-Provider-Shell.cjs +95 -0
  58. package/source/cli/Ultravisor-CLIProgram.cjs +44 -22
  59. package/source/cli/commands/Ultravisor-Command-SingleOperation.cjs +29 -18
  60. package/source/cli/commands/Ultravisor-Command-SingleTask.cjs +62 -19
  61. package/source/cli/commands/Ultravisor-Command-UpdateTask.cjs +27 -15
  62. package/source/config/Ultravisor-Default-Command-Configuration.cjs +12 -3
  63. package/source/services/Ultravisor-Beacon-Coordinator.cjs +966 -0
  64. package/source/services/Ultravisor-ExecutionEngine.cjs +1093 -0
  65. package/source/services/Ultravisor-ExecutionManifest.cjs +629 -0
  66. package/source/services/Ultravisor-Hypervisor-State.cjs +270 -97
  67. package/source/services/Ultravisor-Hypervisor.cjs +185 -75
  68. package/source/services/Ultravisor-Schedule-Persistence-Base.cjs +45 -0
  69. package/source/services/Ultravisor-StateManager.cjs +253 -0
  70. package/source/services/Ultravisor-TaskTypeRegistry.cjs +213 -0
  71. package/source/services/persistence/Ultravisor-Schedule-Persistence-JSONFile.cjs +140 -0
  72. package/source/services/tasks/Ultravisor-BuiltIn-TaskConfigs.cjs +19 -0
  73. package/source/services/tasks/Ultravisor-TaskHelper-BeaconDispatch.cjs +107 -0
  74. package/source/services/tasks/Ultravisor-TaskType-Base.cjs +125 -0
  75. package/source/services/tasks/content-system/Ultravisor-TaskConfigs-ContentSystem.cjs +90 -0
  76. package/source/services/tasks/content-system/definitions/content-create-folder.json +24 -0
  77. package/source/services/tasks/content-system/definitions/content-list-files.json +27 -0
  78. package/source/services/tasks/content-system/definitions/content-read-file.json +26 -0
  79. package/source/services/tasks/content-system/definitions/content-save-file.json +26 -0
  80. package/source/services/tasks/data-transform/Ultravisor-TaskConfigs-DataTransform.cjs +577 -0
  81. package/source/services/tasks/data-transform/Ultravisor-TaskType-ReplaceString.cjs +80 -0
  82. package/source/services/tasks/data-transform/Ultravisor-TaskType-SetValues.cjs +74 -0
  83. package/source/services/tasks/data-transform/Ultravisor-TaskType-StringAppender.cjs +90 -0
  84. package/source/services/tasks/data-transform/definitions/comprehension-intersect.json +24 -0
  85. package/source/services/tasks/data-transform/definitions/csv-transform.json +24 -0
  86. package/source/services/tasks/data-transform/definitions/expression-solver.json +20 -0
  87. package/source/services/tasks/data-transform/definitions/histogram.json +23 -0
  88. package/source/services/tasks/data-transform/definitions/parse-csv.json +27 -0
  89. package/source/services/tasks/data-transform/definitions/replace-string.json +27 -0
  90. package/source/services/tasks/data-transform/definitions/set-values.json +17 -0
  91. package/source/services/tasks/data-transform/definitions/string-appender.json +22 -0
  92. package/source/services/tasks/data-transform/definitions/template-string.json +20 -0
  93. package/source/services/tasks/extension/Ultravisor-TaskConfigs-Extension.cjs +87 -0
  94. package/source/services/tasks/extension/definitions/beacon-dispatch.json +32 -0
  95. package/source/services/tasks/file-system/Ultravisor-TaskConfigs-FileSystem.cjs +509 -0
  96. package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFile.cjs +96 -0
  97. package/source/services/tasks/file-system/Ultravisor-TaskType-ReadFileBuffered.cjs +123 -0
  98. package/source/services/tasks/file-system/Ultravisor-TaskType-WriteFile.cjs +106 -0
  99. package/source/services/tasks/file-system/definitions/copy-file.json +27 -0
  100. package/source/services/tasks/file-system/definitions/list-files.json +27 -0
  101. package/source/services/tasks/file-system/definitions/read-file-buffered.json +31 -0
  102. package/source/services/tasks/file-system/definitions/read-file.json +26 -0
  103. package/source/services/tasks/file-system/definitions/read-json.json +23 -0
  104. package/source/services/tasks/file-system/definitions/write-file.json +29 -0
  105. package/source/services/tasks/file-system/definitions/write-json.json +30 -0
  106. package/source/services/tasks/flow-control/Ultravisor-TaskConfigs-FlowControl.cjs +353 -0
  107. package/source/services/tasks/flow-control/Ultravisor-TaskType-IfConditional.cjs +125 -0
  108. package/source/services/tasks/flow-control/Ultravisor-TaskType-LaunchOperation.cjs +186 -0
  109. package/source/services/tasks/flow-control/Ultravisor-TaskType-SplitExecute.cjs +164 -0
  110. package/source/services/tasks/flow-control/definitions/if-conditional.json +25 -0
  111. package/source/services/tasks/flow-control/definitions/launch-operation.json +27 -0
  112. package/source/services/tasks/flow-control/definitions/split-execute.json +32 -0
  113. package/source/services/tasks/http-client/Ultravisor-TaskConfigs-HttpClient.cjs +281 -0
  114. package/source/services/tasks/http-client/definitions/get-json.json +26 -0
  115. package/source/services/tasks/http-client/definitions/get-text.json +26 -0
  116. package/source/services/tasks/http-client/definitions/rest-request.json +32 -0
  117. package/source/services/tasks/http-client/definitions/send-json.json +28 -0
  118. package/source/services/tasks/llm/Ultravisor-TaskConfigs-LLM.cjs +605 -0
  119. package/source/services/tasks/llm/definitions/llm-chat-completion.json +46 -0
  120. package/source/services/tasks/llm/definitions/llm-embedding.json +31 -0
  121. package/source/services/tasks/llm/definitions/llm-tool-use.json +42 -0
  122. package/source/services/tasks/meadow-api/Ultravisor-TaskConfigs-MeadowApi.cjs +341 -0
  123. package/source/services/tasks/meadow-api/definitions/meadow-count.json +26 -0
  124. package/source/services/tasks/meadow-api/definitions/meadow-create.json +26 -0
  125. package/source/services/tasks/meadow-api/definitions/meadow-delete.json +23 -0
  126. package/source/services/tasks/meadow-api/definitions/meadow-read.json +26 -0
  127. package/source/services/tasks/meadow-api/definitions/meadow-reads.json +29 -0
  128. package/source/services/tasks/meadow-api/definitions/meadow-update.json +26 -0
  129. package/source/services/tasks/shell/Ultravisor-TaskConfigs-Shell.cjs +63 -0
  130. package/source/services/tasks/shell/definitions/command.json +29 -0
  131. package/source/services/tasks/user-interaction/Ultravisor-TaskConfigs-UserInteraction.cjs +64 -0
  132. package/source/services/tasks/user-interaction/Ultravisor-TaskType-ErrorMessage.cjs +55 -0
  133. package/source/services/tasks/user-interaction/Ultravisor-TaskType-ValueInput.cjs +47 -0
  134. package/source/services/tasks/user-interaction/definitions/error-message.json +18 -0
  135. package/source/services/tasks/user-interaction/definitions/value-input.json +23 -0
  136. package/source/web_server/Ultravisor-API-Server.cjs +849 -124
  137. package/test/Ultravisor_browser_tests.js +2226 -0
  138. package/test/Ultravisor_operation_library_tests.js +894 -0
  139. package/test/Ultravisor_tests.js +4946 -5044
  140. package/test/workflows/test-content-concatenate-all.json +339 -0
  141. package/test/workflows/test-content-full-pipeline.json +159 -0
  142. package/test/workflows/test-content-list-files.json +76 -0
  143. package/test/workflows/test-content-save-and-read.json +106 -0
  144. package/webinterface/css/ultravisor-themes.css +668 -0
  145. package/webinterface/css/ultravisor.css +37 -14
  146. package/webinterface/docs/card-help/beacon-dispatch.md +30 -0
  147. package/webinterface/docs/card-help/command.md +27 -0
  148. package/webinterface/docs/card-help/comprehension-intersect.md +24 -0
  149. package/webinterface/docs/card-help/content-create-folder.md +22 -0
  150. package/webinterface/docs/card-help/content-list-files.md +25 -0
  151. package/webinterface/docs/card-help/content-read-file.md +24 -0
  152. package/webinterface/docs/card-help/content-save-file.md +24 -0
  153. package/webinterface/docs/card-help/copy-file.md +25 -0
  154. package/webinterface/docs/card-help/csv-transform.md +24 -0
  155. package/webinterface/docs/card-help/end.md +11 -0
  156. package/webinterface/docs/card-help/error-message.md +16 -0
  157. package/webinterface/docs/card-help/expression-solver.md +21 -0
  158. package/webinterface/docs/card-help/get-json.md +24 -0
  159. package/webinterface/docs/card-help/get-text.md +24 -0
  160. package/webinterface/docs/card-help/histogram.md +23 -0
  161. package/webinterface/docs/card-help/if-conditional.md +23 -0
  162. package/webinterface/docs/card-help/launch-operation.md +25 -0
  163. package/webinterface/docs/card-help/list-files.md +25 -0
  164. package/webinterface/docs/card-help/llm-chat-completion.md +43 -0
  165. package/webinterface/docs/card-help/llm-embedding.md +24 -0
  166. package/webinterface/docs/card-help/llm-tool-use.md +39 -0
  167. package/webinterface/docs/card-help/meadow-count.md +24 -0
  168. package/webinterface/docs/card-help/meadow-create.md +24 -0
  169. package/webinterface/docs/card-help/meadow-delete.md +19 -0
  170. package/webinterface/docs/card-help/meadow-read.md +24 -0
  171. package/webinterface/docs/card-help/meadow-reads.md +27 -0
  172. package/webinterface/docs/card-help/meadow-update.md +24 -0
  173. package/webinterface/docs/card-help/parse-csv.md +27 -0
  174. package/webinterface/docs/card-help/read-file-buffered.md +29 -0
  175. package/webinterface/docs/card-help/read-file.md +24 -0
  176. package/webinterface/docs/card-help/read-json.md +21 -0
  177. package/webinterface/docs/card-help/replace-string.md +25 -0
  178. package/webinterface/docs/card-help/rest-request.md +30 -0
  179. package/webinterface/docs/card-help/send-json.md +26 -0
  180. package/webinterface/docs/card-help/set-values.md +16 -0
  181. package/webinterface/docs/card-help/split-execute.md +35 -0
  182. package/webinterface/docs/card-help/start.md +11 -0
  183. package/webinterface/docs/card-help/string-appender.md +22 -0
  184. package/webinterface/docs/card-help/template-string.md +21 -0
  185. package/webinterface/docs/card-help/value-input.md +24 -0
  186. package/webinterface/docs/card-help/write-file.md +27 -0
  187. package/webinterface/docs/card-help/write-json.md +28 -0
  188. package/webinterface/html/index.html +5 -0
  189. package/webinterface/package.json +13 -4
  190. package/webinterface/source/Pict-Application-Ultravisor.js +564 -70
  191. package/webinterface/source/Ultravisor-TimingUtils.js +99 -0
  192. package/webinterface/source/card-help-content.js +46 -0
  193. package/webinterface/source/cards/Ultravisor-BuiltIn-CardConfigs.js +174 -0
  194. package/webinterface/source/cards/Ultravisor-CardConfigGenerator.js +431 -0
  195. package/webinterface/source/data/ExampleFlow-CSVPipeline.js +231 -0
  196. package/webinterface/source/data/ExampleFlow-FileProcessor.js +315 -0
  197. package/webinterface/source/data/ExampleFlow-MeadowPipeline.js +328 -0
  198. package/webinterface/source/panels/Ultravisor-CardSettingsPanel.js +902 -0
  199. package/webinterface/source/providers/PictRouter-Ultravisor-Configuration.json +20 -8
  200. package/webinterface/source/views/PictView-Ultravisor-BeaconList.js +817 -0
  201. package/webinterface/source/views/PictView-Ultravisor-BottomBar.js +5 -5
  202. package/webinterface/source/views/PictView-Ultravisor-Dashboard.js +25 -25
  203. package/webinterface/source/views/PictView-Ultravisor-Documentation.js +856 -0
  204. package/webinterface/source/views/PictView-Ultravisor-FlowEditor.js +777 -0
  205. package/webinterface/source/views/PictView-Ultravisor-ManifestList.js +321 -58
  206. package/webinterface/source/views/PictView-Ultravisor-OperationEdit.js +36 -91
  207. package/webinterface/source/views/PictView-Ultravisor-OperationList.js +388 -16
  208. package/webinterface/source/views/PictView-Ultravisor-PendingInput.js +314 -0
  209. package/webinterface/source/views/PictView-Ultravisor-Schedule.js +521 -65
  210. package/webinterface/source/views/PictView-Ultravisor-TimingView.js +333 -71
  211. package/webinterface/source/views/PictView-Ultravisor-TopBar.js +257 -21
  212. package/webinterface/theme-sampler.html +645 -0
  213. package/debug/Harness.js +0 -6
  214. package/source/services/Ultravisor-Operation-Manifest.cjs +0 -160
  215. package/source/services/Ultravisor-Operation.cjs +0 -200
  216. package/source/services/Ultravisor-Task.cjs +0 -349
  217. package/source/services/events/Ultravisor-Hypervisor-Event-Solver.cjs +0 -11
  218. package/source/services/tasks/Ultravisor-Task-Base.cjs +0 -264
  219. package/source/services/tasks/Ultravisor-Task-CollectValues.cjs +0 -188
  220. package/source/services/tasks/Ultravisor-Task-Command.cjs +0 -65
  221. package/source/services/tasks/Ultravisor-Task-CommandEach.cjs +0 -190
  222. package/source/services/tasks/Ultravisor-Task-Conditional.cjs +0 -104
  223. package/source/services/tasks/Ultravisor-Task-DateWindow.cjs +0 -72
  224. package/source/services/tasks/Ultravisor-Task-GeneratePagedOperation.cjs +0 -336
  225. package/source/services/tasks/Ultravisor-Task-LaunchOperation.cjs +0 -143
  226. package/source/services/tasks/Ultravisor-Task-LaunchTask.cjs +0 -146
  227. package/source/services/tasks/Ultravisor-Task-LineMatch.cjs +0 -158
  228. package/source/services/tasks/Ultravisor-Task-Request.cjs +0 -56
  229. package/source/services/tasks/Ultravisor-Task-Solver.cjs +0 -89
  230. package/source/services/tasks/Ultravisor-Task-TemplateString.cjs +0 -93
  231. package/source/services/tasks/rest/Ultravisor-Task-GetBinary.cjs +0 -127
  232. package/source/services/tasks/rest/Ultravisor-Task-GetJSON.cjs +0 -119
  233. package/source/services/tasks/rest/Ultravisor-Task-GetText.cjs +0 -109
  234. package/source/services/tasks/rest/Ultravisor-Task-GetXML.cjs +0 -112
  235. package/source/services/tasks/rest/Ultravisor-Task-RestRequest.cjs +0 -499
  236. package/source/services/tasks/rest/Ultravisor-Task-SendJSON.cjs +0 -150
  237. package/source/services/tasks/stagingfiles/Ultravisor-Task-CopyFile.cjs +0 -110
  238. package/source/services/tasks/stagingfiles/Ultravisor-Task-ListFiles.cjs +0 -89
  239. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadBinary.cjs +0 -87
  240. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadJSON.cjs +0 -67
  241. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadText.cjs +0 -66
  242. package/source/services/tasks/stagingfiles/Ultravisor-Task-ReadXML.cjs +0 -69
  243. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteBinary.cjs +0 -95
  244. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteJSON.cjs +0 -96
  245. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteText.cjs +0 -99
  246. package/source/services/tasks/stagingfiles/Ultravisor-Task-WriteXML.cjs +0 -102
  247. package/webinterface/source/views/PictView-Ultravisor-TaskEdit.js +0 -220
  248. package/webinterface/source/views/PictView-Ultravisor-TaskList.js +0 -248
@@ -0,0 +1,645 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>Ultravisor Theme Sampler</title>
7
+ <style>
8
+ /* ── Reset & Base ─────────────────────────────────────── */
9
+ *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
10
+ body {
11
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
12
+ background: #1a1a1a;
13
+ color: #e0e0e0;
14
+ padding: 32px;
15
+ line-height: 1.5;
16
+ }
17
+ h1 { text-align: center; font-size: 28px; margin-bottom: 8px; color: #fff; }
18
+ .subtitle { text-align: center; color: #999; margin-bottom: 40px; font-size: 14px; }
19
+
20
+ /* ── Theme Card Container ────────────────────────────── */
21
+ .theme-grid {
22
+ display: grid;
23
+ grid-template-columns: 1fr 1fr;
24
+ gap: 32px;
25
+ max-width: 1400px;
26
+ margin: 0 auto;
27
+ }
28
+ .theme-card {
29
+ border-radius: 12px;
30
+ overflow: hidden;
31
+ box-shadow: 0 4px 24px rgba(0,0,0,0.3);
32
+ }
33
+ .theme-card h2 {
34
+ font-size: 14px;
35
+ letter-spacing: 1.5px;
36
+ text-transform: uppercase;
37
+ padding: 16px 20px;
38
+ margin: 0;
39
+ }
40
+
41
+ /* ── Swatch strip ────────────────────────────────────── */
42
+ .swatches {
43
+ display: flex;
44
+ height: 36px;
45
+ }
46
+ .swatch {
47
+ flex: 1;
48
+ display: flex;
49
+ align-items: center;
50
+ justify-content: center;
51
+ font-size: 9px;
52
+ font-weight: 600;
53
+ letter-spacing: 0.5px;
54
+ }
55
+
56
+ /* ── Mock UI inside each theme ───────────────────────── */
57
+ .mock-ui {
58
+ padding: 20px;
59
+ }
60
+ .mock-topbar {
61
+ display: flex;
62
+ align-items: center;
63
+ gap: 16px;
64
+ padding: 10px 16px;
65
+ border-radius: 8px;
66
+ margin-bottom: 16px;
67
+ }
68
+ .mock-topbar .brand {
69
+ font-weight: 700;
70
+ font-size: 16px;
71
+ margin-right: auto;
72
+ }
73
+ .mock-topbar .nav-link {
74
+ font-size: 12px;
75
+ font-weight: 500;
76
+ opacity: 0.7;
77
+ }
78
+ .mock-topbar .nav-link.active {
79
+ opacity: 1;
80
+ font-weight: 700;
81
+ }
82
+
83
+ .mock-cards {
84
+ display: grid;
85
+ grid-template-columns: 1fr 1fr 1fr;
86
+ gap: 12px;
87
+ margin-bottom: 16px;
88
+ }
89
+ .mock-stat {
90
+ padding: 12px 14px;
91
+ border-radius: 8px;
92
+ }
93
+ .mock-stat .label {
94
+ font-size: 9px;
95
+ text-transform: uppercase;
96
+ letter-spacing: 1px;
97
+ opacity: 0.7;
98
+ margin-bottom: 4px;
99
+ }
100
+ .mock-stat .value {
101
+ font-size: 22px;
102
+ font-weight: 700;
103
+ }
104
+
105
+ /* Mock timing bars */
106
+ .mock-timing {
107
+ padding: 14px;
108
+ border-radius: 8px;
109
+ margin-bottom: 12px;
110
+ }
111
+ .mock-timing h3 {
112
+ font-size: 10px;
113
+ text-transform: uppercase;
114
+ letter-spacing: 1px;
115
+ margin-bottom: 10px;
116
+ opacity: 0.7;
117
+ }
118
+ .timing-row {
119
+ display: flex;
120
+ align-items: center;
121
+ gap: 10px;
122
+ margin-bottom: 6px;
123
+ font-size: 11px;
124
+ }
125
+ .timing-row .task-name {
126
+ width: 80px;
127
+ text-align: right;
128
+ font-size: 10px;
129
+ opacity: 0.8;
130
+ }
131
+ .timing-row .bar-track {
132
+ flex: 1;
133
+ height: 18px;
134
+ border-radius: 4px;
135
+ overflow: hidden;
136
+ position: relative;
137
+ }
138
+ .timing-row .bar-fill {
139
+ height: 100%;
140
+ border-radius: 4px;
141
+ display: flex;
142
+ align-items: center;
143
+ padding-left: 8px;
144
+ font-size: 9px;
145
+ font-weight: 600;
146
+ }
147
+ .timing-row .duration {
148
+ width: 40px;
149
+ font-size: 10px;
150
+ opacity: 0.6;
151
+ text-align: right;
152
+ }
153
+
154
+ /* Buttons row */
155
+ .mock-buttons {
156
+ display: flex;
157
+ gap: 8px;
158
+ margin-bottom: 12px;
159
+ }
160
+ .mock-btn {
161
+ padding: 6px 16px;
162
+ border-radius: 6px;
163
+ font-size: 11px;
164
+ font-weight: 600;
165
+ border: none;
166
+ }
167
+ .mock-btn-outline {
168
+ background: transparent;
169
+ border: 1.5px solid;
170
+ }
171
+
172
+ /* Mock table */
173
+ .mock-table {
174
+ width: 100%;
175
+ border-collapse: collapse;
176
+ font-size: 11px;
177
+ border-radius: 8px;
178
+ overflow: hidden;
179
+ }
180
+ .mock-table th {
181
+ text-align: left;
182
+ padding: 8px 12px;
183
+ font-size: 9px;
184
+ text-transform: uppercase;
185
+ letter-spacing: 1px;
186
+ font-weight: 600;
187
+ }
188
+ .mock-table td {
189
+ padding: 8px 12px;
190
+ }
191
+ .mock-table .status {
192
+ font-weight: 600;
193
+ font-size: 10px;
194
+ }
195
+ </style>
196
+ </head>
197
+ <body>
198
+
199
+ <h1>Ultravisor Theme Palettes</h1>
200
+ <p class="subtitle">Visual comparison of candidate color schemes</p>
201
+
202
+ <div class="theme-grid">
203
+
204
+ <!-- ════════════════════════════════════════════════════════════
205
+ 1. DESERT DAY (Light)
206
+ ════════════════════════════════════════════════════════════ -->
207
+ <div class="theme-card" style="background: #faf6f0;">
208
+ <h2 style="background: #e8ddd0; color: #5c3d2e;">Desert Day</h2>
209
+ <div class="swatches">
210
+ <div class="swatch" style="background: #d4a46a; color: #fff;">Sand</div>
211
+ <div class="swatch" style="background: #c2703e; color: #fff;">Terracotta</div>
212
+ <div class="swatch" style="background: #7a2e3a; color: #fff;">Burgundy</div>
213
+ <div class="swatch" style="background: #3a8a8c; color: #fff;">Turquoise</div>
214
+ <div class="swatch" style="background: #6b8f4a; color: #fff;">Sage</div>
215
+ <div class="swatch" style="background: #5c3d2e; color: #fff;">Earth</div>
216
+ </div>
217
+ <div class="mock-ui" style="color: #3d2b1f;">
218
+ <div class="mock-topbar" style="background: #5c3d2e;">
219
+ <span class="brand" style="color: #d4a46a;">Ultravisor</span>
220
+ <span class="nav-link" style="color: #e8ddd0;">Dashboard</span>
221
+ <span class="nav-link active" style="color: #fff;">Operations</span>
222
+ <span class="nav-link" style="color: #e8ddd0;">Schedule</span>
223
+ <span class="nav-link" style="color: #e8ddd0;">Manifests</span>
224
+ </div>
225
+ <div class="mock-cards">
226
+ <div class="mock-stat" style="background: #f0e6d6; border: 1px solid #e0d0b8;">
227
+ <div class="label" style="color: #8a7560;">Server Status</div>
228
+ <div class="value" style="color: #3a8a8c;">Running</div>
229
+ </div>
230
+ <div class="mock-stat" style="background: #f0e6d6; border: 1px solid #e0d0b8;">
231
+ <div class="label" style="color: #8a7560;">Templates</div>
232
+ <div class="value" style="color: #5c3d2e;">12</div>
233
+ </div>
234
+ <div class="mock-stat" style="background: #f0e6d6; border: 1px solid #e0d0b8;">
235
+ <div class="label" style="color: #8a7560;">Operations</div>
236
+ <div class="value" style="color: #5c3d2e;">8</div>
237
+ </div>
238
+ </div>
239
+ <div class="mock-timing" style="background: #f0e6d6; border: 1px solid #e0d0b8;">
240
+ <h3 style="color: #8a7560;">Task Timeline</h3>
241
+ <div class="timing-row">
242
+ <span class="task-name" style="color: #5c3d2e;">Value Input</span>
243
+ <div class="bar-track" style="background: #e8ddd0;">
244
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #d4a46a, #c2a060); color: #5c3d2e;">Value Input</div>
245
+ </div>
246
+ <span class="duration" style="color: #8a7560;">23s</span>
247
+ </div>
248
+ <div class="timing-row">
249
+ <span class="task-name" style="color: #5c3d2e;">Read File</span>
250
+ <div class="bar-track" style="background: #e8ddd0;">
251
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #3a8a8c, #4a9a9c); color: #fff;">Read File</div>
252
+ </div>
253
+ <span class="duration" style="color: #8a7560;">1ms</span>
254
+ </div>
255
+ <div class="timing-row">
256
+ <span class="task-name" style="color: #5c3d2e;">Replace</span>
257
+ <div class="bar-track" style="background: #e8ddd0;">
258
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #7a2e3a, #8a3e4a); color: #fff;">Replace</div>
259
+ </div>
260
+ <span class="duration" style="color: #8a7560;">1ms</span>
261
+ </div>
262
+ </div>
263
+ <div class="mock-buttons">
264
+ <div class="mock-btn" style="background: #3a8a8c; color: #fff;">Run Operation</div>
265
+ <div class="mock-btn" style="background: #c2703e; color: #fff;">Refresh</div>
266
+ <div class="mock-btn-outline mock-btn" style="border-color: #5c3d2e; color: #5c3d2e;">Export</div>
267
+ </div>
268
+ </div>
269
+ </div>
270
+
271
+ <!-- ════════════════════════════════════════════════════════════
272
+ 2. DESERT SUNSET (Dark)
273
+ ════════════════════════════════════════════════════════════ -->
274
+ <div class="theme-card" style="background: #1e1610;">
275
+ <h2 style="background: #2a1e15; color: #d4a46a;">Desert Sunset</h2>
276
+ <div class="swatches">
277
+ <div class="swatch" style="background: #e8943a; color: #1e1610;">Amber</div>
278
+ <div class="swatch" style="background: #c44e2a; color: #fff;">Burnt Orange</div>
279
+ <div class="swatch" style="background: #8b2442; color: #fff;">Crimson</div>
280
+ <div class="swatch" style="background: #2a8a8a; color: #fff;">Teal</div>
281
+ <div class="swatch" style="background: #d4a46a; color: #1e1610;">Sand</div>
282
+ <div class="swatch" style="background: #6b4f3a; color: #fff;">Dusk</div>
283
+ </div>
284
+ <div class="mock-ui" style="color: #d4c4aa;">
285
+ <div class="mock-topbar" style="background: #2a1e15;">
286
+ <span class="brand" style="color: #e8943a;">Ultravisor</span>
287
+ <span class="nav-link" style="color: #8a7560;">Dashboard</span>
288
+ <span class="nav-link active" style="color: #d4a46a;">Operations</span>
289
+ <span class="nav-link" style="color: #8a7560;">Schedule</span>
290
+ <span class="nav-link" style="color: #8a7560;">Manifests</span>
291
+ </div>
292
+ <div class="mock-cards">
293
+ <div class="mock-stat" style="background: #2a2018; border: 1px solid #3a2e22;">
294
+ <div class="label" style="color: #8a7560;">Server Status</div>
295
+ <div class="value" style="color: #2a8a8a;">Running</div>
296
+ </div>
297
+ <div class="mock-stat" style="background: #2a2018; border: 1px solid #3a2e22;">
298
+ <div class="label" style="color: #8a7560;">Templates</div>
299
+ <div class="value" style="color: #d4a46a;">12</div>
300
+ </div>
301
+ <div class="mock-stat" style="background: #2a2018; border: 1px solid #3a2e22;">
302
+ <div class="label" style="color: #8a7560;">Operations</div>
303
+ <div class="value" style="color: #d4a46a;">8</div>
304
+ </div>
305
+ </div>
306
+ <div class="mock-timing" style="background: #2a2018; border: 1px solid #3a2e22;">
307
+ <h3 style="color: #8a7560;">Task Timeline</h3>
308
+ <div class="timing-row">
309
+ <span class="task-name" style="color: #d4c4aa;">Value Input</span>
310
+ <div class="bar-track" style="background: #3a2e22;">
311
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #e8943a, #d4a46a); color: #1e1610;">Value Input</div>
312
+ </div>
313
+ <span class="duration" style="color: #8a7560;">23s</span>
314
+ </div>
315
+ <div class="timing-row">
316
+ <span class="task-name" style="color: #d4c4aa;">Read File</span>
317
+ <div class="bar-track" style="background: #3a2e22;">
318
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #2a8a8a, #3a9a9a); color: #fff;">Read File</div>
319
+ </div>
320
+ <span class="duration" style="color: #8a7560;">1ms</span>
321
+ </div>
322
+ <div class="timing-row">
323
+ <span class="task-name" style="color: #d4c4aa;">Replace</span>
324
+ <div class="bar-track" style="background: #3a2e22;">
325
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #8b2442, #a03050); color: #fff;">Replace</div>
326
+ </div>
327
+ <span class="duration" style="color: #8a7560;">1ms</span>
328
+ </div>
329
+ </div>
330
+ <div class="mock-buttons">
331
+ <div class="mock-btn" style="background: #2a8a8a; color: #fff;">Run Operation</div>
332
+ <div class="mock-btn" style="background: #c44e2a; color: #fff;">Refresh</div>
333
+ <div class="mock-btn-outline mock-btn" style="border-color: #d4a46a; color: #d4a46a;">Export</div>
334
+ </div>
335
+ </div>
336
+ </div>
337
+
338
+ <!-- ════════════════════════════════════════════════════════════
339
+ 3. PROFESSIONAL LIGHT
340
+ ════════════════════════════════════════════════════════════ -->
341
+ <div class="theme-card" style="background: #f5f6f8;">
342
+ <h2 style="background: #e4e7ec; color: #2d3748;">Professional Light</h2>
343
+ <div class="swatches">
344
+ <div class="swatch" style="background: #3b82f6; color: #fff;">Primary</div>
345
+ <div class="swatch" style="background: #10b981; color: #fff;">Success</div>
346
+ <div class="swatch" style="background: #ef4444; color: #fff;">Error</div>
347
+ <div class="swatch" style="background: #f59e0b; color: #fff;">Warning</div>
348
+ <div class="swatch" style="background: #6366f1; color: #fff;">Accent</div>
349
+ <div class="swatch" style="background: #2d3748; color: #fff;">Text</div>
350
+ </div>
351
+ <div class="mock-ui" style="color: #2d3748;">
352
+ <div class="mock-topbar" style="background: #fff; border: 1px solid #e2e5ea; box-shadow: 0 1px 3px rgba(0,0,0,0.06);">
353
+ <span class="brand" style="color: #3b82f6;">Ultravisor</span>
354
+ <span class="nav-link" style="color: #6b7280;">Dashboard</span>
355
+ <span class="nav-link active" style="color: #2d3748;">Operations</span>
356
+ <span class="nav-link" style="color: #6b7280;">Schedule</span>
357
+ <span class="nav-link" style="color: #6b7280;">Manifests</span>
358
+ </div>
359
+ <div class="mock-cards">
360
+ <div class="mock-stat" style="background: #fff; border: 1px solid #e2e5ea;">
361
+ <div class="label" style="color: #6b7280;">Server Status</div>
362
+ <div class="value" style="color: #10b981;">Running</div>
363
+ </div>
364
+ <div class="mock-stat" style="background: #fff; border: 1px solid #e2e5ea;">
365
+ <div class="label" style="color: #6b7280;">Templates</div>
366
+ <div class="value" style="color: #2d3748;">12</div>
367
+ </div>
368
+ <div class="mock-stat" style="background: #fff; border: 1px solid #e2e5ea;">
369
+ <div class="label" style="color: #6b7280;">Operations</div>
370
+ <div class="value" style="color: #2d3748;">8</div>
371
+ </div>
372
+ </div>
373
+ <div class="mock-timing" style="background: #fff; border: 1px solid #e2e5ea;">
374
+ <h3 style="color: #6b7280;">Task Timeline</h3>
375
+ <div class="timing-row">
376
+ <span class="task-name" style="color: #374151;">Value Input</span>
377
+ <div class="bar-track" style="background: #f0f1f4;">
378
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #3b82f6, #60a5fa); color: #fff;">Value Input</div>
379
+ </div>
380
+ <span class="duration" style="color: #9ca3af;">23s</span>
381
+ </div>
382
+ <div class="timing-row">
383
+ <span class="task-name" style="color: #374151;">Read File</span>
384
+ <div class="bar-track" style="background: #f0f1f4;">
385
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #10b981, #34d399); color: #fff;">Read File</div>
386
+ </div>
387
+ <span class="duration" style="color: #9ca3af;">1ms</span>
388
+ </div>
389
+ <div class="timing-row">
390
+ <span class="task-name" style="color: #374151;">Replace</span>
391
+ <div class="bar-track" style="background: #f0f1f4;">
392
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #6366f1, #818cf8); color: #fff;">Replace</div>
393
+ </div>
394
+ <span class="duration" style="color: #9ca3af;">1ms</span>
395
+ </div>
396
+ </div>
397
+ <div class="mock-buttons">
398
+ <div class="mock-btn" style="background: #3b82f6; color: #fff;">Run Operation</div>
399
+ <div class="mock-btn" style="background: #e5e7eb; color: #374151;">Refresh</div>
400
+ <div class="mock-btn-outline mock-btn" style="border-color: #d1d5db; color: #374151;">Export</div>
401
+ </div>
402
+ </div>
403
+ </div>
404
+
405
+ <!-- ════════════════════════════════════════════════════════════
406
+ 4. PROFESSIONAL DARK
407
+ ════════════════════════════════════════════════════════════ -->
408
+ <div class="theme-card" style="background: #111318;">
409
+ <h2 style="background: #1a1d24; color: #c8cdd5;">Professional Dark</h2>
410
+ <div class="swatches">
411
+ <div class="swatch" style="background: #60a5fa; color: #111318;">Primary</div>
412
+ <div class="swatch" style="background: #34d399; color: #111318;">Success</div>
413
+ <div class="swatch" style="background: #f87171; color: #111318;">Error</div>
414
+ <div class="swatch" style="background: #fbbf24; color: #111318;">Warning</div>
415
+ <div class="swatch" style="background: #a78bfa; color: #111318;">Accent</div>
416
+ <div class="swatch" style="background: #1e2028; color: #8b92a0;">Surface</div>
417
+ </div>
418
+ <div class="mock-ui" style="color: #c8cdd5;">
419
+ <div class="mock-topbar" style="background: #1a1d24; border: 1px solid #282c34;">
420
+ <span class="brand" style="color: #60a5fa;">Ultravisor</span>
421
+ <span class="nav-link" style="color: #5a6070;">Dashboard</span>
422
+ <span class="nav-link active" style="color: #e0e4ea;">Operations</span>
423
+ <span class="nav-link" style="color: #5a6070;">Schedule</span>
424
+ <span class="nav-link" style="color: #5a6070;">Manifests</span>
425
+ </div>
426
+ <div class="mock-cards">
427
+ <div class="mock-stat" style="background: #1a1d24; border: 1px solid #282c34;">
428
+ <div class="label" style="color: #5a6070;">Server Status</div>
429
+ <div class="value" style="color: #34d399;">Running</div>
430
+ </div>
431
+ <div class="mock-stat" style="background: #1a1d24; border: 1px solid #282c34;">
432
+ <div class="label" style="color: #5a6070;">Templates</div>
433
+ <div class="value" style="color: #e0e4ea;">12</div>
434
+ </div>
435
+ <div class="mock-stat" style="background: #1a1d24; border: 1px solid #282c34;">
436
+ <div class="label" style="color: #5a6070;">Operations</div>
437
+ <div class="value" style="color: #e0e4ea;">8</div>
438
+ </div>
439
+ </div>
440
+ <div class="mock-timing" style="background: #1a1d24; border: 1px solid #282c34;">
441
+ <h3 style="color: #5a6070;">Task Timeline</h3>
442
+ <div class="timing-row">
443
+ <span class="task-name" style="color: #c8cdd5;">Value Input</span>
444
+ <div class="bar-track" style="background: #22252e;">
445
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #3b82f6, #60a5fa); color: #fff;">Value Input</div>
446
+ </div>
447
+ <span class="duration" style="color: #5a6070;">23s</span>
448
+ </div>
449
+ <div class="timing-row">
450
+ <span class="task-name" style="color: #c8cdd5;">Read File</span>
451
+ <div class="bar-track" style="background: #22252e;">
452
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #10b981, #34d399); color: #111318;">Read File</div>
453
+ </div>
454
+ <span class="duration" style="color: #5a6070;">1ms</span>
455
+ </div>
456
+ <div class="timing-row">
457
+ <span class="task-name" style="color: #c8cdd5;">Replace</span>
458
+ <div class="bar-track" style="background: #22252e;">
459
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #7c3aed, #a78bfa); color: #fff;">Replace</div>
460
+ </div>
461
+ <span class="duration" style="color: #5a6070;">1ms</span>
462
+ </div>
463
+ </div>
464
+ <div class="mock-buttons">
465
+ <div class="mock-btn" style="background: #3b82f6; color: #fff;">Run Operation</div>
466
+ <div class="mock-btn" style="background: #282c34; color: #c8cdd5;">Refresh</div>
467
+ <div class="mock-btn-outline mock-btn" style="border-color: #3a3f4a; color: #c8cdd5;">Export</div>
468
+ </div>
469
+ </div>
470
+ </div>
471
+
472
+ <!-- ════════════════════════════════════════════════════════════
473
+ 5. DESERT DUSK (warm muted dark)
474
+ ════════════════════════════════════════════════════════════ -->
475
+ <div class="theme-card" style="background: #1a1714;">
476
+ <h2 style="background: #252018; color: #c4956a;">Desert Dusk</h2>
477
+ <div class="swatches">
478
+ <div class="swatch" style="background: #c4956a; color: #1a1714;">Sandstone</div>
479
+ <div class="swatch" style="background: #d47a3e; color: #fff;">Adobe</div>
480
+ <div class="swatch" style="background: #6a3040; color: #fff;">Merlot</div>
481
+ <div class="swatch" style="background: #4a9090; color: #fff;">Oasis</div>
482
+ <div class="swatch" style="background: #8a9a5a; color: #1a1714;">Mesquite</div>
483
+ <div class="swatch" style="background: #c0a050; color: #1a1714;">Ochre</div>
484
+ </div>
485
+ <div class="mock-ui" style="color: #c8b8a0;">
486
+ <div class="mock-topbar" style="background: #252018; border: 1px solid #3a3028;">
487
+ <span class="brand" style="color: #c4956a;">Ultravisor</span>
488
+ <span class="nav-link" style="color: #706050;">Dashboard</span>
489
+ <span class="nav-link active" style="color: #e0d0b8;">Operations</span>
490
+ <span class="nav-link" style="color: #706050;">Schedule</span>
491
+ <span class="nav-link" style="color: #706050;">Manifests</span>
492
+ </div>
493
+ <div class="mock-cards">
494
+ <div class="mock-stat" style="background: #252018; border: 1px solid #3a3028;">
495
+ <div class="label" style="color: #706050;">Server Status</div>
496
+ <div class="value" style="color: #4a9090;">Running</div>
497
+ </div>
498
+ <div class="mock-stat" style="background: #252018; border: 1px solid #3a3028;">
499
+ <div class="label" style="color: #706050;">Templates</div>
500
+ <div class="value" style="color: #c4956a;">12</div>
501
+ </div>
502
+ <div class="mock-stat" style="background: #252018; border: 1px solid #3a3028;">
503
+ <div class="label" style="color: #706050;">Operations</div>
504
+ <div class="value" style="color: #c4956a;">8</div>
505
+ </div>
506
+ </div>
507
+ <div class="mock-timing" style="background: #252018; border: 1px solid #3a3028;">
508
+ <h3 style="color: #706050;">Task Timeline</h3>
509
+ <div class="timing-row">
510
+ <span class="task-name" style="color: #c8b8a0;">Value Input</span>
511
+ <div class="bar-track" style="background: #302820;">
512
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #d47a3e, #c4956a); color: #1a1714;">Value Input</div>
513
+ </div>
514
+ <span class="duration" style="color: #706050;">23s</span>
515
+ </div>
516
+ <div class="timing-row">
517
+ <span class="task-name" style="color: #c8b8a0;">Read File</span>
518
+ <div class="bar-track" style="background: #302820;">
519
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #4a9090, #5aa0a0); color: #fff;">Read File</div>
520
+ </div>
521
+ <span class="duration" style="color: #706050;">1ms</span>
522
+ </div>
523
+ <div class="timing-row">
524
+ <span class="task-name" style="color: #c8b8a0;">Replace</span>
525
+ <div class="bar-track" style="background: #302820;">
526
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #6a3040, #804050); color: #ecc;">Replace</div>
527
+ </div>
528
+ <span class="duration" style="color: #706050;">1ms</span>
529
+ </div>
530
+ <div class="timing-row">
531
+ <span class="task-name" style="color: #c8b8a0;">Write File</span>
532
+ <div class="bar-track" style="background: #302820;">
533
+ <div class="bar-fill" style="width:45%; background: linear-gradient(90deg, #8a9a5a, #a0b070); color: #1a1714;">Write File</div>
534
+ </div>
535
+ <span class="duration" style="color: #706050;">2ms</span>
536
+ </div>
537
+ </div>
538
+ <div class="mock-buttons">
539
+ <div class="mock-btn" style="background: #4a9090; color: #fff;">Run Operation</div>
540
+ <div class="mock-btn" style="background: #d47a3e; color: #fff;">Refresh</div>
541
+ <div class="mock-btn-outline mock-btn" style="border-color: #c4956a; color: #c4956a;">Export</div>
542
+ </div>
543
+ </div>
544
+ </div>
545
+
546
+ <!-- ════════════════════════════════════════════════════════════
547
+ 6. DESERT CANYON (vibrant dark)
548
+ ════════════════════════════════════════════════════════════ -->
549
+ <div class="theme-card" style="background: #18120e;">
550
+ <h2 style="background: #221a14; color: #e8943a;">Desert Canyon</h2>
551
+ <div class="swatches">
552
+ <div class="swatch" style="background: #e8943a; color: #18120e;">Marigold</div>
553
+ <div class="swatch" style="background: #e05830; color: #fff;">Canyon Red</div>
554
+ <div class="swatch" style="background: #9a2850; color: #fff;">Prickly Pear</div>
555
+ <div class="swatch" style="background: #18a0a0; color: #18120e;">Turquoise</div>
556
+ <div class="swatch" style="background: #e0c870; color: #18120e;">Yucca</div>
557
+ <div class="swatch" style="background: #a06030; color: #fff;">Copper</div>
558
+ </div>
559
+ <div class="mock-ui" style="color: #d8c8b0;">
560
+ <div class="mock-topbar" style="background: linear-gradient(90deg, #221a14, #2e2018);">
561
+ <span class="brand" style="color: #e8943a;">Ultravisor</span>
562
+ <span class="nav-link" style="color: #685040;">Dashboard</span>
563
+ <span class="nav-link active" style="color: #e0c870;">Operations</span>
564
+ <span class="nav-link" style="color: #685040;">Schedule</span>
565
+ <span class="nav-link" style="color: #685040;">Manifests</span>
566
+ </div>
567
+ <div class="mock-cards">
568
+ <div class="mock-stat" style="background: #221a14; border: 1px solid #3a2a1e;">
569
+ <div class="label" style="color: #685040;">Server Status</div>
570
+ <div class="value" style="color: #18a0a0;">Running</div>
571
+ </div>
572
+ <div class="mock-stat" style="background: #221a14; border: 1px solid #3a2a1e;">
573
+ <div class="label" style="color: #685040;">Templates</div>
574
+ <div class="value" style="color: #e0c870;">12</div>
575
+ </div>
576
+ <div class="mock-stat" style="background: #221a14; border: 1px solid #3a2a1e;">
577
+ <div class="label" style="color: #685040;">Operations</div>
578
+ <div class="value" style="color: #e0c870;">8</div>
579
+ </div>
580
+ </div>
581
+ <div class="mock-timing" style="background: #221a14; border: 1px solid #3a2a1e;">
582
+ <h3 style="color: #685040;">Task Timeline</h3>
583
+ <div class="timing-row">
584
+ <span class="task-name" style="color: #d8c8b0;">Value Input</span>
585
+ <div class="bar-track" style="background: #2e2018;">
586
+ <div class="bar-fill" style="width:80%; background: linear-gradient(90deg, #e8943a, #e0c870); color: #18120e;">Value Input</div>
587
+ </div>
588
+ <span class="duration" style="color: #685040;">23s</span>
589
+ </div>
590
+ <div class="timing-row">
591
+ <span class="task-name" style="color: #d8c8b0;">Read File</span>
592
+ <div class="bar-track" style="background: #2e2018;">
593
+ <div class="bar-fill" style="width:35%; background: linear-gradient(90deg, #18a0a0, #30b0b0); color: #18120e;">Read File</div>
594
+ </div>
595
+ <span class="duration" style="color: #685040;">1ms</span>
596
+ </div>
597
+ <div class="timing-row">
598
+ <span class="task-name" style="color: #d8c8b0;">Replace</span>
599
+ <div class="bar-track" style="background: #2e2018;">
600
+ <div class="bar-fill" style="width:25%; background: linear-gradient(90deg, #9a2850, #b83060); color: #fcc;">Replace</div>
601
+ </div>
602
+ <span class="duration" style="color: #685040;">1ms</span>
603
+ </div>
604
+ <div class="timing-row">
605
+ <span class="task-name" style="color: #d8c8b0;">Write File</span>
606
+ <div class="bar-track" style="background: #2e2018;">
607
+ <div class="bar-fill" style="width:45%; background: linear-gradient(90deg, #a06030, #c08040); color: #fff;">Write File</div>
608
+ </div>
609
+ <span class="duration" style="color: #685040;">2ms</span>
610
+ </div>
611
+ </div>
612
+ <div class="mock-buttons">
613
+ <div class="mock-btn" style="background: #18a0a0; color: #18120e; font-weight: 700;">Run Operation</div>
614
+ <div class="mock-btn" style="background: #e05830; color: #fff;">Refresh</div>
615
+ <div class="mock-btn-outline mock-btn" style="border-color: #e8943a; color: #e8943a;">Export</div>
616
+ </div>
617
+ <table class="mock-table" style="margin-top: 4px;">
618
+ <tr style="background: #2e2018;">
619
+ <th style="color: #685040;">Operation</th>
620
+ <th style="color: #685040;">Status</th>
621
+ <th style="color: #685040;">Duration</th>
622
+ </tr>
623
+ <tr style="border-bottom: 1px solid #2e2018;">
624
+ <td style="color: #d8c8b0;">OPR-0005</td>
625
+ <td><span class="status" style="color: #18a0a0;">Complete</span></td>
626
+ <td style="color: #a09080;">23s 513ms</td>
627
+ </tr>
628
+ <tr style="border-bottom: 1px solid #2e2018;">
629
+ <td style="color: #d8c8b0;">OPR-0004</td>
630
+ <td><span class="status" style="color: #e05830;">Error</span></td>
631
+ <td style="color: #a09080;">1s 204ms</td>
632
+ </tr>
633
+ <tr>
634
+ <td style="color: #d8c8b0;">OPR-0003</td>
635
+ <td><span class="status" style="color: #e0c870;">Running</span></td>
636
+ <td style="color: #a09080;">45s</td>
637
+ </tr>
638
+ </table>
639
+ </div>
640
+ </div>
641
+
642
+ </div><!-- /theme-grid -->
643
+
644
+ </body>
645
+ </html>
package/debug/Harness.js DELETED
@@ -1,6 +0,0 @@
1
- let libUltravisor = require(`../source/cli/Ultravisor-Run.cjs`);
2
- //let libUltravisor = require(`../source/cli/Ultravisor-CLIProgram.cjs`);
3
-
4
- //libUltravisor.run(['node', 'Harness.js', 'explain-config']);
5
-
6
- //libUltravisor.run(['node', 'Harness.js', 'start']);