Generated by Spark: 0s

3m 30s
Run docker/build-push-action@v5
GitHub Actions runtime token ACs
Docker info
Proxy configuration
Buildx version
Builder info
/usr/bin/docker buildx build --cache-from type=gha --cache-to type=gha,mode=max --iidfile /home/runner/work/_temp/docker-actions-toolkit-vCLgYd/build-iidfile-0726305e33.txt --label org.opencontainers.image.created=2026-01-17T14:42:34.857Z --label org.opencontainers.image.description= --label org.opencontainers.image.licenses=MIT --label org.opencontainers.image.revision=33ab37bd18767139f14fd99e455eb90c1baa5af3 --label org.opencontainers.image.source=https://github.com/johndoe6345789/low-code-react-app-b --label org.opencontainers.image.title=low-code-react-app-b --label org.opencontainers.image.url=https://github.com/johndoe6345789/low-code-react-app-b --label org.opencontainers.image.version=main --platform linux/amd64,linux/arm64 --attest type=provenance,mode=max,builder-id=https://github.com/johndoe6345789/low-code-react-app-b/actions/runs/21095926434 --tag ghcr.io/johndoe6345789/low-code-react-app-b:main --tag ghcr.io/johndoe6345789/low-code-react-app-b:main-33ab37b --metadata-file /home/runner/work/_temp/docker-actions-toolkit-vCLgYd/build-metadata-daa99149c8.json --push .
#0 building with "builder-95fadb03-ad83-4e01-bc20-225d7bda06ae" instance using docker-container driver

#1 [internal] load build definition from Dockerfile
#1 transferring dockerfile: 942B done
#1 DONE 0.0s

#2 [auth] library/nginx:pull token for registry-1.docker.io
#2 DONE 0.0s

#3 [auth] library/node:pull token for registry-1.docker.io
#3 DONE 0.0s

#4 [linux/arm64 internal] load metadata for docker.io/library/node:20-alpine
#4 ...

#5 [linux/arm64 internal] load metadata for docker.io/library/nginx:alpine
#5 DONE 0.4s

#4 [linux/arm64 internal] load metadata for docker.io/library/node:20-alpine
#4 DONE 0.4s

#6 [internal] load .dockerignore
#6 transferring context: 344B done
#6 DONE 0.0s

#7 [linux/amd64 internal] load metadata for docker.io/library/node:20-alpine
#7 DONE 0.4s

#8 [linux/amd64 internal] load metadata for docker.io/library/nginx:alpine
#8 DONE 0.4s

#9 [internal] load build context
#9 DONE 0.0s

#10 [linux/amd64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c
#10 resolve docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c done
#10 DONE 0.0s

#11 [linux/amd64 runtime 1/3] FROM docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55
#11 resolve docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 done
#11 DONE 0.0s

#12 importing cache manifest from gha:8468054678720030062
#12 DONE 0.1s

#13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c
#13 resolve docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c done
#13 sha256:2e74b1344e24146a5181cea893d6035d8d412a89b8374e4d4360f6c35d985760 444B / 444B 0.0s done
#13 sha256:38d6ffd8958149c983c185c5a62d19cba7ee8807466e60c7993d78a2867eef11 1.26MB / 1.26MB 0.1s done
#13 sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e 4.20MB / 4.20MB 0.1s done
#13 extracting sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e
#13 ...

#9 [internal] load build context
#9 transferring context: 10.19MB 0.2s done
#9 DONE 0.2s

#14 [linux/amd64 builder 3/8] COPY package*.json ./
#14 CACHED

#15 [linux/amd64 builder 4/8] COPY packages/spark-tools ./packages/spark-tools
#15 CACHED

#16 [linux/amd64 builder 5/8] COPY packages/spark ./packages/spark
#16 CACHED

#17 [linux/amd64 builder 2/8] WORKDIR /app
#17 CACHED

#13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c
#13 sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 17.83MB / 43.12MB 0.2s
#13 extracting sha256:f6b4fb9446345fcad2db26eac181fef6c0a919c8a4fcccd3bea5deb7f6dff67e 0.2s done
#13 sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 43.12MB / 43.12MB 0.3s done
#13 extracting sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c
#13 ...

