Commit Graph

81 Commits

Author SHA1 Message Date
813c36b953 Stabilize JSON UI bindings and loop rendering 2026-01-18 11:07:32 +00:00
b232c220df Merge branch 'main' into codex/align-event/action-shape-in-renderer 2026-01-18 02:38:04 +00:00
01921d4b80 Align json-ui event action handlers 2026-01-18 02:36:16 +00:00
19a26156ad Merge pull request #107 from johndoe6345789/codex/update-loop-rendering-in-renderer.tsx
Render loop container elements per item with merged props
2026-01-18 02:35:43 +00:00
5652d0222d Render loop containers with props 2026-01-18 02:35:04 +00:00
e2f128a947 Merge pull request #106 from johndoe6345789/codex/expand-conditional-rendering-in-renderer.tsx
Expand conditional rendering branches for JSON UI renderer
2026-01-18 02:34:36 +00:00
717871c673 Expand conditional rendering branches 2026-01-18 02:34:10 +00:00
f7d7b9f478 Merge branch 'main' into codex/refactor-data-binding-resolution-in-componentrenderer 2026-01-18 02:32:30 +00:00
17ff0eaaea Enhance binding resolution in component renderer 2026-01-18 02:31:49 +00:00
94018c0e3c Align JSON UI binding transforms 2026-01-18 02:31:19 +00:00
88e028b54e Merge pull request #102 from johndoe6345789/codex/update-conditional-component-handling
Render `conditional.then` when condition is true in JSONUIRenderer
2026-01-18 02:06:27 +00:00
f19df2822d Adjust conditional rendering for JSON UI 2026-01-18 02:06:17 +00:00
535f712383 Merge pull request #101 from johndoe6345789/codex/update-loop-handling-in-renderer
Fix loop rendering to use children with loop context
2026-01-18 02:05:54 +00:00
1bb40e399b Fix loop rendering to use children context 2026-01-18 02:05:42 +00:00
55c81cedfa Update data binding resolution context 2026-01-18 02:05:10 +00:00
cc0cab04dc Merge pull request #98 from johndoe6345789/codex/extend-usecomponentregistry-for-ui-primitives
Align JSON UI registry with canonical atom/molecule sources
2026-01-18 01:54:03 +00:00
8864436425 Align JSON UI registry with canonical components 2026-01-18 01:53:48 +00:00
463201d758 Unify icon registry access 2026-01-18 01:51:56 +00:00
7cd15ca7ba Merge pull request #96 from johndoe6345789/codex/merge-json-ui-registry-into-component-registry
Merge JSON UI registry into component hook and add registry overrides to SchemaRenderer
2026-01-18 01:43:41 +00:00
560a75cd69 Expand schema component registry 2026-01-18 01:43:31 +00:00
17f4d567c9 Merge pull request #95 from johndoe6345789/codex/merge-atom/molecule-entries-into-component-registry
Consolidate JSON UI component registry and sync ComponentType union
2026-01-18 01:42:52 +00:00
320e8a4c2c Consolidate JSON UI component registry 2026-01-18 01:42:41 +00:00
671a99d30b Re-export JSON UI hooks 2026-01-18 01:41:27 +00:00
9b1d04ab37 Merge pull request #81 from johndoe6345789/codex/create-shared-type-export-for-json-ui
Extract JSON UI renderer types to shared module and tighten typings
2026-01-18 01:15:09 +00:00
013de088a0 Add shared JSON UI renderer types 2026-01-18 01:14:53 +00:00
56536c6a61 Merge pull request #80 from johndoe6345789/codex/move-componentrendererprops-to-shared-types
Move ComponentRendererProps to shared JSON-UI types and tighten typings
2026-01-18 01:14:34 +00:00
3891625692 Move ComponentRendererProps to shared JSON UI types 2026-01-18 01:14:17 +00:00
62997c03b5 Add JSON UI data source config type 2026-01-18 01:13:41 +00:00
86ef371ddf Merge pull request #38 from johndoe6345789/codex/split-storage-adapters-into-separate-modules
Refactor storage adapters into separate modules
2026-01-18 00:30:28 +00:00
c03917005f Refactor storage adapters into modules 2026-01-18 00:30:18 +00:00
14836fb989 Refactor docker parser functions 2026-01-18 00:29:46 +00:00
1329c6b112 Merge pull request #28 from johndoe6345789/codex/extract-adapter-classes-to-separate-files
refactor(unified-storage): extract adapters into separate files
2026-01-18 00:20:24 +00:00
7daa32cb00 refactor: split unified storage adapters 2026-01-18 00:20:13 +00:00
c9d617d645 Split generator utilities into modules 2026-01-18 00:19:07 +00:00
copilot-swe-agent[bot]
6be1e9d918 Implement JSON-friendly expression system for events
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
2026-01-17 22:53:54 +00:00
ab152bbd67 Generated by Spark: Work on low hanging fruit from JSON_COMPATIBILITY_ANALYSIS.md 2026-01-17 22:21:40 +00:00
copilot-swe-agent[bot]
58437b9770 Migrate 20+ components to JSON UI system - now 46 supported
Co-authored-by: johndoe6345789 <224850594+johndoe6345789@users.noreply.github.com>
2026-01-17 21:54:51 +00:00
c7ebafe6a8 Generated by Spark: IndexedDB and Flask replaces Spark. Fix this please. Run npx tsc --noEmit
Error: src/components/FeatureIdeaCloud.tsx(920,37): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/components/PlaywrightDesigner.tsx(105,37): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/components/StorybookDesigner.tsx(115,37): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/components/TemplateExplorer.tsx(40,31): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/components/TemplateExplorer.tsx(44,32): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/components/UnitTestDesigner.tsx(138,37): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(23,19): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(30,33): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(40,24): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(63,19): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(71,22): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(86,19): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(91,33): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-data.ts(95,22): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(87,22): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(102,33): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(104,22): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(126,43): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(129,24): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/data/use-seed-templates.ts(131,24): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/json-ui/use-data-sources.ts(25,40): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/json-ui/use-data-sources.ts(47,20): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/orchestration/use-actions.ts(119,31): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(22,19): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(27,42): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(31,22): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(43,24): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(60,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(65,32): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(90,19): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/hooks/use-component-tree-loader.ts(94,20): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(21,39): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(61,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(63,38): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(66,20): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(74,36): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(83,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(85,38): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/project-service.ts(87,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/protected-llm-service.ts(39,31): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(199,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(200,25): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(204,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(205,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(209,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(210,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(214,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(215,25): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(219,17): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(220,34): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(221,49): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: src/lib/unified-storage.ts(409,18): error TS2339: Property 'spark' does not exist on type 'Window & typeof globalThis'.
Error: Process completed with exit code 2.
2026-01-17 20:19:44 +00:00
c14aeeec87 Generated by Spark: maybe we can fix these warnings: @johndoe6345789 ➜ /workspaces/spark-template (main) $ npm run dev
> spark-template@0.0.0 dev
> vite

7:54:09 PM [vite] (client) Re-optimizing dependencies because lockfile has changed
Port 5000 is in use, trying another one...

  VITE v7.3.1  ready in 381 ms

  ➜  Local:   http://localhost:5001/
  ➜  Network: http://10.0.0.185:5001/
  ➜  press h + enter to show help
7:54:16 PM [vite] (client) warning:
/workspaces/spark-template/src/lib/component-registry.ts
21 |          for (const path of pathVariants){
22 |              try {
23 |                  const module = await import(path);
   |                                              ^^^^
24 |                  const exportName = componentConfig.export || 'default';
25 |                  if (module[exportName]) {
The above dynamic import cannot be analyzed by Vite.
See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import() call to suppress this warning.

  Plugin: vite:import-analysis
  File: /workspaces/spark-template/src/lib/component-registry.ts
7:54:16 PM [vite] (client) warning:
/workspaces/spark-template/src/lib/unified-storage.ts
201 |          const moduleName = 'sql.js';
202 |          try {
203 |              return await import(moduleName);
    |                                  ^^^^^^^^^^
204 |          } catch  {
205 |              throw new Error(`${moduleName} not installed. Run: npm install ${moduleName}`);
The above dynamic import cannot be analyzed by Vite.
See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import() call to suppress this warning.

  Plugin: vite:import-analysis
  File: /workspaces/spark-template/src/lib/unified-storage.ts
7:54:23 PM [vite] (client)  new dependencies optimized: framer-motion
7:54:23 PM [vite] (client)  optimized dependencies changed. reloading
7:54:23 PM [vite] (client) warning:
/workspaces/spark-template/src/lib/component-registry.ts
21 |          for (const path of pathVariants){
22 |              try {
23 |                  const module = await import(path);
   |                                              ^^^^
24 |                  const exportName = componentConfig.export || 'default';
25 |                  if (module[exportName]) {
The above dynamic import cannot be analyzed by Vite.
See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import() call to suppress this warning.

  Plugin: vite:import-analysis
  File: /workspaces/spark-template/src/lib/component-registry.ts
7:54:24 PM [vite] (client) warning:
/workspaces/spark-template/src/lib/unified-storage.ts
201 |          const moduleName = 'sql.js';
202 |          try {
203 |              return await import(moduleName);
    |                                  ^^^^^^^^^^
204 |          } catch  {
205 |              throw new Error(`${moduleName} not installed. Run: npm install ${moduleName}`);
The above dynamic import cannot be analyzed by Vite.
See https://github.com/rollup/plugins/tree/master/packages/dynamic-import-vars#limitations for supported dynamic import formats. If this is intended to be left as-is, you can use the /* @vite-ignore */ comment inside the import() call to suppress this warning.

  Plugin: vite:import-analysis
  File: /workspaces/spark-template/src/lib/unified-storage.ts
2026-01-17 20:01:58 +00:00
4dfded3533 Generated by Spark: @johndoe6345789 ➜ /workspaces/low-code-react-app-b (main) $ npm run build
> spark-template@0.0.0 prebuild
> mkdir -p /tmp/dist || true

> spark-template@0.0.0 build
> tsc -b --noCheck && vite build

vite v7.3.1 building client environment for production...
<script src="/runtime-config.js"> in "/index.html" can't be bundled without type="module" attribute
✓ 37 modules transformed.
✗ Build failed in 1.07s
error during build:
[vite]: Rollup failed to resolve import "@github/spark/hooks" from "/workspaces/low-code-react-app-b/src/hooks/use-project-state.ts".
This is most likely unintended because it can break your application at runtime.
If you do want to externalize this module explicitly add it to
`build.rollupOptions.external`
    at viteLog (file:///workspaces/low-code-react-app-b/node_modules/vite/dist/node/chunks/config.js:33635:57)
    at file:///workspaces/low-code-react-app-b/node_modules/vite/dist/node/chunks/config.js:33669:73
    at onwarn (file:///workspaces/low-code-react-app-b/node_modules/@vitejs/plugin-react-swc/index.js:76:7)
    at file:///workspaces/low-code-react-app-b/node_modules/vite/dist/node/chunks/config.js:33669:28
    at onRollupLog (file:///workspaces/low-code-react-app-b/node_modules/vite/dist/node/chunks/config.js:33664:63)
    at onLog (file:///workspaces/low-code-react-app-b/node_modules/vite/dist/node/chunks/config.js:33467:4)
    at file:///workspaces/low-code-react-app-b/node_modules/rollup/dist/es/shared/node-entry.js:20961:32
    at Object.logger [as onLog] (file:///workspaces/low-code-react-app-b/node_modules/rollup/dist/es/shared/node-entry.js:22848:9)
    at ModuleLoader.handleInvalidResolvedId (file:///workspaces/low-code-react-app-b/node_modules/rollup/dist/es/shared/node-entry.js:21592:26)
    at file:///workspaces/low-code-react-app-b/node_modules/rollup/dist/es/shared/node-entry.js:21550:26
@johndoe6345789 ➜ /workspaces/low-code-react-app-b (main) $
2026-01-17 19:39:46 +00:00
882f9b0d3b Generated by Spark: Remove packages folder and packages folder references. Use IndexedDB by default. Give user option to use Flask API, if Flask fails, switch back to IndexedDB. Actually delete the packages folder. 2026-01-17 19:20:00 +00:00
0d1a4c4c2b Generated by Spark: Remove packages folder and packages folder references. Use IndexedDB by default. Give user option to use Flask API, if Flask fails, switch back to IndexedDB. 2026-01-17 19:13:16 +00:00
595f1ae9c0 Generated by Spark: A library in packages folder - Seems its still trying to use fetch. If a fetch fails, switch back to IndexedDB. 2026-01-17 18:57:01 +00:00
cbb303fb8d Generated by Spark: Seems its still trying to use fetch. If a fetch fails, switch back to IndexedDB. 2026-01-17 18:53:12 +00:00
7b91fe1975 Generated by Spark: I am having issues with this. Remember, we should be defaulting to IndexedDB, not the Flask API. Flask API is obtained by explicitly setting it in the UI or setting a env variable. export default function applyFetchPatch() {
if (ssrSafeWindow) {
    ssrSafeWindow.fetch = async (input: string | URL | Request, init?: RequestInit) => {
      try {
        const response = await globalFetch(input, init)
        sendFetchStats({input, error: !response.ok, status: response.status})
        return response
      } catch (error) {
        sendFetchStats({input, error: true, status: 'unknown'})
        throw error
      }
    }
  }
}
2026-01-17 18:50:06 +00:00
76e7716c10 Generated by Spark: I can auto default to flask backend with docker environment variable. If its not set used IndexedDB. 2026-01-17 18:38:17 +00:00
519ad0016d Generated by Spark: Ok I figured it out. Make a backend folder, put a flask backend in it with a Dockerfile. Main UI uses IndexedDB then with a UI setting, it can be moved to the flask backend. 2026-01-17 18:31:43 +00:00
02eb47e83f Generated by Spark: Perhaps it could use sqlite on disk if possible, else use indexeddb 2026-01-17 18:19:45 +00:00
270d0be790 Generated by Spark: Reduce reliance on spark database. Just use sqlite. 2026-01-17 18:14:23 +00:00
feaa7d7a9e Generated by Spark: Make this function smarter, wide variety of search paths and other permissive logic - function createLazyComponent(componentConfig: ComponentConfig) {
const loader = () => {
    if (componentConfig.preloadDependencies) {
      componentConfig.preloadDependencies.forEach(depName => {
        const preloader = dependencyPreloaders[depName]
        if (preloader) {
          preloader()
        }
      })
    }

    return import(componentConfig.path).then(m => ({ default: m[componentConfig.export] }))
  }
2026-01-17 17:46:36 +00:00