From 91569a9b986edff50773151bf46acec8ce77f511 Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:30:02 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E9=85=8D=E5=AF=B9=20ClojureScript=20?= =?UTF-8?q?=E5=AE=98=E7=BD=91=E6=AD=A3=E5=BC=8F=E4=BE=9D=E8=B5=96=E5=B9=B6?= =?UTF-8?q?=E7=B2=BE=E7=AE=80=E9=87=8D=E5=A4=8D=E9=97=A8=E7=A6=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/upload.yaml | 4 +- .yarnrc.yml | 3 - README.md | 13 +-- deps.cirru | 10 +-- package.json | 2 +- yarn.lock | 150 +++++++++++++++++----------------- 6 files changed, 91 insertions(+), 91 deletions(-) diff --git a/.github/workflows/upload.yaml b/.github/workflows/upload.yaml index 494d6e4..ce72927 100644 --- a/.github/workflows/upload.yaml +++ b/.github/workflows/upload.yaml @@ -33,14 +33,14 @@ jobs: caps --strict --ci yarn install --immutable caps verify --toolchain + git diff --quiet -- deps.cirru package.json yarn.lock .yarnrc.yml - name: Check and test Calcit run: | set -euo pipefail calcit edit format - git diff --exit-code -- calcit.cirru + git diff --quiet -- calcit.cirru calcit --check-only --all-defs --format json calcit fix --workflow strict --verify --format json | jq -e '.data.workflow.status == "passed" and .diagnostics == []' - calcit --check-only --ns app.config --ns app.main --ns app.schema --ns app.updater --ns app.util --ns app.comp.container --ns app.comp.showcase --summary-only --format json calcit analyze weak-types --ns-prefix app --only deprecated-call --summary-only --format json | jq -e '.data.summary.calls == 0' calcit analyze weak-types --only dynamic-method --summary-only --format json | jq -e '.data.summary.findings == 0' calcit test --require-match --summary-only --format json diff --git a/.yarnrc.yml b/.yarnrc.yml index 723e356..3186f3f 100644 --- a/.yarnrc.yml +++ b/.yarnrc.yml @@ -1,4 +1 @@ nodeLinker: node-modules - -npmPreapprovedPackages: - - "@calcit/procs@0.30.1" diff --git a/README.md b/README.md index f81c006..4b49ace 100644 --- a/README.md +++ b/README.md @@ -9,8 +9,8 @@ ClojureScript, beginners' home page ### Workflow 使用者影响:应用使用精确配套正式 Calcit / `@calcit/procs` **0.30.1**,以及 -Respo 0.16.124、Reel 0.6.41、Markdown 0.4.59、UI 0.8.0、js-ffi 0.2.5 -(传递 Router 0.8.37),Node.js 24 / Yarn 4.18.0。升级后完整刷新,UI 0.8 +Respo 0.16.126、Reel 0.6.42、Markdown 0.4.60、UI 0.8.1、js-ffi 0.2.6 +(传递 Router 0.8.38),Node.js 24 / Yarn 4.18.0、Vite 8.3.3。升级后完整刷新,UI 0.8 基础样式可能改变外观。`content/*.cljs` 是展示用 ClojureScript 示例,不是待迁移的 Calcit 应用源码。 原导航、展示内容、高亮、Map 存档字段与启动时随机展示选择保持不变。 @@ -37,13 +37,16 @@ open boundaries, so this is not a claim of zero Dynamic type debt. Stored data retains the original Map field format and is decoded into Store when restored. Startup still chooses a random showcase, as before. -CI checks all admitted definitions, the full strict workflow and all application public definitions, +本轮迁移旧 Map merge(单参数恒等包装直接去掉)和等价静态 CSS 写法; +事件、watcher、EventHost 及原无声明的 render-app! 按真实生产者补全合同。 +随机选择、展示示例、原 HUD、存档恢复及全部原测试保持,不增加强转、预算或验证脚本。 + +CI checks all admitted definitions and all application public definitions through all-defs, plus the full strict workflow, runs the two attached updater/hydration tests, and builds the frontend. 旧 alpha.5 曾完成真实浏览器渲染、高亮、展示切换与刷新验收;这不替代本轮正式图的 CI 和实际浏览器证据。保留已有两项 updater/hydration 测试,不新增验证脚本或预算。 -Yarn 恢复默认 Git 审批与包等待期,只预批准精确 `@calcit/procs@0.30.1`,不再 -通配批准任意 Git 仓库或关闭包等待期。 +Yarn 使用默认 Git 审批与包等待期,不保留 procs 预批准、不通配批准任意 Git 仓库或关闭包等待期。 Main/master deployment uploads frontend resources through `worktools/cos-upload-action` with built-in public checksum verification. The diff --git a/deps.cirru b/deps.cirru index f7a66dc..8acaf11 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,7 +1,7 @@ {} (:calcit-version |0.30.1) (:version |0.1.0) :dependencies $ {} - |Respo/respo.calcit |0.16.124 - |Respo/reel.calcit |0.6.41 - |Respo/respo-markdown.calcit |0.4.59 - |Respo/respo-ui.calcit |0.8.0 - |calcit-lang/js-ffi |0.2.5 + |Respo/respo.calcit |0.16.126 + |Respo/reel.calcit |0.6.42 + |Respo/respo-markdown.calcit |0.4.60 + |Respo/respo-ui.calcit |0.8.1 + |calcit-lang/js-ffi |0.2.6 diff --git a/package.json b/package.json index 6887dbf..5e512c8 100644 --- a/package.json +++ b/package.json @@ -18,7 +18,7 @@ "license": "MIT", "devDependencies": { "bottom-tip": "^0.1.5", - "vite": "8.3.1" + "vite": "8.3.3" }, "dependencies": { "@calcit/procs": "0.30.1", diff --git a/yarn.lock b/yarn.lock index 25b9c24..8f81f19 100644 --- a/yarn.lock +++ b/yarn.lock @@ -61,114 +61,114 @@ __metadata: languageName: node linkType: hard -"@oxc-project/types@npm:=0.153.0": - version: 0.153.0 - resolution: "@oxc-project/types@npm:0.153.0" - checksum: 10c0/32011227bc4f0e6536c07ef79ce9254e5a453cdbfdb51b6717d0edc06b7d85a9a2a8ca12102de3b71f91a0e78d4facb538d17b28e6a7b6527ffc8901d8cd82c6 +"@oxc-project/types@npm:=0.155.0": + version: 0.155.0 + resolution: "@oxc-project/types@npm:0.155.0" + checksum: 10c0/07227fb2c2e03b07453129f2407b49b165eadaa679a34dad68e0b0526420506cea223431807983413f6968053de873c13b05d3978a9a43cabb3999ca97ba2ec5 languageName: node linkType: hard -"@rolldown/binding-android-arm-eabi@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-android-arm-eabi@npm:1.2.13" +"@rolldown/binding-android-arm-eabi@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-android-arm-eabi@npm:1.2.15" conditions: os=android & cpu=arm languageName: node linkType: hard -"@rolldown/binding-android-arm64@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-android-arm64@npm:1.2.13" +"@rolldown/binding-android-arm64@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-android-arm64@npm:1.2.15" conditions: os=android & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-arm64@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-darwin-arm64@npm:1.2.13" +"@rolldown/binding-darwin-arm64@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-darwin-arm64@npm:1.2.15" conditions: os=darwin & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-darwin-x64@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-darwin-x64@npm:1.2.13" +"@rolldown/binding-darwin-x64@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-darwin-x64@npm:1.2.15" conditions: os=darwin & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-freebsd-x64@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-freebsd-x64@npm:1.2.13" +"@rolldown/binding-freebsd-x64@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-freebsd-x64@npm:1.2.15" conditions: os=freebsd & cpu=x64 languageName: node linkType: hard -"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.13" +"@rolldown/binding-linux-arm-gnueabihf@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-arm-gnueabihf@npm:1.2.15" conditions: os=linux & cpu=arm languageName: node linkType: hard -"@rolldown/binding-linux-arm64-gnu@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.13" +"@rolldown/binding-linux-arm64-gnu@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-arm64-gnu@npm:1.2.15" conditions: os=linux & cpu=arm64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-arm64-musl@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.13" +"@rolldown/binding-linux-arm64-musl@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-arm64-musl@npm:1.2.15" conditions: os=linux & cpu=arm64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-linux-ppc64-gnu@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.13" +"@rolldown/binding-linux-ppc64-gnu@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-ppc64-gnu@npm:1.2.15" conditions: os=linux & cpu=ppc64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-s390x-gnu@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.13" +"@rolldown/binding-linux-s390x-gnu@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-s390x-gnu@npm:1.2.15" conditions: os=linux & cpu=s390x & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-gnu@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.13" +"@rolldown/binding-linux-x64-gnu@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-x64-gnu@npm:1.2.15" conditions: os=linux & cpu=x64 & libc=glibc languageName: node linkType: hard -"@rolldown/binding-linux-x64-musl@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.13" +"@rolldown/binding-linux-x64-musl@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-linux-x64-musl@npm:1.2.15" conditions: os=linux & cpu=x64 & libc=musl languageName: node linkType: hard -"@rolldown/binding-openharmony-arm64@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.13" +"@rolldown/binding-openharmony-arm64@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-openharmony-arm64@npm:1.2.15" conditions: os=openharmony & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-arm64-msvc@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.13" +"@rolldown/binding-win32-arm64-msvc@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-win32-arm64-msvc@npm:1.2.15" conditions: os=win32 & cpu=arm64 languageName: node linkType: hard -"@rolldown/binding-win32-x64-msvc@npm:1.2.13": - version: 1.2.13 - resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.13" +"@rolldown/binding-win32-x64-msvc@npm:1.2.15": + version: 1.2.15 + resolution: "@rolldown/binding-win32-x64-msvc@npm:1.2.15" conditions: os=win32 & cpu=x64 languageName: node linkType: hard @@ -237,7 +237,7 @@ __metadata: dayjs: "npm:^1.11.13" escape-html: "npm:^1.0.3" highlight.js: "npm:^11.8.0" - vite: "npm:8.3.1" + vite: "npm:8.3.3" languageName: unknown linkType: soft @@ -626,26 +626,26 @@ __metadata: languageName: node linkType: hard -"rolldown@npm:~1.2.9": - version: 1.2.13 - resolution: "rolldown@npm:1.2.13" +"rolldown@npm:~1.2.11": + version: 1.2.15 + resolution: "rolldown@npm:1.2.15" dependencies: - "@oxc-project/types": "npm:=0.153.0" - "@rolldown/binding-android-arm-eabi": "npm:1.2.13" - "@rolldown/binding-android-arm64": "npm:1.2.13" - "@rolldown/binding-darwin-arm64": "npm:1.2.13" - "@rolldown/binding-darwin-x64": "npm:1.2.13" - "@rolldown/binding-freebsd-x64": "npm:1.2.13" - "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.13" - "@rolldown/binding-linux-arm64-gnu": "npm:1.2.13" - "@rolldown/binding-linux-arm64-musl": "npm:1.2.13" - "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.13" - "@rolldown/binding-linux-s390x-gnu": "npm:1.2.13" - "@rolldown/binding-linux-x64-gnu": "npm:1.2.13" - "@rolldown/binding-linux-x64-musl": "npm:1.2.13" - "@rolldown/binding-openharmony-arm64": "npm:1.2.13" - "@rolldown/binding-win32-arm64-msvc": "npm:1.2.13" - "@rolldown/binding-win32-x64-msvc": "npm:1.2.13" + "@oxc-project/types": "npm:=0.155.0" + "@rolldown/binding-android-arm-eabi": "npm:1.2.15" + "@rolldown/binding-android-arm64": "npm:1.2.15" + "@rolldown/binding-darwin-arm64": "npm:1.2.15" + "@rolldown/binding-darwin-x64": "npm:1.2.15" + "@rolldown/binding-freebsd-x64": "npm:1.2.15" + "@rolldown/binding-linux-arm-gnueabihf": "npm:1.2.15" + "@rolldown/binding-linux-arm64-gnu": "npm:1.2.15" + "@rolldown/binding-linux-arm64-musl": "npm:1.2.15" + "@rolldown/binding-linux-ppc64-gnu": "npm:1.2.15" + "@rolldown/binding-linux-s390x-gnu": "npm:1.2.15" + "@rolldown/binding-linux-x64-gnu": "npm:1.2.15" + "@rolldown/binding-linux-x64-musl": "npm:1.2.15" + "@rolldown/binding-openharmony-arm64": "npm:1.2.15" + "@rolldown/binding-win32-arm64-msvc": "npm:1.2.15" + "@rolldown/binding-win32-x64-msvc": "npm:1.2.15" "@rolldown/pluginutils": "npm:^1.0.0" dependenciesMeta: "@rolldown/binding-android-arm-eabi": @@ -680,7 +680,7 @@ __metadata: optional: true bin: rolldown: ./bin/cli.mjs - checksum: 10c0/20106c8531c4d90a88de8c2094885f1e2fd748cd05e3317d01292ab338ffa435d6acb678f4fdd8677d1b29be4212d29d3e3ca591ff06abd8423d817fe9e2729c + checksum: 10c0/084cbdcc222e534c9aff90e77488cdeb6a685a20a34e6e3ba77c3b8646723cea2f090f05522f452ed51217cce68b7aa67df8661b49b4ac0227a5edfcb0383b68 languageName: node linkType: hard @@ -753,15 +753,15 @@ __metadata: languageName: node linkType: hard -"vite@npm:8.3.1": - version: 8.3.1 - resolution: "vite@npm:8.3.1" +"vite@npm:8.3.3": + version: 8.3.3 + resolution: "vite@npm:8.3.3" dependencies: fsevents: "npm:~2.3.3" lightningcss: "npm:^1.33.0" picomatch: "npm:^4.0.7" postcss: "npm:^8.5.28" - rolldown: "npm:~1.2.9" + rolldown: "npm:~1.2.11" tinyglobby: "npm:^0.2.17" peerDependencies: "@types/node": ^20.19.0 || >=22.12.0 @@ -806,7 +806,7 @@ __metadata: optional: true bin: vite: bin/vite.js - checksum: 10c0/a91f4fee1cd331912ee3ac45f49900044846e28b8632ae734fe1978630e643e503d04181b2aeac59f70556fc51137dd49179fd39cbeb72a3e5f0bce88d2bcd30 + checksum: 10c0/a1fa945ad1dd98d43e45d491eee11505083b19e00f8c5549cd0771273717f7bdb431eef71ef3568d1effa6ba63719811e5151f3fbec84be5a017d4975470a0d9 languageName: node linkType: hard From e3d0c4b55bb539bc3b78912617393c6e6d6d7ec7 Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:32:20 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E8=AF=B4=E6=98=8E=E9=AB=98=E4=BA=AE?= =?UTF-8?q?=E8=AF=AD=E8=A8=80=E5=8F=82=E6=95=B0=E7=9A=84=E7=9C=9F=E5=AE=9E?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=90=88=E5=90=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 4b49ace..895b649 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,8 @@ when restored. Startup still chooses a random showcase, as before. 本轮迁移旧 Map merge(单参数恒等包装直接去掉)和等价静态 CSS 写法; 事件、watcher、EventHost 及原无声明的 render-app! 按真实生产者补全合同。 +`register-language!` 的语言定义参数修正为实际 Fn,而非 JsObject;自定义调用者需传 +Highlight.js LanguageFn 函数,不传普通对象。该函数边界仍开放,不伪造已完全闭合的回调类型。 随机选择、展示示例、原 HUD、存档恢复及全部原测试保持,不增加强转、预算或验证脚本。 CI checks all admitted definitions and all application public definitions through all-defs, plus the full strict workflow, From b741ca625b26ceb12411ed9c63502bfb4d53694e Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:34:23 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E8=AF=B4=E6=98=8E=E5=8E=9F=E5=A7=8B=20JS?= =?UTF-8?q?=20=E8=AF=AD=E8=A8=80=E5=87=BD=E6=95=B0=E7=9A=84=E5=8F=97?= =?UTF-8?q?=E6=A3=80=E5=85=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 895b649..214a525 100644 --- a/README.md +++ b/README.md @@ -41,6 +41,8 @@ when restored. Startup still chooses a random showcase, as before. 事件、watcher、EventHost 及原无声明的 render-app! 按真实生产者补全合同。 `register-language!` 的语言定义参数修正为实际 Fn,而非 JsObject;自定义调用者需传 Highlight.js LanguageFn 函数,不传普通对象。该函数边界仍开放,不伪造已完全闭合的回调类型。 +原始 JS 导入在进入这个接口前,通过已有 `decode-map-as ... 'Fn` 检查确为函数, +保留同一函数值,不以 unsafe 或对象强转掩盖边界。 随机选择、展示示例、原 HUD、存档恢复及全部原测试保持,不增加强转、预算或验证脚本。 CI checks all admitted definitions and all application public definitions through all-defs, plus the full strict workflow, From 2dd4f38b67676b9f6a2b7a1ef1a62cb652adce9f Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:36:03 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E5=87=86=E7=A1=AE=E8=AF=B4=E6=98=8E?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=B0=93=E8=AF=8D=E8=BE=B9=E7=95=8C=E8=80=8C?= =?UTF-8?q?=E9=9D=9E=E6=95=B0=E6=8D=AE=E8=A7=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 214a525..6c84b23 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ when restored. Startup still chooses a random showcase, as before. 事件、watcher、EventHost 及原无声明的 render-app! 按真实生产者补全合同。 `register-language!` 的语言定义参数修正为实际 Fn,而非 JsObject;自定义调用者需传 Highlight.js LanguageFn 函数,不传普通对象。该函数边界仍开放,不伪造已完全闭合的回调类型。 -原始 JS 导入在进入这个接口前,通过已有 `decode-map-as ... 'Fn` 检查确为函数, +原始 JS 导入在进入这个接口前,通过已有 `fn?` 检查确为函数, 保留同一函数值,不以 unsafe 或对象强转掩盖边界。 随机选择、展示示例、原 HUD、存档恢复及全部原测试保持,不增加强转、预算或验证脚本。 From 5adf0e0c8163ae172269d25e9a99d9f36b09413a Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:37:52 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E8=AF=B4=E6=98=8E=E5=B1=80=E9=83=A8?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E5=AE=88=E5=8D=AB=E7=9A=84=E5=AE=9E=E9=99=85?= =?UTF-8?q?=200.30.1=20=E7=94=A8=E6=B3=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 6c84b23..8b91f75 100644 --- a/README.md +++ b/README.md @@ -41,7 +41,7 @@ when restored. Startup still chooses a random showcase, as before. 事件、watcher、EventHost 及原无声明的 render-app! 按真实生产者补全合同。 `register-language!` 的语言定义参数修正为实际 Fn,而非 JsObject;自定义调用者需传 Highlight.js LanguageFn 函数,不传普通对象。该函数边界仍开放,不伪造已完全闭合的回调类型。 -原始 JS 导入在进入这个接口前,通过已有 `fn?` 检查确为函数, +原始 JS 导入在进入这个接口前先绑定为局部值,通过已有 `fn?` 检查确为函数, 保留同一函数值,不以 unsafe 或对象强转掩盖边界。 随机选择、展示示例、原 HUD、存档恢复及全部原测试保持,不增加强转、预算或验证脚本。 From 68bbecd0d6b2aa75410aacad55f46b615d5359c1 Mon Sep 17 00:00:00 2001 From: tiye Date: Sun, 25 Oct 2026 05:39:47 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E5=AE=98=E7=BD=91?= =?UTF-8?q?=E6=97=A7=20merge=20=E5=B9=B6=E4=BF=AE=E6=AD=A3=E7=9C=9F?= =?UTF-8?q?=E5=AE=9E=E8=AF=AD=E8=A8=80=E5=87=BD=E6=95=B0=E8=BE=B9=E7=95=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- calcit.cirru | 93 +++++++++++++++++++++++++++++++--------------------- 1 file changed, 55 insertions(+), 38 deletions(-) diff --git a/calcit.cirru b/calcit.cirru index 7108a16..cdf3865 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -16,13 +16,13 @@ store $ :store reel states $ :states store div - {} $ :style $ merge ui/global - {} (:background-color :white) (:font-size 16) + {} $ :style $ .merge ui/global + {} (:background-color |white) (:font-size |16px) div {} $ :style $ {} (:background-image "|linear-gradient(to right, #0f2242, #2452a1)") comp-header div - {} $ :style $ {} (:color :white) (:font-weight 300) (:font-family ui/font-fancy) (:font-size 20) (:margin :auto) (:text-align :center) (:max-width 800) (:padding "|0 16px") + {} $ :style $ {} (:color |white) (:font-weight |300) (:font-family ui/font-fancy) (:font-size |20px) (:margin |auto) (:text-align |center) (:max-width |800px) (:padding "|0 16px") comp-md-block (inline |clojure-is.md) {} $ :class-name "|content on-dark" comp-showcase $ :case-idx store @@ -38,14 +38,14 @@ 'comp-footer $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-footer () div - {} $ :style $ {} (:background-color |#292d2e) (:height 200) (:padding 16) + {} $ :style $ {} (:background-color |#292d2e) (:height |200px) (:padding |16px) div - {} $ :style $ {} (:max-width 800) (:margin :auto) + {} $ :style $ {} (:max-width |800px) (:margin |auto) a {} :style $ {} :color $ hsl 240 80 80 - :text-decoration :none + :text-decoration |none :href |https://github.com/clojure-china/clojure-script.org :target |_blank <> "|Site built with Calcit & Respo." @@ -55,28 +55,32 @@ 'comp-header $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-header () div - {} $ :style $ {} (:padding 16) + {} $ :style $ {} (:padding |16px) div - {} $ :style $ merge ui/row-parted - {} (:max-width 800) (:margin :auto) + {} $ :style $ .merge ui/row-parted + {} (:max-width |800px) (:margin |auto) div {} - :style $ merge ui/row-center $ {} (:cursor :pointer) + :style $ .merge ui/row-center $ {} (:cursor |pointer) :on-click $ fn (e d!) + hint-fn $ {} (:return 'Unit) + :args $ [] (:: 'Map 'Tag 'Dynamic) + :: 'Fn $ {} (:rest 'Dynamic) (:return 'Unit) + :args $ [] 'Dynamic d! $ :: :pick-case $ rand-int 10 div $ {} $ :style {} :background-image $ str "|url(https://cdn.tiye.me/logo/cljs.png)" - :width 40 - :height 40 + :width |40px + :height |40px :background-position "|center center" - :background-size :cover + :background-size |cover =< 8 nil a $ {} (:href |https://clojurescript.org/) (:inner-text "|(Unofficial)") :style $ {} :color $ hsl 240 80 80 :font-family ui/font-fancy - :text-decoration :none + :text-decoration |none div $ {} :examples $ [] :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) @@ -84,7 +88,7 @@ 'comp-resources $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-resources () div - {} $ :style $ {} (:max-width 800) (:margin :auto) (:padding 16) + {} $ :style $ {} (:max-width |800px) (:margin |auto) (:padding |16px) comp-md-block (inline |resource.md) {} $ :class-name |content :examples $ [] @@ -93,19 +97,19 @@ 'comp-tool-card $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-tool-card (info) div - {} $ :style $ merge ui/row-parted + {} $ :style $ .merge ui/row-parted {} :border $ str "|1px solid " $ hsl 0 0 90 :padding "|8px 16px" :border-radius |8px - :margin-top 16 + :margin-top |16px div ({}) div ({}) a {} :href $ :url info :target |_blank - :style $ {} (:text-decoration :none) (:font-size 16) + :style $ {} (:text-decoration |none) (:font-size |16px) :color $ hsl 240 90 70 :line-height |1.4em :font-family ui/font-fancy @@ -117,10 +121,10 @@ div $ {} $ :style {} :background-image $ str "|url(" logo "|)" - :background-size :cover - :background-position :center - :width 40 - :height 40 + :background-size |cover + :background-position |center + :width |40px + :height |40px (:none) nil :examples $ [] :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) @@ -128,24 +132,23 @@ 'comp-tools $ %{} 'CodeEntry (:doc |) :code $ quote $ defcomp comp-tools () div - {} $ :style $ {} (:max-width 800) (:margin :auto) (:padding 16) + {} $ :style $ {} (:max-width |800px) (:margin |auto) (:padding |16px) comp-md-block (inline |quote.md) {} $ :class-name |content div - {} $ :style $ {} (:margin-top 48) - <> |Learning $ {} (:font-size 24) (:font-weight 100) (:font-family ui/font-normal) (:vertical-align :middle) + {} $ :style $ {} (:margin-top |48px) + <> |Learning $ {} (:font-size |24px) (:font-weight |100) (:font-family ui/font-normal) (:vertical-align |middle) =< 16 nil a {} - :style $ merge ui/button $ {} (:vertical-align :middle) (:border-radius |16px) (:padding "|0 16px") (:font-family ui/font-fancy) (:font-size 20) (:text-decoration :none) (:line-height |32px) (:display :inline-block) + :style $ .merge ui/button $ {} (:vertical-align |middle) (:border-radius |16px) (:padding "|0 16px") (:font-family ui/font-fancy) (:font-size |20px) (:text-decoration |none) (:line-height |32px) (:display |inline-block) :href |http://clojurescript.io/ :target |_blank <> "|Get an online REPL" comp-md-block (inline |learning.md) {} $ :class-name |content div - {} $ :style $ merge - {} $ :width :auto + {} $ :style $ {} (:width |auto) comp-tool-card $ ToolInfo :name |shadow-cljs :logo (Option :some |http://cdn.tiye.me/logo/shadow-cljs.png) :url |http://shadow-cljs.org :description "|ClojureScript compilation made easy." comp-tool-card $ ToolInfo :name |figwheel-main :logo (Option :none) :url |https://figwheel.org :description "|Figwheel Main builds your ClojureScript code and hot loads it as you are coding!" :examples $ [] @@ -176,23 +179,23 @@ (:none) (raise "|Unknown showcase index") div {} (:class-name |showcase) - :style $ merge ui/center $ {} (:padding |16px) (:min-height 320) (:overflow :auto) (:padding 16) + :style $ .merge ui/center $ {} (:padding |16px) (:min-height |320px) (:overflow |auto) (:padding |16px) div ({}) <> (:text showcase) - {} (:color :white) (:font-size 16) + {} (:color |white) (:font-size |16px) =< 16 nil a $ {} :href $ :url showcase :target |_blank :style $ {} :color $ hsl 240 80 80 - :text-decoration :none + :text-decoration |none :font-family ui/font-fancy :inner-text |Link comp-md-block str "|```clojure" &newline (:code showcase) &newline "|```" {} - :style $ {} (:background-color :transparent) (:font-family ui/font-code) (:color :white) (:padding 8) (:margin :auto) + :style $ {} (:background-color |transparent) (:font-family ui/font-code) (:color |white) (:padding |8px) (:margin |auto) :highlight highlighter :examples $ [] :schema $ :: 'Fn $ {} (:return 'respo.schema/Component) @@ -267,16 +270,24 @@ :code $ quote $ defn main! () println "|Running mode:" $ if config/dev? |dev |release if config/dev? $ load-console-formatter! - register-language! |clojure clojure-lang + let + language clojure-lang + if (fn? language) (register-language! |clojure language) (raise "|Expected Highlight.js LanguageFn") match browser/storage-get $ :storage-key config/site (:some raw) dispatch! $ :: :hydrate-storage $ parse-cirru-edn raw (:none) &unit render-app! - add-watch! *reel :changes $ fn (r p) (render-app!) + add-watch! *reel :changes $ fn (r p) + hint-fn $ {} (:return 'Unit) + :args $ [] (:: 'reel.typed/State 'app.schema/Action 'app.schema/Store) (:: 'reel.typed/State 'app.schema/Action 'app.schema/Store) + render-app! listen-devtools! |a dispatch! - browser/add-event-listener! |beforeunload $ fn (event) (save-store!) + browser/add-event-listener! |beforeunload $ fn (event) + hint-fn $ {} (:return 'Unit) + :args $ [] 'js-ffi.browser/EventHost + save-store! dispatch! $ :: :pick-case $ rand-int 10 println "|App started." :examples $ [] @@ -297,7 +308,10 @@ :code $ quote $ defn reload! () if (js-nullish? build-errors) do (remove-watch! *reel :changes) (clear-cache!) - add-watch! *reel :changes $ fn (reel prev) (render-app!) + add-watch! *reel :changes $ fn (reel prev) + hint-fn $ {} (:return 'Unit) + :args $ [] (:: 'reel.typed/State 'app.schema/Action 'app.schema/Store) (:: 'reel.typed/State 'app.schema/Action 'app.schema/Store) + render-app! reset! *reel $ typed-reel/refresh updater @*reel schema/store hud! |ok~ |Ok hud! |error build-errors @@ -310,6 +324,9 @@ :code $ quote $ defn render-app! () render! (mount-target) (comp-container @*reel) dispatch! :examples $ [] + :schema $ :: 'Fn $ {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi 'save-store! $ %{} 'CodeEntry (:doc |) :code $ quote $ defn save-store! () let @@ -442,7 +459,7 @@ :args $ [] 'app.util/HighlightHost 'String 'JsObject :return 'JsObject .register-language! $ :: 'Fn $ {} - :args $ [] 'app.util/HighlightHost 'String 'JsObject + :args $ [] 'app.util/HighlightHost 'String 'Fn :return 'Unit :examples $ [] :ffi $ {} (:backend :js) (:kind :external-object) @@ -484,7 +501,7 @@ , &unit :examples $ [] :schema $ :: 'Fn $ {} (:return 'Unit) - :args $ [] 'String 'JsObject + :args $ [] 'String 'Fn :features $ #{} :js-ffi 'supported-langs $ %{} 'CodeEntry (:doc |) :code $ quote $ def supported-langs (&{} |clojure |clojure)