#18 [linux/arm64 runtime 1/3] FROM docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55
#18 resolve docker.io/library/nginx:alpine@sha256:b0f7830b6bfaa1258f45d94c240ab668ced1b3651c8a222aefe6683447c7bf55 0.0s done
#18 sha256:f4f04eae8d5eb8a0220a0d542da10f9c55b57a585dea1875cfbb1ee99d4c5a4a 1.40kB / 1.40kB 0.0s done
#18 sha256:ceb87b8ac279a84fc99bdc30e7406cf21bf5d5841819fd0e3c8e0c06d867533c 1.21kB / 1.21kB 0.0s done
#18 sha256:6628835d87d286d4d03f10b2c7f51d00f4556c49b5874947ce02609379069575 403B / 403B 0.0s done
#18 sha256:8a735f2296d46b598dbc65289bfdc2ec4dd07607e69a1887e4ce6ef898be56e1 19.66MB / 19.66MB 0.2s done
#18 sha256:c0de4eea5b769c1703c4428a21cf0cce5b0a1668738391f1443979bb32cc9bc1 954B / 954B 0.0s done
#18 sha256:9076aaa4fd77085ce5562e9aca2b51ca88baf3fb8e41f8c777d0df14a1ce1085 628B / 628B 0.0s done
#18 sha256:a0ef6d8231d0e512c7a0c0f7029bcfb8c77f0848b9cb8ec5373b28991c83415b 1.87MB / 1.87MB 0.1s done
#18 extracting sha256:a0ef6d8231d0e512c7a0c0f7029bcfb8c77f0848b9cb8ec5373b28991c83415b 0.1s done
#18 extracting sha256:9076aaa4fd77085ce5562e9aca2b51ca88baf3fb8e41f8c777d0df14a1ce1085 done
#18 extracting sha256:c0de4eea5b769c1703c4428a21cf0cce5b0a1668738391f1443979bb32cc9bc1 done
#18 extracting sha256:6628835d87d286d4d03f10b2c7f51d00f4556c49b5874947ce02609379069575 done
#18 extracting sha256:ceb87b8ac279a84fc99bdc30e7406cf21bf5d5841819fd0e3c8e0c06d867533c done
#18 extracting sha256:f4f04eae8d5eb8a0220a0d542da10f9c55b57a585dea1875cfbb1ee99d4c5a4a done
#18 extracting sha256:8a735f2296d46b598dbc65289bfdc2ec4dd07607e69a1887e4ce6ef898be56e1 0.5s done
#18 DONE 1.1s

#19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps
#19 sha256:acec9428f22bd20125c716a65e27ad75480a1360a59ad4f816044044dad7cc70 4.34kB / 4.34kB 0.0s done
#19 sha256:41b3afaea3b1b1ab04a268431e10dcace7883019a5da7d326aa35dc9713fcbb5 445B / 445B 0.0s done
#19 sha256:1d55258e311479e00466346e8c753c9b7e01237604cee9e4b28b24139f418bb9 92B / 92B 0.0s done
#19 sha256:3dcec91425079e7b455efc5f2a18d026450c47c9382c41897620afc6b1424e44 1.26MB / 1.26MB 0.1s done
#19 sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9 42.78MB / 42.78MB 0.4s done
#19 sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 3.86MB / 3.86MB 0.2s done
#19 extracting sha256:1074353eec0db2c1d81d5af2671e56e00cf5738486f5762609ea33d606f88612 0.1s done
#19 sha256:f4b3dc64ea273c67c4ed06bca84314742da987ddac1c2a30392f4ac39f9e1ff2 1.55MB / 1.55MB 0.2s done
#19 sha256:70e3e49db568901de1214b56a8a69068f5f1d1a21781d8afc9840854c1233580 48.98kB / 48.98kB 0.0s done
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 29.36MB / 264.20MB 0.8s
#19 extracting sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 42.99MB / 264.20MB 1.1s
#19 ...

#13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c
#13 extracting sha256:efc83bacf48e781625d7de46541986e8525b67c1b1644803b5ff90d4ad73425c 1.2s done
#13 DONE 1.6s

#13 [linux/arm64 builder 1/8] FROM docker.io/library/node:20-alpine@sha256:3960ed74dfe320a67bf8da9555b6bade25ebda2b22b6081d2f60fd7d5d430e9c
#13 extracting sha256:38d6ffd8958149c983c185c5a62d19cba7ee8807466e60c7993d78a2867eef11 0.0s done
#13 extracting sha256:2e74b1344e24146a5181cea893d6035d8d412a89b8374e4d4360f6c35d985760 done
#13 DONE 1.6s

#19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 59.77MB / 264.20MB 1.5s
#19 extracting sha256:c2b4197efb6ccd7f8b482ae7800f1c9c78c044ea192587887300080bcff6b2c9 1.5s done
#19 extracting sha256:3dcec91425079e7b455efc5f2a18d026450c47c9382c41897620afc6b1424e44 0.1s done
#19 ...

#20 [linux/arm64 builder 2/8] WORKDIR /app
#20 DONE 0.7s

#19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 77.59MB / 264.20MB 2.0s
#19 extracting sha256:41b3afaea3b1b1ab04a268431e10dcace7883019a5da7d326aa35dc9713fcbb5 done
#19 extracting sha256:1d55258e311479e00466346e8c753c9b7e01237604cee9e4b28b24139f418bb9 done
#19 extracting sha256:70e3e49db568901de1214b56a8a69068f5f1d1a21781d8afc9840854c1233580 0.0s done
#19 extracting sha256:f4b3dc64ea273c67c4ed06bca84314742da987ddac1c2a30392f4ac39f9e1ff2 0.1s done
#19 ...

#21 [linux/arm64 builder 3/8] COPY package*.json ./
#21 DONE 0.1s

#22 [linux/arm64 builder 4/8] COPY packages/spark-tools ./packages/spark-tools
#22 DONE 0.1s

#23 [linux/arm64 builder 5/8] COPY packages/spark ./packages/spark
#23 DONE 0.0s

