From d7c63acea32ebc21e6a9c18d5a9a54966ab6aa91 Mon Sep 17 00:00:00 2001 From: Shawn Wang Date: Sun, 6 Jul 2025 21:24:42 +0800 Subject: [PATCH 1/2] upgrade astro --- package-lock.json | 901 ++++++++++++++++++++++++++++++---------------- package.json | 10 +- 2 files changed, 590 insertions(+), 321 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2690ff5..174180d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,7 +9,7 @@ "version": "4.7.0", "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/rss": "^4.0.10", + "@astrojs/rss": "^4.0.12", "@fullcalendar/core": "^6.1.15", "@fullcalendar/daygrid": "^6.1.15", "@fullcalendar/google-calendar": "^6.1.15", @@ -18,7 +18,7 @@ "@fullcalendar/resource-timeline": "^6.1.15", "@giscus/react": "^3.0.0", "@resvg/resvg-js": "^2.6.2", - "astro": "^5.0.3", + "astro": "^5.11.0", "fuse.js": "^7.0.0", "lodash.kebabcase": "^4.1.1", "remark-collapse": "^0.1.2", @@ -28,9 +28,9 @@ "typescript": "^5.6.3" }, "devDependencies": { - "@astrojs/react": "^4.0.0", - "@astrojs/sitemap": "^3.2.1", - "@astrojs/tailwind": "^5.1.3", + "@astrojs/react": "^4.3.0", + "@astrojs/sitemap": "^3.4.1", + "@astrojs/tailwind": "^6.0.2", "@tailwindcss/typography": "^0.5.15", "@types/github-slugger": "^1.3.0", "@types/lodash.kebabcase": "^4.1.9", @@ -129,9 +129,9 @@ } }, "node_modules/@astrojs/compiler": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.11.0.tgz", - "integrity": "sha512-zZOO7i+JhojO8qmlyR/URui6LyfHJY6m+L9nwyX5GiKD78YoRaZ5tzz6X0fkl+5bD3uwlDHayf6Oe8Fu36RKNg==", + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/@astrojs/compiler/-/compiler-2.12.2.tgz", + "integrity": "sha512-w2zfvhjNCkNMmMMOn5b0J8+OmUaBL1o40ipMvqcG6NRpdC+lKxmTi48DT8Xw0SzJ3AfmeFLB45zXZXtmbsjcgw==", "license": "MIT" }, "node_modules/@astrojs/internal-helpers": { @@ -182,13 +182,13 @@ } }, "node_modules/@astrojs/markdown-remark": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.1.tgz", - "integrity": "sha512-c5F5gGrkczUaTVgmMW9g1YMJGzOtRvjjhw6IfGuxarM6ct09MpwysP10US729dy07gg8y+ofVifezvP3BNsWZg==", + "version": "6.3.2", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-6.3.2.tgz", + "integrity": "sha512-bO35JbWpVvyKRl7cmSJD822e8YA8ThR/YbUsciWNA7yTcqpIAL2hJDToWP5KcZBWxGT6IOdOkHSXARSNZc4l/Q==", "license": "MIT", "dependencies": { "@astrojs/internal-helpers": "0.6.1", - "@astrojs/prism": "3.2.0", + "@astrojs/prism": "3.3.0", "github-slugger": "^2.0.0", "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", @@ -199,9 +199,9 @@ "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.1", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.1", + "remark-rehype": "^11.1.2", "remark-smartypants": "^3.0.2", - "shiki": "^3.0.0", + "shiki": "^3.2.1", "smol-toml": "^1.3.1", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", @@ -211,69 +211,69 @@ } }, "node_modules/@astrojs/prism": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.2.0.tgz", - "integrity": "sha512-GilTHKGCW6HMq7y3BUv9Ac7GMe/MO9gi9GW62GzKtth0SwukCu/qp2wLiGpEujhY+VVhaG9v7kv/5vFzvf4NYw==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-3.3.0.tgz", + "integrity": "sha512-q8VwfU/fDZNoDOf+r7jUnMC2//H2l0TuQ6FkGJL8vD8nw/q5KiL3DS1KKBI3QhI9UQhpJ5dc7AtqfbXWuOgLCQ==", "license": "MIT", "dependencies": { - "prismjs": "^1.29.0" + "prismjs": "^1.30.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, "node_modules/@astrojs/react": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.0.0.tgz", - "integrity": "sha512-YwTKFm/EMAl3JU3wlVBBI3qpuNMW5ofkvq9nWfpQEo4P38yLJjrqO/trxv0HSrAYinRp7gg3rgAR7MeadSNuvQ==", + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-4.3.0.tgz", + "integrity": "sha512-N02aj52Iezn69qHyx5+XvPqgsPMEnel9mI5JMbGiRMTzzLMuNaxRVoQTaq2024Dpr7BLsxCjqMkNvelqMDhaHA==", "dev": true, "license": "MIT", "dependencies": { - "@vitejs/plugin-react": "^4.3.4", - "ultrahtml": "^1.5.3", - "vite": "^6.0.1" + "@vitejs/plugin-react": "^4.4.1", + "ultrahtml": "^1.6.0", + "vite": "^6.3.5" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" }, "peerDependencies": { - "@types/react": "^17.0.50 || ^18.0.21", - "@types/react-dom": "^17.0.17 || ^18.0.6", - "react": "^17.0.2 || ^18.0.0 || ^19.0.0-beta", - "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0-beta" + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" } }, "node_modules/@astrojs/rss": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.10.tgz", - "integrity": "sha512-2gFdHM763uUAySkdwPYrpi6dppOBJr9ddg5VbkKXctWze8d1JHgIBBY78zWIYs7KBJT58zxadsObVAVt55RDaw==", + "version": "4.0.12", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.12.tgz", + "integrity": "sha512-O5yyxHuDVb6DQ6VLOrbUVFSm+NpObulPxjs6XT9q3tC+RoKbN4HXMZLpv0LvXd1qdAjzVgJ1NFD+zKHJNDXikw==", "license": "MIT", "dependencies": { - "fast-xml-parser": "^4.5.0", + "fast-xml-parser": "^5.2.0", "kleur": "^4.1.5" } }, "node_modules/@astrojs/sitemap": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.2.1.tgz", - "integrity": "sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==", + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.4.1.tgz", + "integrity": "sha512-VjZvr1e4FH6NHyyHXOiQgLiw94LnCVY4v06wN/D0gZKchTMkg71GrAHJz81/huafcmavtLkIv26HnpfDq6/h/Q==", "dev": true, "license": "MIT", "dependencies": { "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", - "zod": "^3.23.8" + "zod": "^3.24.2" } }, "node_modules/@astrojs/tailwind": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.3.tgz", - "integrity": "sha512-XF7WhXRhqEHGvADqc0kDtF7Yv/g4wAWTaj91jBBTBaYnc4+MQLH94duFfFa4NlTkRG40VQd012eF3MhO3Kk+bg==", + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-6.0.2.tgz", + "integrity": "sha512-j3mhLNeugZq6A8dMNXVarUa8K6X9AW+QHU9u3lKNrPLMHhOQ0S7VeWhHwEeJFpEK1BTKEUY1U78VQv2gN6hNGg==", "dev": true, "license": "MIT", "dependencies": { - "autoprefixer": "^10.4.20", - "postcss": "^8.4.49", + "autoprefixer": "^10.4.21", + "postcss": "^8.5.3", "postcss-load-config": "^4.0.2" }, "peerDependencies": { @@ -282,13 +282,13 @@ } }, "node_modules/@astrojs/telemetry": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.2.0.tgz", - "integrity": "sha512-wxhSKRfKugLwLlr4OFfcqovk+LIFtKwLyGPqMsv+9/ibqqnW3Gv7tBhtKEb0gAyUAC4G9BTVQeQahqnQAhd6IQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/telemetry/-/telemetry-3.3.0.tgz", + "integrity": "sha512-UFBgfeldP06qu6khs/yY+q1cDAaArM2/7AEIqQ9Cuvf7B1hNLq0xDrZkct+QoIGyjq56y8IaE2I3CTvG99mlhQ==", "license": "MIT", "dependencies": { - "ci-info": "^4.1.0", - "debug": "^4.3.7", + "ci-info": "^4.2.0", + "debug": "^4.4.0", "dlv": "^1.1.3", "dset": "^3.1.4", "is-docker": "^3.0.0", @@ -296,7 +296,7 @@ "which-pm-runs": "^1.1.0" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0" + "node": "18.20.8 || ^20.3.0 || >=22.0.0" } }, "node_modules/@astrojs/yaml2ts": { @@ -309,24 +309,24 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.26.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", - "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-validator-identifier": "^7.25.9", + "@babel/helper-validator-identifier": "^7.27.1", "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "picocolors": "^1.1.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/compat-data": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.3.tgz", - "integrity": "sha512-nHIxvKPniQXpmQLb0vhY3VaFb3S0YrTAwpOWJZh1wn3oJPjJk9Asva204PsBdmAE8vpzfHudT8DB0scYvy9q0g==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.28.0.tgz", + "integrity": "sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw==", "dev": true, "license": "MIT", "engines": { @@ -334,22 +334,22 @@ } }, "node_modules/@babel/core": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.26.0.tgz", - "integrity": "sha512-i1SLeK+DzNnQ3LL/CswPCa/E5u4lh1k6IAEphON8F+cXt0t9euTshDru0q7/IqMa1PMPz5RnHuHscF8/ZJsStg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.28.0.tgz", + "integrity": "sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ==", "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.26.0", - "@babel/generator": "^7.26.0", - "@babel/helper-compilation-targets": "^7.25.9", - "@babel/helper-module-transforms": "^7.26.0", - "@babel/helpers": "^7.26.0", - "@babel/parser": "^7.26.0", - "@babel/template": "^7.25.9", - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.26.0", + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-compilation-targets": "^7.27.2", + "@babel/helper-module-transforms": "^7.27.3", + "@babel/helpers": "^7.27.6", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/traverse": "^7.28.0", + "@babel/types": "^7.28.0", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -375,16 +375,16 @@ } }, "node_modules/@babel/generator": { - "version": "7.26.3", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.3.tgz", - "integrity": "sha512-6FF/urZvD0sTeO7k6/B15pMLC4CHUv1426lzr3N01aHJTl046uCAh9LXW/fzeXXjPNCJ6iABW5XaWOsIZB93aQ==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.28.0.tgz", + "integrity": "sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.26.3", - "@babel/types": "^7.26.3", - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25", + "@babel/parser": "^7.28.0", + "@babel/types": "^7.28.0", + "@jridgewell/gen-mapping": "^0.3.12", + "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" }, "engines": { @@ -392,14 +392,14 @@ } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.9.tgz", - "integrity": "sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz", + "integrity": "sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.25.9", - "@babel/helper-validator-option": "^7.25.9", + "@babel/compat-data": "^7.27.2", + "@babel/helper-validator-option": "^7.27.1", "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" @@ -418,30 +418,40 @@ "semver": "bin/semver.js" } }, + "node_modules/@babel/helper-globals": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", + "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-module-imports": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", - "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz", + "integrity": "sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==", "dev": true, "license": "MIT", "dependencies": { - "@babel/traverse": "^7.25.9", - "@babel/types": "^7.25.9" + "@babel/traverse": "^7.27.1", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.26.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.26.0.tgz", - "integrity": "sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==", + "version": "7.27.3", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz", + "integrity": "sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9", - "@babel/traverse": "^7.25.9" + "@babel/helper-module-imports": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1", + "@babel/traverse": "^7.27.3" }, "engines": { "node": ">=6.9.0" @@ -451,9 +461,9 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.9.tgz", - "integrity": "sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz", + "integrity": "sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==", "dev": true, "license": "MIT", "engines": { @@ -461,27 +471,27 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", + "integrity": "sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", - "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", - "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", + "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", "dev": true, "license": "MIT", "engines": { @@ -489,26 +499,26 @@ } }, "node_modules/@babel/helpers": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", - "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "version": "7.27.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.6.tgz", + "integrity": "sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug==", "dev": true, "license": "MIT", "dependencies": { - "@babel/template": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/template": "^7.27.2", + "@babel/types": "^7.27.6" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", - "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.28.0.tgz", + "integrity": "sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g==", "license": "MIT", "dependencies": { - "@babel/types": "^7.27.0" + "@babel/types": "^7.28.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -518,13 +528,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.9.tgz", - "integrity": "sha512-y8quW6p0WHkEhmErnfe58r7x0A70uKphQm8Sp8cV7tjNQwK56sNVK0M73LK3WuYmsuyrftut4xAkjjgU0twaMg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.27.1.tgz", + "integrity": "sha512-6UzkCs+ejGdZ5mFFC/OCUrv028ab2fp1znZmCZjAOBKiBK2jXD1O+BPSfX8X2qjJ75fZBMSnQn3Rq2mrBJK2mw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -534,13 +544,13 @@ } }, "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.9.tgz", - "integrity": "sha512-+iqjT8xmXhhYv4/uiYd8FNQsraMFZIfxVSqxxVSZP0WbbSAWvBXAul0m/zu+7Vv4O/3WtApy9pmaTMiumEZgfg==", + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.27.1.tgz", + "integrity": "sha512-zbwoTsBruTeKB9hSq73ha66iFeJHuaFkUbwvqElnygoNbj/jHRsSeokowZFN3CZ64IvEqcmmkVe89OPXc7ldAw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.25.9" + "@babel/helper-plugin-utils": "^7.27.1" }, "engines": { "node": ">=6.9.0" @@ -550,62 +560,63 @@ } }, "node_modules/@babel/template": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", - "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "version": "7.27.2", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.2.tgz", + "integrity": "sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/parser": "^7.27.0", - "@babel/types": "^7.27.0" + "@babel/code-frame": "^7.27.1", + "@babel/parser": "^7.27.2", + "@babel/types": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.26.4", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.26.4.tgz", - "integrity": "sha512-fH+b7Y4p3yqvApJALCPJcwb0/XaOSgtK4pzV6WVjPR5GLFQBRI7pfoX2V2iM48NXvX07NUxxm1Vw98YjqTcU5w==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.28.0.tgz", + "integrity": "sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.26.2", - "@babel/generator": "^7.26.3", - "@babel/parser": "^7.26.3", - "@babel/template": "^7.25.9", - "@babel/types": "^7.26.3", - "debug": "^4.3.1", - "globals": "^11.1.0" + "@babel/code-frame": "^7.27.1", + "@babel/generator": "^7.28.0", + "@babel/helper-globals": "^7.28.0", + "@babel/parser": "^7.28.0", + "@babel/template": "^7.27.2", + "@babel/types": "^7.28.0", + "debug": "^4.3.1" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/types": { - "version": "7.27.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", - "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.28.0.tgz", + "integrity": "sha512-jYnje+JyZG5YThjHiF28oT4SIZLnYOcSBb6+SDaFIyzDVSkXQmQQYclJ2R+YxcdmK0AX6x1E5OQNtuh3jHDrUg==", "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" + "@babel/helper-string-parser": "^7.27.1", + "@babel/helper-validator-identifier": "^7.27.1" }, "engines": { "node": ">=6.9.0" } }, + "node_modules/@capsizecss/unpack": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@capsizecss/unpack/-/unpack-2.4.0.tgz", + "integrity": "sha512-GrSU71meACqcmIUxPYOJvGKF0yryjN/L1aCuE9DViCTJI7bfkjgYDPD1zbNDcINJwSSP6UaBZY9GAbYDO7re0Q==", + "license": "MIT", + "dependencies": { + "blob-to-buffer": "^1.2.8", + "cross-fetch": "^3.0.4", + "fontkit": "^2.0.2" + } + }, "node_modules/@cspotcode/source-map-support": { "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", @@ -1860,16 +1871,13 @@ } }, "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "version": "0.3.12", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz", + "integrity": "sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg==", + "license": "MIT", "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" } }, "node_modules/@jridgewell/resolve-uri": { @@ -1880,14 +1888,6 @@ "node": ">=6.0.0" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", @@ -1905,9 +1905,10 @@ "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" }, "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "version": "0.3.29", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz", + "integrity": "sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ==", + "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -2179,6 +2180,13 @@ "node": ">= 10" } }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-beta.19", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-beta.19.tgz", + "integrity": "sha512-3FL3mnMbPu0muGOCaKAhhFEYmqv9eTfPSJRJmANrCwtgK8VuxpsZDGK+m0LYAGoyO8+0j5uRe4PeyPDK1yA/hA==", + "dev": true, + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.1.4", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.4.tgz", @@ -2480,60 +2488,60 @@ ] }, "node_modules/@shikijs/core": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.2.1.tgz", - "integrity": "sha512-FhsdxMWYu/C11sFisEp7FMGBtX/OSSbnXZDMBhGuUDBNTdsoZlMSgQv5f90rwvzWAdWIW6VobD+G3IrazxA6dQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.7.0.tgz", + "integrity": "sha512-yilc0S9HvTPyahHpcum8eonYrQtmGTU0lbtwxhA6jHv4Bm1cAdlPFRCJX4AHebkCm75aKTjjRAW+DezqD1b/cg==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.2.1", + "@shikijs/types": "3.7.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4", "hast-util-to-html": "^9.0.5" } }, "node_modules/@shikijs/engine-javascript": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.2.1.tgz", - "integrity": "sha512-eMdcUzN3FMQYxOmRf2rmU8frikzoSHbQDFH2hIuXsrMO+IBOCI9BeeRkCiBkcLDHeRKbOCtYMJK3D6U32ooU9Q==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.7.0.tgz", + "integrity": "sha512-0t17s03Cbv+ZcUvv+y33GtX75WBLQELgNdVghnsdhTgU3hVcWcMsoP6Lb0nDTl95ZJfbP1mVMO0p3byVh3uuzA==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.2.1", + "@shikijs/types": "3.7.0", "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.1.0" + "oniguruma-to-es": "^4.3.3" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.2.1.tgz", - "integrity": "sha512-wZZAkayEn6qu2+YjenEoFqj0OyQI64EWsNR6/71d1EkG4sxEOFooowKivsWPpaWNBu3sxAG+zPz5kzBL/SsreQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.7.0.tgz", + "integrity": "sha512-5BxcD6LjVWsGu4xyaBC5bu8LdNgPCVBnAkWTtOCs/CZxcB22L8rcoWfv7Hh/3WooVjBZmFtyxhgvkQFedPGnFw==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.2.1", + "@shikijs/types": "3.7.0", "@shikijs/vscode-textmate": "^10.0.2" } }, "node_modules/@shikijs/langs": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.2.1.tgz", - "integrity": "sha512-If0iDHYRSGbihiA8+7uRsgb1er1Yj11pwpX1c6HLYnizDsKAw5iaT3JXj5ZpaimXSWky/IhxTm7C6nkiYVym+A==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.7.0.tgz", + "integrity": "sha512-1zYtdfXLr9xDKLTGy5kb7O0zDQsxXiIsw1iIBcNOO8Yi5/Y1qDbJ+0VsFoqTlzdmneO8Ij35g7QKF8kcLyznCQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.2.1" + "@shikijs/types": "3.7.0" } }, "node_modules/@shikijs/themes": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.2.1.tgz", - "integrity": "sha512-k5DKJUT8IldBvAm8WcrDT5+7GA7se6lLksR+2E3SvyqGTyFMzU2F9Gb7rmD+t+Pga1MKrYFxDIeyWjMZWM6uBQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.7.0.tgz", + "integrity": "sha512-VJx8497iZPy5zLiiCTSIaOChIcKQwR0FebwE9S3rcN0+J/GTWwQ1v/bqhTbpbY3zybPKeO8wdammqkpXc4NVjQ==", "license": "MIT", "dependencies": { - "@shikijs/types": "3.2.1" + "@shikijs/types": "3.7.0" } }, "node_modules/@shikijs/types": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.2.1.tgz", - "integrity": "sha512-/NTWAk4KE2M8uac0RhOsIhYQf4pdU0OywQuYDGIGAJ6Mjunxl2cGiuLkvu4HLCMn+OTTLRWkjZITp+aYJv60yA==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.7.0.tgz", + "integrity": "sha512-MGaLeaRlSWpnP0XSAum3kP3a8vtcTsITqoEPYdt3lQG3YCdQH4DnEhodkYcNMcU0uW0RffhoD1O3e0vG5eSBBg==", "license": "MIT", "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", @@ -2767,6 +2775,15 @@ "optional": true, "peer": true }, + "node_modules/@swc/helpers": { + "version": "0.5.17", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.17.tgz", + "integrity": "sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" + } + }, "node_modules/@swc/types": { "version": "0.1.5", "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", @@ -2832,9 +2849,9 @@ } }, "node_modules/@types/babel__generator": { - "version": "7.6.8", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", - "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", "dev": true, "license": "MIT", "dependencies": { @@ -2853,9 +2870,9 @@ } }, "node_modules/@types/babel__traverse": { - "version": "7.20.6", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", - "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.7.tgz", + "integrity": "sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng==", "dev": true, "license": "MIT", "dependencies": { @@ -2877,6 +2894,15 @@ "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==", "license": "MIT" }, + "node_modules/@types/fontkit": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@types/fontkit/-/fontkit-2.0.8.tgz", + "integrity": "sha512-wN+8bYxIpJf+5oZdrdtaX04qUuWHcKxcDEgRS9Qm9ZClSHjzEn13SxUC+5eRM+4yXIeTYk8mTzLAWGF64847ew==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, "node_modules/@types/github-slugger": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@types/github-slugger/-/github-slugger-1.3.0.tgz", @@ -2939,8 +2965,7 @@ "node_modules/@types/node": { "version": "20.4.7", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.4.7.tgz", - "integrity": "sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==", - "devOptional": true + "integrity": "sha512-bUBrPjEry2QUTsnuEjzjbS7voGWCc30W0qzgMf90GPeDGFRakvrz47ju+oqDAKCXLUCe39u57/ORMl/O/04/9g==" }, "node_modules/@types/prop-types": { "version": "15.7.5", @@ -3206,23 +3231,24 @@ "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@vitejs/plugin-react": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.4.tgz", - "integrity": "sha512-SCCPBJtYLdE8PX/7ZQAs1QAZ8Jqwih+0VBLum1EGqmCCQal+MIUqLCzj3ZUy8ufbC0cAM4LRlSTm7IQJwWT4ug==", + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.6.0.tgz", + "integrity": "sha512-5Kgff+m8e2PB+9j51eGHEpn5kUzRKH2Ry0qGoe8ItJg7pqnkPrYPkDQZGgGmTa0EGarHrkjLvOdU3b1fzI8otQ==", "dev": true, "license": "MIT", "dependencies": { - "@babel/core": "^7.26.0", - "@babel/plugin-transform-react-jsx-self": "^7.25.9", - "@babel/plugin-transform-react-jsx-source": "^7.25.9", + "@babel/core": "^7.27.4", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-beta.19", "@types/babel__core": "^7.20.5", - "react-refresh": "^0.14.2" + "react-refresh": "^0.17.0" }, "engines": { "node": "^14.18.0 || >=16.0.0" }, "peerDependencies": { - "vite": "^4.2.0 || ^5.0.0 || ^6.0.0" + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0-beta.0" } }, "node_modules/@volar/kit": { @@ -3479,15 +3505,16 @@ } }, "node_modules/astro": { - "version": "5.5.5", - "resolved": "https://registry.npmjs.org/astro/-/astro-5.5.5.tgz", - "integrity": "sha512-fdnnK5dhWNIQT/cXzvaGs9il4T5noi4jafobdntbuNOrRxI1JnOxDfrtBadUo6cknCRCFhYrXh4VndCqj1a4Sg==", + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/astro/-/astro-5.11.0.tgz", + "integrity": "sha512-MEICntERthUxJPSSDsDiZuwiCMrsaYy3fnDhp4c6ScUfldCB8RBnB/myYdpTFXpwYBy6SgVsHQ1H4MuuA7ro/Q==", "license": "MIT", "dependencies": { - "@astrojs/compiler": "^2.11.0", + "@astrojs/compiler": "^2.12.2", "@astrojs/internal-helpers": "0.6.1", - "@astrojs/markdown-remark": "6.3.1", - "@astrojs/telemetry": "3.2.0", + "@astrojs/markdown-remark": "6.3.2", + "@astrojs/telemetry": "3.3.0", + "@capsizecss/unpack": "^2.4.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.1.4", "acorn": "^8.14.1", @@ -3509,9 +3536,11 @@ "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", + "fontace": "~0.3.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.1.1", + "import-meta-resolve": "^4.1.0", "js-yaml": "^4.1.0", "kleur": "^4.1.5", "magic-string": "^0.30.17", @@ -3520,33 +3549,34 @@ "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.0", - "package-manager-detector": "^1.0.0", + "package-manager-detector": "^1.1.0", "picomatch": "^4.0.2", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.1", - "shiki": "^3.0.0", + "shiki": "^3.2.1", "tinyexec": "^0.3.2", "tinyglobby": "^0.2.12", "tsconfck": "^3.1.5", - "ultrahtml": "^1.5.3", + "ultrahtml": "^1.6.0", + "unifont": "~0.5.0", "unist-util-visit": "^5.0.0", "unstorage": "^1.15.0", "vfile": "^6.0.3", - "vite": "^6.2.3", + "vite": "^6.3.4", "vitefu": "^1.0.6", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.1", "zod": "^3.24.2", - "zod-to-json-schema": "^3.24.3", + "zod-to-json-schema": "^3.24.5", "zod-to-ts": "^1.2.0" }, "bin": { "astro": "astro.js" }, "engines": { - "node": "^18.17.1 || ^20.3.0 || >=22.0.0", + "node": "18.20.8 || ^20.3.0 || >=22.0.0", "npm": ">=9.6.5", "pnpm": ">=7.1.0" }, @@ -3754,9 +3784,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.20", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", - "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", + "version": "10.4.21", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.21.tgz", + "integrity": "sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ==", "dev": true, "funding": [ { @@ -3774,11 +3804,11 @@ ], "license": "MIT", "dependencies": { - "browserslist": "^4.23.3", - "caniuse-lite": "^1.0.30001646", + "browserslist": "^4.24.4", + "caniuse-lite": "^1.0.30001702", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.1", + "picocolors": "^1.1.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3834,6 +3864,26 @@ "node": ">=8" } }, + "node_modules/blob-to-buffer": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/blob-to-buffer/-/blob-to-buffer-1.2.9.tgz", + "integrity": "sha512-BF033y5fN6OCofD3vgHmNtwZWRcq9NLyyxyILx9hfMy1sXYy4ojFl765hJ2lP0YaN2fuxPaLO2Vzzoxy0FLFFA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/boxen": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", @@ -3886,10 +3936,39 @@ "node": ">=8" } }, + "node_modules/brotli": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.3.tgz", + "integrity": "sha512-oTKjJdShmDuGW94SyyaoQvAjf30dZaHnjJ8uAF+u2/vGJkJbJPJAT1gDiOJP5v1Zb6f9KEyW/1HpuaWIXtGHPg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/brotli/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/browserslist": { - "version": "4.24.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", - "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", + "version": "4.25.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.25.1.tgz", + "integrity": "sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw==", "dev": true, "funding": [ { @@ -3907,10 +3986,10 @@ ], "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001669", - "electron-to-chromium": "^1.5.41", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.1" + "caniuse-lite": "^1.0.30001726", + "electron-to-chromium": "^1.5.173", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" }, "bin": { "browserslist": "cli.js" @@ -3964,9 +4043,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001687", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001687.tgz", - "integrity": "sha512-0S/FDhf4ZiqrTUiQ39dKeUjYRjkv7lOZU1Dgif2rIqrTzX/1wV2hfKu9TOm1IHkdSijfLswxTFzl/cvir+SLSQ==", + "version": "1.0.30001726", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001726.tgz", + "integrity": "sha512-VQAUIUzBiZ/UnlM28fSp2CRF3ivUn1BWEvxMcVTNwpw91Py1pGbPIyIKtd+tzct9C3ouceCVdGAXxZOpZAsgdw==", "dev": true, "funding": [ { @@ -4166,6 +4245,15 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, "node_modules/clsx": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", @@ -4269,6 +4357,15 @@ "optional": true, "peer": true }, + "node_modules/cross-fetch": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.2.0.tgz", + "integrity": "sha512-Q+xVJLoGOeIMXZmbUK4HYk+69cQH6LudR0Vu/pRm2YlU/hDV9CiS0gKUMaWY5f2NeUH9C1nV3bsTlCo0FsTV1Q==", + "license": "MIT", + "dependencies": { + "node-fetch": "^2.7.0" + } + }, "node_modules/cross-spawn": { "version": "7.0.6", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", @@ -4329,6 +4426,19 @@ "postcss-value-parser": "^4.0.2" } }, + "node_modules/css-tree": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-3.1.0.tgz", + "integrity": "sha512-0eW44TGN5SQXU1mWSkKwFstI/22X2bG1nYzZTYMAWjylYURhse752YgbE4Cx46AC+bAvI+/dYTPRk1LqSUnu6w==", + "license": "MIT", + "dependencies": { + "mdn-data": "2.12.2", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" + } + }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -4364,9 +4474,9 @@ } }, "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.2.0.tgz", + "integrity": "sha512-c6fcElNV6ShtZXmsgNgFFV5tVX2PaV4g+MOAkb8eXHvn6sryJBrZa9r0zV6+dtTyoCKxtDy5tyQ5ZwQuidtd+Q==", "license": "MIT", "dependencies": { "character-entities": "^2.0.0" @@ -4443,6 +4553,12 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==", + "license": "MIT" + }, "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", @@ -4483,9 +4599,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.71", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.71.tgz", - "integrity": "sha512-dB68l59BI75W1BUGVTAEJy45CEVuEGy9qPVVQ8pnHyHMn36PLPPoE1mjLH+lo9rKulO3HC2OhbACI/8tCqJBcA==", + "version": "1.5.179", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.179.tgz", + "integrity": "sha512-UWKi/EbBopgfFsc5k61wFpV7WrnnSlSzW/e2XcBmS6qKYTivZlLtoll5/rdqRTxGglGHkmkW0j0pFNJG10EUIQ==", "dev": true, "license": "ISC" }, @@ -4510,12 +4626,6 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", - "license": "MIT" - }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -4989,22 +5099,18 @@ "license": "BSD-3-Clause" }, "node_modules/fast-xml-parser": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", - "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", + "version": "5.2.5", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.2.5.tgz", + "integrity": "sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" } ], "license": "MIT", "dependencies": { - "strnum": "^1.0.5" + "strnum": "^2.1.0" }, "bin": { "fxparser": "src/cli/cli.js" @@ -5089,6 +5195,33 @@ "node": ">=8" } }, + "node_modules/fontace": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/fontace/-/fontace-0.3.0.tgz", + "integrity": "sha512-czoqATrcnxgWb/nAkfyIrRp6Q8biYj7nGnL6zfhTcX+JKKpWHFBnb8uNMw/kZr7u++3Y3wYSYoZgHkCcsuBpBg==", + "license": "MIT", + "dependencies": { + "@types/fontkit": "^2.0.8", + "fontkit": "^2.0.4" + } + }, + "node_modules/fontkit": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/fontkit/-/fontkit-2.0.4.tgz", + "integrity": "sha512-syetQadaUEDNdxdugga9CpEYVaQIxOwk7GlwZWWZ19//qW4zE5bknOKeMBDYAASwnpaSHKJITRLMF9m1fp3s6g==", + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.12", + "brotli": "^1.3.2", + "clone": "^2.1.2", + "dfa": "^1.2.0", + "fast-deep-equal": "^3.1.3", + "restructure": "^3.0.0", + "tiny-inflate": "^1.0.3", + "unicode-properties": "^1.4.0", + "unicode-trie": "^2.0.0" + } + }, "node_modules/fraction.js": { "version": "4.3.7", "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", @@ -5682,9 +5815,9 @@ } }, "node_modules/jsesc": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", - "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", + "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", "dev": true, "license": "MIT", "bin": { @@ -6420,6 +6553,12 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/mdn-data": { + "version": "2.12.2", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.12.2.tgz", + "integrity": "sha512-IEn+pegP1aManZuckezWCO+XZQDplx1366JoVhTpMpBB1sPey/SbveZQUosKiKiGYjg1wH4pMlNgXbCiYgihQA==", + "license": "CC0-1.0" + }, "node_modules/merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", @@ -7084,6 +7223,26 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, "node_modules/node-fetch-native": { "version": "1.6.6", "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.6.6.tgz", @@ -7097,9 +7256,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", "dev": true, "license": "MIT" }, @@ -7148,6 +7307,12 @@ "ufo": "^1.5.4" } }, + "node_modules/ohash": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/ohash/-/ohash-2.0.11.tgz", + "integrity": "sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==", + "license": "MIT" + }, "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", @@ -7157,19 +7322,18 @@ } }, "node_modules/oniguruma-parser": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.5.4.tgz", - "integrity": "sha512-yNxcQ8sKvURiTwP0mV6bLQCYE7NKfKRRWunhbZnXgxSmB1OXa1lHrN3o4DZd+0Si0kU5blidK7BcROO8qv5TZA==", + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", "license": "MIT" }, "node_modules/oniguruma-to-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.1.0.tgz", - "integrity": "sha512-SNwG909cSLo4vPyyPbU/VJkEc9WOXqu2ycBlfd1UCXLqk1IijcQktSBb2yRQ2UFPsDhpkaf+C1dtT3PkLK/yWA==", + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", "license": "MIT", "dependencies": { - "emoji-regex-xs": "^1.0.0", - "oniguruma-parser": "^0.5.4", + "oniguruma-parser": "^0.12.1", "regex": "^6.0.1", "regex-recursion": "^6.0.2" } @@ -7797,9 +7961,9 @@ } }, "node_modules/react-refresh": { - "version": "0.14.2", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", - "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "version": "0.17.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.17.0.tgz", + "integrity": "sha512-z6F7K9bV85EfseRCp2bzrpyQ0Gkw1uLoCel9XBVWPg/TjRj94SkJzUTGfOa4bs7iJvBWtQG0Wq7wnI0syw3EBQ==", "dev": true, "license": "MIT", "engines": { @@ -7951,9 +8115,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", - "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -8059,6 +8223,12 @@ "node": ">=4" } }, + "node_modules/restructure": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/restructure/-/restructure-3.0.2.tgz", + "integrity": "sha512-gSfoiOEA0VPE6Tukkrr7I0RBdE0s7H1eFCDBk05l1KIQT1UIKNc5JZy6jdyW6eYH3aR3g5b3PuL77rq0hvwtAw==", + "license": "MIT" + }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", @@ -8326,17 +8496,17 @@ } }, "node_modules/shiki": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.2.1.tgz", - "integrity": "sha512-VML/2o1/KGYkEf/stJJ+s9Ypn7jUKQPomGLGYso4JJFMFxVDyPNsjsI3MB3KLjlMOeH44gyaPdXC6rik2WXvUQ==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.7.0.tgz", + "integrity": "sha512-ZcI4UT9n6N2pDuM2n3Jbk0sR4Swzq43nLPgS/4h0E3B/NrFn2HKElrDtceSf8Zx/OWYOo7G1SAtBLypCp+YXqg==", "license": "MIT", "dependencies": { - "@shikijs/core": "3.2.1", - "@shikijs/engine-javascript": "3.2.1", - "@shikijs/engine-oniguruma": "3.2.1", - "@shikijs/langs": "3.2.1", - "@shikijs/themes": "3.2.1", - "@shikijs/types": "3.2.1", + "@shikijs/core": "3.7.0", + "@shikijs/engine-javascript": "3.7.0", + "@shikijs/engine-oniguruma": "3.7.0", + "@shikijs/langs": "3.7.0", + "@shikijs/themes": "3.7.0", + "@shikijs/types": "3.7.0", "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" } @@ -8398,9 +8568,9 @@ } }, "node_modules/smol-toml": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.3.1.tgz", - "integrity": "sha512-tEYNll18pPKHroYSmLLrksq233j021G0giwW7P3D24jC54pQ5W5BXMsQ/Mvw1OJCmEYDgY+lrzT+3nNUtoNfXQ==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.4.1.tgz", + "integrity": "sha512-CxdwHXyYTONGHThDbq5XdwbFsuY4wlClRGejfE2NtwUtiHYsP1QtNsHb/hnj31jKYSchztJsaA8pSQoVzkfCFg==", "license": "BSD-3-Clause", "engines": { "node": ">= 18" @@ -8516,9 +8686,15 @@ } }, "node_modules/strnum": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", - "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.1.1.tgz", + "integrity": "sha512-7ZvoFTiCnGxBtDqJ//Cu6fWtZtc7Y3x+QOirG15wztbdngGSkht27o2pyGWrVy0b4WAy3jbKmnoK6g5VlVNUUw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + } + ], "license": "MIT" }, "node_modules/sucrase": { @@ -8721,12 +8897,12 @@ "license": "MIT" }, "node_modules/tinyglobby": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.12.tgz", - "integrity": "sha512-qkf4trmKSIiMTs/E63cxH+ojC2unam7rJ0WrauAzpT3ECNTxGRMlaXxVbfxMUC/w0LaYk6jQ4y/nGR9uBO3tww==", + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", "license": "MIT", "dependencies": { - "fdir": "^6.4.3", + "fdir": "^6.4.4", "picomatch": "^4.0.2" }, "engines": { @@ -8737,9 +8913,9 @@ } }, "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.4.3", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.3.tgz", - "integrity": "sha512-PMXmW2y1hDDfTSRc9gaXIuCCRpuoz3Kaz8cUelp3smouvfT632ozg2vrT6lJsHKKOF59YLbOGfAWGUcKEfRMQw==", + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", "license": "MIT", "peerDependencies": { "picomatch": "^3 || ^4" @@ -8773,6 +8949,12 @@ "node": ">=8.0" } }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, "node_modules/trim-lines": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", @@ -8890,10 +9072,10 @@ } }, "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", - "devOptional": true + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" }, "node_modules/type-check": { "version": "0.4.0", @@ -8976,9 +9158,10 @@ "license": "MIT" }, "node_modules/ultrahtml": { - "version": "1.5.3", - "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.5.3.tgz", - "integrity": "sha512-GykOvZwgDWZlTQMtp5jrD4BVL+gNn2NVlVafjcFUJ7taY20tqYdwdoWBFy6GBJsNTZe1GkGPkSl5knQAjtgceg==" + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ultrahtml/-/ultrahtml-1.6.0.tgz", + "integrity": "sha512-R9fBn90VTJrqqLDwyMph+HGne8eqY1iPfYhPzZrvKpIfwkWZbcYlfpsb8B9dTvBfpy1/hqAD7Wi8EKfP9e8zdw==", + "license": "MIT" }, "node_modules/uncrypto": { "version": "0.1.3", @@ -8986,6 +9169,36 @@ "integrity": "sha512-Ql87qFHB3s/De2ClA9e0gsnS6zXG27SkTiSJwjCc9MebbfapQfuPzumMIUMi38ezPZVNFcHI9sUIepeQfw8J8Q==", "license": "MIT" }, + "node_modules/unicode-properties": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.4.1.tgz", + "integrity": "sha512-CLjCCLQ6UuMxWnbIylkisbRj31qxHPAurvena/0iwSVbQ2G1VY5/HjV0IRabOEbDHlzZlRdCrD4NhB0JtU40Pg==", + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-properties/node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/unicode-trie": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", @@ -9013,6 +9226,17 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/unifont": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/unifont/-/unifont-0.5.2.tgz", + "integrity": "sha512-LzR4WUqzH9ILFvjLAUU7dK3Lnou/qd5kD+IakBtBK4S15/+x2y9VX+DcWQv6s551R6W+vzwgVS6tFg3XggGBgg==", + "license": "MIT", + "dependencies": { + "css-tree": "^3.0.0", + "ofetch": "^1.4.1", + "ohash": "^2.0.0" + } + }, "node_modules/unist-util-find-after": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", @@ -9132,9 +9356,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", - "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", "dev": true, "funding": [ { @@ -9153,7 +9377,7 @@ "license": "MIT", "dependencies": { "escalade": "^3.2.0", - "picocolors": "^1.1.0" + "picocolors": "^1.1.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -9223,14 +9447,17 @@ } }, "node_modules/vite": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-6.2.3.tgz", - "integrity": "sha512-IzwM54g4y9JA/xAeBPNaDXiBF8Jsgl3VBQ2YQ/wOY6fyW3xMdSoltIV3Bo59DErdqdE6RxUfv8W69DvUorE4Eg==", + "version": "6.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-6.3.5.tgz", + "integrity": "sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==", "license": "MIT", "dependencies": { "esbuild": "^0.25.0", + "fdir": "^6.4.4", + "picomatch": "^4.0.2", "postcss": "^8.5.3", - "rollup": "^4.30.1" + "rollup": "^4.34.9", + "tinyglobby": "^0.2.13" }, "bin": { "vite": "bin/vite.js" @@ -9293,6 +9520,32 @@ } } }, + "node_modules/vite/node_modules/fdir": { + "version": "6.4.6", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.6.tgz", + "integrity": "sha512-hiFoqpyZcfNm1yc4u8oWCf9A2c4D3QjCrks3zmoVKVxpQRzmPNar1hUJcBG2RQHvEVGDN+Jm81ZheVLAQMK6+w==", + "license": "MIT", + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/vite/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/vitefu": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.6.tgz", @@ -9557,6 +9810,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", diff --git a/package.json b/package.json index 6d8808a..2830649 100644 --- a/package.json +++ b/package.json @@ -14,7 +14,7 @@ }, "dependencies": { "@astrojs/check": "^0.9.4", - "@astrojs/rss": "^4.0.10", + "@astrojs/rss": "^4.0.12", "@fullcalendar/core": "^6.1.15", "@fullcalendar/daygrid": "^6.1.15", "@fullcalendar/google-calendar": "^6.1.15", @@ -23,7 +23,7 @@ "@fullcalendar/resource-timeline": "^6.1.15", "@giscus/react": "^3.0.0", "@resvg/resvg-js": "^2.6.2", - "astro": "^5.0.3", + "astro": "^5.11.0", "fuse.js": "^7.0.0", "lodash.kebabcase": "^4.1.1", "remark-collapse": "^0.1.2", @@ -33,9 +33,9 @@ "typescript": "^5.6.3" }, "devDependencies": { - "@astrojs/react": "^4.0.0", - "@astrojs/sitemap": "^3.2.1", - "@astrojs/tailwind": "^5.1.3", + "@astrojs/react": "^4.3.0", + "@astrojs/sitemap": "^3.4.1", + "@astrojs/tailwind": "^6.0.2", "@tailwindcss/typography": "^0.5.15", "@types/github-slugger": "^1.3.0", "@types/lodash.kebabcase": "^4.1.9", From b898f784b8b4c44692c7fb16104b754fd0fa6017 Mon Sep 17 00:00:00 2001 From: Shawn Wang Date: Mon, 7 Jul 2025 08:12:39 +0800 Subject: [PATCH 2/2] fix format --- README.md | 4 +- src/content/blog/call-for-talks.md | 26 +++---- src/content/blog/chewing.md | 8 +- src/content/blog/kind.md | 112 ++++++++++++---------------- src/content/blog/life.md | 116 +++++++++++++++-------------- src/content/blog/local-k8s.md | 24 +++--- src/content/blog/meetup-2412.md | 7 +- src/content/blog/meetup-2503.md | 21 +++--- src/content/blog/meetup-2504.md | 32 ++++---- src/content/blog/meetup-2505.md | 5 +- src/content/blog/meetup-2507.md | 8 +- src/content/blog/nomad_explore.md | 5 +- 12 files changed, 167 insertions(+), 201 deletions(-) diff --git a/README.md b/README.md index 576401c..1365174 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,5 @@ [![hackmd-github-sync-badge](https://hackmd.io/0PNB9hIfSoO0gHuyUPdvNg/badge)](https://hackmd.io/0PNB9hIfSoO0gHuyUPdvNg) - # About US KaLUG 是由一群熱愛 Open Source 的朋友所組成的團體. @@ -22,12 +21,11 @@ Welcome to join our planet! Please leave your blog url in the below disqus! - main site: kalug.tw - telegram: https://t.me/+PQGfF2IkjlYxOTA1 - discord: https://discord.gg/YQ4mvuVQHj -- youtube: https://youtube.com/@kalug-tw +- youtube: https://youtube.com/@kalug-tw - lu.ma: https://lu.ma/kalug.tw - hackmd: https://hackmd.io/@kalug - github - https://github.com/kalug - ## meetup@SecondSpace 實體聚會, Just for Fun 為最高原則, 每次會準備1~2主題 (10~30mins 分享), 方便新朋友參與討論. diff --git a/src/content/blog/call-for-talks.md b/src/content/blog/call-for-talks.md index 928e751..8b587cb 100644 --- a/src/content/blog/call-for-talks.md +++ b/src/content/blog/call-for-talks.md @@ -10,14 +10,11 @@ description: 許願池+講者徵求中, 講者報名 https://kalug-tw.neetocal.c [![hackmd-github-sync-badge](https://hackmd.io/0oDa0w0ESau0Qo6kCdoPOA/badge)](https://hackmd.io/0oDa0w0ESau0Qo6kCdoPOA) - - # 許願池: (歡迎大家留想討論的議題) + - zfs or brtfs - cosmic DE https://github.com/pop-os/cosmic-epoch - - # 講者 or 主持人 報名 Hello, 麻煩有意願分享議題的朋友, 留下你的議題資訊, 或 留下您有興趣的議題, 我們在一起找看看講者; 您如果對該議題有興趣, 可以在 講者後面 留 + 或註解, 來幫忙當主持人也行 @@ -25,18 +22,19 @@ Hello, 麻煩有意願分享議題的朋友, 留下你的議題資訊, 或 留 或直接用 neetocal, 麻煩講者選方便的時間, 選定後主持人會與您聯繫 https://kalug-tw.neetocal.com/kalug-night-talks - ## 遠端 週四晚 或依照講者時間 提前一週公佈 + - Johnny Sung - 帶來「地端自建 Kubernetes (K8s) 小宇宙」 (時間 12月 左右) - kanru - 聊 chewing 架構 + 未來方向 - Jim Lou - 聊美東 亞利桑那 軟體人員開發經驗 -- Jacob - 自建 AI 輔助 學中文工具, 卡拉ok式字幕, +- Jacob - 自建 AI 輔助 學中文工具, 卡拉ok式字幕, + ## 實體聚會 每月一次 週六下午 +- 樣本 -* 樣本 ``` -## HackMD github dir sync +## HackMD github dir sync * 講者: shawn111 * 時間: 12 月中 * 備註: 純線上 @@ -51,14 +49,14 @@ https://kalug-tw.neetocal.com/kalug-night-talks --- - ## Proxmox VE CLI -* 講者: lloyd -* 時間: 11/14 + +- 講者: lloyd +- 時間: 11/14 ## bootc, a kind of bootable container -* 講者: shawn111 + -* 時間: 11/5 (toocon) +- 講者: shawn111 + +- 時間: 11/5 (toocon) -就是你... \ No newline at end of file +就是你... diff --git a/src/content/blog/chewing.md b/src/content/blog/chewing.md index 9aacdfe..896ce5e 100644 --- a/src/content/blog/chewing.md +++ b/src/content/blog/chewing.md @@ -6,7 +6,7 @@ tags: - chewing - rust - corrosion-rs - + description: 上次在 H4 的 新酷音 討論很有趣只可惜現場收音難度高, Kan-Ru 一直都還在幫 新酷音 加新功能, 比如支援拼音, 而且是有聲調的拼音 rust 話後, 多了一些可能性, 如果直接嵌在app裡面, 編成 wasm, 塞到網站裡... 直接面對 開發者的難得機會, 每個 OpenSource 中文圈朋友們的強需求呀.... 也讓我們聊聊 RIIR (Rewrite It In Rust) 的有趣故事吧 youtube: xobLUxdZ_DQ @@ -15,18 +15,16 @@ author: kanru [![hackmd-github-sync-badge](https://hackmd.io/9CYpWa5hTKWmpGt3eweOiQ/badge)](https://hackmd.io/9CYpWa5hTKWmpGt3eweOiQ) - 上次在 H4 的 新酷音 討論很有趣只可惜現場收音難度高, Kan-Ru 一直都還在幫 新酷音 加新功能, 比如支援拼音, 而且是有聲調的拼音 rust 話後, 多了一些可能性, 如果直接嵌在app裡面, 編成 wasm, 塞到網站裡... 直接面對 開發者的難得機會, 每個 OpenSource 中文圈朋友們的強需求呀.... 也讓我們聊聊 RIIR (Rewrite It In Rust) 的有趣故事吧 - ### cmake + - corrosion-rs/corrosion capi - ninepatch fuzzer -cargo alf build \ No newline at end of file +cargo alf build diff --git a/src/content/blog/kind.md b/src/content/blog/kind.md index f068dc3..6132387 100644 --- a/src/content/blog/kind.md +++ b/src/content/blog/kind.md @@ -6,18 +6,16 @@ tags: - kubernetes - kind - podman - + description: "let's run kind in podman" youtube: b-b9Nahro9w luma: dt8l2tnm googlemap: omXnciLVyBBzHcLXA -meetupLocation: Second space 捷運中央公園站 三號出口 R9 Exit 3 - +meetupLocation: Second space 捷運中央公園站 三號出口 R9 Exit 3 --- [![hackmd-github-sync-badge](https://hackmd.io/o6XKOGGyREyfbxsSDNveJg/badge)](https://hackmd.io/o6XKOGGyREyfbxsSDNveJg) - 本次活動我們會在 second space 與 線上同時舉行 上次 Johnny 幫我們介紹 本地端 如何建 kubernetes, 而 單純 本地測試 還有一個更輕量的選擇 kind @@ -27,34 +25,31 @@ Shawn 打算介紹如何使用 用 podman 使用 kind, 以及 podman 一些好 - daemonless / quadlet - podmansh - --- # kind ### kubernetes in docker (or podman) - :::info 2025/01 KaLUG.tw meetup / Shawn -👉[youtube](https://www.youtube.com/watch?v=b-b9Nahro9w) / [github demo code](https://github.com/kalug/kind-demo)👈 +👉[youtube](https://www.youtube.com/watch?v=b-b9Nahro9w) / [github demo code](https://github.com/kalug/kind-demo)👈 ::: :::danger ⚡ Don't use for PRODUTION env ⚡ ::: ----- +--- # Outline -* what's kind? -* other choices -* inside kind +- what's kind? +- other choices +- inside kind - docker in docker - - LoadBalancers - -cloud-provider-kind - + - LoadBalancers - + cloud-provider-kind :::info 👍 using kind for dev or testing @@ -65,36 +60,36 @@ cloud-provider-kind ## What's kind - Kubernetes in Docker -https://kind.sigs.k8s.io/ + https://kind.sigs.k8s.io/ - Go packages implementing cluster creation, image build, etc. - A command line interface (kind) built on these packages. - Docker image(s) written to run systemd, Kubernetes, etc. - kubetest (WIP) ----- +--- ### Deep Dive: Kind + Nov 22, 2019 {%youtube tT-GiZAr6eQ%} ----- +--- ### Deep Dive: Kind -* test kubernetes -* E2E testing -* 7:30 Networking Deep Dive (kindnet) - +- test kubernetes +- E2E testing +- 7:30 Networking Deep Dive (kindnet) ----- +--- ### Testing your K8s apps with KIND May 24, 2019 {%youtube 8KtmevMFfxA %} ----- +--- ### Quick start @@ -105,7 +100,7 @@ https://kind.sigs.k8s.io/docs/user/quick-start/ curl -Lo ~/bin/kind https://kind.sigs.k8s.io/dl/v0.26.0/kind-linux-amd64 && chmod +x ~/bin/kind ``` -``` +``` $ kind create cluster ``` @@ -120,13 +115,13 @@ NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTE kind-control-plane Ready control-plane 52s v1.32.0 10.89.0.2 Debian GNU/Linux 12 (bookworm) 6.13.0-0.rc1.20241206gitb8f52214c61a.19.fc42.x86_64 containerd://1.7.24 ``` ----- +--- ### What is a kubernetes ![k](https://kubernetes.io/images/docs/components-of-kubernetes.svg) ----- +--- ### What is a kind cluster? - kind nodes @@ -151,7 +146,7 @@ root@kind-control-plane:/# systemctl status kubelet.slice ... ``` ----- +--- ### containers in kind node @@ -170,26 +165,25 @@ CONTAINER IMAGE # Others? - Kind < k3d < minikube ----- - -| | features | vm | vendor | LB | -| -------- | -------- | -------- | ------ | --- | -| kind | lite | no | sig-testing | cloud-provider-kind | -| minikube | full features | yes | sig-cluster-lifecycle | mikikube tunnel | -| kubeadm | - | - | Kubernetes | - | -| k3d | k3s | - | k3s | via Ingress (recommended) | -| microk8s | snap | yes | canonical | MetalLB | -| [capid](https://cluster-api.sigs.k8s.io/) | cluster-api | no | sig-cluster-api | | +--- +| | features | vm | vendor | LB | +| ----------------------------------------- | ------------- | --- | --------------------- | ------------------------- | +| kind | lite | no | sig-testing | cloud-provider-kind | +| minikube | full features | yes | sig-cluster-lifecycle | mikikube tunnel | +| kubeadm | - | - | Kubernetes | - | +| k3d | k3s | - | k3s | via Ingress (recommended) | +| microk8s | snap | yes | canonical | MetalLB | +| [capid](https://cluster-api.sigs.k8s.io/) | cluster-api | no | sig-cluster-api | | ----- +--- ## tips: ### kubie + A more powerful alternative to kubectx and kubens https://github.com/sbstp/kubie @@ -198,10 +192,10 @@ https://github.com/sbstp/kubie - kubie exec ### known-issues + - https://kind.sigs.k8s.io/docs/user/known-issues/ - like max_user_instances - --- ## Inside kind @@ -214,20 +208,20 @@ https://github.com/sbstp/kubie --- ### Docker in Docker + #### container inside container - \-\-privileged - Linux Security Modules - - AppArmor or SELinux + - AppArmor or SELinux ----- +--- #### privileged mode -https://learn.snyk.io/lesson/container-runs-in-privileged-mode/ - +https://learn.snyk.io/lesson/container-runs-in-privileged-mode/ ----- +--- ### systemd in Docker @@ -248,26 +242,23 @@ RUN passwd -d root ENTRYPOINT [ "/lib/systemd/systemd" ] ``` ----- +--- ## more deeper - kubelet - https://kubernetes.io/docs/reference/command-line-tools-reference/kubelet/ -- kubeadm - +- kubeadm - - kubelet plugin - nvkind - https://github.com/NVIDIA/nvkind/ - cri-o in kind ----- +--- ### kubeadm https://kubernetes.io/docs/setup/production-environment/tools/kubeadm/create-cluster-kubeadm/ - - - ----- +--- cri-o in kind https://github.com/cri-o/cri-o/blob/main/tutorials/crio-in-kind.md @@ -280,7 +271,6 @@ CNI - https://github.com/containernetworking/cni - cni/net.d/10-kindnet.conflist - --- ### LoadBalancers - cloud-provider-kind @@ -291,8 +281,7 @@ https://github.com/kubernetes-sigs/cloud-provider-kind {%youtube U6_-y24rJnI %} - ----- +--- ### cloud-provider-kind - one service one kindccm @@ -303,21 +292,20 @@ a0a8b3c02bab docker.io/envoyproxy/envoy:v1.30.1 ``` ----- +--- -* kubectl port-forward service/doc-controller 8080:8080 +- kubectl port-forward service/doc-controller 8080:8080 https://kccnceu2024.sched.com/event/1YhhY/keep-calm-and-load-balance-on-kind-antonio-ojea-benjamin-elder-google - ----- +--- ## Other tips + - Local Registry - kubie - ----- +--- ## nvkind @@ -328,5 +316,3 @@ https://kccnceu2024.sched.com/event/1YhhY/keep-calm-and-load-balance-on-kind-ant - docker only {%youtube jnHlwZKJiL4 %} - - diff --git a/src/content/blog/life.md b/src/content/blog/life.md index 3df1792..6786a26 100644 --- a/src/content/blog/life.md +++ b/src/content/blog/life.md @@ -8,19 +8,18 @@ description: A Guide for tech people try to live in Kaohsiung featured: true --- - # 高雄生活 Kaohsiung Life Guide [![hackmd-github-sync-badge](https://hackmd.io/lio04o0jQNa267vYCoga2g/badge)](https://hackmd.io/lio04o0jQNa267vYCoga2g) - ## Why Taiwan & why Kaohsiung? + - super friendly people, delicious foods, good security and excellent medical quality. - convenient public transportation. - - train + MRT + LRT + youbike (public bike) - + - train + MRT + LRT + youbike (public bike) ## 工作 + - 高雄軟體園區 - 加工出口區(?) 不確定有沒有軟體公司 - [幸福高雄移居津貼](http://labor.kcg.gov.tw/LaborBenefit/Welfare/welfare02.htm) @@ -29,57 +28,56 @@ featured: true ### Best Practice #### 開公司 - - [funmula](http://funmula.com/)/[biggo](http://biggo.com.tw) - - [webduino](https://webduino.io/) + +- [funmula](http://funmula.com/)/[biggo](http://biggo.com.tw) +- [webduino](https://webduino.io/) #### 說服老闆開南部分公司 - - KKBOX 高雄分公司 高軟 - - QNAP 四維路 - - 緯創 - - 鴻海 + +- KKBOX 高雄分公司 高軟 +- QNAP 四維路 +- 緯創 +- 鴻海 #### 找工作經驗 - - [[心得] 高雄非新人找工作心得]( -https://moptt.tw/p/Soft_Job.M.1529562011.A.0AA) +- [[心得] 高雄非新人找工作心得](https://moptt.tw/p/Soft_Job.M.1529562011.A.0AA) ### 本地社群 - [KaLUG.tw](https://kalug.tw/) - - Kaohsiung Linux User Group: 由一群熱愛 Linux / open source 的高雄人所組成的社群 - - 實體聚會:每月第三個周末聚會技術分享 - - 線上聚會:Night Talk - 週四晚, 但可能依講者時間調整 + + - Kaohsiung Linux User Group: 由一群熱愛 Linux / open source 的高雄人所組成的社群 + - 實體聚會:每月第三個周末聚會技術分享 + - 線上聚會:Night Talk - 週四晚, 但可能依講者時間調整 - [TOOCON](https://www.facebook.com/groups/toocon/) - - TOOCON 是由 GDG 高雄主辦,堅持大順路以南的中小型軟體相關交流聚會,因為活動跟二有關連,而且都在晚上舉辦,所以用 TWO 的諧音 TOO,於是中文名稱就叫「天黑黑月會」。 - - 實體聚會:每個月第二週的星期二晚上七點到九點,二個小時,二位講者 + + - TOOCON 是由 GDG 高雄主辦,堅持大順路以南的中小型軟體相關交流聚會,因為活動跟二有關連,而且都在晚上舉辦,所以用 TWO 的諧音 TOO,於是中文名稱就叫「天黑黑月會」。 + - 實體聚會:每個月第二週的星期二晚上七點到九點,二個小時,二位講者 - [開發者Buffet](https://www.facebook.com/groups/buffet.dev) - - 我們是一群在台灣科技研討會結識的夥伴,自疫情期間,我們所在的城市技術社群與聚會逐漸減少。希望能保持討論和交流的熱度,因此我們決定發起聚會。 在這裏會舉辦各種形式的活動,議題大致上包括但不限於前、後端、UI/UX、ML、軟體開發等,希望大家能在這裡找到並盡情享受自己感興趣的事物,因此取名為【開發者 Buffet】。 - - 實體聚會:每月的最後一個周二晚上 19:00 - 21:00,在高雄的咖啡廳與最多 10 位左右的開發者們一起輕鬆聊聊天,歡迎任何主題 ☕ + - 我們是一群在台灣科技研討會結識的夥伴,自疫情期間,我們所在的城市技術社群與聚會逐漸減少。希望能保持討論和交流的熱度,因此我們決定發起聚會。 在這裏會舉辦各種形式的活動,議題大致上包括但不限於前、後端、UI/UX、ML、軟體開發等,希望大家能在這裡找到並盡情享受自己感興趣的事物,因此取名為【開發者 Buffet】。 + - 實體聚會:每月的最後一個周二晚上 19:00 - 21:00,在高雄的咖啡廳與最多 10 位左右的開發者們一起輕鬆聊聊天,歡迎任何主題 ☕ - [MOPCON](https://fb.me/mopcon) - [KSDG](https://facebook.com/groups/KSDGroup) - [GDG Kaohsiung](https://www.facebook.com/groups/1416205511963346) - GDG DevFest Annual Events - Global Game Jam Kaohsiung / KIMU (For Unity / Game Developers) - - - ### 找房子、租房子、價格地帶 - 高價位地區 - 中位數地區 - 低價位地區 - ### 高雄主要生活圈 - - 南高雄 - - 北高雄 - - 鳳山、近屏東 - - 燕巢、義大大學城 - - 外圍區域: 茄萣、路竹、那瑪夏 +- 南高雄 +- 北高雄 +- 鳳山、近屏東 +- 燕巢、義大大學城 +- 外圍區域: 茄萣、路竹、那瑪夏 ### 交通 Traffic @@ -88,16 +86,18 @@ https://moptt.tw/p/Soft_Job.M.1529562011.A.0AA) TPASS 月票 如果待時間比較常可以考慮 高雄的交通工具有: - - MRT (高雄捷運) - - LRT (高雄輕軌,環狀線) - - UBike (共享單車) + +- MRT (高雄捷運) +- LRT (高雄輕軌,環狀線) +- UBike (共享單車) 高雄的共享車服務有 (需要駕照): - - GoShare (機車) - - iRent (機車、汽車) - - Wemo (機車) -在高雄,選擇搭乘捷運公共設施非常方便,由於高雄的許多美食會座落在大街小巷或是捷運難以到達的地方,為了講求時間效率,機車、汽車仍然是受歡迎的交通工具,建議獲得一張機車駕照。 (*請勿使用汽車駕照騎機車、國際駕照不可以騎機車!!) 請注意騎乘機車、汽車時禁止使用手機,若需要講電話請開免持聽筒模式。 +- GoShare (機車) +- iRent (機車、汽車) +- Wemo (機車) + +在高雄,選擇搭乘捷運公共設施非常方便,由於高雄的許多美食會座落在大街小巷或是捷運難以到達的地方,為了講求時間效率,機車、汽車仍然是受歡迎的交通工具,建議獲得一張機車駕照。 (\*請勿使用汽車駕照騎機車、國際駕照不可以騎機車!!) 請注意騎乘機車、汽車時禁止使用手機,若需要講電話請開免持聽筒模式。 ### 考機車駕照 @@ -113,8 +113,8 @@ TPASS 月票 如果待時間比較常可以考慮 台灣的行動網路非常方便,尤其通常都有無限量的服務,價格便宜網路也很好,如果住處不方便牽線,也可以到電信局申請無限量的網路傳輸方案,但是若有低延遲需求,恐怕還是需要使用實體網路線服務。 - - 中華電信 - - 台灣大哥大 +- 中華電信 +- 台灣大哥大 ### 水電 @@ -129,22 +129,24 @@ TPASS 月票 如果待時間比較常可以考慮 理論上在咖啡廳短時間把電腦放置在桌上去上廁所不會被偷走,但仍建議有重要物品要隨身攜帶,電腦上鎖或是購買防盜鎖。 ### Coworking Space + - second space 紅線R9站 Exit3 https://www.secondspace.dev/ - - 價位 NT$180/1日 NT$1000/1月, Member Plus NT$1799/1月 - - good for individual, startup. people who love community - - super good location and 24/7 Unlimited Access - - small event: 5~30 people + - 價位 NT$180/1日 NT$1000/1月, Member Plus NT$1799/1月 + - good for individual, startup. people who love community + - super good location and 24/7 Unlimited Access + - small event: 5~30 people - startupterrace 亞灣新創園 https://www.startupterrace.tw/ - - good for startup (Reserved seat or lab) - - good price NT$3500 for a seat - - capacity: 50~250 people for event + - good for startup (Reserved seat or lab) + - good price NT$3500 for a seat + - capacity: 50~250 people for event - megabay 大港創建 https://megabay.kcg.gov.tw/ - - capacity: 50~150 people for event + - capacity: 50~150 people for event - DAKUO高雄市數位內容創意中心, 214號 新樂街, 高雄市, 80341 https://dakuo.koda.net.tw/ - - must for events - - capacity: 50~350 people for event + - must for events + - capacity: 50~350 people for event ## 大學 + - 高雄大學 - 中山大學 - 高雄師範大學 @@ -153,23 +155,23 @@ TPASS 月票 如果待時間比較常可以考慮 - 交通大學 ## Education + - Kaohsiung American School - pre-K - K-12 - Kaohsiung Korean School - https://okep.moe.go.kr/koschl/orgInfo/eng_info/eng_view.do?edu_inst_id=000100110001 - 高雄市日僑學校 [高雄日本人学校ホームページ](https://www.kaohsiung-js.com/) - ## 遠端工作者歡迎的咖啡廳 + - 『羅斯朵』X『幾分』|咖啡X酒吧 (凹子底店) https://maps.app.goo.gl/F3qdg8LJEb6UBZG39 - [Mars睦工場](https://rainieis.tw/mars-cube/) - 咖啡覺醒中山店 (每天仍有需多外國人:美國、以色列、法國人常常在這裡工作) - ## 餐廳 - ## 自然生態環境 + - 都會公園 97公頃 不確定是第一或第二大台灣人造公園 -- 蚵仔寮+援中港溼地公園 蚵仔寮南沙灘 雖然不比西子灣大, 近魚市場,游泳 請遠離肉粽 +- 蚵仔寮+援中港溼地公園 蚵仔寮南沙灘 雖然不比西子灣大, 近魚市場,游泳 請遠離肉粽 - 後勁溪 - 蓮池潭 - 蓮潭滑水 - 愛河 @@ -180,6 +182,7 @@ TPASS 月票 如果待時間比較常可以考慮 - 壽山/柴山 ## 溜小孩的點 + - 壽山動物園 Shoushan Zoo https://zoo.kcg.gov.tw/ - Lotus WakePark 蓮潭滑水主題樂園 https://www.facebook.com/LotusWakePark/ - 橋頭糖廠 @@ -190,6 +193,7 @@ TPASS 月票 如果待時間比較常可以考慮 - 衛武營都會公園 ## 藝文展演場 + - [衛武營國家藝術文化中心](https://www.npac-weiwuying.org/) - [高雄市立文化中心](https://khcc.kcg.gov.tw/rwd_home03.aspx?ID=$M102&IDK=2&EXEC=L) - [大東文化藝術中心](https://dadongcenter.kcg.gov.tw/home01.aspx?ID=1) @@ -198,12 +202,12 @@ TPASS 月票 如果待時間比較常可以考慮 - [內惟藝術中心](https://www.nwac.org.tw/) ## 醫療院所 -- 醫學中心 - - 高醫 - - 榮總 - - 義大 - - 長庚 +- 醫學中心 + - 高醫 + - 榮總 + - 義大 + - 長庚 ## 參考 diff --git a/src/content/blog/local-k8s.md b/src/content/blog/local-k8s.md index 5a29f29..26b1f19 100644 --- a/src/content/blog/local-k8s.md +++ b/src/content/blog/local-k8s.md @@ -17,51 +17,49 @@ author: Johnny Sung [![hackmd-github-sync-badge](https://hackmd.io/B_74ukSOQniZ2-hcB0Cmzg/badge)](https://hackmd.io/B_74ukSOQniZ2-hcB0Cmzg) - - - ### slide: [Kubernetes 地端自建 v.s. GKE,哪個更適合你? @Devfest Taipei 2024 | PPT](https://www.slideshare.net/slideshow/kubernetes-v-s-gke-devfest-taipei-2024/273727315) - #### CAP + - Consistency - Availability - Partition tolerance #### kubernetes 10 years + - Kubernetes v1.32 (2024/12) POD - replica Service - https://kubernetes.io/docs/concepts/services-networking/service/ + - ClusterIP - NodePort - LoadBalancer -PVC - PV + PVC - PV Kustomize - https://kustomize.io/ Helm - https://helm.sh/ Local k8s distro + - kubeadm - - cluster-api https://cluster-api.sigs.k8s.io/ + - cluster-api https://cluster-api.sigs.k8s.io/ - https://www.rancher.com/ - k3s - kind - https://kind.sigs.k8s.io/ CNI + - Flannel - Calico - Cilium GPU operator = https://github.com/NVIDIA/gpu-operator +地端離線 airgap install - -地端離線 airgap install - cri-dockerd - https://mirantis.github.io/cri-dockerd/ - ### swap 預設建議關掉 @@ -69,14 +67,14 @@ cri-dockerd - https://mirantis.github.io/cri-dockerd/ Kubernetes 1.28: Beta support for using swap on Linux https://kubernetes.io/blog/2023/08/24/swap-linux-beta/ - ### CRI + - dockerd-cri - cri-o - containerd - crictl - - https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/ - + - https://kubernetes.io/docs/tasks/debug/debug-cluster/crictl/ ### Netman + https://drive.google.com/file/d/1JnBymxdgXBrRZycvWtOszkl04Gony7n0/view?fbclid=IwZXh0bgNhZW0CMTAAAR2RmfiCzBxlKNjXpu1l8zsuUJF4BAwwI6oqiJgxcbSa4RtfgnPGdadxAWw_aem_jUl1_c8KmdJ6vCh2dFr8LQ diff --git a/src/content/blog/meetup-2412.md b/src/content/blog/meetup-2412.md index d6e3838..e5e2b94 100644 --- a/src/content/blog/meetup-2412.md +++ b/src/content/blog/meetup-2412.md @@ -18,16 +18,15 @@ luma: nh5298rs [![hackmd-github-sync-badge](https://hackmd.io/lpcCZkdhRR-wu-1u3NUMZw/badge)](https://hackmd.io/lpcCZkdhRR-wu-1u3NUMZw) - 具體更新詳見 https://lu.ma/kalug.tw ## Myron - 聊 2025 AI發展 - - ## Netman 一起聊 聊 tech & 國際友善 / Let's Hack with global friends + - https://x.com/HackerHouseTW ## RustDesk & moonlight - remote + - 日落 - https://rustdesk.com/ -- mydiveking https://moonlight-stream.org/ 打電動的好幫手 \ No newline at end of file +- mydiveking https://moonlight-stream.org/ 打電動的好幫手 diff --git a/src/content/blog/meetup-2503.md b/src/content/blog/meetup-2503.md index a17c923..a45fca3 100644 --- a/src/content/blog/meetup-2503.md +++ b/src/content/blog/meetup-2503.md @@ -19,7 +19,6 @@ youtube: YvnpwDVrJ2k [![hackmd-github-sync-badge](https://hackmd.io/9LzIkboFTManbksZzdDGfA/badge)](https://hackmd.io/9LzIkboFTManbksZzdDGfA) - 共筆歡迎編輯 Please feel free to help us update the content. @@ -28,16 +27,21 @@ Please feel free to help us update the content. # MCP ## mcp -- 技術難點: llm 的token window limitation - - 裝100個工具, 打個hi, 就要送100 次,所以裝越多, token 會成等比級數消耗 - - Content Window 不只是 MCP 的技術難點. 也是 RAG 的. 也是 ChatHistory 的. 講起來LLM不論走那個方向都有這個難題. + +- 技術難點: llm 的token window limitation + - 裝100個工具, 打個hi, 就要送100 次,所以裝越多, token 會成等比級數消耗 + - Content Window 不只是 MCP 的技術難點. 也是 RAG 的. 也是 ChatHistory 的. 講起來LLM不論走那個方向都有這個難題. ## two types of MCP connections: + ### MCP-stdio + ### MCP-SSE - server-sent events + - MCP 目前沒有 auth跟 authorization, 也沒有 package management 。credentials 是pre-configured # Dive + - AI PC 支援比android 支援更有機會,因爲AI PC 沒有應用。 - 引述一兩個 Reddit 上有人說:實際上基本上沒人在乎MCP,- Google 基本上不在乎MCP (反串要註明) @@ -45,24 +49,23 @@ Please feel free to help us update the content. - MCP host 只需要一個, 不會裝很多個. 是 MCP 的 Tools 裝的越多. tools desc 就越多, 就算沒有呼叫到的工具, token用量也會倍增. ## Why do Dive + - Dive 有 6000 使用者。 - Dive 開源跨平台,透過很多MCP host, 能做到比perplexity 更好的體驗,例如直接用playwright 開browser 找資料 - 不缺資金,但在台灣人很難找人做Dive。 - 現在做AI 跟以前做search engine 在做的事很像 - 越來越少人用 Google (so am I) -## Dive backend (aka, Dived) - +## Dive backend (aka, Dived) ## quick thought -- Tyson - 要支援 human in the loop 的 EUDI wallet auth/authorization 要改 dived 。 - - +- Tyson - 要支援 human in the loop 的 EUDI wallet auth/authorization 要改 dived 。 ## Monthly Tip sharing ### steno keyboard ### aichat + ### zeco: zellij session sharing helper diff --git a/src/content/blog/meetup-2504.md b/src/content/blog/meetup-2504.md index 6e911e8..2855eab 100644 --- a/src/content/blog/meetup-2504.md +++ b/src/content/blog/meetup-2504.md @@ -14,7 +14,6 @@ description: "Please add any topics that you like to share" [![hackmd-github-sync-badge](https://hackmd.io/gQ5X7PN0RN6zVD1KqpZEoQ/badge)](https://hackmd.io/gQ5X7PN0RN6zVD1KqpZEoQ) - Our in-person meetup will host by English and Mandarin. If you like Linux or other Open Source related topics, welcome to join us. @@ -22,11 +21,12 @@ How to enter second space https://api.cubeworks.org:8081/auth/doors/temp-key?k=G1GFxKZyy0Hq60mwh7T3 - --- + Please add any topics that you like to share or discuss. Topics: + - Sesame CSM-1b --- @@ -51,14 +51,12 @@ Demoscene 社群(35%) – 全球性的即時視聽藝術社群,其他活 [Revision 2025 活動官網](https://2025.revision-party.net/) - --- + ## nomad explore hub 數位遊牧 臺東 - https://drive.google.com/drive/folders/1fdjk5e6NLSHjKsRDIIhP7w0DOXy73AaN?usp=sharing -- - - +- ## openwrt x86 @@ -67,7 +65,9 @@ Demoscene 社群(35%) – 全球性的即時視聽藝術社群,其他活 用一台一萬多(16 核 64G 1T)就可以作為 router 機 WebUI 做的不錯,CLI 界面也做的很好 → 可以直接問 AI cli 怎麼下指令 + #### 優點 + - vm image backup - 多線路備援 - 一機多用途善用 IP 資源 @@ -83,24 +83,18 @@ WebUI 做的不錯,CLI 界面也做的很好 → 可以直接問 AI cli 怎麼 ## release party - - -* kernel 6.14 -* -* gnome 48 -* Orca - https://help.ubuntu.com/stable/ubuntu-help/a11y-screen-reader.html.en +- kernel 6.14 +- +- gnome 48 +- Orca - https://help.ubuntu.com/stable/ubuntu-help/a11y-screen-reader.html.en ### ubuntu2504 -* apt 3.0 - +- apt 3.0 ### fedora42 https://fedoramagazine.org/whats-new-fedora-workstation-42/ -* ibus-speech-to-text -https://www.reddit.com/r/gnome/comments/1j8r4gb/ibusspeechtotext_is_fantastic/ - - - +- ibus-speech-to-text + https://www.reddit.com/r/gnome/comments/1j8r4gb/ibusspeechtotext_is_fantastic/ diff --git a/src/content/blog/meetup-2505.md b/src/content/blog/meetup-2505.md index 9e6f2c6..42ca48a 100644 --- a/src/content/blog/meetup-2505.md +++ b/src/content/blog/meetup-2505.md @@ -6,18 +6,15 @@ tags: luma: s3z75wf4 description: DistroWar - Yocto - --- [![hackmd-github-sync-badge](https://hackmd.io/G22aauEsSiWy8RZLhSKAeg/badge)](https://hackmd.io/G22aauEsSiWy8RZLhSKAeg) - - Speaker: Rick - Topic: Yocto https://www.yoctoproject.org - # Other topics -Please add any topics that you like to share. (5-15 mins) \ No newline at end of file +Please add any topics that you like to share. (5-15 mins) diff --git a/src/content/blog/meetup-2507.md b/src/content/blog/meetup-2507.md index fc4488d..df11cfc 100644 --- a/src/content/blog/meetup-2507.md +++ b/src/content/blog/meetup-2507.md @@ -7,16 +7,12 @@ tags: luma: rgz2bwl0 description: "管你要 trace 什麼、bpftrace 用下去就對了" - --- [![hackmd-github-sync-badge](https://hackmd.io/EjX5SzwMQci4hSLH3ECHMA/badge)](https://hackmd.io/EjX5SzwMQci4hSLH3ECHMA) - - - Speaker: Shung-Hsi Yu - Topic: 管你要 trace 什麼、bpftrace 用下去就對了 - 管你要 trace 什麼、bpftrace 用下去就對了 @@ -24,16 +20,14 @@ description: "管你要 trace 什麼、bpftrace 用下去就對了" 這時候,bpftrace 這個建立在強大 eBPF 技術之上的 Linux tracing 工具就很適合派上用場 。你可以把它想像成是 strace、tcpdump 或 iotop 的強化版,它能即時且輕量化地觀察系統各個層面的行為(從 kernel 到 application),深入了解問題發生的當下系統到底在忙什麼 。不管是想追蹤特定 syscall 的延遲分佈、觀察磁碟 I/O 的狀況 ,或是看哪些 TCP 連線有問題,bpftrace 都能用簡潔的語法幫你快速切入問題核心。 - https://pretalx.coscup.org/coscup-2025/talk/NXBEYA/ Shung-Hsi 特別從臺東過來, 歡迎一起來聊聊 bpf & kernel 吧 - # Other topics - gemini cli - android 16 desktop - bigme B13 (目前在海上了那天應該會到) -Please add any topics that you like to share. (5-15 mins) \ No newline at end of file +Please add any topics that you like to share. (5-15 mins) diff --git a/src/content/blog/nomad_explore.md b/src/content/blog/nomad_explore.md index ec3a26d..0087d94 100644 --- a/src/content/blog/nomad_explore.md +++ b/src/content/blog/nomad_explore.md @@ -6,7 +6,7 @@ tags: - demoscene - digital_nomad - NOMAD_EXPLORE - + description: 我們跟著數位游牧到台東去玩啦 youtube: -I1hiCVMeoQ --- @@ -14,6 +14,3 @@ youtube: -I1hiCVMeoQ [![hackmd-github-sync-badge](https://hackmd.io/p98RSs0SQ9q4tDR6Qw6t1g/badge)](https://hackmd.io/p98RSs0SQ9q4tDR6Qw6t1g) 台東 - - -