visualifyjs 2.5.3-2.dev → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -241
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -298
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -44
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -121
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -9
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -124
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -587
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -147
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
@@ -0,0 +1,148 @@
1
+ # Changelog
2
+
3
+ All notable changes to this project will be documented in this file.
4
+
5
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
+
8
+ ## [3.0.0] - 2026-02-20
9
+
10
+ ### Fixed
11
+
12
+ - **Bundle externalization** — echarts and plotly.js are now externalized from legacy IIFE builds, reducing bundle from 9.6 MB to 2.8 MB. Three.js remains bundled (eagerly imported).
13
+ - **CDN dependency warnings** — visualify.js now warns in console if echarts or plotly CDN scripts are missing, with instructions on what to add.
14
+ - **Docs site cleanup** — removed unnecessary Three.js CDN and ReactThree stubs from docs/index.html (now bundled).
15
+ - **Loader update** — `visualify-loader.js` no longer auto-loads Three.js CDN (bundled with main script).
16
+ - **Dot plot rendering** — RePlotly now respects `props.data` passed directly from parent components (e.g., DotBio), fixing MmTrBC dot plots that stopped rendering.
17
+ - **Console noise cleanup** — removed debug `console.log` statements from production output (echartswitcher, selection, scatter components).
18
+
19
+ ### Improved
20
+
21
+ - **Selection component UI** — redesigned react-select dropdown with pill-shaped tags, refined theme colors, smooth hover/focus transitions, and cleaner indicator styles.
22
+ - **Timeline component UI** — redesigned with card-like node containers, hollow animated dots, gradient connector line, chip-style sub-item buttons, active node highlighting, and custom scrollbar.
23
+ - **Beta channel** — development builds available directly from the `dev` branch via CDN or `npm install github:visualify/visualify.js#dev`.
24
+
25
+ ### Breaking Changes
26
+
27
+ - **CLI merged into core package** - The `@visualify/cli` package is now deprecated and merged into the main `visualifyjs` package. Users should uninstall `@visualify/cli` and install `visualifyjs` globally instead.
28
+ - **Configuration moved from `window.$visualify` to `visualify.json`** - Inline JavaScript configuration is no longer supported. Create a `visualify.json` file in your project root instead.
29
+ - **New command structure with namespaces** - Commands have been restructured:
30
+ - `visualify serve` → `visualify dev`
31
+ - `visualify start` → `visualify dev portal`
32
+ - `visualify load-json` → `visualify portal load-json`
33
+ - `visualify mapping` → `visualify portal mapping`
34
+ - `visualify rtree2d` → `visualify portal rtree2d`
35
+ - **Mode values changed** - The `mode` property values have been renamed:
36
+ - `mode: 'pages'` → `mode: 'portal'`
37
+ - `mode: 'charts'` → `mode: 'docs'`
38
+ - **Init command requires template** - The `visualify init` command now requires a template argument: `docs`, `portal`, or `full`.
39
+
40
+ ### Added
41
+
42
+ - **3D Visualization Support** - New 3D chart types using ECharts GL and Three.js
43
+ - `scatter3d` - 3D scatter plots with x, y, z dimensions
44
+ - `bar3d` - 3D bar charts with Lambert shading
45
+ - `surface3d` - 3D surface/height map visualizations
46
+ - `line3d` - 3D line/trajectory charts
47
+ - `threejs` - Custom Three.js scenes with React Three Fiber integration
48
+ - WebGL support detection with graceful fallback for unsupported browsers
49
+ - Lazy loading for 3D libraries (loaded on-demand to minimize bundle size)
50
+ - Docsify plugin system for embedding charts in markdown documentation
51
+ - `visualify` code block support in markdown
52
+ - Auto-mount charts with `data-visualify` attribute
53
+ - SPA navigation support for single-page documentation
54
+ - `visualify.json` configuration file support with JSON schema validation
55
+ - Auto-detection mode for `visualify dev` command - automatically detects project type from configuration or directory structure
56
+ - Separate entry points for `docs` and `portal` bundles for optimized builds
57
+ - `visualify docs` namespace with `dev` and `build` subcommands
58
+ - `visualify portal` namespace with `dev`, `build`, `load-json`, `mapping`, and `rtree2d` subcommands
59
+ - Support for `visualify.config.js` for dynamic configuration
60
+ - `--verbose` global flag for debug output
61
+ - `--dry-run` option for configuration validation
62
+ - Environment variable support (`VISUALIFY_PORT`, `VISUALIFY_HOST`, `VISUALIFY_MODE`)
63
+
64
+ ### Changed
65
+
66
+ - Build output structure now uses separate entry points for docs and portal modes
67
+ - Development server now defaults to auto-detection mode
68
+ - Improved error messages with suggestions for common issues
69
+ - Updated CLI help documentation with examples
70
+
71
+ ### Deprecated
72
+
73
+ - `@visualify/cli` package - will not receive updates after 2026-06-01
74
+ - `window.$visualify` inline configuration - migrate to `visualify.json`
75
+ - Old mode values (`pages`, `charts`) - use `portal`, `docs` instead
76
+
77
+ ### Removed
78
+
79
+ - Support for `visualify serve` command (use `visualify dev`)
80
+ - Support for `visualify start` command (use `visualify dev portal`)
81
+ - Direct `visualify load-json` command (use `visualify portal load-json`)
82
+ - Direct `visualify mapping` command (use `visualify portal mapping`)
83
+ - Direct `visualify rtree2d` command (use `visualify portal rtree2d`)
84
+
85
+ ### Migration Guide
86
+
87
+ See the [v3.0.0 Migration Guide](./docs/migration/v3-migration.md) for detailed instructions on upgrading from v2.x.
88
+
89
+ Quick migration steps:
90
+ 1. `npm uninstall -g @visualify/cli`
91
+ 2. `npm i -g visualifyjs`
92
+ 3. Create `visualify.json` with your configuration
93
+ 4. Update mode values (`pages` → `portal`, `charts` → `docs`)
94
+ 5. Update npm scripts with new command syntax
95
+
96
+ ---
97
+
98
+ ## [2.5.3] - 2024-XX-XX
99
+
100
+ ### Fixed
101
+
102
+ - Minor bug fixes and dependency updates
103
+
104
+ ---
105
+
106
+ ## [2.5.2] - 2024-XX-XX
107
+
108
+ ### Changed
109
+
110
+ - Dependency upgrades
111
+
112
+ ---
113
+
114
+ ## [2.5.1] - 2024-XX-XX
115
+
116
+ ### Fixed
117
+
118
+ - Documentation updates
119
+
120
+ ---
121
+
122
+ ## [2.5.0] - 2024-XX-XX
123
+
124
+ ### Added
125
+
126
+ - New visualization components
127
+ - Improved theming support
128
+
129
+ ---
130
+
131
+ ## [2.0.0] - 2024-XX-XX
132
+
133
+ ### Added
134
+
135
+ - React 18 support
136
+ - New CLI commands
137
+ - Enhanced chart types
138
+
139
+ ---
140
+
141
+ ## [1.0.0] - 2023-XX-XX
142
+
143
+ ### Added
144
+
145
+ - Initial release of Visualify.js
146
+ - Basic chart components
147
+ - CLI tooling
148
+ - Documentation site support
@@ -0,0 +1,513 @@
1
+ # CLI Command Reference
2
+
3
+ Complete reference for the Visualify.js CLI commands. The CLI is included in the `visualifyjs` package (v3.0.0+).
4
+
5
+ ## Table of Contents
6
+
7
+ - [Installation](#installation)
8
+ - [Global Options](#global-options)
9
+ - [Commands](#commands)
10
+ - [visualify dev](#visualify-dev)
11
+ - [visualify init](#visualify-init)
12
+ - [visualify docs](#visualify-docs)
13
+ - [visualify portal](#visualify-portal)
14
+ - [Exit Codes](#exit-codes)
15
+ - [Environment Variables](#environment-variables)
16
+
17
+ ---
18
+
19
+ ## Installation
20
+
21
+ ```bash
22
+ # Install globally
23
+ npm i -g visualifyjs
24
+
25
+ # Or use with npx
26
+ npx visualifyjs dev
27
+ ```
28
+
29
+ Verify installation:
30
+ ```bash
31
+ visualify --version
32
+ ```
33
+
34
+ ---
35
+
36
+ ## Global Options
37
+
38
+ These options are available for all commands:
39
+
40
+ | Option | Description |
41
+ |--------|-------------|
42
+ | `-v, --version` | Display version number |
43
+ | `-h, --help` | Display help for command |
44
+ | `--verbose` | Enable verbose output for debugging |
45
+
46
+ ---
47
+
48
+ ## Commands
49
+
50
+ ### visualify dev
51
+
52
+ Start the development server with auto-detection or explicit mode.
53
+
54
+ #### Usage
55
+
56
+ ```bash
57
+ visualify dev [mode] [path] [options]
58
+ ```
59
+
60
+ #### Arguments
61
+
62
+ | Argument | Description | Default |
63
+ |----------|-------------|---------|
64
+ | `mode` | Development mode: `auto`, `docs`, or `portal` | `auto` |
65
+ | `path` | Path to project directory | Current directory |
66
+
67
+ #### Options
68
+
69
+ | Option | Description | Default |
70
+ |--------|-------------|---------|
71
+ | `-p, --port <port>` | Port to run the server | `3000` |
72
+ | `-H, --host <host>` | Host to bind the server | `localhost` |
73
+ | `--no-open` | Do not open browser automatically | `false` |
74
+
75
+ #### Examples
76
+
77
+ ```bash
78
+ # Auto-detect mode from visualify.json
79
+ visualify dev
80
+
81
+ # Explicit docs mode
82
+ visualify dev docs
83
+
84
+ # Explicit portal mode with custom port
85
+ visualify dev portal ./my-project --port 8080
86
+
87
+ # Auto-detect with specific path
88
+ visualify dev auto ./docs --port 4000
89
+ ```
90
+
91
+ #### Auto-Detection Logic
92
+
93
+ When `mode` is `auto` (default), the CLI checks in order:
94
+
95
+ 1. `mode` property in `visualify.json`
96
+ 2. Presence of `docs/` directory → `docs` mode
97
+ 3. Presence of `portal/` directory → `portal` mode
98
+ 4. Default to `portal` mode
99
+
100
+ ---
101
+
102
+ ### visualify init
103
+
104
+ Initialize a new Visualify.js project with a template.
105
+
106
+ #### Usage
107
+
108
+ ```bash
109
+ visualify init <template> [path] [options]
110
+ ```
111
+
112
+ #### Arguments
113
+
114
+ | Argument | Description | Required |
115
+ |----------|-------------|----------|
116
+ | `template` | Template type: `docs`, `portal`, or `full` | Yes |
117
+ | `path` | Directory to initialize | No (defaults to current) |
118
+
119
+ #### Templates
120
+
121
+ | Template | Description |
122
+ |----------|-------------|
123
+ | `docs` | Documentation site with chart support |
124
+ | `portal` | Data portal with navigation and visualization |
125
+ | `full` | Both docs and portal in one project |
126
+
127
+ #### Options
128
+
129
+ | Option | Description |
130
+ |--------|-------------|
131
+ | `--force` | Overwrite existing files |
132
+ | `--skip-install` | Skip npm install after initialization |
133
+
134
+ #### Examples
135
+
136
+ ```bash
137
+ # Initialize docs template in current directory
138
+ visualify init docs
139
+
140
+ # Initialize portal template in specific directory
141
+ visualify init portal ./my-data-portal
142
+
143
+ # Initialize full template with force overwrite
144
+ visualify init full ./my-project --force
145
+
146
+ # Initialize without running npm install
147
+ visualify init docs ./docs --skip-install
148
+ ```
149
+
150
+ #### Generated Structure
151
+
152
+ **Docs template:**
153
+ ```
154
+ docs/
155
+ ├── visualify.json
156
+ ├── index.html
157
+ ├── home.json
158
+ └── .nojekyll
159
+ ```
160
+
161
+ **Portal template:**
162
+ ```
163
+ portal/
164
+ ├── visualify.json
165
+ ├── index.html
166
+ ├── home.json
167
+ ├── data/
168
+ └── .nojekyll
169
+ ```
170
+
171
+ **Full template:**
172
+ ```
173
+ my-project/
174
+ ├── visualify.json
175
+ ├── index.html
176
+ ├── docs/
177
+ │ └── home.json
178
+ ├── portal/
179
+ │ └── home.json
180
+ └── .nojekyll
181
+ ```
182
+
183
+ ---
184
+
185
+ ### visualify docs
186
+
187
+ Commands for documentation mode projects.
188
+
189
+ #### Subcommands
190
+
191
+ ##### visualify docs dev
192
+
193
+ Start development server in docs mode.
194
+
195
+ ```bash
196
+ visualify docs dev [path] [options]
197
+ ```
198
+
199
+ Options:
200
+ | Option | Description | Default |
201
+ |--------|-------------|---------|
202
+ | `-p, --port <port>` | Port to run the server | `3000` |
203
+ | `-H, --host <host>` | Host to bind the server | `localhost` |
204
+ | `--no-open` | Do not open browser | `false` |
205
+
206
+ Example:
207
+ ```bash
208
+ visualify docs dev ./docs --port 8080
209
+ ```
210
+
211
+ ##### visualify docs build
212
+
213
+ Build the documentation for production.
214
+
215
+ ```bash
216
+ visualify docs build [path] [options]
217
+ ```
218
+
219
+ Options:
220
+ | Option | Description | Default |
221
+ |--------|-------------|---------|
222
+ | `-o, --output <dir>` | Output directory | `dist` |
223
+ | `--minify` | Minify output | `true` |
224
+
225
+ Example:
226
+ ```bash
227
+ visualify docs build ./docs --output ./build
228
+ ```
229
+
230
+ ---
231
+
232
+ ### visualify portal
233
+
234
+ Commands for portal mode projects and data management.
235
+
236
+ #### Subcommands
237
+
238
+ ##### visualify portal dev
239
+
240
+ Start development server in portal mode.
241
+
242
+ ```bash
243
+ visualify portal dev [path] [options]
244
+ ```
245
+
246
+ Options:
247
+ | Option | Description | Default |
248
+ |--------|-------------|---------|
249
+ | `-p, --port <port>` | Port to run the server | `3000` |
250
+ | `-H, --host <host>` | Host to bind the server | `localhost` |
251
+ | `--no-open` | Do not open browser | `false` |
252
+
253
+ Example:
254
+ ```bash
255
+ visualify portal dev ./portal --port 8080
256
+ ```
257
+
258
+ ##### visualify portal build
259
+
260
+ Build the portal for production.
261
+
262
+ ```bash
263
+ visualify portal build [path] [options]
264
+ ```
265
+
266
+ Options:
267
+ | Option | Description | Default |
268
+ |--------|-------------|---------|
269
+ | `-o, --output <dir>` | Output directory | `dist` |
270
+ | `--minify` | Minify output | `true` |
271
+
272
+ Example:
273
+ ```bash
274
+ visualify portal build ./portal --output ./build
275
+ ```
276
+
277
+ ##### visualify portal load-json
278
+
279
+ Load points from a JSON file into the portal data store.
280
+
281
+ ```bash
282
+ visualify portal load-json <path> [options]
283
+ ```
284
+
285
+ Arguments:
286
+ | Argument | Description | Required |
287
+ |----------|-------------|----------|
288
+ | `path` | Path to JSON file | Yes |
289
+
290
+ Options:
291
+ | Option | Description | Default |
292
+ |--------|-------------|---------|
293
+ | `-o, --output <path>` | Output file path | Auto-generated |
294
+ | `-f, --format <format>` | Output format: `json`, `csv` | `json` |
295
+
296
+ Example:
297
+ ```bash
298
+ # Load JSON file
299
+ visualify portal load-json ./data/points.json
300
+
301
+ # Load with custom output
302
+ visualify portal load-json ./data/points.json --output ./processed/data.json
303
+ ```
304
+
305
+ ##### visualify portal mapping
306
+
307
+ Create a mapping file with optional key specification.
308
+
309
+ ```bash
310
+ visualify portal mapping [options] <path>
311
+ ```
312
+
313
+ Arguments:
314
+ | Argument | Description | Required |
315
+ |----------|-------------|----------|
316
+ | `path` | Path to source file | Yes |
317
+
318
+ Options:
319
+ | Option | Description | Default |
320
+ |--------|-------------|---------|
321
+ | `-k, --key <key>` | Key column name | `id` |
322
+ | `-o, --output <path>` | Output file path | `mapping.json` |
323
+ | `-s, --separator <char>` | CSV separator | `,` |
324
+
325
+ Example:
326
+ ```bash
327
+ # Create mapping with default key
328
+ visualify portal mapping ./data/mapping.csv
329
+
330
+ # Create mapping with custom key
331
+ visualify portal mapping --key gene_id ./data/genes.csv --output ./gene-mapping.json
332
+ ```
333
+
334
+ ##### visualify portal rtree2d
335
+
336
+ Create a 2D R-tree index for efficient spatial data searching.
337
+
338
+ ```bash
339
+ visualify portal rtree2d [options] <path>
340
+ ```
341
+
342
+ Arguments:
343
+ | Argument | Description | Required |
344
+ |----------|-------------|----------|
345
+ | `path` | Path to spatial data file | Yes |
346
+
347
+ Options:
348
+ | Option | Description | Default |
349
+ |--------|-------------|---------|
350
+ | `-o, --output <path>` | Output directory | `./rtree` |
351
+ | `-x, --x-field <field>` | X coordinate field name | `x` |
352
+ | `-y, --y-field <field>` | Y coordinate field name | `y` |
353
+ | `-i, --id-field <field>` | ID field name | `id` |
354
+ | `--max-entries <number>` | Maximum entries per node | `9` |
355
+
356
+ Example:
357
+ ```bash
358
+ # Create R-tree with defaults
359
+ visualify portal rtree2d ./data/spatial.json
360
+
361
+ # Create R-tree with custom fields
362
+ visualify portal rtree2d \
363
+ --x-field longitude \
364
+ --y-field latitude \
365
+ --id-field sample_id \
366
+ --output ./indexes/spatial \
367
+ ./data/samples.json
368
+ ```
369
+
370
+ ---
371
+
372
+ ## Exit Codes
373
+
374
+ | Code | Meaning | Description |
375
+ |------|---------|-------------|
376
+ | `0` | Success | Command executed successfully |
377
+ | `1` | General Error | Unspecified error occurred |
378
+ | `2` | Invalid Arguments | Invalid or missing command arguments |
379
+ | `3` | Configuration Error | Error in visualify.json configuration |
380
+ | `4` | File Not Found | Required file not found |
381
+ | `5` | Port In Use | Specified port is already in use |
382
+ | `6` | Build Error | Error during build process |
383
+ | `7` | Validation Error | Data validation failed |
384
+
385
+ ---
386
+
387
+ ## Environment Variables
388
+
389
+ | Variable | Description | Example |
390
+ |----------|-------------|---------|
391
+ | `VISUALIFY_PORT` | Default port for dev server | `3000` |
392
+ | `VISUALIFY_HOST` | Default host for dev server | `localhost` |
393
+ | `VISUALIFY_MODE` | Default mode (docs/portal) | `portal` |
394
+ | `VISUALIFY_CONFIG` | Path to config file | `./config/visualify.json` |
395
+ | `DEBUG` | Enable debug logging | `visualify:*` |
396
+
397
+ ---
398
+
399
+ ## Common Use Cases
400
+
401
+ ### Development Workflow
402
+
403
+ ```bash
404
+ # 1. Initialize a new portal project
405
+ visualify init portal ./my-portal
406
+
407
+ # 2. Navigate to project
408
+ cd ./my-portal
409
+
410
+ # 3. Start development server
411
+ visualify dev
412
+
413
+ # 4. Load spatial data
414
+ visualify portal load-json ./data/points.json
415
+
416
+ # 5. Create R-tree index
417
+ visualify portal rtree2d --output ./rtree ./data/points.json
418
+
419
+ # 6. Build for production
420
+ visualify portal build --output ./dist
421
+ ```
422
+
423
+ ### CI/CD Integration
424
+
425
+ ```bash
426
+ #!/bin/bash
427
+ set -e
428
+
429
+ # Install visualifyjs
430
+ npm i -g visualifyjs
431
+
432
+ # Validate configuration
433
+ visualify dev --dry-run
434
+
435
+ # Build project
436
+ visualify portal build --output ./dist
437
+
438
+ # Verify build
439
+ if [ ! -d "./dist" ]; then
440
+ echo "Build failed: dist directory not found"
441
+ exit 1
442
+ fi
443
+ ```
444
+
445
+ ### Migration Script
446
+
447
+ ```bash
448
+ #!/bin/bash
449
+
450
+ # Update from v2.x to v3.0.0
451
+
452
+ # 1. Uninstall old CLI
453
+ npm uninstall -g @visualify/cli
454
+
455
+ # 2. Install new CLI
456
+ npm i -g visualifyjs
457
+
458
+ # 3. Verify installation
459
+ visualify --version
460
+
461
+ # 4. Create visualify.json if it doesn't exist
462
+ if [ ! -f "visualify.json" ]; then
463
+ echo '{"version": "3.0.0", "mode": "portal"}' > visualify.json
464
+ echo "Created visualify.json with default configuration"
465
+ fi
466
+
467
+ echo "Migration complete!"
468
+ ```
469
+
470
+ ---
471
+
472
+ ## Troubleshooting
473
+
474
+ ### Command not found
475
+
476
+ ```bash
477
+ # Check if installed
478
+ which visualify
479
+
480
+ # If not found, reinstall
481
+ npm i -g visualifyjs
482
+
483
+ # Or use npx
484
+ npx visualifyjs --version
485
+ ```
486
+
487
+ ### Port already in use
488
+
489
+ ```bash
490
+ # Use a different port
491
+ visualify dev --port 8080
492
+
493
+ # Or let the CLI find an available port
494
+ visualify dev --port 0
495
+ ```
496
+
497
+ ### Configuration errors
498
+
499
+ ```bash
500
+ # Validate configuration
501
+ visualify dev --dry-run
502
+
503
+ # Check configuration file
504
+ cat visualify.json
505
+ ```
506
+
507
+ ---
508
+
509
+ ## Related Documentation
510
+
511
+ - [Migration Guide](../migration/v3-migration.md)
512
+ - [Configuration Reference](../configuration/visualify-json.md)
513
+ - [Quick Start](../../docs/quickstart.md)