#19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps
#19 extracting sha256:acec9428f22bd20125c716a65e27ad75480a1360a59ad4f816044044dad7cc70 done
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 96.47MB / 264.20MB 2.4s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 115.34MB / 264.20MB 2.9s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 128.97MB / 264.20MB 3.2s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 143.65MB / 264.20MB 3.5s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 162.53MB / 264.20MB 3.9s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 179.31MB / 264.20MB 4.4s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 195.04MB / 264.20MB 4.7s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 212.86MB / 264.20MB 5.1s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 226.49MB / 264.20MB 5.4s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 244.32MB / 264.20MB 5.9s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 259.00MB / 264.20MB 6.2s
#19 sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 264.20MB / 264.20MB 6.5s done
#19 extracting sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d
#19 ...

#24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps
#24 ...

#19 [linux/amd64 builder 6/8] RUN npm install --legacy-peer-deps
#19 extracting sha256:828eb50cf87505f63ae57d13f4ce4484bf70ef66a718d8b5745753055ade6c3d 12.5s done
#19 DONE 19.2s

#25 [linux/amd64 builder 7/8] COPY . .
#25 DONE 2.2s

#24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps
#24 ...

#26 [linux/amd64 builder 8/8] RUN npm run build
#26 0.230
#26 0.230 > spark-template@0.0.0 prebuild
#26 0.230 > mkdir -p /tmp/dist || true
#26 0.230
#26 0.238
#26 0.238 > spark-template@0.0.0 build
#26 0.238 > tsc -b --noCheck && vite build
#26 0.238
#26 6.457 vite v7.3.1 building client environment for production...
#26 6.575 transforming...
#26 10.05 Found 3 warnings while optimizing generated CSS:
#26 10.05
#26 10.05 Issue #1:
#26 10.05 │   .container {
#26 10.05 │     width: 100%;
#26 10.05 │     @media (width >= (display-mode: standalone)) {
#26 10.05 ┆                     ^-- Unexpected token ParenthesisBlock
#26 10.05 ┆
#26 10.05 │       max-width: (display-mode: standalone);
#26 10.05 │     }
#26 10.05
#26 10.05 Issue #2:
#26 10.05 │       max-width: (display-mode: standalone);
#26 10.05 │     }
#26 10.05 │     @media (width >= (pointer: coarse)) {
#26 10.05 ┆                     ^-- Unexpected token ParenthesisBlock
#26 10.05 ┆
#26 10.05 │       max-width: (pointer: coarse);
#26 10.05 │     }
#26 10.05
#26 10.05 Issue #3:
#26 10.05 │       max-width: (pointer: coarse);
#26 10.05 │     }
#26 10.05 │     @media (width >= (pointer: fine)) {
#26 10.05 ┆                     ^-- Unexpected token ParenthesisBlock
#26 10.05 ┆
#26 10.05 │       max-width: (pointer: fine);
#26 10.05 │     }
#26 10.05
#26 27.53 ✓ 8276 modules transformed.
#26 30.49 rendering chunks...
#26 ...

#24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps
#24 55.47 npm warn deprecated whatwg-encoding@3.1.1: Use @exodus/bytes instead for a more spec-conformant and faster implementation
#24 ...

#26 [linux/amd64 builder 8/8] RUN npm run build
#26 56.97 computing gzip size...
#26 57.13 dist/index.html                                       2.18 kB │ gzip:     0.87 kB
#26 57.13 dist/assets/FeatureIdeaCloud-B5DZHykP.css             7.32 kB │ gzip:     1.60 kB
#26 57.13 dist/assets/index-DeAuhr8c.css                      451.83 kB │ gzip:    78.84 kB
#26 57.13 dist/assets/separator-DxaExrET.js                     1.12 kB │ gzip:     0.59 kB
#26 57.13 dist/assets/PWAStatusBar-BxRnFKIe.js                  1.14 kB │ gzip:     0.64 kB
#26 57.13 dist/assets/tabs-uv1gileV.js                          1.34 kB │ gzip:     0.59 kB
#26 57.13 dist/assets/PreviewDialog-CRbuRmHJ.js                 1.36 kB │ gzip:     0.74 kB
#26 57.13 dist/assets/PWAUpdatePrompt-A5H3Brsn.js               1.67 kB │ gzip:     0.82 kB
#26 57.13 dist/assets/PWAInstallPrompt-BXeSE-7b.js              2.31 kB │ gzip:     1.02 kB
#26 57.13 dist/assets/protected-llm-service-Q4cNm1rY.js         2.41 kB │ gzip:     1.00 kB
#26 57.13 dist/assets/use-pwa-CN3ny1f7.js                       2.42 kB │ gzip:     0.95 kB
#26 57.13 dist/assets/KeyboardShortcutsDialog-BpO-G7Ko.js       2.54 kB │ gzip:     0.89 kB
#26 57.13 dist/assets/switch-Le0tcnoA.js                        2.57 kB │ gzip:     1.26 kB
#26 57.13 dist/assets/skeleton-DvZARUoK.js                      2.85 kB │ gzip:     1.34 kB
#26 57.13 dist/assets/FeatureToggleSettings-DyoCP9xu.js         3.36 kB │ gzip:     1.40 kB
#26 57.13 dist/assets/select-CUM2wG-b.js                        3.62 kB │ gzip:     1.29 kB
#26 57.13 dist/assets/page-renderer-CnwNh3EQ.js                 3.92 kB │ gzip:     1.59 kB
#26 57.13 dist/assets/JSONWorkflowDesigner-BMu_I1iN.js          4.04 kB │ gzip:     1.40 kB
#26 57.13 dist/assets/JSONModelDesigner-CtCr0IyF.js             4.06 kB │ gzip:     1.40 kB
#26 57.13 dist/assets/JSONComponentTreeManager-DChvp8bH.js      4.19 kB │ gzip:     1.43 kB
#26 57.13 dist/assets/ComponentTreeBuilder-AKJ_ySXd.js          4.81 kB │ gzip:     1.95 kB
#26 57.13 dist/assets/CodeEditor-BLwoA4UR.js                    4.89 kB │ gzip:     1.86 kB
#26 57.13 dist/assets/FileExplorer-JbASuVTC.js                  4.98 kB │ gzip:     1.78 kB
#26 57.13 dist/assets/ai-service-BB_pmEqI.js                    6.07 kB │ gzip:     1.92 kB
#26 57.13 dist/assets/ModelDesigner-CgtLxbx8.js                 6.09 kB │ gzip:     2.06 kB
#26 57.13 dist/assets/StorybookDesigner-Bpm7g44n.js             6.90 kB │ gzip:     2.34 kB
#26 57.13 dist/assets/PlaywrightDesigner-BfiCriP0.js            7.51 kB │ gzip:     2.51 kB
#26 57.13 dist/assets/PWASettings-3_HqVF29.js                   7.92 kB │ gzip:     1.90 kB
#26 57.13 dist/assets/ComponentTreeManager-NGgMB7h-.js          8.27 kB │ gzip:     2.92 kB
#26 57.13 dist/assets/slider-CYgezrCe.js                        8.65 kB │ gzip:     3.36 kB
#26 57.13 dist/assets/UnitTestDesigner-hJNaBS7K.js              8.73 kB │ gzip:     2.76 kB
#26 57.13 dist/assets/SassStylesShowcase-Be2HgC09.js            8.99 kB │ gzip:     1.67 kB
#26 57.13 dist/assets/ErrorPanel-MW-ZUvQo.js                   11.31 kB │ gzip:     3.65 kB
#26 57.13 dist/assets/react-vendor-RsqJS7wA.js                 11.33 kB │ gzip:     3.99 kB
#26 57.13 dist/assets/FlaskDesigner-COgNGjFx.js                12.03 kB │ gzip:     3.25 kB
#26 57.13 dist/assets/StyleDesigner-B2AQyBAi.js                13.23 kB │ gzip:     3.29 kB
#26 57.13 dist/assets/code-editor-BR3HUJ_E.js                  14.03 kB │ gzip:     4.80 kB
#26 57.13 dist/assets/ProjectSettingsDesigner-DiAcWh5o.js      14.16 kB │ gzip:     3.31 kB
#26 57.13 dist/assets/JSONUIShowcasePage-BYgVWKow.js           14.25 kB │ gzip:     3.93 kB
#26 57.13 dist/assets/LambdaDesigner-CWnKya9X.js               14.42 kB │ gzip:     3.83 kB
#26 57.13 dist/assets/ProjectDashboard-CLf3fcP0.js             15.83 kB │ gzip:     4.53 kB
#26 57.13 dist/assets/ui-extended-CH1jmFOr.js                  16.72 kB │ gzip:     5.34 kB
#26 57.13 dist/assets/component-registry-D8jh1CB-.js           18.21 kB │ gzip:     6.39 kB
#26 57.13 dist/assets/WorkflowDesigner-uASoW4e9.js             18.34 kB │ gzip:     5.03 kB
#26 57.13 dist/assets/DataBindingDesigner-BkzQtXOX.js          20.36 kB │ gzip:     5.24 kB
#26 57.13 dist/assets/SchemaEditorPage-DzxsWN4D.js             21.04 kB │ gzip:     5.95 kB
#26 57.13 dist/assets/FaviconDesigner-DPzmL1L4.js              23.48 kB │ gzip:     6.27 kB
#26 57.13 dist/assets/GlobalSearch-BjLJMhgk.js                 25.04 kB │ gzip:     8.09 kB
#26 57.13 dist/assets/FeatureIdeaCloud-DZ2YR6RT.js             30.07 kB │ gzip:     8.44 kB
#26 57.13 dist/assets/utils-Bt9FPkgP.js                        36.00 kB │ gzip:    11.18 kB
#26 57.13 dist/assets/TemplateSelector-BVFRYL8A.js             42.82 kB │ gzip:     9.32 kB
#26 57.13 dist/assets/form-components-Bgqg-kRU.js              66.01 kB │ gzip:    17.55 kB
#26 57.13 dist/assets/DocumentationView-BjvllHGd.js            70.03 kB │ gzip:    12.62 kB
#26 57.13 dist/assets/workflow-CpSwYplm.js                    101.55 kB │ gzip:    32.48 kB
#26 57.13 dist/assets/ui-core-CS7FcLG5.js                     105.95 kB │ gzip:    32.29 kB
#26 57.13 dist/assets/index-J_d48Gj5.js                       488.88 kB │ gzip:   152.32 kB
#26 57.13 dist/assets/three.module-D5EGS0V7.js                683.00 kB │ gzip:   169.49 kB
#26 57.13 dist/assets/data-viz-DVeW5iYn.js                    717.82 kB │ gzip:   199.17 kB
#26 57.13 dist/assets/icons-CUJifBl7.js                     5,039.69 kB │ gzip: 1,049.93 kB
#26 57.13
#26 57.13 (!) Some chunks are larger than 1000 kB after minification. Consider:
#26 57.13 - Using dynamic import() to code-split the application
#26 57.13 - Use build.rollupOptions.output.manualChunks to improve chunking: https://rollupjs.org/configuration-options/#output-manualchunks
#26 57.13 - Adjust chunk size limit for this warning via build.chunkSizeWarningLimit.
#26 57.13 ✓ built in 50.63s
#26 DONE 57.6s

#24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps
#24 ...

#27 [linux/amd64 runtime 2/3] COPY --from=builder /app/dist /usr/share/nginx/html
#27 CACHED

#28 [linux/amd64 runtime 3/3] COPY nginx.conf /etc/nginx/conf.d/default.conf
#28 CACHED

#24 [linux/arm64 builder 6/8] RUN npm install --legacy-peer-deps
#24 153.2
#24 153.2 added 712 packages, and audited 715 packages in 3m
#24 153.2
#24 153.2 119 packages are looking for funding
#24 153.2   run `npm fund` for details
#24 153.3
#24 153.3 found 0 vulnerabilities
#24 153.3 npm notice
#24 153.3 npm notice New major version of npm available! 10.8.2 -> 11.7.0
#24 153.3 npm notice Changelog: https://github.com/npm/cli/releases/tag/v11.7.0
#24 153.3 npm notice To update run: npm install -g npm@11.7.0
#24 153.3 npm notice
#24 DONE 153.8s

#29 [linux/arm64 builder 7/8] COPY . .
#29 DONE 0.5s

#30 [linux/arm64 builder 8/8] RUN npm run build
#30 2.651
#30 2.651 > spark-template@0.0.0 prebuild
#30 2.651 > mkdir -p /tmp/dist || true
#30 2.651
#30 2.723
#30 2.723 > spark-template@0.0.0 build
#30 2.723 > tsc -b --noCheck && vite build
#30 2.723
#30 50.69 /app/node_modules/rollup/dist/native.js:83
#30 50.69 		throw new Error(
#30 50.69 		      ^
#30 50.69
#30 50.69 Error: Cannot find module @rollup/rollup-linux-arm64-musl. npm has a bug related to optional dependencies (https://github.com/npm/cli/issues/4828). Please try `npm i` again after removing both package-lock.json and node_modules directory.
#30 50.69     at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:83:9)
#30 50.69     at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:92:76)
#30 50.69     ... 3 lines matching cause stack trace ...
#30 50.69     at Module._load (node:internal/modules/cjs/loader:1091:12)
#30 50.69     at cjsLoader (node:internal/modules/esm/translators:298:15)
#30 50.69     at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:240:7)
#30 50.69     at ModuleJob.run (node:internal/modules/esm/module_job:325:25)
#30 50.69     at async ModuleLoader.import (node:internal/modules/esm/loader:606:24) {
#30 50.69   [cause]: Error: Cannot find module '@rollup/rollup-linux-arm64-musl'
#30 50.69   Require stack:
#30 50.69   - /app/node_modules/rollup/dist/native.js
#30 50.69       at Module._resolveFilename (node:internal/modules/cjs/loader:1207:15)
#30 50.69       at Module._load (node:internal/modules/cjs/loader:1038:27)
#30 50.69       at Module.require (node:internal/modules/cjs/loader:1289:19)
#30 50.69       at require (node:internal/modules/helpers:182:18)
#30 50.69       at requireWithFriendlyError (/app/node_modules/rollup/dist/native.js:65:10)
#30 50.69       at Object.<anonymous> (/app/node_modules/rollup/dist/native.js:92:76)
#30 50.69       at Module._compile (node:internal/modules/cjs/loader:1521:14)
#30 50.69       at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
#30 50.69       at Module.load (node:internal/modules/cjs/loader:1266:32)
#30 50.69       at Module._load (node:internal/modules/cjs/loader:1091:12) {
#30 50.69     code: 'MODULE_NOT_FOUND',
#30 50.69     requireStack: [ '/app/node_modules/rollup/dist/native.js' ]
#30 50.69   }
#30 50.69 }
#30 50.70
#30 50.70 Node.js v20.20.0
#30 ERROR: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
------
 > [linux/arm64 builder 8/8] RUN npm run build:
50.69       at Module._compile (node:internal/modules/cjs/loader:1521:14)
50.69       at Module._extensions..js (node:internal/modules/cjs/loader:1623:10)
50.69       at Module.load (node:internal/modules/cjs/loader:1266:32)
50.69       at Module._load (node:internal/modules/cjs/loader:1091:12) {
50.69     code: 'MODULE_NOT_FOUND',
50.69     requireStack: [ '/app/node_modules/rollup/dist/native.js' ]
50.69   }
50.69 }
50.70
50.70 Node.js v20.20.0
------
Dockerfile:22
--------------------
  20 |
  21 |     # Build the application
  22 | >>> RUN npm run build
  23 |
  24 |     FROM nginx:alpine AS runtime
--------------------
ERROR: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
Error: buildx failed with: ERROR: failed to build: failed to solve: process "/bin/sh -c npm run build" did not complete successfully: exit code: 1
This commit is contained in:
2026-01-17 14:56:40 +00:00
committed by GitHub
parent 57e9507fe7
commit d388a9a075
6 changed files with 1022 additions and 561 deletions

211
PRD.md
View File

@@ -1,164 +1,131 @@
# JSON-Driven UI Architecture Enhancement
# Planning Guide
Build a comprehensive JSON-driven UI system that allows building entire user interfaces from declarative JSON schemas, including a visual drag-and-drop schema editor for creating JSON UI configs, breaking down complex components into atomic pieces, and extracting reusable logic into custom hooks for maximum maintainability and rapid development.
**Recent Updates:**
- ✅ Converted Models, Component Trees, and Workflows pages to JSON-driven configuration
- ✅ Converted Lambdas, Styling, and Flask API pages to JSON-driven configuration
- ✅ Created JSON schema definitions for all six pages with data sources, computed values, and bindings
- ✅ Added JSON-based versions of pages alongside traditional implementations for comparison
- ✅ Implemented seed data for all six converted pages with realistic examples
- ✅ Complete JSON-driven UI system now covers all major designer pages
- ✅ Enhanced JSON schema system with additional UI components and patterns
- ✅ Created focused custom hooks for common UI patterns (useConfirmDialog, useFormState, useListOperations)
- ✅ Built additional atomic components for improved composability
-**NEW:** Created `useJSONRenderer` hook with data binding utilities (resolveBinding, resolveValue, resolveProps)
-**NEW:** Created `useDataSources` hook for unified KV, static, and computed data management
-**NEW:** Built atomic JSON UI components: IconRenderer, DataCard (<50 LOC each)
-**NEW:** Established hooks/json-ui and components/atoms/json-ui directories for modularity
A visual Docker build error analyzer that parses build logs, highlights errors, and provides actionable solutions with automatic fix generation.
**Experience Qualities**:
1. **Modular** - Every component under 150 LOC, highly composable and reusable
2. **Declarative** - Define UIs through configuration rather than imperative code
3. **Maintainable** - Clear separation of concerns between data, logic, and presentation
1. **Clarifying** - Takes cryptic Docker logs and transforms them into clear, understandable problem statements
2. **Actionable** - Provides specific, copy-paste ready solutions rather than generic advice
3. **Educational** - Explains the root cause so users learn what went wrong and why
**Complexity Level**: Complex Application (advanced functionality with multiple views)
This is an advanced system that interprets JSON schemas, manages state across multiple data sources, executes actions dynamically, renders complex component hierarchies, and provides a visual editor for creating schemas through drag-and-drop - requiring sophisticated architecture with component registries, action executors, data source managers, and interactive canvas rendering.
**Complexity Level**: Light Application (multiple features with basic state)
This is a diagnostic tool with log parsing, error highlighting, and solution generation - more than a single-purpose tool but not a complex multi-view application.
## Essential Features
### Visual Schema Editor
- **Functionality**: Drag-and-drop interface for building JSON UI schemas with real-time preview
- **Purpose**: Enable non-technical users to create complex UIs without writing JSON
- **Trigger**: User opens the schema editor page
- **Progression**: Select component from palette → Drag to canvas → Drop at position → Configure properties → Preview result → Export JSON
- **Success criteria**: Users can create complete page schemas visually, with property editing, component tree view, and JSON export
### Log Parser & Error Highlighter
- **Functionality**: Paste Docker build logs and automatically extract error information
- **Purpose**: Make sense of lengthy, unformatted build output
- **Trigger**: User pastes log text into a text area
- **Progression**: Paste log → Auto-parse on input → Highlight errors in red → Extract key details → Display structured output
- **Success criteria**: Correctly identifies build stage, error type, exit codes, and root cause from real Docker logs
### Data Source Binding UI
- **Functionality**: Visual interface for connecting components to KV storage and computed values with dependency tracking
- **Purpose**: Enable declarative data management without manual state handling
- **Trigger**: User opens data binding designer or edits component bindings in schema editor
- **Progression**: Create data source → Configure type (KV/computed/static) → Set up dependencies → Bind to component properties → Test reactive updates
- **Success criteria**: Users can create KV stores, computed values, and static data, then bind them to components with automatic reactive updates
### Smart Solution Generator
- **Functionality**: Analyzes parsed errors and suggests specific fixes with code examples
- **Purpose**: Provide actionable solutions tailored to the exact error type
- **Trigger**: After log is parsed and error identified
- **Progression**: Error identified → Match error pattern → Generate relevant solutions → Display with copy buttons → Show explanation
- **Success criteria**: Provides relevant, working solutions for common Docker build issues (missing dependencies, platform issues, build failures)
### JSON Schema Parser
- **Functionality**: Parse and validate JSON UI schemas with full TypeScript type safety
- **Purpose**: Enable building UIs from configuration rather than code
- **Trigger**: User loads a page defined by JSON schema
- **Progression**: Load schema → Validate structure → Initialize data sources → Render component tree → Bind events
- **Success criteria**: Schemas render correctly with all data bindings and event handlers working
### Error Knowledge Base
- **Functionality**: Common Docker build errors with explanations and fixes
- **Purpose**: Quick reference for developers debugging builds
- **Trigger**: User browses error categories or searches
- **Progression**: Click category → View error patterns → Select specific error → See explanation and fixes
- **Success criteria**: Covers at least 10 common Docker build error patterns with clear explanations
### Data Source Management
- **Functionality**: Manage multiple data sources (KV store, computed values, static data) with automatic dependency tracking
- **Purpose**: Centralize data management and enable reactive updates
- **Trigger**: Component needs data or data changes
- **Progression**: Request data → Check source type → Load/compute value → Update dependents → Re-render
- **Success criteria**: Data flows correctly between sources, components, and persistence layer
### Action Executor
- **Functionality**: Execute user actions declaratively (CRUD, navigation, toasts, custom actions)
- **Purpose**: Handle all user interactions declaratively without component-specific code
- **Trigger**: User interaction (click, change, submit, etc.)
- **Progression**: Parse action → Validate params → Execute handler → Update data → Show feedback
- **Success criteria**: All action types work correctly with proper error handling
### Atomic Component Library
- **Functionality**: Library of small, focused, reusable components (atoms, molecules, organisms)
- **Purpose**: Build complex UIs from simple, tested building blocks
- **Trigger**: Developer needs a UI element
- **Progression**: Select component → Configure props → Compose with other components → Render
- **Success criteria**: No component exceeds 150 LOC, all components highly reusable
### Custom Hooks Library
- **Functionality**: Extracted business logic in reusable hooks (useCRUD, useSearch, useFilter, useForm, etc.)
- **Purpose**: Separate concerns and enable logic reuse across components
- **Trigger**: Component needs common functionality (data management, search, form handling)
- **Progression**: Call hook → Provide config → Receive state and handlers → Render UI
- **Success criteria**: Hooks are testable, reusable, and follow React best practices
### Fix Code Generator
- **Functionality**: Generate copy-paste ready Dockerfile snippets or package.json modifications
- **Purpose**: Speed up fixing by providing exact code changes needed
- **Trigger**: After solution is displayed
- **Progression**: Solution shown → Click "Generate Fix" → Code snippet created → Copy to clipboard → Apply to project
- **Success criteria**: Generated code is syntactically correct and addresses the identified issue
## Edge Case Handling
- **Invalid Schemas** - Validate JSON structure, show helpful error messages, provide fallback UI
- **Missing Components** - Log warnings, render fallback div, continue rendering other components
- **Data Source Errors** - Catch KV failures, show toast notifications, maintain app stability
- **Circular Dependencies** - Detect loops in computed data sources, break cycles, warn developer
- **Concurrent Updates** - Use optimistic updates with rollback on failure
- **Empty States** - Show helpful messages and actions when no data exists
- **Incomplete Logs**: Gracefully handle partial logs by extracting whatever information is available
- **Unknown Errors**: For unrecognized error patterns, provide general debugging steps and encourage manual investigation
- **Multiple Errors**: When multiple errors present, prioritize and display them in order of likely root cause
- **Empty Input**: Show helpful placeholder text with example log format
- **Very Long Logs**: Truncate display but maintain full parsing capability
## Design Direction
A **dark cyberpunk development theme** with electric accents and technical precision that feels like a high-powered code editor with visual design tools integrated.
The design should feel like a developer's diagnostic dashboard - technical but approachable, with clear visual hierarchy that guides the eye from problem to solution. Think of a code editor meets troubleshooting assistant.
## Color Selection
Convey technical sophistication with electric highlights against deep, professional backgrounds.
A code-focused palette with strong error signaling and calm backgrounds.
- **Primary Color**: Deep Purple `oklch(0.45 0.15 270)` - Commands attention for primary actions, evokes advanced technology
- **Secondary Colors**:
- Dark Slate `oklch(0.35 0.02 250)` for secondary surfaces
- Deep Navy `oklch(0.18 0.02 250)` for cards and elevated surfaces
- **Accent Color**: Cyan Glow `oklch(0.70 0.15 200)` - Electric highlight for CTAs, active states, and focus indicators
- **Foreground/Background Pairings**:
- Background (Deep Navy #1E1E2E) → Foreground (Light Gray #E8E8EC) - Ratio 12.5:1 ✓
- Card (Darker Navy #252535) → Card Foreground (Light Gray #E8E8EC) - Ratio 11.2:1 ✓
- Primary (Deep Purple #7C3AED) → Primary Foreground (White #FFFFFF) - Ratio 6.8:1 ✓
- Accent (Cyan #5DD5F5) → Accent Foreground (Deep Navy #1E1E2E) - Ratio 9.2:1 ✓
- Muted (Slate #38384A) → Muted Foreground (Mid Gray #A8A8B0) - Ratio 5.2:1 ✓
- **Primary Color**: `oklch(0.58 0.24 265)` - Tech purple that feels modern and developer-centric
- **Secondary Colors**: `oklch(0.25 0.03 265)` - Deep navy backgrounds for code blocks and panels
- **Accent Color**: `oklch(0.75 0.20 145)` - Bright teal for success states and actionable elements
- **Foreground/Background Pairings**:
- Background (`oklch(0.15 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 11.2:1 ✓
- Card (`oklch(0.19 0.02 265)`): Light text `oklch(0.95 0.01 265)` - Ratio 9.8:1 ✓
- Accent (`oklch(0.75 0.20 145)`): Dark text `oklch(0.15 0.02 265)` - Ratio 7.5:1 ✓
- Destructive/Error (`oklch(0.60 0.25 25)`): White text `oklch(1 0 0)` - Ratio 5.2:1 ✓
## Font Selection
Convey **technical precision and modern development** with a mix of geometric sans-serif and monospace fonts.
Monospace for code and logs, clean sans-serif for explanations - reflecting the technical nature while remaining readable.
- **Typographic Hierarchy**:
- H1 (Page Titles): Space Grotesk Bold/32px/tight (-0.02em) - Geometric, technical, commanding
- H2 (Section Headers): Space Grotesk Semi-Bold/24px/tight (-0.01em)
- H3 (Component Headers): Space Grotesk Medium/18px/normal
- Body Text: Inter Regular/14px/relaxed (1.6) - Highly readable, neutral, professional
- Code/Technical: JetBrains Mono Regular/13px/normal (1.5) - Monospace for code and technical content
- Captions/Labels: Inter Medium/12px/normal - Slightly bolder for hierarchy
- H1 (Main Title): JetBrains Mono Bold/32px/tight letter spacing
- H2 (Section Headers): JetBrains Mono Medium/24px/normal spacing
- Body Text: IBM Plex Sans Regular/16px/1.6 line height
- Code/Logs: JetBrains Mono Regular/14px/1.5 line height
- Small Labels: IBM Plex Sans Medium/12px/uppercase tracking
## Animations
Animations should feel **snappy and purposeful** - fast micro-interactions (100-150ms) for buttons and inputs, smooth transitions (250-300ms) for page changes and dialogs, with spring physics for natural movement. Use subtle scale transforms (0.98→1.0) on button press, slide-in animations for modals, and fade effects for state changes. Avoid unnecessary flourishes - every animation serves feedback or orientation.
Animations should feel snappy and technical, like a terminal responding to commands.
- Error highlights fade in with a quick pulse (200ms) to draw attention
- Solutions expand/collapse smoothly (300ms ease-out)
- Copy confirmation shows brief checkmark animation (150ms)
- Log parsing shows subtle progress indicator during processing
- Tab switches use fast slide transitions (200ms)
## Component Selection
- **Components**:
- `Card`, `Button`, `Input`, `Select`, `Checkbox`, `Switch` for core UI
- `Dialog`, `Tabs`, `Badge`, `Progress`, `Separator` for layout and feedback
- `Heading`, `Text`, `List`, `Grid` for typography and layout primitives
- `ScrollArea` for contained scrollable regions
- `Tooltip` for contextual help
- Textarea (custom styled) for log input with monospace font
- Card for structured error display with distinct sections
- Badge for error types, build stages, and exit codes
- Tabs for switching between parsed errors, solutions, and knowledge base
- Button (primary for actions, secondary for copy operations)
- ScrollArea for long log outputs
- Separator to divide error details from solutions
- Alert for success/info messages after copying
- **Customizations**:
- `StatusBadge` - Status indicator with predefined styles
- `DataCard` - Stat card with icon, trend, and loading states
- `SearchInput` - Input with search icon and clear button
- `ActionBar` - Title with action buttons
- All new atomic components follow the 150 LOC limit
- Custom syntax highlighting for Docker logs using color coding
- Custom error badge with pulsing animation for critical errors
- Monospace code blocks with line numbers for generated fixes
- **States**:
- Buttons: subtle scale on press, glow effect on hover, disabled with opacity
- Inputs: border color shift on focus, inline validation icons, smooth error states
- Cards: subtle lift shadow on hover for interactive cards
- Buttons: Default solid with subtle shadow, hover lifts with brightness increase, active depresses
- Input: Focused state has bright accent border with subtle glow
- Code blocks: Hover shows copy button overlay in corner
- **Icon Selection**:
- Phosphor Icons throughout
- Code, Database, Tree, Cube for feature areas
- Plus, Pencil, Trash for CRUD operations
- MagnifyingGlass, Gear, Download for utilities
- Terminal (for log input)
- Warning/WarningCircle (for errors)
- CheckCircle (for solutions)
- Copy/CopySimple (for copy actions)
- MagnifyingGlass (for search in knowledge base)
- Code (for generated fixes)
- Stack (for Docker layers)
- **Spacing**:
- Container padding: p-6 (1.5rem)
- Section gaps: gap-6 (1.5rem)
- Card gaps: gap-4 (1rem)
- Button groups: gap-2 (0.5rem)
- Tight elements: gap-1 (0.25rem)
- Container padding: p-6 on desktop, p-4 on mobile
- Section gaps: gap-8 for major sections, gap-4 for related content
- Card internal padding: p-6
- Button spacing: px-6 py-3 for primary, px-4 py-2 for secondary
- **Mobile**:
- Stack layouts vertically on <768px
- Reduce padding to p-4 on mobile
- Touch-friendly tap targets (min 44px)
- Responsive grid columns (1 → 2 → 3 → 4)
- Bottom sheet dialogs on small screens
- Stack all sections vertically on mobile
- Reduce font sizes: H1 to 24px, Body to 14px
- Full-width buttons and inputs
- Collapsible sections for solutions to save space
- Fixed header with title, scrollable content below