diff --git a/package-lock.json b/package-lock.json index e44bb2a2..7c622e4d 100644 --- a/package-lock.json +++ b/package-lock.json @@ -5,25 +5,25 @@ "packages": { "": { "devDependencies": { - "@astrojs/rss": "^4.0.7", - "@astrojs/sitemap": "^3.1.6", - "@astrojs/tailwind": "^5.1.0", + "@astrojs/rss": "^4.0.9", + "@astrojs/sitemap": "^3.2.1", + "@astrojs/tailwind": "^5.1.2", "@astrolib/seo": "1.0.0-beta.5", "@astropub/md": "^1.0.0", - "@tailwindcss/forms": "^0.5.7", - "@tailwindcss/typography": "^0.5.14", - "@typescript-eslint/parser": "^8.2.0", - "astro": "^4.14.3", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "@typescript-eslint/parser": "^8.12.2", + "astro": "^4.16.7", "astro-iconify": "^1.2.0", - "eslint-plugin-astro": "^1.2.3", - "ky": "^1.7.0", + "eslint-plugin-astro": "^1.3.0", + "ky": "^1.7.2", "limax": "^4.1.0", "reading-time": "^1.5.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "remark-custom-header-id": "^1.0.0", - "tailwindcss": "^3.4.10", - "typescript": "^5.5.4", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3", "xo": "^0.59.3" }, "engines": { @@ -206,29 +206,29 @@ "dev": true }, "node_modules/@astrojs/markdown-remark": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.2.0.tgz", - "integrity": "sha512-vWGM24KZXz11jR3JO+oqYU3T2qpuOi4uGivJ9SQLCAI01+vEkHC60YJMRvHPc+hwd60F7euNs1PeOEixIIiNQw==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/@astrojs/markdown-remark/-/markdown-remark-5.3.0.tgz", + "integrity": "sha512-r0Ikqr0e6ozPb5bvhup1qdWnSPUvQu6tub4ZLYaKyG50BXZ0ej6FhGz3GpChKpH7kglRFPObJd/bDyf2VM9pkg==", "dev": true, "dependencies": { "@astrojs/prism": "3.1.0", "github-slugger": "^2.0.0", - "hast-util-from-html": "^2.0.1", + "hast-util-from-html": "^2.0.3", "hast-util-to-text": "^4.0.2", "import-meta-resolve": "^4.1.0", "mdast-util-definitions": "^6.0.0", "rehype-raw": "^7.0.0", - "rehype-stringify": "^10.0.0", + "rehype-stringify": "^10.0.1", "remark-gfm": "^4.0.0", "remark-parse": "^11.0.0", - "remark-rehype": "^11.1.0", + "remark-rehype": "^11.1.1", "remark-smartypants": "^3.0.2", - "shiki": "^1.10.3", + "shiki": "^1.22.0", "unified": "^11.0.5", "unist-util-remove-position": "^5.0.0", "unist-util-visit": "^5.0.0", "unist-util-visit-parents": "^6.0.1", - "vfile": "^6.0.2" + "vfile": "^6.0.3" } }, "node_modules/@astrojs/prism": { @@ -244,38 +244,38 @@ } }, "node_modules/@astrojs/rss": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.7.tgz", - "integrity": "sha512-ZEG55XFB19l+DplUvBISmz04UbjDtKliRO4Y5+ERRhAMjgCVVobEBNE6ZwWG1h6orWUocy4nfPihKXDyB73x9g==", + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@astrojs/rss/-/rss-4.0.9.tgz", + "integrity": "sha512-W1qeLc/WP1vMS5xXa+BnaLU0paeSeGjN8RJVAoBaOIkQuKXjIUA9hvPno89heo73in5i67g40gy70oeeHMqp6A==", "dev": true, "dependencies": { - "fast-xml-parser": "^4.4.0", + "fast-xml-parser": "^4.5.0", "kleur": "^4.1.5" } }, "node_modules/@astrojs/sitemap": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.1.6.tgz", - "integrity": "sha512-1Qp2NvAzVImqA6y+LubKi1DVhve/hXXgFvB0szxiipzh7BvtuKe4oJJ9dXSqaubaTkt4nMa6dv6RCCAYeB6xaQ==", + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.2.1.tgz", + "integrity": "sha512-uxMfO8f7pALq0ADL6Lk68UV6dNYjJ2xGUzyjjVj60JLBs5a6smtlkBYv3tQ0DzoqwS7c9n4FUx5lgv0yPo/fgA==", "dev": true, "dependencies": { - "sitemap": "^7.1.2", + "sitemap": "^8.0.0", "stream-replace-string": "^2.0.0", "zod": "^3.23.8" } }, "node_modules/@astrojs/tailwind": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.0.tgz", - "integrity": "sha512-BJoCDKuWhU9FT2qYg+fr6Nfb3qP4ShtyjXGHKA/4mHN94z7BGcmauQK23iy+YH5qWvTnhqkd6mQPQ1yTZTe9Ig==", + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/@astrojs/tailwind/-/tailwind-5.1.2.tgz", + "integrity": "sha512-IvOF0W/dtHElcXvhrPR35nHmhyV3cfz1EzPitMGtU7sYy9Hci3BNK1To6FWmVuuNKPxza1IgCGetSynJZL7fOg==", "dev": true, "dependencies": { - "autoprefixer": "^10.4.15", - "postcss": "^8.4.28", + "autoprefixer": "^10.4.20", + "postcss": "^8.4.47", "postcss-load-config": "^4.0.2" }, "peerDependencies": { - "astro": "^3.0.0 || ^4.0.0", + "astro": "^3.0.0 || ^4.0.0 || ^5.0.0-beta.0", "tailwindcss": "^3.0.24" } }, @@ -316,12 +316,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", - "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.0.tgz", + "integrity": "sha512-INCKxTtbXtcNbUZ3YXutwMpEleqttcswhAdee7dhuoVrD2cnuc3PqtERBtxkX5nziX9vnBL8WXmSGwv8CuPV6g==", "dev": true, "dependencies": { - "@babel/highlight": "^7.24.7", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -329,30 +330,30 @@ } }, "node_modules/@babel/compat-data": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", - "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.26.0.tgz", + "integrity": "sha512-qETICbZSLe7uXv9VE8T/RWOdIE5qqyTucOt4zLYMafj2MRO271VGgLd4RACJMeBO37UPWhXiKMBk7YlJ0fOzQA==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", - "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "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==", "dev": true, "dependencies": { "@ampproject/remapping": "^2.2.0", - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/helper-compilation-targets": "^7.25.2", - "@babel/helper-module-transforms": "^7.25.2", - "@babel/helpers": "^7.25.0", - "@babel/parser": "^7.25.0", - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.2", - "@babel/types": "^7.25.2", + "@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", "convert-source-map": "^2.0.0", "debug": "^4.1.0", "gensync": "^1.0.0-beta.2", @@ -377,41 +378,42 @@ } }, "node_modules/@babel/generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", - "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.26.0.tgz", + "integrity": "sha512-/AIkAmInnWwgEAJGQr9vY0c66Mj6kjkE2ZPB1PurTRaRAh3U+J45sAQMjQDJdh4WbR3l0x5xkimXBKyBXXAu2w==", "dev": true, "dependencies": { - "@babel/types": "^7.25.0", + "@babel/parser": "^7.26.0", + "@babel/types": "^7.26.0", "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.25", - "jsesc": "^2.5.1" + "jsesc": "^3.0.2" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.25.9.tgz", + "integrity": "sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==", "dev": true, "dependencies": { - "@babel/types": "^7.24.7" + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-compilation-targets": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", - "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "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==", "dev": true, "dependencies": { - "@babel/compat-data": "^7.25.2", - "@babel/helper-validator-option": "^7.24.8", - "browserslist": "^4.23.1", + "@babel/compat-data": "^7.25.9", + "@babel/helper-validator-option": "^7.25.9", + "browserslist": "^4.24.0", "lru-cache": "^5.1.1", "semver": "^6.3.1" }, @@ -429,28 +431,27 @@ } }, "node_modules/@babel/helper-module-imports": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", - "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.9.tgz", + "integrity": "sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==", "dev": true, "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" + "@babel/traverse": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-module-transforms": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", - "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "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==", "dev": true, "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-simple-access": "^7.24.7", - "@babel/helper-validator-identifier": "^7.24.7", - "@babel/traverse": "^7.25.2" + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9", + "@babel/traverse": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -460,89 +461,61 @@ } }, "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "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==", "dev": true, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-simple-access": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", - "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "dev": true, - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", - "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "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==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", - "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", - "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.9.tgz", + "integrity": "sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==", "dev": true, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helpers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", - "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.26.0.tgz", + "integrity": "sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==", "dev": true, "dependencies": { - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", - "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", - "dev": true, - "dependencies": { - "@babel/helper-validator-identifier": "^7.24.7", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.25.9", + "@babel/types": "^7.26.0" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/parser": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", - "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "version": "7.26.1", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.1.tgz", + "integrity": "sha512-reoQYNiAJreZNsJzyrDNzFQ+IQ5JFiIzAHJg9bn94S3l+4++J7RsIhNMoB+lgP/9tpmiAQqspv+xfdxTSzREOw==", "dev": true, "dependencies": { - "@babel/types": "^7.25.2" + "@babel/types": "^7.26.0" }, "bin": { "parser": "bin/babel-parser.js" @@ -552,12 +525,12 @@ } }, "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.25.9.tgz", + "integrity": "sha512-ld6oezHQMZsZfp6pWtbjaNDF2tiiCYYDqQszHt5VV437lewP9aSi2Of99CK0D0XB21k7FLgnLcmQKyKzynfeAA==", "dev": true, "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@babel/helper-plugin-utils": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -567,16 +540,16 @@ } }, "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", - "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.9.tgz", + "integrity": "sha512-s5XwpQYCqGerXl+Pu6VDL3x0j2d82eiV77UJ8a2mDHAW7j9SWRqQ2y1fNo1Z74CdcYipl5Z41zvjj4Nfzq36rw==", "dev": true, "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.25.2" + "@babel/helper-annotate-as-pure": "^7.25.9", + "@babel/helper-module-imports": "^7.25.9", + "@babel/helper-plugin-utils": "^7.25.9", + "@babel/plugin-syntax-jsx": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -586,30 +559,30 @@ } }, "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.9.tgz", + "integrity": "sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" + "@babel/code-frame": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/types": "^7.25.9" }, "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.9.tgz", + "integrity": "sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", + "@babel/code-frame": "^7.25.9", + "@babel/generator": "^7.25.9", + "@babel/parser": "^7.25.9", + "@babel/template": "^7.25.9", + "@babel/types": "^7.25.9", "debug": "^4.3.1", "globals": "^11.1.0" }, @@ -618,14 +591,13 @@ } }, "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "version": "7.26.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.0.tgz", + "integrity": "sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==", "dev": true, "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -1793,9 +1765,9 @@ } }, "node_modules/@oslojs/encoding": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-0.4.1.tgz", - "integrity": "sha512-hkjo6MuIK/kQR5CrGNdAPZhS01ZCXuWDRJ187zh6qqF2+yMHZpD9fAYpX8q2bOO6Ryhl3XpCT6kUX76N8hhm4Q==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", + "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==", "dev": true }, "node_modules/@pkgjs/parseargs": { @@ -1821,14 +1793,14 @@ } }, "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.3.tgz", + "integrity": "sha512-Pnsb6f32CD2W3uCaLZIzDmeFyQ2b8UWMFI7xtwUezpcGBDVDW6y9XgAWIlARiGAo6eNF5FK5aQTr0LFyNyqq5A==", "dev": true, "dependencies": { "@types/estree": "^1.0.0", "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" + "picomatch": "^4.0.2" }, "engines": { "node": ">=14.0.0" @@ -1848,10 +1820,22 @@ "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", "dev": true }, + "node_modules/@rollup/pluginutils/node_modules/picomatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz", + "integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.21.0.tgz", - "integrity": "sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.3.tgz", + "integrity": "sha512-ufb2CH2KfBWPJok95frEZZ82LtDl0A6QKTa8MoM+cWwDZvVGl5/jNb79pIhRvAalUu+7LD91VYR0nwRD799HkQ==", "cpu": [ "arm" ], @@ -1862,9 +1846,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.21.0.tgz", - "integrity": "sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.3.tgz", + "integrity": "sha512-iAHpft/eQk9vkWIV5t22V77d90CRofgR2006UiCjHcHJFVI1E0oBkQIAbz+pLtthFw3hWEmVB4ilxGyBf48i2Q==", "cpu": [ "arm64" ], @@ -1875,9 +1859,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.21.0.tgz", - "integrity": "sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.3.tgz", + "integrity": "sha512-QPW2YmkWLlvqmOa2OwrfqLJqkHm7kJCIMq9kOz40Zo9Ipi40kf9ONG5Sz76zszrmIZZ4hgRIkez69YnTHgEz1w==", "cpu": [ "arm64" ], @@ -1888,9 +1872,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.21.0.tgz", - "integrity": "sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.3.tgz", + "integrity": "sha512-KO0pN5x3+uZm1ZXeIfDqwcvnQ9UEGN8JX5ufhmgH5Lz4ujjZMAnxQygZAVGemFWn+ZZC0FQopruV4lqmGMshow==", "cpu": [ "x64" ], @@ -1900,10 +1884,36 @@ "darwin" ] }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.24.3.tgz", + "integrity": "sha512-CsC+ZdIiZCZbBI+aRlWpYJMSWvVssPuWqrDy/zi9YfnatKKSLFCe6fjna1grHuo/nVaHG+kiglpRhyBQYRTK4A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.24.3.tgz", + "integrity": "sha512-F0nqiLThcfKvRQhZEzMIXOQG4EeX61im61VYL1jo4eBxv4aZRmpin6crnBJQ/nWnCsjH5F6J3W6Stdm0mBNqBg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ] + }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.21.0.tgz", - "integrity": "sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.3.tgz", + "integrity": "sha512-KRSFHyE/RdxQ1CSeOIBVIAxStFC/hnBgVcaiCkQaVC+EYDtTe4X7z5tBkFyRoBgUGtB6Xg6t9t2kulnX6wJc6A==", "cpu": [ "arm" ], @@ -1914,9 +1924,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.21.0.tgz", - "integrity": "sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.3.tgz", + "integrity": "sha512-h6Q8MT+e05zP5BxEKz0vi0DhthLdrNEnspdLzkoFqGwnmOzakEHSlXfVyA4HJ322QtFy7biUAVFPvIDEDQa6rw==", "cpu": [ "arm" ], @@ -1927,9 +1937,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.21.0.tgz", - "integrity": "sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.3.tgz", + "integrity": "sha512-fKElSyXhXIJ9pqiYRqisfirIo2Z5pTTve5K438URf08fsypXrEkVmShkSfM8GJ1aUyvjakT+fn2W7Czlpd/0FQ==", "cpu": [ "arm64" ], @@ -1940,9 +1950,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.21.0.tgz", - "integrity": "sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.3.tgz", + "integrity": "sha512-YlddZSUk8G0px9/+V9PVilVDC6ydMz7WquxozToozSnfFK6wa6ne1ATUjUvjin09jp34p84milxlY5ikueoenw==", "cpu": [ "arm64" ], @@ -1953,9 +1963,9 @@ ] }, "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.21.0.tgz", - "integrity": "sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.3.tgz", + "integrity": "sha512-yNaWw+GAO8JjVx3s3cMeG5Esz1cKVzz8PkTJSfYzE5u7A+NvGmbVFEHP+BikTIyYWuz0+DX9kaA3pH9Sqxp69g==", "cpu": [ "ppc64" ], @@ -1966,9 +1976,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.21.0.tgz", - "integrity": "sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.3.tgz", + "integrity": "sha512-lWKNQfsbpv14ZCtM/HkjCTm4oWTKTfxPmr7iPfp3AHSqyoTz5AgLemYkWLwOBWc+XxBbrU9SCokZP0WlBZM9lA==", "cpu": [ "riscv64" ], @@ -1979,9 +1989,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.21.0.tgz", - "integrity": "sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.3.tgz", + "integrity": "sha512-HoojGXTC2CgCcq0Woc/dn12wQUlkNyfH0I1ABK4Ni9YXyFQa86Fkt2Q0nqgLfbhkyfQ6003i3qQk9pLh/SpAYw==", "cpu": [ "s390x" ], @@ -1992,9 +2002,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.21.0.tgz", - "integrity": "sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.3.tgz", + "integrity": "sha512-mnEOh4iE4USSccBOtcrjF5nj+5/zm6NcNhbSEfR3Ot0pxBwvEn5QVUXcuOwwPkapDtGZ6pT02xLoPaNv06w7KQ==", "cpu": [ "x64" ], @@ -2005,9 +2015,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.21.0.tgz", - "integrity": "sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.3.tgz", + "integrity": "sha512-rMTzawBPimBQkG9NKpNHvquIUTQPzrnPxPbCY1Xt+mFkW7pshvyIS5kYgcf74goxXOQk0CP3EoOC1zcEezKXhw==", "cpu": [ "x64" ], @@ -2018,9 +2028,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.21.0.tgz", - "integrity": "sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.3.tgz", + "integrity": "sha512-2lg1CE305xNvnH3SyiKwPVsTVLCg4TmNCF1z7PSHX2uZY2VbUpdkgAllVoISD7JO7zu+YynpWNSKAtOrX3AiuA==", "cpu": [ "arm64" ], @@ -2031,9 +2041,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.21.0.tgz", - "integrity": "sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.3.tgz", + "integrity": "sha512-9SjYp1sPyxJsPWuhOCX6F4jUMXGbVVd5obVpoVEi8ClZqo52ViZewA6eFz85y8ezuOA+uJMP5A5zo6Oz4S5rVQ==", "cpu": [ "ia32" ], @@ -2044,9 +2054,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.21.0.tgz", - "integrity": "sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.3.tgz", + "integrity": "sha512-HGZgRFFYrMrP3TJlq58nR1xy8zHKId25vhmm5S9jETEfDf6xybPxsavFTJaufe2zgOGYJBskGlj49CwtEuFhWQ==", "cpu": [ "x64" ], @@ -2063,14 +2073,56 @@ "dev": true }, "node_modules/@shikijs/core": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.14.1.tgz", - "integrity": "sha512-KyHIIpKNaT20FtFPFjCQB5WVSTpLR/n+jQXhWHWVUMm9MaOaG9BGOG0MSyt7yA4+Lm+4c9rTc03tt3nYzeYSfw==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz", + "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==", + "dev": true, + "dependencies": { + "@shikijs/engine-javascript": "1.22.2", + "@shikijs/engine-oniguruma": "1.22.2", + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.3" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz", + "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==", + "dev": true, + "dependencies": { + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", + "oniguruma-to-js": "0.4.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz", + "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==", + "dev": true, + "dependencies": { + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0" + } + }, + "node_modules/@shikijs/types": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz", + "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==", "dev": true, "dependencies": { + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, + "node_modules/@shikijs/vscode-textmate": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", + "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", + "dev": true + }, "node_modules/@sindresorhus/merge-streams": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", @@ -2084,21 +2136,21 @@ } }, "node_modules/@tailwindcss/forms": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.7.tgz", - "integrity": "sha512-QE7X69iQI+ZXwldE+rzasvbJiyV/ju1FGHH0Qn2W3FKbuYtqp8LKcy6iSw79fVUT5/Vvf+0XgLCeYVG+UV6hOw==", + "version": "0.5.9", + "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.9.tgz", + "integrity": "sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==", "dev": true, "dependencies": { "mini-svg-data-uri": "^1.2.3" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1" + "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20" } }, "node_modules/@tailwindcss/typography": { - "version": "0.5.14", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.14.tgz", - "integrity": "sha512-ZvOCjUbsJBjL9CxQBn+VEnFpouzuKhxh2dH8xMIWHILL+HfOYtlAkWcyoon8LlzE53d2Yo6YO6pahKKNW3q1YQ==", + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.15.tgz", + "integrity": "sha512-AqhlCXl+8grUz8uqExv5OTtgpjuVIwFTSXTrh8y9/pw6q2ek7fJ+Y8ZEVw7EB2DCcuCOtEjf9w3+J3rzts01uA==", "dev": true, "dependencies": { "lodash.castarray": "^4.4.0", @@ -2107,7 +2159,7 @@ "postcss-selector-parser": "6.0.10" }, "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders" + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20" } }, "node_modules/@trysound/sax": { @@ -2197,9 +2249,9 @@ } }, "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "dev": true }, "node_modules/@types/hast": { @@ -2298,15 +2350,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.2.0.tgz", - "integrity": "sha512-j3Di+o0lHgPrb7FxL3fdEy6LJ/j2NE8u+AP/5cQ9SKb+JLH6V6UHDqJ+e0hXBkHP1wn1YDFjYCS9LBQsZDlDEg==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.12.2.tgz", + "integrity": "sha512-MrvlXNfGPLH3Z+r7Tk+Z5moZAc0dzdVjTgUgwsdGweH7lydysQsnSww3nAmsq8blFuRD5VRlAr9YdEFw3e6PBw==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "8.2.0", - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/typescript-estree": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/scope-manager": "8.12.2", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/typescript-estree": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4" }, "engines": { @@ -2326,13 +2378,13 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/scope-manager": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.2.0.tgz", - "integrity": "sha512-OFn80B38yD6WwpoHU2Tz/fTz7CgFqInllBoC3WP+/jLbTb4gGPTy9HBSTsbDWkMdN55XlVU0mMDYAtgvlUspGw==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.12.2.tgz", + "integrity": "sha512-gPLpLtrj9aMHOvxJkSbDBmbRuYdtiEbnvO25bCMza3DhMjTQw0u7Y1M+YR5JPbMsXXnSPuCf5hfq0nEkQDL/JQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0" + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2343,9 +2395,9 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/types": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.2.0.tgz", - "integrity": "sha512-6a9QSK396YqmiBKPkJtxsgZZZVjYQ6wQ/TlI0C65z7vInaETuC6HAHD98AGLC8DyIPqHytvNuS8bBVvNLKyqvQ==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.12.2.tgz", + "integrity": "sha512-VwDwMF1SZ7wPBUZwmMdnDJ6sIFk4K4s+ALKLP6aIQsISkPv8jhiw65sAK6SuWODN/ix+m+HgbYDkH+zLjrzvOA==", "dev": true, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2356,15 +2408,15 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/typescript-estree": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.2.0.tgz", - "integrity": "sha512-kiG4EDUT4dImplOsbh47B1QnNmXSoUqOjWDvCJw/o8LgfD0yr7k2uy54D5Wm0j4t71Ge1NkynGhpWdS0dEIAUA==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.12.2.tgz", + "integrity": "sha512-mME5MDwGe30Pq9zKPvyduyU86PH7aixwqYR2grTglAdB+AN8xXQ1vFGpYaUSJ5o5P/5znsSBeNcs5g5/2aQwow==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.2.0", - "@typescript-eslint/visitor-keys": "8.2.0", + "@typescript-eslint/types": "8.12.2", + "@typescript-eslint/visitor-keys": "8.12.2", "debug": "^4.3.4", - "globby": "^11.1.0", + "fast-glob": "^3.3.2", "is-glob": "^4.0.3", "minimatch": "^9.0.4", "semver": "^7.6.0", @@ -2384,12 +2436,12 @@ } }, "node_modules/@typescript-eslint/parser/node_modules/@typescript-eslint/visitor-keys": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.2.0.tgz", - "integrity": "sha512-sbgsPMW9yLvS7IhCi8IpuK1oBmtbWUNP+hBdwl/I9nzqVsszGnNGti5r9dUtF5RLivHUFFIdRvLiTsPhzSyJ3Q==", + "version": "8.12.2", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.12.2.tgz", + "integrity": "sha512-PChz8UaKQAVNHghsHcPyx1OMHoFRUEA7rJSK/mDhdq85bk+PLsUHUBqTQTFt18VJZbmxBovM65fezlheQRsSDA==", "dev": true, "dependencies": { - "@typescript-eslint/types": "8.2.0", + "@typescript-eslint/types": "8.12.2", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -2706,9 +2758,9 @@ "peer": true }, "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "version": "8.14.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.0.tgz", + "integrity": "sha512-cl669nCJTZBsL97OF4kUQm5g5hC2uihk0NxY3WENAC0TYdILVkAyHymAntgxGkl7K+t0cXIrH5siy5S4XkFycA==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -2852,15 +2904,15 @@ } }, "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, "node_modules/any-promise": { @@ -2895,12 +2947,12 @@ "dev": true }, "node_modules/aria-query": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.0.tgz", - "integrity": "sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==", + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "dequal": "^2.0.3" + "engines": { + "node": ">= 0.4" } }, "node_modules/array-buffer-byte-length": { @@ -3081,44 +3133,40 @@ } }, "node_modules/astro": { - "version": "4.14.3", - "resolved": "https://registry.npmjs.org/astro/-/astro-4.14.3.tgz", - "integrity": "sha512-+Hox1EhiS5iHy4pfZaLidpD9x7WVAcgGgjTo1JOYSQ0+a2ZA9mbLtGVEXbUeeYweviNc0ZNHMnI4r9S2e8xnXg==", + "version": "4.16.7", + "resolved": "https://registry.npmjs.org/astro/-/astro-4.16.7.tgz", + "integrity": "sha512-nON+8MUEkWTFwXbS4zsQIq4t0Fs42eulM4x236AL+qNnWfqNAOOqAnFxO1dxfJ1q+XopIBbbT9Mtev+0zH47PQ==", "dev": true, "dependencies": { "@astrojs/compiler": "^2.10.3", "@astrojs/internal-helpers": "0.4.1", - "@astrojs/markdown-remark": "5.2.0", + "@astrojs/markdown-remark": "5.3.0", "@astrojs/telemetry": "3.1.0", - "@babel/core": "^7.25.2", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/plugin-transform-react-jsx": "^7.25.2", - "@babel/traverse": "^7.25.3", - "@babel/types": "^7.25.2", - "@oslojs/encoding": "^0.4.1", - "@rollup/pluginutils": "^5.1.0", + "@babel/core": "^7.25.8", + "@babel/plugin-transform-react-jsx": "^7.25.7", + "@babel/types": "^7.25.8", + "@oslojs/encoding": "^1.1.0", + "@rollup/pluginutils": "^5.1.2", "@types/babel__core": "^7.20.5", "@types/cookie": "^0.6.0", - "acorn": "^8.12.1", - "aria-query": "^5.3.0", + "acorn": "^8.13.0", + "aria-query": "^5.3.2", "axobject-query": "^4.1.0", - "boxen": "7.1.1", + "boxen": "8.0.1", "ci-info": "^4.0.0", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", - "cookie": "^0.6.0", + "cookie": "^0.7.2", "cssesc": "^3.0.0", - "debug": "^4.3.6", + "debug": "^4.3.7", "deterministic-object-hash": "^2.0.2", - "devalue": "^5.0.0", + "devalue": "^5.1.1", "diff": "^5.2.0", "dlv": "^1.1.3", - "dset": "^3.1.3", + "dset": "^3.1.4", "es-module-lexer": "^1.5.4", "esbuild": "^0.21.5", "estree-walker": "^3.0.3", - "execa": "^8.0.1", "fast-glob": "^3.3.2", "flattie": "^1.1.1", "github-slugger": "^2.0.0", @@ -3127,31 +3175,30 @@ "http-cache-semantics": "^4.1.1", "js-yaml": "^4.1.0", "kleur": "^4.1.5", - "magic-string": "^0.30.11", - "micromatch": "^4.0.7", + "magic-string": "^0.30.12", + "magicast": "^0.3.5", + "micromatch": "^4.0.8", "mrmime": "^2.0.0", "neotraverse": "^0.6.18", - "ora": "^8.0.1", + "ora": "^8.1.0", "p-limit": "^6.1.0", "p-queue": "^8.0.1", - "path-to-regexp": "^6.2.2", "preferred-pm": "^4.0.0", "prompts": "^2.4.2", - "rehype": "^13.0.1", + "rehype": "^13.0.2", "semver": "^7.6.3", - "shiki": "^1.14.1", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0", - "tsconfck": "^3.1.1", + "shiki": "^1.22.0", + "tinyexec": "^0.3.1", + "tsconfck": "^3.1.4", "unist-util-visit": "^5.0.0", - "vfile": "^6.0.2", - "vite": "^5.4.1", - "vitefu": "^0.2.5", + "vfile": "^6.0.3", + "vite": "^5.4.9", + "vitefu": "^1.0.3", "which-pm": "^3.0.0", "xxhash-wasm": "^1.0.2", "yargs-parser": "^21.1.1", "zod": "^3.23.8", - "zod-to-json-schema": "^3.23.2", + "zod-to-json-schema": "^3.23.3", "zod-to-ts": "^1.2.0" }, "bin": { @@ -3275,9 +3322,9 @@ "dev": true }, "node_modules/autoprefixer": { - "version": "10.4.18", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.18.tgz", - "integrity": "sha512-1DKbDfsr6KUElM6wg+0zRNkB/Q7WcKYAaK+pzXn+Xqmszm/5Xa9coeNdtP88Vi+dPzZnMjhge8GIV49ZQkDa+g==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "dev": true, "funding": [ { @@ -3294,11 +3341,11 @@ } ], "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001591", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -3384,60 +3431,54 @@ "dev": true }, "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", + "integrity": "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw==", "dev": true, "dependencies": { "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", + "camelcase": "^8.0.0", + "chalk": "^5.3.0", "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" + "string-width": "^7.2.0", + "type-fest": "^4.21.0", + "widest-line": "^5.0.0", + "wrap-ansi": "^9.0.0" }, "engines": { - "node": ">=14.16" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/boxen/node_modules/type-fest": { + "version": "4.26.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.1.tgz", + "integrity": "sha512-yOGpmOAL7CkKe/91I5O3gPICmJNLJ1G4zFYVAsRHg7M64biSnPtRj0WNQt++bRkjYOqjWXrhnUw1utzmVErAdg==", "dev": true, "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=16" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, "node_modules/brace-expansion": { @@ -3462,9 +3503,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "version": "4.24.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.2.tgz", + "integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==", "dev": true, "funding": [ { @@ -3481,10 +3522,10 @@ } ], "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", + "caniuse-lite": "^1.0.30001669", + "electron-to-chromium": "^1.5.41", "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" + "update-browserslist-db": "^1.1.1" }, "bin": { "browserslist": "cli.js" @@ -3571,12 +3612,12 @@ } }, "node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-8.0.0.tgz", + "integrity": "sha512-8WB3Jcas3swSvjIeA2yvCJ+Miyz5l1ZmB6HFb9R1317dt9LCQoswg/BGrmAmkWVEszSrrg4RwmO46qIm2OEnSA==", "dev": true, "engines": { - "node": ">=14.16" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3592,9 +3633,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "version": "1.0.30001675", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001675.tgz", + "integrity": "sha512-/wV1bQwPrkLiQMjaJF5yUMVM/VdRPOCU8QZ+PmG6uW6DvYSrNY1bpwHI/3mOcUosLaJCzYDi5o91IQB51ft6cg==", "dev": true, "funding": [ { @@ -3622,17 +3663,15 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, "engines": { - "node": ">=4" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/character-entities": { @@ -3786,15 +3825,15 @@ } }, "node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", "dev": true, "dependencies": { - "restore-cursor": "^4.0.0" + "restore-cursor": "^5.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -3835,20 +3874,12 @@ "node": ">=12.5.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, "node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true + "dev": true, + "optional": true }, "node_modules/color-string": { "version": "1.9.1", @@ -3943,9 +3974,9 @@ "dev": true }, "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", "dev": true, "engines": { "node": ">= 0.6" @@ -4100,12 +4131,12 @@ } }, "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "ms": "^2.1.3" }, "engines": { "node": ">=6.0" @@ -4250,9 +4281,9 @@ } }, "node_modules/devalue": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.0.0.tgz", - "integrity": "sha512-gO+/OMXF7488D+u3ue+G7Y4AA3ZmUnB3eHJXmBTgNHvr4ZNzl36A0ZtG+XCRNYCkYx/bFmw4qtkoFLa+wSrwAA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.1.1.tgz", + "integrity": "sha512-maua5KUiapvEwiEAe+XnlZ3Rh0GD+qI1J/nb9vrJc3muPXvcF/8gXYTWF76+5DAqHyDUtOIImEuo0YKE9mshVw==", "dev": true }, "node_modules/devlop": { @@ -4369,9 +4400,9 @@ } }, "node_modules/dset": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.3.tgz", - "integrity": "sha512-20TuZZHCEZ2O71q9/+8BwKwZ0QtD9D8ObhrihJPr+vLLYlSuAU3/zL4cSlgbfeoGHTjCSJBa7NGcrF9/Bx/WJQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/dset/-/dset-3.1.4.tgz", + "integrity": "sha512-2QF/g9/zTaPDc3BjNcVTGoBbXBgYfMTTceLaYcFJ/W9kggFUkhxD/hMEeuLKbugyef9SqAx8cpgwlIP/jinUTA==", "dev": true, "engines": { "node": ">=4" @@ -4384,9 +4415,9 @@ "dev": true }, "node_modules/electron-to-chromium": { - "version": "1.5.12", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.12.tgz", - "integrity": "sha512-tIhPkdlEoCL1Y+PToq3zRNehUaKp3wBX/sr7aclAWdIWjvqAe/Im/H0SiCM4c1Q8BLPHCdoJTol+ZblflydehA==", + "version": "1.5.49", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.49.tgz", + "integrity": "sha512-ZXfs1Of8fDb6z7WEYZjXpgIRF6MEu8JdeGA0A40aZq6OQbS+eJpnnV49epZRna2DU/YsEjSQuGtQPPtvt6J65A==", "dev": true }, "node_modules/emoji-regex": { @@ -4645,9 +4676,9 @@ } }, "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", "dev": true, "engines": { "node": ">=6" @@ -4784,18 +4815,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-formatter-pretty/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -4904,14 +4923,14 @@ } }, "node_modules/eslint-plugin-astro": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/eslint-plugin-astro/-/eslint-plugin-astro-1.2.3.tgz", - "integrity": "sha512-asHT0VUs68oppVnTHfp/WgLqs0yCx9kG9AC/PKLmp+87imeh3nGHMdFm0qP46vHxTM0NLDEhvmjFdAVAqw+QPQ==", + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-astro/-/eslint-plugin-astro-1.3.0.tgz", + "integrity": "sha512-T4bAYOdF0V8zqFF/EeQat5xcYQV5nDmLeZgD1eHbcogY94HBOncwZxsOgcPNGpdCLXkpBDNbF2OMtrj26f5RFA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@jridgewell/sourcemap-codec": "^1.4.14", - "@typescript-eslint/types": "^7.7.1", + "@typescript-eslint/types": "^7.7.1 || ^8", "astro-eslint-parser": "^1.0.2", "eslint-compat-utils": "^0.5.0", "globals": "^15.0.0", @@ -5332,18 +5351,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-unicorn/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==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/eslint-plugin-unicorn/node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5697,29 +5704,6 @@ "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -5814,9 +5798,9 @@ "dev": true }, "node_modules/fast-xml-parser": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.0.tgz", - "integrity": "sha512-kLY3jFlwIYwBNDojclKsNAC12sfD6NwW74QB2CoNGPvtVxjliYehVunB3HYyNi+n4Tt1dAcgwYvmKF/Z18flqg==", + "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==", "dev": true, "funding": [ { @@ -6332,18 +6316,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/get-symbol-description": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", @@ -6554,15 +6526,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/has-property-descriptors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", @@ -6627,9 +6590,9 @@ } }, "node_modules/hast-util-from-html": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.1.tgz", - "integrity": "sha512-RXQBLMl9kjKVNkJTIO6bZyb2n+cUH8LFaSSzo82jiLT6Tfc+Pt7VQCS+/h3YwG4jaNE2TA2sdJisGWR+aJrp0g==", + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", + "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", @@ -6729,16 +6692,15 @@ } }, "node_modules/hast-util-to-html": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.0.tgz", - "integrity": "sha512-IVGhNgg7vANuUA2XKrT6sOIIPgaYZnmLx3l/CCOAK0PtgfoHrZwX7jCSYyFxHTrGmC6S9q8aQQekjp4JPZF+cw==", + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", + "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", "@types/unist": "^3.0.0", "ccount": "^2.0.0", "comma-separated-tokens": "^2.0.0", - "hast-util-raw": "^9.0.0", "hast-util-whitespace": "^3.0.0", "html-void-elements": "^3.0.0", "mdast-util-to-hast": "^13.0.0", @@ -6889,15 +6851,6 @@ "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", "dev": true }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, "node_modules/ignore": { "version": "5.3.1", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz", @@ -7373,18 +7326,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -7598,15 +7539,15 @@ } }, "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", "dev": true, "bin": { "jsesc": "bin/jsesc" }, "engines": { - "node": ">=4" + "node": ">=6" } }, "node_modules/json-buffer": { @@ -7685,9 +7626,9 @@ "dev": true }, "node_modules/ky": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.0.tgz", - "integrity": "sha512-g+S6ZMESSMuxrrbcDioBKSjBj8Xvam2WmLso+q1Ub7TTYCGS68XbSEM+eA3VSTmXJfR1uQjsTooC2tCsC3bW6g==", + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.2.tgz", + "integrity": "sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==", "dev": true, "engines": { "node": ">=18" @@ -7896,18 +7837,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/longest-streak": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", @@ -7937,14 +7866,25 @@ } }, "node_modules/magic-string": { - "version": "0.30.11", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", - "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "version": "0.30.12", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.12.tgz", + "integrity": "sha512-Ea8I3sQMVXr8JhN4z+H/d8zwo+tYDgHE9+5G4Wnrwhs0gaK9fXTKx0Tw5Xwsd/bCPTTZNRAdpyzvoeORe9LYpw==", "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0" } }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, "node_modules/markdown-table": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", @@ -8799,9 +8739,9 @@ ] }, "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, "dependencies": { "braces": "^3.0.3", @@ -8832,13 +8772,13 @@ "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", "dev": true, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -8960,9 +8900,9 @@ } }, "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "dev": true }, "node_modules/mz": { @@ -9270,20 +9210,32 @@ } }, "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", "dev": true, "dependencies": { - "mimic-fn": "^4.0.0" + "mimic-function": "^5.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/oniguruma-to-js": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", + "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "dev": true, + "dependencies": { + "regex": "^4.3.2" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, "node_modules/open": { "version": "10.1.0", "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", @@ -9413,19 +9365,19 @@ } }, "node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.1.0.tgz", + "integrity": "sha512-GQEkNkH/GHOhPFXcqZs3IDahXEQcQxsSjEkK4KvEEST4t7eNzoMjxTzef+EZ+JluDEV+Raoi3WQ2CflnRdSVnQ==", "dev": true, "dependencies": { "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", + "cli-cursor": "^5.0.0", "cli-spinners": "^2.9.2", "is-interactive": "^2.0.0", "is-unicode-supported": "^2.0.0", "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", "strip-ansi": "^7.1.0" }, "engines": { @@ -9435,22 +9387,10 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", "dev": true, "engines": { "node": ">=18" @@ -9705,12 +9645,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "dev": true - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -9733,9 +9667,9 @@ "dev": true }, "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", "dev": true }, "node_modules/picomatch": { @@ -9883,9 +9817,9 @@ } }, "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", "dev": true, "funding": [ { @@ -9903,8 +9837,8 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" }, "engines": { "node": "^10 || ^12 || >=14" @@ -10331,6 +10265,12 @@ "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==", "dev": true }, + "node_modules/regex": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", + "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", + "dev": true + }, "node_modules/regexp-tree": { "version": "0.1.27", "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", @@ -10380,9 +10320,9 @@ } }, "node_modules/rehype": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.1.tgz", - "integrity": "sha512-AcSLS2mItY+0fYu9xKxOu1LhUZeBZZBx8//5HKzF+0XP+eP8+6a5MXn2+DW2kfXR6Dtp1FEXMVrjyKAcvcU8vg==", + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/rehype/-/rehype-13.0.2.tgz", + "integrity": "sha512-j31mdaRFrwFRUIlxGeuPXXKWQxet52RBQRvCmzl5eCefn/KGbomK5GMHNMsOJf55fgo3qw5tST5neDuarDYR2A==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", @@ -10414,9 +10354,9 @@ } }, "node_modules/rehype-parse": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.0.tgz", - "integrity": "sha512-WG7nfvmWWkCR++KEkZevZb/uw41E8TsH4DsY9UxsTbIXCVGbAs4S+r8FrQ+OtH5EEQAs+5UxKC42VinkmpA1Yw==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", + "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", @@ -10461,9 +10401,9 @@ } }, "node_modules/rehype-stringify": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.0.tgz", - "integrity": "sha512-1TX1i048LooI9QoecrXy7nGFFbFSufxVRAfc6Y9YMRAi56l+oB0zP51mLSV312uRuvVLPV1opSlJmslozR1XHQ==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/rehype-stringify/-/rehype-stringify-10.0.1.tgz", + "integrity": "sha512-k9ecfXHmIPuFVI61B9DeLPN0qFHfawM6RsuX48hoqlaKSF61RskNjSm1lI8PhBEM0MRdLxVVm4WmTqJQccH9mA==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", @@ -10526,9 +10466,9 @@ } }, "node_modules/remark-rehype": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.0.tgz", - "integrity": "sha512-z3tJrAs2kIs1AqIIy6pzHmAHlF1hWQ+OdY4/hv+Wxe35EhyLKcajL33iUEn3ScxtFox9nUvRufR/Zre8Q08H/g==", + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.1.tgz", + "integrity": "sha512-g/osARvjkBXb6Wo0XvAeXQohVta8i84ACbenPpoSsxTOQH/Ae0/RGP4WZgnMH5pMLpsj4FG7OHmcIcXxpza8eQ==", "dev": true, "dependencies": { "@types/hast": "^3.0.0", @@ -10629,51 +10569,21 @@ } }, "node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", - "dev": true, - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, "node_modules/retext": { "version": "9.0.0", "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", @@ -10761,12 +10671,12 @@ } }, "node_modules/rollup": { - "version": "4.21.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.21.0.tgz", - "integrity": "sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==", + "version": "4.24.3", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.3.tgz", + "integrity": "sha512-HBW896xR5HGmoksbi3JBDtmVzWiPAYqp7wip50hjQ67JbDz61nyoMPdqu1DvVW9asYb2M65Z20ZHsyJCMqMyDg==", "dev": true, "dependencies": { - "@types/estree": "1.0.5" + "@types/estree": "1.0.6" }, "bin": { "rollup": "dist/bin/rollup" @@ -10776,22 +10686,24 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.21.0", - "@rollup/rollup-android-arm64": "4.21.0", - "@rollup/rollup-darwin-arm64": "4.21.0", - "@rollup/rollup-darwin-x64": "4.21.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.21.0", - "@rollup/rollup-linux-arm-musleabihf": "4.21.0", - "@rollup/rollup-linux-arm64-gnu": "4.21.0", - "@rollup/rollup-linux-arm64-musl": "4.21.0", - "@rollup/rollup-linux-powerpc64le-gnu": "4.21.0", - "@rollup/rollup-linux-riscv64-gnu": "4.21.0", - "@rollup/rollup-linux-s390x-gnu": "4.21.0", - "@rollup/rollup-linux-x64-gnu": "4.21.0", - "@rollup/rollup-linux-x64-musl": "4.21.0", - "@rollup/rollup-win32-arm64-msvc": "4.21.0", - "@rollup/rollup-win32-ia32-msvc": "4.21.0", - "@rollup/rollup-win32-x64-msvc": "4.21.0", + "@rollup/rollup-android-arm-eabi": "4.24.3", + "@rollup/rollup-android-arm64": "4.24.3", + "@rollup/rollup-darwin-arm64": "4.24.3", + "@rollup/rollup-darwin-x64": "4.24.3", + "@rollup/rollup-freebsd-arm64": "4.24.3", + "@rollup/rollup-freebsd-x64": "4.24.3", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.3", + "@rollup/rollup-linux-arm-musleabihf": "4.24.3", + "@rollup/rollup-linux-arm64-gnu": "4.24.3", + "@rollup/rollup-linux-arm64-musl": "4.24.3", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.3", + "@rollup/rollup-linux-riscv64-gnu": "4.24.3", + "@rollup/rollup-linux-s390x-gnu": "4.24.3", + "@rollup/rollup-linux-x64-gnu": "4.24.3", + "@rollup/rollup-linux-x64-musl": "4.24.3", + "@rollup/rollup-win32-arm64-msvc": "4.24.3", + "@rollup/rollup-win32-ia32-msvc": "4.24.3", + "@rollup/rollup-win32-x64-msvc": "4.24.3", "fsevents": "~2.3.2" } }, @@ -11041,12 +10953,16 @@ } }, "node_modules/shiki": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.14.1.tgz", - "integrity": "sha512-FujAN40NEejeXdzPt+3sZ3F2dx1U24BY2XTY01+MG8mbxCiA2XukXdcbyMyLAHJ/1AUUnQd1tZlvIjefWWEJeA==", + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz", + "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==", "dev": true, "dependencies": { - "@shikijs/core": "1.14.1", + "@shikijs/core": "1.22.2", + "@shikijs/engine-javascript": "1.22.2", + "@shikijs/engine-oniguruma": "1.22.2", + "@shikijs/types": "1.22.2", + "@shikijs/vscode-textmate": "^9.3.0", "@types/hast": "^3.0.4" } }, @@ -11097,9 +11013,9 @@ "dev": true }, "node_modules/sitemap": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-7.1.2.tgz", - "integrity": "sha512-ARCqzHJ0p4gWt+j7NlU5eDlIO9+Rkr/JhPFZKKQ1l5GCus7rJH4UdrlVAh0xC/gDS/Qir2UMxqYNHtsKr2rpCw==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/sitemap/-/sitemap-8.0.0.tgz", + "integrity": "sha512-+AbdxhM9kJsHtruUF39bwS/B0Fytw6Fr1o4ZAIAEqA6cke2xcoO2GleBw9Zw7nRzILVEgz7zBM5GiTJjie1G9A==", "dev": true, "dependencies": { "@types/node": "^17.0.5", @@ -11111,8 +11027,8 @@ "sitemap": "dist/cli.js" }, "engines": { - "node": ">=12.0.0", - "npm": ">=5.6.0" + "node": ">=14.0.0", + "npm": ">=6.0.0" } }, "node_modules/sitemap/node_modules/@types/node": { @@ -11141,9 +11057,9 @@ } }, "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", "dev": true, "engines": { "node": ">=0.10.0" @@ -11340,9 +11256,9 @@ } }, "node_modules/stringify-entities": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.3.tgz", - "integrity": "sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==", + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", "dev": true, "dependencies": { "character-entities-html4": "^2.0.0", @@ -11408,18 +11324,6 @@ "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/strip-indent": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", @@ -11512,18 +11416,6 @@ "node": ">=16 || 14 >=14.17" } }, - "node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/supports-hyperlinks": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-3.0.0.tgz", @@ -11612,9 +11504,9 @@ } }, "node_modules/tailwindcss": { - "version": "3.4.10", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", - "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "version": "3.4.14", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.14.tgz", + "integrity": "sha512-IcSvOcTRcUtQQ7ILQL5quRDg7Xs93PdJEk1ZLbhhvJc7uj/OAhYOnruEiwnGgBvUtaUAJ8/mhSw1o8L2jCiENA==", "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", @@ -11811,6 +11703,12 @@ "node": ">=0.8" } }, + "node_modules/tinyexec": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.1.tgz", + "integrity": "sha512-WiCJLEECkO18gwqIp6+hJg0//p23HXp4S+gGtAKu3mI2F2/sXC4FvHvXvB0zJVVaTPhx1/tOwdbRsa1sOBIKqQ==", + "dev": true + }, "node_modules/to-absolute-glob": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/to-absolute-glob/-/to-absolute-glob-3.0.0.tgz", @@ -11824,15 +11722,6 @@ "node": ">=0.10.0" } }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -11884,9 +11773,9 @@ "dev": true }, "node_modules/tsconfck": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.1.tgz", - "integrity": "sha512-00eoI6WY57SvZEVjm13stEVE90VkEdJAFGgpFLTsZbJyW/LwFQ7uQxJHWpZ2hzSWgCPKc9AnBnNP+0X7o3hAmQ==", + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/tsconfck/-/tsconfck-3.1.4.tgz", + "integrity": "sha512-kdqWFGVJqe+KGYvlSO9NIaWn9jT1Ny4oKVzAJsKii5eoE9snzTJzL4+MMVOMn+fikWGFmKEylcXL710V/kIPJQ==", "dev": true, "bin": { "tsconfck": "bin/tsconfck.js" @@ -12031,9 +11920,9 @@ } }, "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "version": "5.6.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz", + "integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==", "dev": true, "bin": { "tsc": "bin/tsc", @@ -12234,9 +12123,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", - "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "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==", "dev": true, "funding": [ { @@ -12253,8 +12142,8 @@ } ], "dependencies": { - "escalade": "^3.1.2", - "picocolors": "^1.0.1" + "escalade": "^3.2.0", + "picocolors": "^1.1.0" }, "bin": { "update-browserslist-db": "cli.js" @@ -12298,13 +12187,12 @@ } }, "node_modules/vfile": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.2.tgz", - "integrity": "sha512-zND7NlS8rJYb/sPqkb13ZvbbUoExdbi4w3SfRrMq6R3FvnLQmmfpajJNITuuYm6AZ5uao9vy4BAos3EXBPf2rg==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", "dev": true, "dependencies": { "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", "vfile-message": "^4.0.0" }, "funding": { @@ -12341,13 +12229,13 @@ } }, "node_modules/vite": { - "version": "5.4.2", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.2.tgz", - "integrity": "sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==", + "version": "5.4.10", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.10.tgz", + "integrity": "sha512-1hvaPshuPUtxeQ0hsVH3Mud0ZanOLwVTneA1EgbAM5LhaZEqyPWGRQ7BtaMvUrTDeEaC8pxtj6a6jku3x4z6SQ==", "dev": true, "dependencies": { "esbuild": "^0.21.3", - "postcss": "^8.4.41", + "postcss": "^8.4.43", "rollup": "^4.20.0" }, "bin": { @@ -12400,12 +12288,16 @@ } }, "node_modules/vitefu": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-0.2.5.tgz", - "integrity": "sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==", + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.0.3.tgz", + "integrity": "sha512-iKKfOMBHob2WxEJbqbJjHAkmYgvFDPhuqrO82om83S8RLk+17FtyMBfcyeH8GqD0ihShtkMW/zzJgiA51hCNCQ==", "dev": true, + "workspaces": [ + "tests/deps/*", + "tests/projects/*" + ], "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0" + "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0-beta.0" }, "peerDependenciesMeta": { "vite": { @@ -12624,38 +12516,15 @@ } }, "node_modules/widest-line": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", - "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", - "dev": true, - "dependencies": { - "string-width": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/widest-line/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/widest-line/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-5.0.0.tgz", + "integrity": "sha512-c9bZp7b5YtRj2wOe6dlj32MK+Bx/M/d+9VB2SHM1OtsUHR0aV0tdP6DWh/iMt0kWi1t5g1Iudu6hQRNd1A4PVA==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "string-width": "^7.0.0" }, "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -12770,18 +12639,6 @@ "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, "node_modules/wrap-ansi/node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -13163,9 +13020,9 @@ } }, "node_modules/zod-to-json-schema": { - "version": "3.23.2", - "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.2.tgz", - "integrity": "sha512-uSt90Gzc/tUfyNqxnjlfBs8W6WSGpNBv0rVsNxP/BVSMHMKGdthPYff4xtCHYloJGM0CFxFsb3NbC0eqPhfImw==", + "version": "3.23.5", + "resolved": "https://registry.npmjs.org/zod-to-json-schema/-/zod-to-json-schema-3.23.5.tgz", + "integrity": "sha512-5wlSS0bXfF/BrL4jPAbz9da5hDlDptdEppYfe+x4eIJ7jioqKG9uUxOwPzqof09u/XeVdrgFu29lZi+8XNDJtA==", "dev": true, "peerDependencies": { "zod": "^3.23.3" diff --git a/package.json b/package.json index 90bc7c3d..46b49cfb 100644 --- a/package.json +++ b/package.json @@ -12,25 +12,25 @@ "test": "xo && astro build" }, "devDependencies": { - "@astrojs/rss": "^4.0.7", - "@astrojs/sitemap": "^3.1.6", - "@astrojs/tailwind": "^5.1.0", + "@astrojs/rss": "^4.0.9", + "@astrojs/sitemap": "^3.2.1", + "@astrojs/tailwind": "^5.1.2", "@astrolib/seo": "1.0.0-beta.5", "@astropub/md": "^1.0.0", - "@tailwindcss/forms": "^0.5.7", - "@tailwindcss/typography": "^0.5.14", - "@typescript-eslint/parser": "^8.2.0", - "astro": "^4.14.3", + "@tailwindcss/forms": "^0.5.9", + "@tailwindcss/typography": "^0.5.15", + "@typescript-eslint/parser": "^8.12.2", + "astro": "^4.16.7", "astro-iconify": "^1.2.0", - "eslint-plugin-astro": "^1.2.3", - "ky": "^1.7.0", + "eslint-plugin-astro": "^1.3.0", + "ky": "^1.7.2", "limax": "^4.1.0", "reading-time": "^1.5.0", "rehype-autolink-headings": "^7.1.0", "rehype-slug": "^6.0.0", "remark-custom-header-id": "^1.0.0", - "tailwindcss": "^3.4.10", - "typescript": "^5.5.4", + "tailwindcss": "^3.4.14", + "typescript": "^5.6.3", "xo": "^0.59.3" }, "xo": { diff --git a/public/apps/app-buddy/icon.png b/public/apps/app-buddy/icon.png new file mode 100644 index 00000000..585dafcf Binary files /dev/null and b/public/apps/app-buddy/icon.png differ diff --git a/public/apps/app-buddy/screenshot1.jpg b/public/apps/app-buddy/screenshot1.jpg new file mode 100644 index 00000000..d733d5fe Binary files /dev/null and b/public/apps/app-buddy/screenshot1.jpg differ diff --git a/public/apps/memo-widget/icon.png b/public/apps/memo-widget/icon.png index 4e3739ce..ce5c2f56 100644 Binary files a/public/apps/memo-widget/icon.png and b/public/apps/memo-widget/icon.png differ diff --git a/public/apps/photo-widget/icon.png b/public/apps/photo-widget/icon.png index e9957b8e..a0828206 100644 Binary files a/public/apps/photo-widget/icon.png and b/public/apps/photo-widget/icon.png differ diff --git a/public/apps/quickgpt/screenshot1.jpg b/public/apps/quickgpt/screenshot1.jpg index 4e27590c..60b54a29 100644 Binary files a/public/apps/quickgpt/screenshot1.jpg and b/public/apps/quickgpt/screenshot1.jpg differ diff --git a/public/apps/shareful/screenshot.jpg b/public/apps/shareful/screenshot.jpg deleted file mode 100644 index 438636d2..00000000 Binary files a/public/apps/shareful/screenshot.jpg and /dev/null differ diff --git a/public/apps/shareful/screenshot1.jpg b/public/apps/shareful/screenshot1.jpg new file mode 100644 index 00000000..bcfc67c0 Binary files /dev/null and b/public/apps/shareful/screenshot1.jpg differ diff --git a/public/apps/shareful/source/screenshot.png b/public/apps/shareful/source/screenshot.png deleted file mode 100644 index 8c89e557..00000000 Binary files a/public/apps/shareful/source/screenshot.png and /dev/null differ diff --git a/public/apps/supercharge/icon.png b/public/apps/supercharge/icon.png new file mode 100644 index 00000000..29046390 Binary files /dev/null and b/public/apps/supercharge/icon.png differ diff --git a/public/apps/supercharge/screenshot1.jpg b/public/apps/supercharge/screenshot1.jpg new file mode 100644 index 00000000..8ee9225f Binary files /dev/null and b/public/apps/supercharge/screenshot1.jpg differ diff --git a/public/apps/supercharge/screenshot2.jpg b/public/apps/supercharge/screenshot2.jpg new file mode 100644 index 00000000..a4b91478 Binary files /dev/null and b/public/apps/supercharge/screenshot2.jpg differ diff --git a/public/assets/thanks/nitric-logo.svg b/public/assets/thanks/nitric-logo.svg new file mode 100644 index 00000000..0305b933 --- /dev/null +++ b/public/assets/thanks/nitric-logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/source/assets/styles/base.css b/source/assets/styles/base.css index f35ff113..5723bcf8 100644 --- a/source/assets/styles/base.css +++ b/source/assets/styles/base.css @@ -33,3 +33,7 @@ kbd { border: solid 1px #747c8b !important; } } + +.footnotes { + margin-top: 100px !important; +} diff --git a/source/content/apps/actions.md b/source/content/apps/actions.md index 59279cdd..78a7a92a 100644 --- a/source/content/apps/actions.md +++ b/source/content/apps/actions.md @@ -6,20 +6,244 @@ platforms: - macOS - iOS - visionOS -repoUrl: https://github.com/sindresorhus/Actions appStoreId: 1586435171 links: - 'Older Versions': https://github.com/sindresorhus/Actions#download 'TestFlight': https://testflight.apple.com/join/fJGUrsZx olderMacOSVersions: - '12' - '13' feedbackNote: | - ### If you get a “com.apple.extensionKit.errorDomain error 2” error when running your shortcut or if the actions don't show up in the Shortcuts app, restart your device. This is caused by an iOS bug. + ### If you get a “com.apple.extensionKit.errorDomain error 2” error when running your shortcut or if the actions don't show up in the Shortcuts app, restart your device. You could also try setting a different device language and then back. If you just updated the operating system, give it some time to re-index all shortcut actions. Please don't contact me about this issue. This is a problem with iOS/macOS and out of my control. - **Some actions that are not possible: orientation lock status, flashlight status, ambient sensor info, flight mode status. Generally, anything related to changing system features/settings or interacting with other apps is not possible.** + **Some actions that are not possible: orientation lock status, flashlight status, ambient sensor info, flight mode status, [and more](/actions#impossible-actions). Generally, anything related to changing system features/settings or interacting with other apps is not possible.** --- The app provides lots of powerful extra actions for the Shortcuts app on macOS, iOS, and visionOS. These actions make it significantly easier to create shortcuts. -**Restart your device if the actions do not show up in the Shortcuts app.** +**Restart your device if the actions do not show up in the Shortcuts app. Also try setting a different device language and then back.** + +If you have any questions about how to use the different actions or for what, try asking the [Actions GPT bot](https://chatgpt.com/g/g-6746353a017881918cceb0761aea3bfe-actions-app-companion). And if you want to feed your own AI, [here is the source data](https://gist.githubusercontent.com/sindresorhus/fbba65a774fb9da915e624807a02a6d2/raw/7be21a65977b6dd82d1a6cc34be4476df057ea06/actions.md). + +--- + +#### Included actions + +- Add to List +- Apply Capture Date +- Ask for Text with Timeout +- Authenticate +- Blur Images +- Boolean +- Calculate with Soulver +- Choose from List (Extended) +- Clamp Number +- Color +- Combine Lists +- Combine Videos +- Convert Coordinates to Location +- Convert Date to Unix Time +- Convert Location to Geo URI +- Convert Unix Time to Date +- Create Color Image +- Create Menu Item +- Create URL +- Download File +- Edit URL +- Encrypt File +- Encrypt Text +- Filter List +- Find Music Playlist (iOS-only) +- Flash Screen (macOS-only) +- Format Currency +- Format Date Difference +- Format Duration +- Format Number as Ordinal +- Format Number — Compact +- Format Person Name +- Generate CSV +- Generate Haptic Feedback (iOS-only) +- Generate Random Data +- Generate Random Text +- Generate UUID +- Get Audio Playback Destination (iOS-only) +- Get Average Color +- Get Average Color of Image +- Get Battery State +- Get Bluetooth Device +- Get Bluetooth Devices +- Get Boolean from Input +- Get Compass Heading (iOS-only) +- Get Default Printer / Set Default Printer (macOS-only) +- Get Device Details (Extended) +- Get Device Motion Data (iOS-only) +- Get Device Orientation +- Get Dominant Colors of Image +- Get Elevation (iOS-only) +- Get Emojis +- Get File Icon (macOS-only) +- Get File Path +- Get High-Resolution Timestamp +- Get Image Capture Date / Set Image Capture Date +- Get Image Location / Set Image Location +- Get Index of List Item +- Get Map Image of Location +- Get Modifier Key State (macOS-only) +- Get Paragraphs from Text +- Get Printers (macOS-only) +- Get Query Item Value from URL +- Get Query Items from URL +- Get Query Items from URL as Dictionary +- Get Random Boolean +- Get Random Color +- Get Random Date and Time +- Get Random Emoticon +- Get Random Floating-Point Number +- Get Random Number from Seed +- Get Related Words +- Get Running Apps (macOS-only) +- Get Sentences from Text +- Get SF Symbol Image +- Get Title of URL +- Get Uniform Type Identifier / Set Uniform Type Identifier +- Get User Details +- Get Values Using JSONPath +- Global Variable +- Hex Encode +- Hide Shortcuts App +- Invert Images +- Is Accessibility Feature On +- Is Audio Playing (iOS-only) +- Is Bluetooth On +- Is Call Active (iOS-only) +- Is Camera On (macOS-only) +- Is Cellular Data On +- Is Cellular Low Data Mode On +- Is Conforming to Uniform Type Identifier +- Is Connected to VPN (iOS-only) +- Is Dark Mode On +- Is Day +- Is Device Locked +- Is Device Moving +- Is Device Orientation +- Is Host Reachable +- Is Low Power Mode On +- Is Microphone On (macOS-only) +- Is Online +- Is Screen Locked (macOS-only) +- Is Shaking Device +- Is Silent Mode On (iOS-only) +- Is Time +- Is Time In Range +- Is Web Server Reachable +- Is Wi-Fi On (macOS-only) +- Join Wi-Fi (iOS-only) +- Merge Dictionaries +- Named Clipboard (macOS-only) +- Open URLs with App (macOS-only) +- Overwrite File +- Parse CSV +- Parse JSON5 +- Play Alert Sound (macOS-only) +- Pretty Print Dictionaries +- Remove Duplicate Lines +- Remove Duplicates from List +- Remove Emojis +- Remove Empty Lines +- Remove from List +- Remove Non-Printable Characters +- Reverse Lines +- Reverse List +- Round Number to Multiple +- Sample Color from Screen (macOS-only) +- Scan Documents (iOS-only) +- Scan QR Codes in Image +- Set Creation and Modification Date of File +- Show Notification +- Shuffle List +- Sort List +- Sort Months +- Spell Out Number +- Toggle Boolean +- Transform Lists +- Transform Text *(camel case, slugify, transliteration, etc.)* +- Transform Text with JavaScript +- Trim Whitespace +- Truncate List +- Truncate Number +- Truncate Text +- Wait Milliseconds +- Write or Edit Text + +#### Want more shortcut actions? + +- High-quality transcription (speech to text) in 100 languages → [Aiko](https://sindresorhus.com/aiko) +- Trigger shortcuts on your Mac from your iOS device → [Hyperduck](https://sindresorhus.com/hyperduck#shortcuts) +- Show text in menu bar → [One Thing](https://sindresorhus.com/one-thing) +- Open URLs in a specific browser → [Velja](https://sindresorhus.com/velja) +- Remove tracking parameters from URLs → [Velja](https://sindresorhus.com/velja) & [Pure Paste](https://sindresorhus.com/pure-paste) +- Generate images from text with AI locally → [Amazing AI](https://sindresorhus.com/amazing-ai) +- Clear clipboard formatting → [Pure Paste](https://sindresorhus.com/pure-paste) +- Get internet speed → [Speediness](https://sindresorhus.com/speediness) +- Join video calls → [Dato](https://sindresorhus.com/dato) +- Put text on the iOS Lock Screen → [Any Text](https://sindresorhus.com/any-text) +- Get random animated GIF → [Jiffy](https://sindresorhus.com/jiffy) +- Get clipboard items → [Pasteboard Viewer](https://sindresorhus.com/pasteboard-viewer) +- Preview app icons → [Icon Preview](https://sindresorhus.com/icon-preview) +- Use the ChatGPT API, Ollama, Groq → [AI Actions](https://sindresorhus.com/ai-actions) + +#### Impossible actions {#impossible-actions} + +Some common actions requests that are not possible: + +- Orientation lock status +- Flashlight status +- Ambient sensor info +- Flight mode status +- Hotspot status +- Hotspot connect/disconnect +- CarPlay connection status + +Anything related to changing system features/settings or interacting with other apps is generally not possible. + +For these, I recommend sending a [feature request to Apple](https://feedbackassistant.apple.com). + +### Frequently Asked Questions {#faq} + +#### I have a feature request, bug report, or some feedback + +Click the feedback button in the app or [send it here.](https://sindresorhus.com/feedback?product=Actions&referrer=Website-FAQ) + +#### The actions don't show up in the Shortcuts app + +This is caused by a iOS/macOS bug. + +Some things you could try: + +1. Restart your device. +1. Change the device language to something else and back. +1. Add [this shortcut](https://www.icloud.com/shortcuts/14315b9af3774a0c8cb439718a67fb2f), run it once, and see if the actions show up in the Shortcuts app after that. + +#### I get a “errorDomain error 2” error when running an action + +Same solution as above. + +#### Why is this free without ads? + +I just enjoy making apps and want this to be available for everyone. Consider leaving a nice review on the App Store. + +#### How can I prevent the app from being offloaded when I have “app offloading” enabled on iOS? + +iOS does not have a way to prevent individual apps from being offloaded (even though it should!) and there is no way for apps to tell iOS not to offload them. I recommend [sending feedback to Apple](https://feedbackassistant.apple.com) about this. You could try [this workaround](https://www.reddit.com/r/ios/comments/85k8b5/disable_offloading_for_specific_apps/). + +#### [More FAQs…](/apps/faq) + +### Older versions + +- [2.10.0](https://www.dropbox.com/scl/fi/lzy4po8qfggroxcv9pzdo/Actions-2.10.0-1731826197.zip?rlkey=f37xihlhq45syauygdn5268un&raw=1) for macOS 13+ +- [1.13.1](https://www.dropbox.com/scl/fi/9iqfn8airygpk0la4gv1u/Actions-1.13.1-1731826428.zip?rlkey=y4u5ni2pn28rp3lse08lv96k6&raw=1) for macOS 12+ + +### Non-App Store Version + +A special macOS version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. + +[Download](https://github.com/sindresorhus/meta/files/13718302/Actions.3.0.0.zip) *(3.0.0 · macOS 14+)* diff --git a/source/content/apps/ai-actions.md b/source/content/apps/ai-actions.md index d5efaee0..057f872a 100644 --- a/source/content/apps/ai-actions.md +++ b/source/content/apps/ai-actions.md @@ -11,14 +11,17 @@ appStoreId: 6465250302 # - '14' --- -The app provides additional AI-related actions (GPT-4o, GPT-4o mini, GPT-4, GPT 3.5) for the Shortcuts app. +The app provides additional AI-related actions (o1, o1 mini, GPT-4o, GPT-4o mini, GPT-4, GPT 3.5) for the Shortcuts app. For example, an action to interact with the ChatGPT API. -**The app requires you to specify your own OpenAI API key.** +**The app requires you to specify your own OpenAI API key.**\ +Note that ChatGPT Plus does not give you free API access. Your API key is securely stored in your keychain, not in a shortcut. +It also supports many more models through [Ollama and Groq](#alternative-providers). + **The macOS version on the App Store requires an Apple silicon Mac.** For Intel Macs, use the [non-App Store version](#non-app-store-version).\ *(This is because Apple only accepted the iOS version and not the macOS version, so on macOS, the iOS version of the app is used, which only runs on Apple silicon Macs)* @@ -30,6 +33,14 @@ Your API key is securely stored in your keychain, not in a shortcut. *You may also like my [Actions](/actions) app.* +### Tips + +#### Ollama and Groq support {#alternative-providers} + +The app also supports [Ollama](https://ollama.com/blog/openai-compatibility) (local models like GGUF) and [Groq](https://console.groq.com/docs/openai) (because they have OpenAI API compatibility), making it possible to use it with a lot more models. + +For Ollama, you need to specify a local URL like `http://localhost:11434` in the “Base URL” setting in the app. For Groq, specify `https://api.groq.com/openai`. In the “Ask AI” action, select the “Custom” model and provide the name of the desired model. + ### Frequently Asked Questions {#faq} #### I have a feature request, bug report, or some feedback @@ -76,6 +87,6 @@ I don't plan to localize the app. A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. -[Download](https://www.dropbox.com/scl/fi/sj8e83wj6t5vmakylg1h1/AI-Actions-1.2.5-1723502677.zip?rlkey=s3i1om646md9xbm7bwc7p04j8&raw=1) *(1.2.5)* +[Download](https://www.dropbox.com/scl/fi/2b1e4pvrp11bove0ut5bb/AI-Actions-1.3.3-1734543150.zip?rlkey=69kb2uchxd6rk2a99z4ci2ffb&raw=1) *(1.3.3)* *Requires macOS 14 or later* diff --git a/source/content/apps/aiko.md b/source/content/apps/aiko.md index 8fbb3a85..99198d6e 100644 --- a/source/content/apps/aiko.md +++ b/source/content/apps/aiko.md @@ -6,9 +6,16 @@ platforms: - macOS - iOS - visionOS +isPaid: true appStoreId: 1672085276 olderMacOSVersions: - '13' +feedbackNote: | + Please don't contact me about Whisper v3 turbo support. I'm looking into it. + + If the app crashes, it's likely that the device ran out of available RAM. Restart your device and try again. + + Any problems with the output are unfortunately out of my control. The app uses the OpenAI Whisper AI model to transcribe. The model has some flaws with certain recordings like repetition, hallucination, and refusal to produce text. --- High-quality on-device transcription. Easily convert speech to text from meetings, lectures, and more. @@ -129,6 +136,10 @@ Aiko transcribes audio directly on your device, ensuring complete privacy. It's The app uses the Whisper large v2 model on macOS and the medium or small model on iOS depending on available memory. +### Trial + +You can try out a time-limited trial (14 days) on [TestFlight](https://testflight.apple.com/join/P1qnhHCC). + ### Tips #### Divide text into paragraphs @@ -189,6 +200,10 @@ You can use [this shortcut](https://www.icloud.com/shortcuts/e43220d72f3343659e0 The v3 model is [worse](https://github.com/openai/whisper/discussions/1762#discussioncomment-7532295) than v2 in too many cases. I tried releasing v3, but got a lot of emails about the quality being worse, so I ended up reverting it. +#### Can you add support for v3 turbo? + +I have plans to look into it, but it's not something I have time to prioritize right now. It cannot be the default model as it's worse than v2. Which means, I will need to add support for downloading models, which is a huge amount of work. + #### Can you include the large model on iOS? Even the latest iPhone is not powerful enough to run the large model. It can maybe be done when the [Whisper Distilled](https://github.com/huggingface/distil-whisper) project supports multiple languages. @@ -214,7 +229,7 @@ I have no control over the supported languages. You could try to request it [her #### The transcription repeats itself many times -This is unfortunately a flaw in the Whisper model and out of my control. +This is unfortunately a flaw in the Whisper model and out of my control. This is usually caused by the audio not being clean (for example, a lot of background noise). #### The transcription is missing punctation @@ -232,11 +247,11 @@ Ensure the "Translate to English" setting is disabled. The language used in the "Prompt" setting may also affect the transcription language. -#### The transcription is in Traditional Chinese while the audio was in Simplified Chinese? +#### The transcription is in Traditional Chinese while the audio was in Simplified Chinese or the inverse The [Whisper AI model](https://github.com/openai/whisper) used by the app does not differentiate between Traditional Chinese and Simplified Chinese, so the result could unfortunately end up with either. [Learn more.](https://github.com/openai/whisper/discussions/277) -I have plans to add a workaround where you can write a prompt to improve this, but I cannot promise when this will happen. +Try writing a sentence in Traditional Chinese or Simplified Chinese in the “Prompt” setting in the app to steer the model into using the right one. #### Why must I keep the iOS app open while it transcribes? @@ -246,10 +261,22 @@ iOS apps are fundamentally restricted from operating in the background for exten Any audio and video format that macOS and iOS supports. For example: `.m4a`, `.wav`, `.mp3`, `.mp4`, `.mov`. It does not support `.ogg`. +#### Can I get both the original transcription and the English translation at the same time? + +No, the AI model processes either transcription or translation, not both simultaneously. You need to run the process twice: once for the original transcription, and again with the “Translate to English” setting enabled. + +#### Where can I find the audio recordings? + +The audio recordings can be found in the “Aiko” folder in the Files app. + #### How can I delete audio recordings? The audio recordings can be deleted in the Files app. +#### When trying to import an audio file, I get error -50 + +The error comes from iOS and means that it could not read the audio file. Sometimes [converting](https://apps.apple.com/app/id1081480270) the audio file to a different format, like MP3, resolves the issue. + #### How can I transcribe audio from the Voice Memos app? **macOS:** Drag and drop the memo into the Aiko window. Note that because of a macOS bug, this can sometimes crash Aiko. If this happens, try sharing the memo from the Voice Memos app to Aiko instead. @@ -341,10 +368,6 @@ English approximation: `ah-ee-ko` Yes, it's native and written in Swift and SwiftUI. -#### Why is this free without ads? - -I just enjoy making apps. Consider leaving a nice review on the App Store. - #### Can you localize the app into my language? I don't plan to localize the app. @@ -353,12 +376,6 @@ I don't plan to localize the app. ### Older Versions -- [1.5.3](https://drive.google.com/file/d/15NOcj4fyX58I3_NlQyCziL87Ru89yFRx/view?usp=sharing) for macOS 13+ - -### Non-App Store Version - -A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. - -[Download](https://drive.google.com/file/d/18BE9Pn8QVsVQ-FOT_Q2aMEkpLJahbhC9/view?usp=sharing) *(1.6.0 · 3 GB)* +- [1.5.3](https://drive.google.com/file/d/15NOcj4fyX58I3_NlQyCziL87Ru89yFRx/view?usp=sharing) for macOS 13 -*Requires macOS 14 or later* +These are free for everyone but they will not run on newer macOS versions. diff --git a/source/content/apps/any-text.md b/source/content/apps/any-text.md index 78e10457..1d4af6b7 100644 --- a/source/content/apps/any-text.md +++ b/source/content/apps/any-text.md @@ -17,6 +17,18 @@ For macOS, it's only available for Apple silicon Macs running macOS 14 or later. *You may also like [my similar app](https://sindresorhus.com/one-thing) for macOS.* +### Tips + +#### Markdown {#markdown} + +You can style parts of the text bold, italic, or strikethrough using [Markdown](https://www.markdownguide.org/basic-syntax/). + +For example: + +- **Bold text** is created by wrapping text with double asterisks: `**bold**` +- *Italic text* is created by wrapping text with single asterisks: `*italic*` +- ~~Strikethrough text~~ is created by wrapping text with double tildes: `~~strikethrough~~` + ### Frequently Asked Questions {#faq} #### I have a feature request, bug report, or some feedback @@ -28,14 +40,16 @@ For macOS, it's only available for Apple silicon Macs running macOS 14 or later. - [iOS](https://support.apple.com/en-us/HT207122) - [macOS](https://support.apple.com/en-gb/guide/mac-help/mchl52be5da5/mac) -#### The widget does not show up in the widget picker +#### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen -This is a iOS issue. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) +The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) #### Can you support having multiple pieces of text that change during the day? I would like to keep the app simple, so it's not something I plan to support built-in. However, the app comes with a shortcut action to change the text, so you could use the [Shortcuts automations](https://support.apple.com/en-gb/guide/shortcuts/apdfbdbd7123/7.0/ios/17.0) to change the text during the day. +You could also put multiple widgets in a [widget stack](https://support.apple.com/en-sg/118610). + *(macOS does not yet have automations. You can use [Shortery](https://apps.apple.com/app/id1594183810) for now.)* #### Can you add support for user-installed fonts? @@ -66,7 +80,7 @@ The app tells iOS to update the widget, unfortunately, iOS can decide to delay a #### The widget does not update when setting the text with the Shortcuts action -This is unfortunately an iOS 16 bug. The app correctly tells iOS to update the widget, but iOS delays it for some reason. The text will update eventually. +This is unfortunately an iOS bug. The app correctly tells iOS to update the widget, but iOS delays it for some reason. The text will update eventually. If you work at Apple → [FB11522170](https://github.com/feedback-assistant/reports/issues/359) @@ -74,6 +88,10 @@ If you work at Apple → [FB11522170](https://github.com/feedback-assistant/repo The widget sizes are controlled by Apple. The provided size is the largest it allows. +#### Can you make the widget background transparent + +This is not possible. + #### Can you remove the title shown below the widget? Apple does not allow removing the title. Some apps managed to do it early on, but these days, Apple rejects any attempt at doing that. However, in iOS 18 you can hide the title for all apps and widgets. @@ -124,3 +142,22 @@ I just enjoy making apps. I earn money on other apps. Consider leaving a nice re I don't plan to localize the app. #### [More FAQs…](/apps/faq) + +### Scripting + +The text in the widgets can be changed using the Shortcuts app. + +#### Shortcuts app + +- [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) +- [How to run shortcuts from the command-line on macOS](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) + +#### Command-line on macOS + +Shortcuts can be executed via the command-line, allowing you to set widget text programmatically. + +For example, to set the text for widget 1, add [this shortcut](https://www.icloud.com/shortcuts/6873c23a3cbb4718b23135e367d6be1b), and then run this: + +```sh +echo 'TEST' | shortcuts run 'Set Widget 1 Text' +``` diff --git a/source/content/apps/app-buddy.md b/source/content/apps/app-buddy.md new file mode 100644 index 00000000..bf9a223c --- /dev/null +++ b/source/content/apps/app-buddy.md @@ -0,0 +1,44 @@ +--- +title: App Buddy +subtitle: Helper for my apps +pubDate: 2024-10-20 +platforms: + - macOS +mainLinks: + 'Download': https://github.com/sindresorhus/app-buddy-meta/releases/latest/download/App.Buddy.zip +# olderMacOSVersions: +# - '15' +--- + +Requires macOS 15+ + +This app provides support functionality for [my apps](/apps). It offers easy ways to export/import (backup/transfer) settings, reset privacy permissions, and more. It's a separate app because some features are not possible in sandboxed apps, which most of my apps are. + +I welcome suggestions for what more useful support tools it could contain. Some things I have planned are: delete app data and uninstall. + +*I also have future plans to make this app provide extra functionality for my sandboxed apps.* + +![Download count](https://img.shields.io/github/downloads/sindresorhus/app-buddy-meta/total?color=3e65d0) + +### Frequently Asked Questions {#faq} + +#### I have a feature request, bug report, or some feedback + +Click the feedback button in the app or [send it here.](https://sindresorhus.com/feedback?product=App%20Buddy&referrer=Website-FAQ) + +#### Can it support apps other than yours? + +No. This is intended for my apps only. + +If you need app setting import/export for any apps, check out my [Supercharge](/supercharge) app. + +#### Why is this not in the App Store? + +Much of the functionality would not be possible in the App Store because of sandboxing. + +#### [More FAQs…](/apps/faq) + + diff --git a/source/content/apps/battery-indicator.md b/source/content/apps/battery-indicator.md index c45932fc..985172b4 100644 --- a/source/content/apps/battery-indicator.md +++ b/source/content/apps/battery-indicator.md @@ -25,7 +25,7 @@ Battery Indicator lets you quickly glance the remaining battery time or percenta #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. You may also have enabled the “Hide while on power” preference, which hides the menu bar icon while the power adapter is connected. Launch the app again to reveal the menu bar item for 5 seconds or disconnect the power adapter. diff --git a/source/content/apps/camera-preview.md b/source/content/apps/camera-preview.md index 1f907933..fc612ce1 100644 --- a/source/content/apps/camera-preview.md +++ b/source/content/apps/camera-preview.md @@ -4,6 +4,7 @@ subtitle: Preview your webcam and take photos pubDate: 2023-05-20 platforms: - macOS +isPaid: true isMenuBarApp: true appStoreId: 1632827132 olderMacOSVersions: @@ -16,7 +17,7 @@ Instant access to your Mac's camera feed for quick checks before video calls. - Press the Return or Space key while showing the camera feed to take a photo. - Press the Command and + key to zoom in, Command and - to zoom out, and Command and 0 to reset the zoom. -- Press the Option key while resizing the window to resize from the center (this works with any app). +- Press the Option key while resizing the window to resize from the center (this works with any app). ### Frequently Asked Questions {#faq} @@ -24,6 +25,12 @@ Instant access to your Mac's camera feed for quick checks before video calls. [Send it here.](https://sindresorhus.com/feedback?product=Camera%20Preview&referrer=Website-FAQ) +#### The app does not work {#not-working} + +- Ensure you are on the latest version. +- Restart your computer. +- Try [resetting permissions](/apps/faq#mac-reset-permissions). + #### Can you add support for making the camera feed a circle? I don't plan to add that. I plan to make a separate app specifically for showing the camera on presentations and screencasts, which will have this feature. @@ -71,9 +78,9 @@ No No. That's outside the scope of this app. You can use the built-in QuickTime Player app for that. -#### Why is this free without ads? + #### Can you localize the app into my language? @@ -83,12 +90,6 @@ I don't plan to localize the app. ### Older Versions -- [1.4.0](https://github.com/sindresorhus/meta/files/13988612/Camera.Preview.1.4.0.-.macOS.13.zip) for macOS 13+ - -### Non-App Store Version - -A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. - -[Download](https://www.dropbox.com/scl/fi/29jhs5p2cvsirrrzqo8ys/Camera-Preview-1.5.0-1705674569.zip?rlkey=cro7g7ntqchwcf8hak9o6c816&raw=1) *(1.5.0)* +- [1.4.0](https://github.com/sindresorhus/meta/files/13988612/Camera.Preview.1.4.0.-.macOS.13.zip) for macOS 13 -*Requires macOS 14 or later* +These are free for everyone but they will not run on newer macOS versions. diff --git a/source/content/apps/command-x.md b/source/content/apps/command-x.md index 9a04e403..3ac2dcea 100644 --- a/source/content/apps/command-x.md +++ b/source/content/apps/command-x.md @@ -13,7 +13,13 @@ Cut and paste files and folders in Finder using Command+X and Command+V. Without [Review by Softpedia](https://mac.softpedia.com/get/System-Utilities/Command-X.shtml) -Known limitation: You cannot cut the name of a file when editing a filename in Finder or cut when using the search field. There is no way for the app to work around this. +Known limitation: You cannot cut the name of a file when editing a filename in Finder or cut when using the search field. [Learn more.](#textfield-limitation) + +--- + +You may also like my [Supercharge](/supercharge) app. + +--- ### Frequently Asked Questions {#faq} @@ -21,14 +27,14 @@ Known limitation: You cannot cut the name of a file when editing a filename in F [Send it here.](/feedback?product=Command%20X&referrer=Website-FAQ) -#### Why? I can already use `Option+Command+V` +#### Why? I can already use Option+Command+V - It's more logical to cut & paste than copy & move. - Consistency and muscle memory benefits if you also use Linux or Window. #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### The app does not work {#not-working} @@ -44,7 +50,7 @@ Then try toggling the setting “Use more reliable way of handling Command+X”, Also try closing any anti-virus app you have running as it may interfere with the app (or at least disable any Secure Keyboard Entry type setting it may have). And if you don't have any anti-virus app, try closing down all apps and menu bar items, just to rule out some other app interfering. If it's a work computer, your company may have something installed that prevents the app from working. -The last thing you could try is to reset the permissions. Quit the app and run this in the Terminal app: +The last thing you could try is to reset the permissions. Either use [App Buddy](/app-buddy), or quit the app, and run this in the Terminal app: ```sh tccutil reset All com.sindresorhus.Command-X @@ -72,9 +78,9 @@ This is not possible. The app works by overriding some key combinations. It does This is a Finder bug. You can reproduce it even without Command X by selecting the file to move, pressing Command+C, selecting the destination folder, and then pressing Option+Command+V. -#### I am not able to cut text when editing a filename in Finder +#### I am not able to cut text when editing a filename in Finder {#textfield-limitation} -This is a known issue that is unfortunately not fixable. The app works by overriding the normal cut keyboard shortcut when Finder is active, which also affects cutting text in a filename. There is no way to differentiate between cutting a file and cutting text in a filename in Finder. +This is a known issue that is unfortunately not fixable. The app works by overriding the normal cut keyboard shortcut when Finder is active, which also affects cutting text in a filename. There is no way to differentiate between cutting a file and cutting text in a filename in Finder. The main reason this is not possible is because of restrictions (sandboxing) imposed on apps on the App Store. My [Supercharge](/supercharge) app has the Command X feature without this limitation because it's not on the App Store. #### I am not able to cut text in the search field in Finder diff --git a/source/content/apps/dato.md b/source/content/apps/dato.md index b9e8c8f3..2793a84e 100644 --- a/source/content/apps/dato.md +++ b/source/content/apps/dato.md @@ -18,9 +18,11 @@ olderMacOSVersions: Dato gives you a local clock, date, and multiple world clocks in the menu bar. When you click Dato in the menu bar, you get a menu with a calendar, calendar events, and world clocks. All of this is highly customizable. -[MacStories review of Dato.](https://www.macstories.net/reviews/dato-review-calendar-events-and-time-zones-from-your-macs-menu-bar/) +Dato is a one-time purchase on the App Store with a lifetime of updates. +
+(Equivalent to two months of Fantastical subscription) -If all you need is another clock in the menu bar, check out [Second Clock](/second-clock). +[MacStories review of Dato.](https://www.macstories.net/reviews/dato-review-calendar-events-and-time-zones-from-your-macs-menu-bar/) #### Features @@ -51,9 +53,15 @@ If all you need is another clock in the menu bar, check out [Second Clock](/seco - Date calculator. - Hourly chime. +--- + +If all you need is another clock in the menu bar, check out [Second Clock](/second-clock). + +--- + ### Trial -There's a fully functional trial available [here](https://www.dropbox.com/scl/fi/6z1mj94xelwpmoyojkvt3/Dato-5.3.7-trial-1725218207.zip?rlkey=hdidus85nzcwu164rdx7z3hr3&raw=1). The only limitation is that it will prompt you to buy Dato every 12 hours and it will not receive automatic updates. If you decide to buy Dato on the App Store, all data and settings from the trial version will be preserved (they share the same storage). +Try the fully functional trial [here](https://www.dropbox.com/scl/fi/fokrtfbzj64l8w9q8ov7i/Dato-5.4.3-trial-1734185389.zip?rlkey=rohwdtwrk69r78stm0p7u1gqe&raw=1). The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it on the App Store. You can also [try it on Setapp](https://go.setapp.com/stp181?refAppID=571&utm_medium=vendor_program&utm_content=button) for 7 days for free. @@ -246,7 +254,11 @@ You can also [try it on Setapp](https://go.setapp.com/stp181?refAppID=571&utm_me #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. + +#### Dato does not work with Ice + +This is an [issue with Ice](https://github.com/jordanbaird/Ice/discussions/298) and must be fixed there. #### Can I buy Dato from outside the App Store and Setapp? @@ -261,9 +273,11 @@ Make sure: - When in the settings for it, the placeholder example menu bar item shows up in the menu bar. - If it doesn't show up, try reducing the “event title limit”. - There is enough space in the menu bar to show it. -- If you have Bartender or Ice (or a similar app that hides menu bar items) installed, make sure the menu bar item was not auto-hidden by Bartender. - - Note that it uses a separate menu item from the main Dato menu item, so it could still be hidden by Bartender while the main menu bar item is not. - - Try quitting Bartender to make sure it is not one causing the issue. +- If you have Bartender or Ice (or a similar app that hides menu bar items) installed, make sure the menu bar item was not auto-hidden by them. + - Note that it uses a separate menu item from the main Dato menu item, so it could still be hidden by Bartender/Ice while the main menu bar item is not. + - Try quitting Bartender/Ice to make sure it is not one causing the issue. + - If you are using Ice, see [this](https://github.com/jordanbaird/Ice/discussions/298). + - As a workaround, in the “upcoming event in menu bar” settings, you could choose to keep the menu bar item visible even when there are no upcoming events. #### It does not support the video call service I use @@ -322,12 +336,18 @@ Make sure: - The calendar with the event is enabled in Dato. - You are on the latest Dato and macOS versions. - You have tried restarting your computer. -- You have not muted the event. +- The event is not a declined event, which Dato does not show. +- You have not hidden the event using the “Hide” action in the event's context menu. - You have not excluded the event with the “Exclude events” setting. - The event shows up in the Calendar app. - If it does not show up there, the problem is not with Dato. - Try pressing Command+R in the Calendar app to force-refresh. - - If it's a Google account, you could try signing out and in again in the Calendar settings. That has helped a few users. + - If it's a Google account, try signing out and in again of the Google account in the Calendar app settings. That has helped a few users. +- [Microsoft Bookings has problems syncing to MacBooks.](https://answers.microsoft.com/en-us/outlook_com/forum/all/bookings-meetings-sync-with-iphone-but-not-with/085530b3-90d2-4792-b0d9-0cc6f52875ba?page=3) + +#### Dato is not in sync with Outlook + +Dato simply presents events from the macOS calendar system (the builtin Calendar app). It does not do the actual syncing. macOS has known problems with Outlook syncing. [This may help.](https://discussions.apple.com/thread/254365894?sortBy=rank) #### How can I edit an event in Dato? @@ -392,6 +412,7 @@ Make sure: - You have not muted the event. - You have not excluded the event with the “Exclude events” setting. - You have not already joined the event in the last 15 minutes. +- You have not paused fullscreen notification from a [Focus Filter](https://support.apple.com/en-gb/guide/mac-help/mchl613dc43f/mac). #### What does the “Hide” button on an event do? {#hide-event} @@ -460,7 +481,9 @@ What Dato does support is showing a notification right when an event for a video #### How can I enable fullscreen notifications only at certain times or for certain conditions? -This is a perfect use case for the built-in Shortcuts app. You can use the `Set Fullscreen Notifications State` action provided by Dato to enable or disable fullscreen notifications. For example, to only enable fullscreen notifications during work hours, you will need to create two shortcuts. One to enable fullscreen notifications and one to disable it. You also need the [Shortery app](https://apps.apple.com/no/app/shortery/id1594183810?mt=12) to run the shortcuts at the correct times. The Shortery app is only a temporary requirement. It's almost certain that Apple will introduce automation for Shortcuts in macOS 14. +You can use the [Focus Filter](https://support.apple.com/en-gb/guide/mac-help/mchl613dc43f/mac) that comes with Dato to pause fullscreen notifications when in certain focus modes. + +Alternatively, use the built-in Shortcuts app. You can use the `Set Fullscreen Notifications State` action provided by Dato to enable or disable fullscreen notifications. For example, to only enable fullscreen notifications during work hours, you will need to create two shortcuts. One to enable fullscreen notifications and one to disable it. You also need the [Shortery app](https://apps.apple.com/no/app/shortery/id1594183810?mt=12) to run the shortcuts at the correct times. #### How can I enable fullscreen notification only when a certain [Focus mode](https://support.apple.com/en-gb/guide/mac-help/mchl613dc43f/mac) is active? @@ -480,7 +503,7 @@ First, ensure that you have added the calendar to the system. Open the Calendar If it exists in the Calendar app, open the Dato settings, click the “Events” tab, and make sure the calendar is enabled. -If it exists in the Calendar app but not in Dato, macOS might have corrupted some permissions. This is, unfortunately, a common problem. Try to reset the permissions for Dato. Quit Dato, open the Terminal app, paste in the following command, and press Enter: +If it exists in the Calendar app but not in Dato, macOS might have corrupted some permissions. This is, unfortunately, a common problem. Try to reset the permissions for Dato, either with [App Buddy](/app-buddy) or manually; Quit Dato, open the Terminal app, paste in the following command, and press Enter: ```sh tccutil reset All com.sindresorhus.Dato @@ -521,7 +544,7 @@ Yes This is a perfect use case for the built-in Shortcuts app. You can use the `Quit App` and `Open App` actions to quit and relaunch Dato whenever needed. For example, you could create a focus shortcut that quits Dato, plays some music, turns off notifications, etc. -To hide the Dato clock at a certain time of the day, you need the [Shortery app](https://apps.apple.com/no/app/shortery/id1594183810?mt=12). The Shortery app is only a temporary requirement. It's almost certain that Apple will introduce automation for Shortcuts in macOS 14. +To hide the Dato clock at a certain time of the day, you need the [Shortery app](https://apps.apple.com/no/app/shortery/id1594183810?mt=12). #### How can I show [day of year](https://nsidc.org/data/user-resources/help-center/day-year-doy-calendar) in the menu bar? @@ -545,6 +568,10 @@ This is a known macOS bug. Restarting your computer usually fixes it. Same answer as above. +#### The time zone widget resets each time Dato updates + +This is a macOS bug and unfortunately out of my control. Dato simply defines the parameters for the widget, but macOS is the one that shows the configuration screen and saves your choices from there. + #### Can it show the list of events in a separate menu item from the calendar and time zones? No, but you could use Dato in combination with my [Today](/today) app. @@ -559,7 +586,7 @@ The Shortcuts app does not yet support automation, so to have the shown todo sta #### Can Dato support Focus Filters? {#focus-filters} -This is planned. However, it's unfortunately not possible until Apple fixes a certain bug with the feature. As a workaround, you could use the [Shortery](https://apps.apple.com/app/id1594183810) app to run a shortcut on focus changes that uses the “Set Fullscreen Notification State” shortcut action provided by Dato. +Dato has a focus filter for pausing fullscreen notifications. Ideas for other filters welcome. #### Can I change the chime frequency for the "Hourly Chime" feature? @@ -597,6 +624,9 @@ It means “date” in Norwegian. I just wanted a short, unique, and relevant na #### [More FAQs…](/apps/faq) +
+
+ #### Dato 5 ###### Behavior changes diff --git a/source/content/apps/day-progress.md b/source/content/apps/day-progress.md index 8161e8a4..79ab216f 100644 --- a/source/content/apps/day-progress.md +++ b/source/content/apps/day-progress.md @@ -6,6 +6,8 @@ platforms: - macOS isMenuBarApp: true appStoreId: 6450280202 +links: + 'TestFlight': https://testflight.apple.com/join/mFx764Kp olderMacOSVersions: - '13' --- @@ -52,7 +54,7 @@ Unfortunately, it's not possible to fully hide the built-in menu bar clock. Howe #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can you add widgets? diff --git a/source/content/apps/favorites-widget.md b/source/content/apps/favorites-widget.md index e3361f82..202e3715 100644 --- a/source/content/apps/favorites-widget.md +++ b/source/content/apps/favorites-widget.md @@ -5,6 +5,7 @@ pubDate: 2022-09-12 platforms: - macOS - iOS +isPaid: true appStoreId: 1643660089 forceHasIosAppIcon: true --- @@ -42,6 +43,10 @@ This is unfortunately not possible. iOS enforces that Lock Screen widgets are si Sure. I'm happy to consider requests. [Send it here.](https://sindresorhus.com/feedback?product=Favorites%20Widget&referrer=Website-FAQ) +#### Can you make the widget background transparent + +This is not possible. + #### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? This is because of iOS limitations. A widget can only open its own app when a user taps it. And the only way to run a shortcut is to open the Shortcuts app using a special URL. So when you tap the widget, the widget opens the main app, and the main app then opens the Shortcuts app. It's not a very good user experience, but only Apple can fix this. @@ -51,9 +56,9 @@ If you work at Apple, you know what to do: - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) -#### Why is this free without ads? + #### Can you localize the app into my language? diff --git a/source/content/apps/folder-peek.md b/source/content/apps/folder-peek.md index 0ae84771..40cdd26c 100644 --- a/source/content/apps/folder-peek.md +++ b/source/content/apps/folder-peek.md @@ -9,6 +9,8 @@ appStoreId: 1615988943 olderMacOSVersions: - '12' - '13' +feedbackNote: | + If the app is not working after updating to macOS 15, restart your computer once more and it should work. This is a macOS 15 bug. If it still doesn't work, Apple has told me it will be fixed in macOS 15.1. ---
@@ -49,7 +51,7 @@ You could add the “Desktop” folder to Folder Peek and then [hide the desktop #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Some folders are suddenly missing from the menu bar @@ -119,10 +121,27 @@ Click the menu bar item, go to the first menu bar item (which is named after you No, that is unfortunately not possible. Folder Peek is built as a system menu, and a menu cannot be kept open if it's not focused. Instead, first, navigate to the nested folder, click to open it in Finder, and then drag & drop the file into the Finder window. +#### Can it auto-mount a network volume when accessing it? {#network-volume} + +No, this is not possible because of sandboxing. If you want to use a network volume in the app, you need to manually mount it first or use a tool like [AutoMounter](https://pixeleyes.co.nz/automounter/) to keep it always mounted. + +#### Can it support adding a tag instead of a folder? + +No. This is not planned. + #### The app I want does not show up in the “Open With” menu for a folder {#folder-open-with} Apps define the types they support and Folder Peek just fetches a list of apps that support opening folders. However, many apps forget to declare support for folders even though they can open them. I would encourage reporting this to the developers of the app you want to open ([example report](https://github.com/microsoft/vscode/issues/146977)). In the meantime, I'm happy to manually add the app to the list if you contact me, but you are expected to also have reported the issue to the app's developers. +The app developer will need to add `public.folder` to `LSItemContentTypes` in their app's Info.plist: + +```xml +LSItemContentTypes + + public.folder + +``` + #### How can I make folders open in a different app than Finder by default? {#finder-alternative} Folder Peek opens the default app that handles folders, which is Finder by default. @@ -193,6 +212,6 @@ I don't plan to localize the app. A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. -[Download](https://www.dropbox.com/scl/fi/5643r7m9hybqqa5e1lr74/Folder-Peek-1.10.1-1706638981.zip?rlkey=dvkgfrorccj1qgzwpdkg9g2me&raw=1) *(1.10.1)* +[Download](https://www.dropbox.com/scl/fi/flv8w2o4ffp8f1kwzj2gv/Folder-Peek-1.11.3-1726668648.zip?rlkey=dbxv3qcd5y8n1flw2siqbk43z&raw=1) *(1.11.3)* *Requires macOS 14 or later* diff --git a/source/content/apps/hyperduck.md b/source/content/apps/hyperduck.md index 8938762b..25350ced 100644 --- a/source/content/apps/hyperduck.md +++ b/source/content/apps/hyperduck.md @@ -9,6 +9,8 @@ platforms: appStoreId: 6444667067 olderMacOSVersions: - '13' +feedbackNote: | + If you are having problems with sync, [read this](/hyperduck#troubleshooting). --- For example, share a link from Safari on your iPhone, iPad, or Apple Vision Pro, and have it open in the default browser on your Mac moments later. @@ -79,6 +81,31 @@ Create an [iOS shortcut that triggers a macOS shortcut](#shortcuts) and set it t - [Example iOS shortcut](https://www.icloud.com/shortcuts/a00ac5bb31294084936fbd4dd6ca0245) - [Example macOS shortcut](https://www.icloud.com/shortcuts/d39c57b67ed343d58192a899841d6457) +#### Send a link to a specific Mac {#send-to-specific-mac} + +Instead of using the “Send to Mac” share sheet button provided by the app, you can make a [shortcut](#shortcuts) for each Mac you want to send to and put those shortcuts in the share sheet. + +Add these shortcuts (on any device): + +- [iOS shortcut](https://www.icloud.com/shortcuts/f013c4a6da7d4a9eb0694f0a6532f34c) +- [macOS shortcut](https://www.icloud.com/shortcuts/e164558aa759486ca70553f32029fe40) + +Then edit the macOS shortcut to match the device name of the device you want this to share to. You can rename the macOS shortcut, but don't forget to update the name in the iOS shortcut. + +To support more Macs, repeat the process for each Mac. + +#### Download a file on your Mac from your iOS device + +You can use Hypeduck to trigger a download from your iOS device and have it downloaded on your Mac. + +Add the below [shortcuts](#shortcuts): + +- [iOS shortcut](https://www.icloud.com/shortcuts/4819a11f4d0b40228df7ffd737b34c3d) +- [macOS shortcut](https://www.icloud.com/shortcuts/d319976dd4cf441780f6abcb049a3cff) + - *Requires the latest [TestFlight build](https://testflight.apple.com/join/fJGUrsZx) of the Actions app.* + +You can then tap “Download on Mac” in the share sheet on your iOS device, and the item will be downloaded on your Mac to the “Downloads” folder. + ### Frequently Asked Questions {#faq} #### I have a feature request, bug report, or some feedback @@ -198,11 +225,11 @@ If you really need to see what URLs were shared, you can triple-tap on the text #### Can you support multiple Macs? -No. I would like to keep the app simple. +No. I would like to keep the app simple. However, you could [do it with Shortcuts](#send-to-specific-mac). #### Can you support the reverse - Mac to iOS? -No. That is not something I plan to support. It's simply not something I need myself and it would make the app much more complicated. +No. That is not something I plan to support. It's simply not something I need myself and it would make the app much more complicated. Also, it would not be possible to open the URL directly in the browser like it does on macOS, so the experience would not be great. #### Can you localize the app into my language? @@ -218,6 +245,6 @@ I don't plan to localize the app. A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. -[Download](https://www.dropbox.com/scl/fi/8uc8owhy3izpaj0pi7ob5/Hyperduck-1.1.0-1707315964.zip?rlkey=8v6ylbwibmi4yav8bp25sz468&raw=1) *(1.1.0)* +[Download](https://www.dropbox.com/scl/fi/jdm8gg26v9xzj99962jl0/Hyperduck-1.2.0-1726482416.zip?rlkey=wguoy48cvb4y8gmy4hcmu5dox&raw=1) *(1.2.0)* *Requires macOS 14 or later* diff --git a/source/content/apps/icon-preview.md b/source/content/apps/icon-preview.md index cc286c7a..bd41f460 100644 --- a/source/content/apps/icon-preview.md +++ b/source/content/apps/icon-preview.md @@ -43,7 +43,7 @@ Click the feedback button in the app or [send it here](https://sindresorhus.com/ #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### What image formats are supported for previewing icons? diff --git a/source/content/apps/jiffy.md b/source/content/apps/jiffy.md index be9f4645..35dc4f77 100644 --- a/source/content/apps/jiffy.md +++ b/source/content/apps/jiffy.md @@ -83,7 +83,7 @@ Jiffy lets you quickly search and discover GIFs from GIPHY. When you have found #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can you localize the app into my language? diff --git a/source/content/apps/lungo.md b/source/content/apps/lungo.md index 35412d22..5847d074 100644 --- a/source/content/apps/lungo.md +++ b/source/content/apps/lungo.md @@ -27,7 +27,7 @@ Lungo prevents your Mac from falling asleep and your screen from dimming. #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Lungo did not keep my computer awake diff --git a/source/content/apps/memo-widget.md b/source/content/apps/memo-widget.md index a92592a5..e00da037 100644 --- a/source/content/apps/memo-widget.md +++ b/source/content/apps/memo-widget.md @@ -5,7 +5,9 @@ pubDate: 2023-12-16 platforms: - macOS - iOS +isPaid: true appStoreId: 6465682248 +forceHasIosAppIcon: true --- The app provides widgets that act like sticky notes. Show them on your Home Screen, Lock Screen, StandBy, or desktop. @@ -25,9 +27,9 @@ For macOS, it's only available for Apple silicon Macs running macOS 14 or later. - [iOS](https://support.apple.com/en-us/HT207122) - [macOS](https://support.apple.com/en-gb/guide/mac-help/mchl52be5da5/mac) -#### The widget does not show up in the widget picker +#### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen -This is a iOS bug. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) +The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) #### Can you add more features and settings? @@ -41,6 +43,10 @@ The text size is large for short text but scales down to make the text fit. I do Same answer as the above. +#### Can I edit text directly in the widget? + +No. Widgets cannot have interactivity like that. This is a macOS/iOS limitation. + #### How is this different from the built-in Stickies app on macOS? {#stickies} The Stickies app is a normal app and has to either float on top of everything or it has to be manually brought to the front when needed. Memo Widget always lives on your desktop or in the Notification Center, just a [gesture away](https://www.howtogeek.com/678073/how-to-quickly-show-your-desktop-on-mac/). The Stickies app also takes up space in your Dock. The Stickies app supports formatting, while Memo Widget keeps it simple with just plain text. @@ -75,6 +81,10 @@ This is an iOS limitation and is out of my control. It shows a placeholder until I don't plan to add this. Check out my [Any Text app](/any-text), which has this. +#### Can you make the widget background transparent + +This is not possible. + #### Can you support syncing the text with iCloud? Currently, there are no plans to integrate iCloud syncing due to its complexity and the potential for increased support queries. @@ -83,9 +93,9 @@ Currently, there are no plans to integrate iCloud syncing due to its complexity Any Text has a lot of features and is very flexible. With this app, I wanted to make something simple and focused. -#### Why is this free without ads? + #### Can you localize the app into my language? diff --git a/source/content/apps/menu-bar-calendar.md b/source/content/apps/menu-bar-calendar.md index 2594d650..bd6800c5 100644 --- a/source/content/apps/menu-bar-calendar.md +++ b/source/content/apps/menu-bar-calendar.md @@ -18,7 +18,7 @@ The calendar displays dates and days in your language, but the rest of the app i ### Tips -- **Go to current month:** Click the month name or press the space key. +- **Go to today (current month):** Click the month name or press the space key. - **Switch months:** Press arrow keys or swipe horizontally on the calendar. - **Switch years:** While holding the option key, click the `‹` / `›` button, press arrow keys, or swipe horizontally on the calendar. - **Close calendar window:** Press the esc key. @@ -37,7 +37,7 @@ The calendar displays dates and days in your language, but the rest of the app i #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Does it show calendar events? diff --git a/source/content/apps/menu-bar-spacing.md b/source/content/apps/menu-bar-spacing.md index dd97b19d..811aea2d 100644 --- a/source/content/apps/menu-bar-spacing.md +++ b/source/content/apps/menu-bar-spacing.md @@ -17,6 +17,8 @@ Menu bar apps are awesome, but MacBooks have limited menu bar space. This app he The app includes a Shortcuts action, enabling automated spacing adjustments for various scenarios. +**The app only needs to be run once to set the spacing and can then be uninstalled. The settings persists.** + This app can potentially replace Bartender/Ice for some users. It also lets you fit more of my [menu bar apps](/apps/menu-bar) in your menu bar. ![Download count](https://img.shields.io/github/downloads/sindresorhus/menu-bar-spacing-meta/total?color=3e65d0) @@ -69,7 +71,7 @@ No, not in the app. However, the app comes with an action for Shortcuts, so you Note: The setting is global. Changing it will interrupt any ongoing screen recording or sharing, as it restarts some system processes to apply changes immediately. -#### Why is this not in the App Store? +#### Why is this not on the App Store? The app works by changing hidden system settings, which is not allowed on the App Store. diff --git a/source/content/apps/one-task.md b/source/content/apps/one-task.md index 073b9c00..3db1ac9e 100644 --- a/source/content/apps/one-task.md +++ b/source/content/apps/one-task.md @@ -89,6 +89,10 @@ One Task is designed for action, not endless categorization. It omits features l I don't plan to add this. I want to keep the app super simple. +#### Can you make the widget background transparent + +This is not possible. + #### The text in the widget is quite large The text automatically scales down to fit more content. @@ -98,11 +102,3 @@ The text automatically scales down to fit more content. I don't plan to localize the app. #### [More FAQs…](/apps/faq) - -### Non-App Store Version - -A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. - -[Download](https://www.dropbox.com/scl/fi/hf7zbgjv0755vfo1lqi5j/One-Task-1.0.0-1696158358-1701610759.zip?rlkey=lyihesd9omsdguagajgi3hbye&raw=1) *(1.2.0)* - -*Requires macOS 14 or later* diff --git a/source/content/apps/one-thing.md b/source/content/apps/one-thing.md index e95cb681..0123c351 100644 --- a/source/content/apps/one-thing.md +++ b/source/content/apps/one-thing.md @@ -131,7 +131,7 @@ I don't plan to localize the app. ### Scripting -One Thing can be automated using the Shortcuts app or with a custom URL scheme. +The app can be automated using the Shortcuts app or with a custom URL scheme. More integrations: @@ -143,7 +143,7 @@ More integrations: #### Shortcuts app - [Example shortcut](https://www.icloud.com/shortcuts/381619f1c8404770ad020d439a48fd9c) -- [How to use Shortcuts](https://www.xda-developers.com/guide-shortcuts-macos/) +- [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) - [How to run shortcuts from the command-line](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) **Examples** diff --git a/source/content/apps/online-check.md b/source/content/apps/online-check.md index a920332a..b13f91f3 100644 --- a/source/content/apps/online-check.md +++ b/source/content/apps/online-check.md @@ -27,7 +27,7 @@ Click the feedback button in the app or [send it here](https://sindresorhus.com/ #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### How is it different from just checking whether the Wi-Fi is connected? @@ -49,22 +49,14 @@ Every 20 seconds and anytime the network changes, it sends a HEAD request to “ It's something I'm considering. Share your use-case through the feedback button in the app to increase the likelyhood of me doing this. -#### Can you make the menu bar icon green when online? +#### Can you make the menu bar icon green when online? {#green-icon} -No. Menu bar icons are intended to be mostly monotone, changing color only to indicate critical states. For example, the battery icon turns red or yellow when low but stays monochrome when full. +No. Menu bar icons are intended to be mostly monotone, changing color only to indicate critical states. For example, the battery icon turns red when low but stays monochrome when full. Showing green also isn't that useful as you can assume it's connected when not red, and having a constant green color there could be distracting. #### [More FAQs…](/apps/faq) - -### Non-App Store Version - -A special version for users that cannot access the App Store. It won't receive automatic updates. I will update it here once a year. - -[Download](https://www.dropbox.com/scl/fi/l1aecuyfish3zzfoucnqk/Online-Check-1.2.0-1720132938.zip?rlkey=cl97oehkl897uy0q8dfnehbei&raw=1) *(1.2.0)* - -*Requires macOS 14 or later* diff --git a/source/content/apps/pandan.md b/source/content/apps/pandan.md index 284c4558..df40ffc4 100644 --- a/source/content/apps/pandan.md +++ b/source/content/apps/pandan.md @@ -20,7 +20,7 @@ olderMacOSVersions: #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can you make the history be further back than 120 days? diff --git a/source/content/apps/photo-widget.md b/source/content/apps/photo-widget.md index c101d544..a6dc0037 100644 --- a/source/content/apps/photo-widget.md +++ b/source/content/apps/photo-widget.md @@ -9,6 +9,8 @@ appStoreId: 1532588789 forceHasIosAppIcon: true links: 'TestFlight': https://testflight.apple.com/join/ybGzYJ28 +feedbackNote: | + iOS 18 has a bug where it skips 2 photos instead of 1. This is out of my control. Hopefully, iOS 18.2 or 18.3 will fix it. --- For macOS, it's only available for Apple silicon Macs. @@ -19,6 +21,10 @@ For macOS, it's only available for Apple silicon Macs. [Send it here.](https://sindresorhus.com/feedback?product=Photo%20Widget&referrer=Website-FAQ) +#### The widget does not show up in the widget picker, the widget is stuck, or is missing from the Home Screen + +The iOS widget system is quite buggy and can fail a lot. This is not a problem with the app and out of my control. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) + #### I'm not seeing the new widget settings for showing date and album title Try adding a new widget. Sometimes existing widgets get stuck and don't receive new settings. This is a iOS bug and out of my control. @@ -35,10 +41,6 @@ When on the home screen, long-press on the background (not on any icons), press When on the home screen, long-press on the widget, and select “Edit Widget”. [Learn more.](https://support.apple.com/en-us/HT207122) -#### The widget does not show up in the widget picker - -This is a well-known iOS 16 issue. [Try this.](https://webtrickz.com/third-party-lock-screen-widgets-not-showing-ios-16/) - #### Why can I only add 100 photos to the app? This is because of a technical limitation in the iOS widget system. Hopefully, it can be increased in the future. It should be enough for most users though. @@ -57,6 +59,10 @@ Yes. The widget fetches a list of all the photos in the album each time and pick This is not possible. +#### Why does my widget update more often than the interval I set? + +The interval is a suggestion to iOS, not a strict rule. iOS manages widget updates independently to optimize performance and battery life. It may refresh widgets more or less frequently based on various factors. Apps cannot control this behavior. + #### How is this different from the built-in “Photos” widget? The built-in widget only shows photos from “Memories” and “Featured Photos” in your photo library. There is no way to customize it or pick the photos to be shown. diff --git a/source/content/apps/plain-text-editor.md b/source/content/apps/plain-text-editor.md index a48836c7..31540e8e 100644 --- a/source/content/apps/plain-text-editor.md +++ b/source/content/apps/plain-text-editor.md @@ -54,6 +54,10 @@ Yes. Click “View › Show Tab Bar” in the menu bar and then click the plus b You can also press Command + N if you have [tabs enabled for document apps](https://support.apple.com/en-gb/guide/mac-help/mchla4695cce/mac). +#### Can I keep it in the menu bar? + +No, that's not supported. However, you may be interested in my [Scratchpad](/scratchpad) app. + #### How can I make the app preserve open documents when I quit on macOS? This is already how it works. Actually, it's how all document-based apps on macOS work. Make sure you don't have “System Settings › Desktop & Dock › Close windows when quitting an application” enabled. @@ -96,9 +100,9 @@ I don't plan to add that. It's not essential and I'm trying to keep the app simp This is unfortunately a macOS bug and out of my control. -#### Why is there no way to print? +#### Why is there no way to print? {#print} -The app is made using Apple's latest technologies (SwiftUI) and they have not added print support there yet. If you need to print, open the document in TextEdit instead. +The app is made using Apple's latest technologies (SwiftUI) and they have not added print support there yet. If you need to print, open the document in TextEdit instead. Sorry for the inconvenience. #### Why is it suddenly showing a scrollbar? @@ -110,6 +114,10 @@ This is unfortunately a macOS bug and not something I can fix. *If you work at Apple → [FB13607434](https://github.com/feedback-assistant/reports/issues/467)* +#### Can you add line numbers? + +This is out of scope for this app. + #### How can I export, import, sync, or back up the settings? [See this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md) diff --git a/source/content/apps/plug.md b/source/content/apps/plug.md deleted file mode 100644 index c11feebb..00000000 --- a/source/content/apps/plug.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -title: Plug -subtitle: Discover & listen to music from Hype Machine -pubDate: 2021-01-16 -platforms: - - macOS -repoUrl: https://github.com/wulkano/Plug -appStoreId: 1514182074 -links: - 'Older Versions': https://github.com/wulkano/Plug#download -showSupportLink: false -olderMacOSVersions: - - '10.15' - - '11' ---- - -An open source macOS app I'm working on with my friends. Hype Machine is a popular music blog aggregator. diff --git a/source/content/apps/pure-paste.md b/source/content/apps/pure-paste.md index 94bd921f..e2726aec 100644 --- a/source/content/apps/pure-paste.md +++ b/source/content/apps/pure-paste.md @@ -31,9 +31,22 @@ Rich text copied from a different device will not have its formatting cleared be [Send it here.](https://sindresorhus.com/feedback?product=Pure%20Paste&referrer=Website-FAQ) +#### Why not just use the `Paste and Match Style` menu item or `⌥⇧⌘V`? + +- This app can make it the default behavior. +- That menu item is not available in all apps. +- The keyboard shortcut is hard to remember and type. +- In some apps, like Chrome, the keyboard shortcut is different. +- This app can exclude certain apps, preserve links, normalize (quotes, newlines, lists, etc.) and also remove tracking parameters from URLs. +- The app has workarounds (3000+ lines of code) for lots of apps to make the experience *just work*. + +#### Why not just remap the `Paste and Match Style` keyboard shortcut to `⌘V`? + +Same as the above except the first two list items. + #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. You may also have enabled the “Hide menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. @@ -62,20 +75,6 @@ There are some cases I cannot fix though: - Formatting is not cleared when copying and pasting inside LibreOffice. This is a LibreOffice bug. Pure Paste correctly clears the formatting of the clipboard contents, but LibreOffice does not read the new clipboard contents until you first focus a different window. Try copying some styled text in LibreOffice, focus a different window, focus LibreOffice again, and then paste. It now correctly pastes the text without formatting. -#### Why not just use the `Paste and Match Style` menu item or `⌥⇧⌘V`? - -- This app can make it the default behavior. -- That menu item is not available in all apps. -- The keyboard shortcut is hard to remember and type. -- In some apps, like Chrome, the keyboard shortcut is different. -- This app can exclude certain apps, preserve links, and also remove tracking parameters from URLs. - -#### Why not just remap the `Paste and Match Style` keyboard shortcut to `⌘V`? - -- That menu item is not available in all apps. -- In some apps, like Word, the menu item has a different label, which requires a separate mapping. -- This app can exclude certain apps, preserve links, and also remove tracking parameters from URLs. - #### The copy/paste custom keyboard shortcut does not work Try [resetting privacy permissions](https://sindresorhus.com/apps/faq#mac-reset-permissions) for the app. macOS can sometimes corrupt these permissions, causing the shortcut to fail. @@ -105,7 +104,7 @@ In short, no. To preserve bold and italic, the app has to preserve the font too, #### I have “Preserve links” enabled, and when I paste into Word, it ends up with the “Times New Roman” font instead of the existing font {#word-bug} -This is a bug in Word. Please upvote [this report](https://feedbackportal.microsoft.com/feedback/idea/614f1602-cdd8-ec11-a81b-000d3a03dba2). +This is a bug in Word. ~~Please upvote [this report](https://feedbackportal.microsoft.com/feedback/idea/614f1602-cdd8-ec11-a81b-000d3a03dba2).~~ (Update: They removed the bug report and blocked me there 🤷‍♂️) As a workaround, you can either disable the “Preserve links” setting or use “Paste and Match Formatting” in the “Edit” menu in Word. @@ -165,7 +164,21 @@ Copy something from the app you have excluded, press the Option key w #### How can I exclude certain websites? -This is not supported. A workaround would be to [turn the website into an app in Safari](https://support.apple.com/guide/safari/add-to-dock-ibrw9e991864/mac). You could then exclude that app. +This will not be supported. A workaround would be to [turn the website into an app in Safari](https://support.apple.com/guide/safari/add-to-dock-ibrw9e991864/mac). You could then exclude that app. + +The need for such a setting only arises because many web apps do not adhere to platform clipboard standards, unlike native apps. + +#### Can it support pasting with formatting when pressing Command+Shift+V? + +The app technically clears formatting when something is copied not pasted, so the formatting is already cleared when that shortcut is pressed. + +#### Can you add support for removing newlines/linebreaks? + +The app is designed to *just work*, but removing newlines is not suitable for all use cases. For instance, you may want to remove newlines when copying text from a PDF, but not from Word. If you still want this feature, add the following to the “JavaScript” setting: + +```js +return $.text.replace(/(\r?\n)/gm, ' '); +``` #### Does it respect [nspasteboard.org](http://nspasteboard.org) conventions? diff --git a/source/content/apps/quick-launch.md b/source/content/apps/quick-launch.md index a642a266..6e44fcfd 100644 --- a/source/content/apps/quick-launch.md +++ b/source/content/apps/quick-launch.md @@ -5,7 +5,10 @@ pubDate: 2022-09-28 platforms: - iOS # - macOS +isPaid: true appStoreId: 1645566403 +feedbackNote: | + If you're having problems with the Shortcuts app showing an error when trying to open an app, this is a problem with the Shortcuts app and out of my control. Try restarting your device and then try changing the system language to something else and then back. That sometimes fixes such issues. Otherwise, just give it some time. Sometimes the system needs some time after a system update to refresh everything. --- Quickly open websites, launch apps, and run shortcuts directly from your Lock Screen. @@ -40,7 +43,7 @@ Sure. I'm happy to consider requests. [Send it here.](https://sindresorhus.com/f #### How does it compare to other similar Lock Screen launchers? -Quick Launch is completely free without ads. It can also open any app, not just from a predefined list. And it has more icon choices. +It can open any app, not just from a predefined list, and it has more icon choices. #### When using the “Run Shortcut” action, why does tapping the widget first open the main app and then the Shortcuts app? @@ -51,8 +54,4 @@ If you work at Apple, you know what to do: - [FB11516334](https://github.com/feedback-assistant/reports/issues/357) - [FB11516273](https://github.com/feedback-assistant/reports/issues/356) -#### Why is this free without ads? - -I just enjoy making apps. I earn money on other apps. Consider leaving a nice review on the App Store. - #### [More FAQs…](/apps/faq) diff --git a/source/content/apps/quickgpt.md b/source/content/apps/quickgpt.md index 0d9d9e9d..8e27d9a2 100644 --- a/source/content/apps/quickgpt.md +++ b/source/content/apps/quickgpt.md @@ -4,16 +4,17 @@ subtitle: Easy access to ChatGPT pubDate: 2023-04-12 platforms: - macOS -redirectUrl: https://sindresorhus.gumroad.com/l/quickgpt +isPaid: true +mainLinks: + 'Download': https://sindresorhus.gumroad.com/l/quickgpt?wanted=tru olderMacOSVersions: - '13' +feedbackNote: | + If you are having problems with copying text, that's a problem with ChatGPT and not the app. The same problem can be seen on https://chatgpt.com --- Easily access [ChatGPT](https://www.zdnet.com/article/what-is-chatgpt-and-why-does-it-matter-heres-everything-you-need-to-know/) from the menu bar, Dock, or using a keyboard shortcut. - - - ### Frequently Asked Questions {#faq} #### I have a feature request, bug report, or some feedback @@ -22,7 +23,7 @@ Easily access [ChatGPT](https://www.zdnet.com/article/what-is-chatgpt-and-why-do #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. You may also have enabled the “Hide menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. @@ -54,4 +55,6 @@ Apple generally rejects website wrappers even if they add useful additional func ### Older Versions -- [1.4.11](https://github.com/sindresorhus/meta/files/14156246/QuickGPT.1.4.11.zip) for macOS 13+ +- [1.4.11](https://github.com/sindresorhus/meta/files/14156246/QuickGPT.1.4.11.zip) for macOS 13 + +These are free for everyone but they will not run on newer macOS versions. diff --git a/source/content/apps/recordia.md b/source/content/apps/recordia.md index baf7bede..05760298 100644 --- a/source/content/apps/recordia.md +++ b/source/content/apps/recordia.md @@ -23,7 +23,7 @@ Record audio directly from the menu bar or with a global keyboard shortcut. #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### How can I preview the recording when done? diff --git a/source/content/apps/scratchpad.md b/source/content/apps/scratchpad.md index 87773898..22ddc89b 100644 --- a/source/content/apps/scratchpad.md +++ b/source/content/apps/scratchpad.md @@ -7,18 +7,20 @@ platforms: - iOS - visionOS # - watchOS -# isPaid: true TODO +isPaid: true isMenuBarApp: true appStoreId: 6504040051 # olderMacOSVersions: # - '14' +feedbackNote: | + If you are having problems with sync, [read this](/scratchpad#troubleshooting). --- Capture your thoughts instantly in a single, always-accessible note. Plain text only. Simple by design. -On macOS, the app sits in your menu bar or Dock, ready whenever inspiration strikes. On iOS, it can be accessed from the Home Screen (and soon the Lock Screen and Control Center). +On macOS, the app sits in your menu bar or Dock, ready whenever inspiration strikes. On iOS, it can be accessed from the Home Screen and Lock Screen (and soon Control Center). - One-tap access - Clean, distraction-free interface @@ -26,20 +28,29 @@ On macOS, the app sits in your menu bar or Dock, ready whenever inspiration stri - Sync with iCloud, or not - Custom hotkey for instant writing (macOS) - Translucent background (macOS) +- Font settings Perfect for brain dumps, quick drafts, and fleeting ideas. Your thoughts are just a click away, without breaking your workflow. **watchOS version is planned later this year.** +Scratchpad - Quick notes, always available | Product Hunt + #### Privacy The app uses iCloud syncing to securely sync your text across devices. This feature is opt-in. Neither the app developer nor Apple can access the text in your scratchpad. The app does not collect any personal data and contains no tracking. +### Trial + +Try the fully functional trial of the macOS app [here](https://www.dropbox.com/scl/fi/01eubsoly1plmscebd3cr/Scratchpad-1.2.7-trial-1731415842.zip?rlkey=sze77hcspygylvx6wlb2etcte&raw=1). The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it on the App Store. + ### Tips #### Troubleshoot syncing {#troubleshooting} - Ensure iCloud sync is enabled in the Scratchpad settings on all devices you wish to sync. +- After enabling sync, try writing some more text on all the devices. +- The initial sync may take a while. - Ensure all devices are signed into the same iCloud account. - Ensure all devices are online. - Try restarting all devices. @@ -53,6 +64,28 @@ The app uses iCloud syncing to securely sync your text across devices. This feat - If using a VPN, try disconnecting it, as some VPNs can interfere with iCloud syncing. - Check the [iCloud system status](https://www.apple.com/support/systemstatus/) to ensure the service is not experiencing issues. +#### Launch app from Lock Screen + +Quickly open the app using the built-in Lock Screen widget. For more customization options, you can also use my [Quick Launch](/quick-launch) app. + +#### Quickly add text to the scratchpad + +1. macOS: Select some text in any app, right-click, and select “Services › Add to Scratchpad” or “Share › Add to Scratchpad”. +1. Use the [Shortcuts action](#scripting) +1. Use the [custom URL scheme](#scripting) +##### PopClip integration {#popclip} + +Select the below snippet and install it with PopClip: + +```yaml +#popclip Add selected text to Scratchpad +name: Scratchpad +icon: iconify:material-symbols:add-notes +url: scratchpad:append?text={popclip text}&hide +``` + +You can replace `append` with `prepend`. And you can remove `&hide` if you want Scratchpad to show when adding text. + ### Frequently Asked Questions {#faq} #### I have a feature request, bug report, or some feedback @@ -61,7 +94,13 @@ Click the feedback button in the app or [send it here.](https://sindresorhus.com #### The macOS app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. + +You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to show the main window. + +#### Why is my note not syncing between devices? + +Refer to the [troubleshooting section](#troubleshooting) above to resolve syncing issues. #### Can you add Markdown syntax highlighting? @@ -79,6 +118,10 @@ No, it supports plain text only. No, it is designed for a single, persistent note. You could try out my [Plain Text Editor](/plain-text-editor) app for this, which can open multiple files. Also check out [Tot](https://tot.rocks) (not mine, but good). +#### How can I make the macOS app show up right below the menu bar icon? + +Move the window to below the menu bar icon. It remembers its position. + #### Can I open and save an external file? No, see my [Plain Text Editor](/plain-text-editor) app for that. @@ -91,9 +134,13 @@ Yes. The app stores the note in iCloud Drive, which is covered by Advanced Data By default, it only appears in the menu bar. You can enable the Dock icon in the settings. -#### Why is my note not syncing between devices? +#### Can it show the text in a widget? -Refer to the [troubleshooting section](#troubleshooting) above to resolve syncing issues. +No, but check out my [Any Text](/any-text) app for that. + +#### Can it show the text in the macOS menu bar? + +No, but check out my [One Thing](/one-thing) app for that. #### The text sometimes jumps when I write fast @@ -101,9 +148,9 @@ This is a macOS bug. There is unfortunately nothing I can do about it. #### How can I toggle “Stay on Top” with a keyboard shortcut in the macOS app? -The keyboard shortcut is listed in the “…” menu. +The keyboard shortcut is listed in the “…” menu. When in menu bar mode, it's always on top. -#### Can you add a font and color setting? +#### Can you add a color setting? I don't plan to add that. It's not essential and I'm trying to keep the app simple. @@ -119,16 +166,84 @@ The app is made using Apple's latest technologies (SwiftUI) and they have not ad I don't plan to localize the app. +#### How does this compare to [Tot](https://tot.rocks)? {#tot} + +Scratchpad advantages: + +- Simpler, focused design: A single plain text note for minimal distraction. +- Can float on top of other windows in menu bar mode. +- iCloud sync is optional. Tot does not have a setting to turn off iCloud sync. +- More affordable pricing: $5 vs $20 for Tot. +- visionOS support. +- Unlimited note size. Tot is limited to 100,000 characters. +- Translucent background on macOS. + +Tot advantages: + +- Supports 7 notes. +- Rich-text support. +- More mature. +- Available for watchOS. *(Scratchpad will have a watchOS app soon)* + #### [More FAQs…](/apps/faq) +### Scripting + +The app can be automated using the Shortcuts app or with a custom URL scheme. + + +#### Shortcuts app + +- [Shortcuts usage guide](https://www.xda-developers.com/guide-shortcuts-macos/) +- [How to run shortcuts from the command-line on macOS](https://support.apple.com/guide/shortcuts-mac/run-shortcuts-from-the-command-line-apd455c82f02/mac) + +**Examples** + +- [*Tell me if you have done anything cool with scripting*](https://sindresorhus.com/feedback?product=Scratchpad&referrer=Website-FAQ) + +#### Custom URL scheme + +You can add text to the scratchpad from any tool that can open an URL. This includes a website, Bash, Node.js, Python, Swift, etc. + +For example, in your terminal: + +```sh +open --background 'scratchpad:append?text=Hello' +``` + +By default, the app window shows when this is run. On macOS, you can tell it to not show with the `hide` search parameter: + +```sh +open --background 'scratchpad:append?text=Hello&hide' +``` + +You can also prepend: + +```sh +open --background 'scratchpad:prepend?text=Hello' +``` + +*Don't forget to [URL encode](https://www.urlencoder.org) the value for the `text=` search parameter. For example, using [this](https://gist.github.com/cdown/1163649) Bash function.* + +You can also use the custom URL scheme on iOS. + +There is no way to get the text using the URL scheme, but you can use Shortcuts for that. + +I have not included a way to overwrite the text because I don't want anything to be able to overwrite the scratchpad. If you want this, [tell me your use-case](https://sindresorhus.com/feedback?product=Scratchpad&referrer=Website-FAQ). I may add this with an opt-in setting. For now, you can do it with Shortcuts. + -### Non-App Store Version + diff --git a/source/content/apps/second-clock.md b/source/content/apps/second-clock.md index 1ff458f7..0a1301c9 100644 --- a/source/content/apps/second-clock.md +++ b/source/content/apps/second-clock.md @@ -22,7 +22,7 @@ Check out [Dato](/dato) for more features and settings or [UTC Time](/utc-time) #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can it show a flag in front of the time? diff --git a/source/content/apps/shareful.md b/source/content/apps/shareful.md index 9d18c01e..6d984457 100644 --- a/source/content/apps/shareful.md +++ b/source/content/apps/shareful.md @@ -34,7 +34,7 @@ If you are on a work computer, it could also be that your company has blocked th #### Can you add a “Move” action? -This is unfortunately not possible. [Share extensions](https://support.apple.com/guide/mac-help/use-the-share-menu-on-mac-mh40614/mac) (for example, the "Copy" action), only receive a copy of the file. They have no access to the original file. +This is unfortunately not possible. [Share extensions](https://support.apple.com/guide/mac-help/use-the-share-menu-on-mac-mh40614/mac) (for example, the "Copy" action), usually only receive a copy of the file. They have no guaranteed access to the original file. #### Can you add a “Copy Path” action for use in Finder? diff --git a/source/content/apps/spaced.md b/source/content/apps/spaced.md index a4a9f951..14a49b6f 100644 --- a/source/content/apps/spaced.md +++ b/source/content/apps/spaced.md @@ -30,21 +30,19 @@ You may also like my [Menu Bar Spacing](/menu-bar-spacing) app for changing the #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can the app let me hide and show menu bar items? That is out of scope for this app. You want something like [Bartender](https://www.macbartender.com) or [Hidden Bar](https://apps.apple.com/no/app/hidden-bar/id1452453066?mt=12). -#### Can the app also support grouping icons in the Dock? +#### Can the app support changing the distance between menu bar items? -This is not possible because of restrictions imposed on apps in the App Store. +You can do that with my [Menu Bar Spacing](/menu-bar-spacing) app. -However, you can add spacers to the Dock yourself by running the following command in the Terminal app: +#### Can the app also support grouping icons in the Dock? -```sh -defaults write com.apple.dock persistent-apps -array-add '{"tile-type"="spacer-tile";}' && killall Dock -``` +You can do that with my [Supercharge](/supercharge) app. #### Can you localize the app into my language? diff --git a/source/content/apps/supercharge.md b/source/content/apps/supercharge.md new file mode 100644 index 00000000..e053153f --- /dev/null +++ b/source/content/apps/supercharge.md @@ -0,0 +1,294 @@ +--- +title: Supercharge +subtitle: Elevate your Mac experience +pubDate: 2024-09-29 +platforms: + - macOS +isPaid: true +isMenuBarApp: true +# setappId: 742 +mainLinks: + 'Download': https://sindresorhus.gumroad.com/l/supercharge?wanted=true +# olderMacOSVersions: +# - '15' +feedbackNote: | + The Finder context menu items will not show up in any [sync folder like iCloud, Dropbox, etc](#finder-context-menu-icloud). +--- + +Requires macOS 15+ + +Improve your Mac experience with a bunch of useful functionality: + +- Clear notifications with a keyboard shortcut +- [Clicking an active app's Dock icon hides the app or minimizes its windows](#dock-icon-click-behavior) +- Unminimizes an app’s windows when activated (e.g., via Command+Tab) +- Hide all windows (aka. boss mode) +- Prevent accidental app quits[^quit] by instead using ⇧⌘Q, double tap Q while holding , or [press and hold ⌘Q](https://github.com/user-attachments/assets/0515e50f-2a93-4369-836e-085ad462fdf8) +- [Close and minimize windows and hide and quit apps directly from Mission Control](#mission-control-improvements) + +- Finder: Move files by cutting[^commandx] (Command+X) and pasting (Command+V) +- Finder: Open files with Return (you can then rename with Shift+Return or F2) +- Finder: Create new text file with Option+N *([video](https://github.com/user-attachments/assets/cb2c4606-12eb-4915-a64c-9b8ac3e123cf))* or from the [context menu](#finder-context-menu) +- Finder: Move files to the trash with instead of ⌘⌫ +- [Finder: Adds many useful actions to the context menu:](#finder-context-menu) copy path, move to, open folder with, AirDrop, etc. +- Finder: Auto-adjust column widths to filenames in column view +- Finder: Invert selection (deselects what's currently selected and selects everything that wasn't selected) +- [Mail: Copy message link](#mail-copy-message-link) +- [Notes: Copy note link](#notes-copy-note-link) +- Toggle Finder with a keyboard shortcut (aka. [visor mode](https://totalfinder.binaryage.com/visor)) +- Show the [menu bar window](https://github.com/user-attachments/assets/1b8e2e12-187a-4d32-8ba3-c13f154de9e0) for the Passwords app with a keyboard shortcut +- Show the [menu bar window](https://github.com/user-attachments/assets/567bbbf5-12a1-45be-8ffa-93712574d4a0) for the Weather app with a keyboard shortcut +- [Change default browser](https://github.com/user-attachments/assets/b58a04da-2bdc-4bd0-bed4-ba62ba456491) (without a prompt) +- Export/import (backup) settings for any apps *([video](https://github.com/user-attachments/assets/82727408-3acb-4c18-91c6-428f1e0ad8c5))* +- Toggle Terminal with a keyboard shortcut +- [Offers to install apps from mounted DMG files](https://github.com/user-attachments/assets/5ecb9b0b-5719-4382-98a0-c3316bd20a6b) +- Show desktop (menu action) +- Quit all apps (menu action and keyboard shortcut) +- Eject all disks (menu action and keyboard shortcut) +- Dim icons of hidden apps in the Dock +- Toggle dark mode +- Toggle low power mode +- Toggle grayscale mode[^grayscale] +- Toggle desktop widgets visibility +- Toggle function keys (switch between using F1, F2, etc., as standard function keys or media keys) + - Only supported for the built-in MacBook keyboard and Magic Keyboard. +- Clear clipboard +- Empty trash keyboard shortcut +- [Clicking a Dock folder reveals it in Finder instead of showing its contents](#dock-folder-click) +- Open system settings directly (usually requires a lot of clicks): + - Hide My Email + - Private Relay +- [Only show system sound menu bar icon when muted](https://github.com/user-attachments/assets/10447e39-f288-406b-a504-6ab7b8fcf261) +- Add [Dock spacers](#dock-spacers) +- Reset [privacy permissions](https://support.apple.com/en-vn/guide/mac-help/mchl211c911f/mac) for any apps +- Shortcuts actions +- *More planned…* + +This is my playground for supercharging macOS. It's just the start. Come along for the ride. + +- [**Video review**](https://www.youtube.com/watch?v=hp-WMYZQ75U) + - [Follow-up](https://www.youtube.com/watch?v=srZH0eTjylU) +- [**Article about the app**](https://todayonmac.com/supercharge/) + +[^commandx]: Without this feature, you have to first copy (Command+C) and then remember to move (Option+Command+V). The feature works by overriding the normal cut ⌘X keyboard shortcut when Finder is active and executes a copy ⌘C instead. When you then paste ⌘V, it executes the native move ⌥⌘V keyboard shortcut. So really, it's Finder moving the files. This app just makes the keyboard shortcuts more intuitive. If you don't paste, the files just stay in place. This feature also works with the Forklift app. + +[^quit]: The Q key is next to W, making it easy to accidentally hit Command+Q (quit) when reaching for Command+W (close window). + +[^grayscale]: Grayscale mode on macOS can be a useful tool for various purposes. It can help reduce eye strain during long work sessions, especially in low-light environments. For designers and developers, it's valuable for checking contrast and readability of user interfaces without the influence of color. Content creators may use it to evaluate the tonal balance of images or videos. Additionally, some users find that grayscale helps minimize distractions and improve focus by reducing the visual appeal of non-work-related apps and websites. While initially an adjustment, many users report increased productivity and a more mindful approach to computer usage when employing grayscale mode periodically. + +--- + +#### Features explained + +
+ +##### Dock icon click behavior {#dock-icon-click-behavior} + +By default, clicking an app's Dock icon when the app is active does nothing. With Supercharge, you can make it either hide the app or minimize all its windows. This can be particularly useful for quickly clearing your workspace. + +##### Finder context menu additions {#finder-context-menu} + +Adds the following actions (can be customized) directly in the right-click menu in Finder: + +- New Text File\ + Shown only when right-clicking an empty area in Finder. +- Image/Video Dimensions +- Copy Path +- Copy Filename +- Copy File URL\ + Useful for deep links. Clicking such link reveals it in Finder. +- Copy Markdown Link +- Open Folder With +- Make Symlink +- Move To +- Copy To +- Open in Terminal\ + Shown only when right-clicking a folder or an empty area in Finder. Supports Terminal, iTerm, kitty, WezTerm, Alacritty, and Warp. +- AirDrop +- Run Shortcut +- Update Modified Date +- Make Executable\ + Makes files executable, similar to `chmod +x` in the terminal. Useful for shell scripts. +- Invert Selection\ + Selects the files/folders in Finder that are not selected. +- Delete Immediately\ + Permanently deletes files/folders without sending them to the Trash. +- Copy Checksum\ + SHA-1, SHA-256, SHA-384, SHA-512, MD5, CRC32 +- Unquarantine\ + Removes the quarantine flag that macOS adds to downloaded files and apps. This removes [security prompts](https://github.com/user-attachments/assets/adbf3c7e-8fee-4cd9-9a90-3958badfa94e) and restrictions for trusted items. + +*They appear at the bottom of the context menu. There is no way to change that. [They also won't appear in iCloud, Dropbox, or any other sync folder.](#finder-context-menu-icloud)* + +##### Copy message link in Mail {#mail-copy-message-link} + +When you are in the Mail app, you can [open the Supercharge menu](https://github.com/user-attachments/assets/5cce205b-6743-4a60-958c-074a308ccc68) to copy a direct link to one or more selected messages. You can also set up a keyboard shortcut for this. Copying a message link can be useful if you want to refer to specific emails in other contexts. The link will look like this: `message://%3c66e85e1db33c7_961cfc499cd@lowworker-c6756b946-4rskj.mail%3e`. + +##### Copy note link in Notes {#notes-copy-note-link} + +When you are in the Notes app, you can [open the Supercharge menu](https://github.com/user-attachments/assets/028c2952-d708-4eda-ad39-613767532eb7) to copy a direct link to one or more selected notes. You can also set up a keyboard shortcut for this. Copying a note link can be useful if you want to refer to specific notes in other contexts, like in a task manager or calendar event. The link will look like this: `applenotes:note/933C49CC-04F4-5F21-A3EE-2CA93AFC88DD`. When clicked, it opens directly in the Notes app. + +##### Close and minimize windows and hide and quit apps directly from Mission Control {#mission-control-improvements} + +Enhances Mission Control by letting you close windows by right-clicking the hovered window and use keyboard shortcuts (⌘W, ⌘Q, ⌘H, ⌘M) on the window you are hovering over. This makes window management more efficient as you don't have to exit Mission Control to perform these actions. [Example](https://github.com/user-attachments/assets/23c71431-4d3b-4913-b484-3a3f0b7b2b07) + +##### Dock folder click behavior {#dock-folder-click} + +By default, clicking a folder in the Dock shows its contents in a popover. With Supercharge, you can make it directly reveal the folder in Finder instead. + +--- + +You may also like my [Shareful](/shareful), [Menu Bar Spacing](/menu-bar-spacing), and [Pure Paste](/pure-paste) apps. + +--- + +### Trial + +Try the fully functional trial [here](https://www.dropbox.com/scl/fi/go6cnu30h36c9gzk32yz9/Supercharge-1.9.0-trial-1734175424.zip?rlkey=pmoscnnkhohvktsmumqupna2y&raw=1). The only limitation is a reminder to buy the app every 12 hours, and no automatic updates. All data and settings carry over if you buy it. + +**Requires macOS 15** + +### Tips + +#### Troubleshooting {#troubleshooting} + +- Ensure you are on the latest version (click the “Check for Updates” button). +- Restart your computer. +- Try closing any anti-virus app you have running as it may interfere with the app (or at least disable any Secure Keyboard Entry type setting it may have). And if you don't have any anti-virus app, try closing down all apps and menu bar items, just to rule out some other app interfering. If it's a work computer, your company may have something installed that prevents the app from working. +- Try clicking “Reset Permissions” in the Supercharge menu. + +##### Cut and paste files troubleshooting + +Ensure you pressed Command+X and not Command+C. + +To make sure you used the app correctly. Try this: Select a file in Finder, press Command+X, change to a different folder, press Command+V. The file should have been moved to this new folder. + +**Note:** You cannot cut, highlight a folder, and then paste. You have to actually go into the folder to paste to it. That's just how Finder works. Same with copy-pasting. + +#### Tricks + +Some things you can already do that you may not know about: + +- Hide an app by Option-clicking on the app's Dock icon. +- Show Control Center by pressing Fn+C. +- Toggle a specific VPN using a keyboard shortcut with Shortcuts. Add [this shortcut](https://www.icloud.com/shortcuts/a0c3171fe98a4379b8197299a84b060e) and set the VPN parameter and a keyboard shortcut. +- [Make Finder remember its size and position.](https://apple.stackexchange.com/a/171274/2363) +- [Prevent opening apps when clicking links that are Universal Links.](https://lapcatsoftware.com/articles/universal-links2.html) +- [Change the keyboard shortcut for menu item actions a specific app.](https://support.apple.com/guide/mac-help/create-keyboard-shortcuts-for-apps-mchlp2271/mac) +- [Change the keyboard shortcut for menu item actions in all apps.](https://apple.stackexchange.com/a/125628/2363) +- Set Finder's default view options: Open a folder, press Command+J, adjust settings, and click “Use as Defaults”. To reset a folder's custom settings, press Command+J, hold Option, and click “Restore to Defaults”. + +### Frequently Asked Questions {#faq} + +#### I have a feature request, bug report, or some feedback + +Click the feedback button in the app or [send it here.](https://sindresorhus.com/feedback?product=Supercharge&referrer=Website-FAQ) + +Some things are not possible though: + +- [Removing the Trash icon in the Dock.](https://apple.stackexchange.com/a/454812/2363) +- Removing the Finder icon in the Dock. +- Disabling Stage Manager animations. +- Fill the entire row with the file's tag color in Finder. + +#### The app does not show up in the menu bar + +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve the issue, try quitting Bartender/Ice if you have it installed. + +You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to show the main window. + +#### I can already do this with the command-line, BetterTouchTool, Keyboard Maestro, etc. + +Supercharge offers a simpler, more user-friendly approach. It's designed for users who want quick access to useful features without the complexity of scripting or configuring advanced tools. Supercharge provides a curated set of enhancements that work right out of the box, saving you time and effort in setup and maintenance. If you prefer more granular control and don't mind the setup process, those other tools might be a better fit for you. + +#### Why Command+X? I can already move files with Command+C and Option+Command+V + +- It's more logical to cut & paste than copy & move. +- Consistency and muscle memory benefits if you also use Linux or Window. + +#### What are Dock spacers? {#dock-spacers} + +Dock spacers are [invisible gaps](https://res.cloudinary.com/cpenned/image/upload/f_auto,w_auto/v1636732613/Blog/post-images/20211112-dock.jpg) you can add to your Mac's Dock. They help organize your apps into groups, improving visual clarity. Supercharge lets you easily add these spacers, giving you better control over your Dock's layout. + +#### Can I add custom actions to the app? + +As of now, the app focuses on providing a curated set of built-in features for enhancing your Mac experience. I'm happy to consider requests. + +#### Can you add a certain toggle? + +I'm happy to consider requests, but I don't intend for this app to turn into a “toggler” app. I have just provided some commonly needed toggles. + +Some toggles I don't plan to add: + +- AirPods +- Keep awake *(check out [Lungo](/lungo))* + +#### Does the app consume a lot of system resources? + +No, the app is optimized to run efficiently in the background with minimal CPU, memory, and battery usage. Most features are event-driven and only activate when needed. + +#### I cannot use Control+Space or Control+Shift+Space as a keyboard shortcut + +Go to “System Settings › Keyboard › Keyboard Shortcuts › Input Sources” and disable them all. + +#### Why would I want to clear my clipboard? + +Clearing the clipboard helps protect privacy by removing potentially sensitive information (like passwords or personal data) that might otherwise remain available for pasting. Any app can silently read the clipboard. And you could also accidentally paste it somewhere you didn't intend to. + +#### Why don’t the Finder context menu items show up in iCloud and Dropbox folders? {#finder-context-menu-icloud} + +Finder Sync extensions, which power these context menu items, are intended to add sync functionality for third-party services in Finder. Since iCloud and Dropbox folders have their own built-in sync, macOS don't allow the Supercharge extension in these locations to prevent conflicts. + +#### I am seeing incorrect icons for external drives in the Finder sidebar when enabling context menu items + +This is a macOS bug and out of my control. When context menu items are enabled for external volumes, macOS shows document icons instead of drive icons in the Finder sidebar. + +#### How can I add my preferred apps to the "Open Folder With" Finder context menu? {#add-app-open-folder-with} + +The menu shows apps that declare support for opening folders. This is controlled by the app developers, not by Supercharge. To get your preferred apps to appear in this menu, contact the developers of those apps and request them to add folder opening support. + +The developer will need to add `public.folder` to `LSItemContentTypes` their app's Info.plist: + +```xml +LSItemContentTypes + + public.folder + +``` + +#### Can you add support keyboard shortcuts to change default browser? + +Maybe. For now, you can make a shortcut in the Shortcuts app, give it a keyboard shortcut, and use the “Set Default Browser” Shortcuts action that comes with Supercharge. + +#### Can you add more features to changing the default browser, like rules? + +Features like rules require the app to intercept and forward URLs by acting as the default browser. This is out of scope for this app. Check out my [Velja](/velja) app for that. + +#### Can the app support clearing clipboard formatting? {#pure-paste} + +Check out my [Pure Paste](/pure-paste) app for this. I think it makes more sense as a separate app. + +#### Can the app support hiding menu bar items? + +No, that's out of scope for this app. I recommend [Ice](https://icemenubar.app). + +#### Can you add Alt-Tab functionality like Windows? + +No, this would be very complex to implement well and there is already an excellent free app called [AltTab](https://alt-tab-macos.netlify.app) that does exactly this. + +#### Why is this not in the App Store? + +Much of the functionality would not be possible in the App Store because of sandboxing. + +#### Can this app be available on Setapp? {#setapp} + +Setapp curates apps based on demand, so if you'd like to see this app on Setapp, [email them](https://support.setapp.com/hc/en-us/articles/4950254561052-How-to-contact-Setapp-team#:~:text=to%20your%20issue.-,Send%20an%20email,%3A%20support%40setapp.com.) and request its inclusion. + +#### [More FAQs…](/apps/faq) + + diff --git a/source/content/apps/today.md b/source/content/apps/today.md index 74ec7b3e..cde42162 100644 --- a/source/content/apps/today.md +++ b/source/content/apps/today.md @@ -24,7 +24,7 @@ It integrates with Calendar, Fantastical, and BusyCal. #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### How do I get back to the settings if I have hidden the `…` menu item? diff --git a/source/content/apps/utc-time.md b/source/content/apps/utc-time.md index 8fe46402..e54ff6cd 100644 --- a/source/content/apps/utc-time.md +++ b/source/content/apps/utc-time.md @@ -22,7 +22,7 @@ This can be useful as a quick reference. #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Can you localize the app into my language? diff --git a/source/content/apps/velja.md b/source/content/apps/velja.md index b5cd56ff..5a9281c2 100644 --- a/source/content/apps/velja.md +++ b/source/content/apps/velja.md @@ -10,6 +10,8 @@ olderMacOSVersions: - '12' - '13' feedbackNote: | + Clicking a link from Slack may open it in the background because of a [Slack bug](https://forums.slackcommunity.com/s/question/0D5PU00000eVocz0AC/when-opening-a-web-link-in-slack-the-link-opens-in-the-background-and-not-if-the-foreground-help?language=en_US) + [Can you support Safari profiles?](/velja#safari-profiles) [Can you support Arc spaces/profiles?](/velja#arc) @@ -157,9 +159,9 @@ Hold the Option key when clicking a browser in the Velja menu to laun #### The app does not show up in the menu bar -macOS hides menu bar apps when there is not enough space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is not enough space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. -You may also have enabled the “Hide menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. +You may also have disabled the “Show menu bar icon” setting, which hides the menu bar icon. Launch the app again to reveal the menu bar item for 5 seconds. #### Velja does not work @@ -181,7 +183,7 @@ Make sure you didn't click the link in a browser. See above. **I clicked a link in VS Code** -VS Code [does not open the system default browser](https://github.com/microsoft/vscode/issues/96132) when you click a link in the app. Because of this, Velja is not used. +By default, VS Code does not open the system default browser when you click a link in the app. Because of this, Velja is not used. You can change this with the `workbench.externalBrowser` setting in VS Code. **I clicked a short URL** @@ -266,7 +268,7 @@ And some apps do not need special support because they already support [universa - Maps (the built-in app) - Overcast -*Universal links also prevent Velja from letting you open a link in the browser instead of the app.* +*Universal links also prevent Velja from letting you open a link in the browser instead of the app. [Possible workaround.](https://lapcatsoftware.com/articles/universal-links2.html)* If your favorite service is in the above list, I would recommend contacting them and asking them to support opening a link directly in their app. That means being able to run the command `open -a AppName https://foo.com/link-to-project-or-meeting`. @@ -280,6 +282,10 @@ There are some ways to [disable Universal Links](https://mjtsai.com/blog/2022/04 First, make sure you grant access to profiles in the settings and then enable them in the “Shown Browsers” setting. +#### How can I open specific URLs in a Safari PWA (website added to the Dock)? {#safari-dock-app} + +Websites added to the Dock from Safari are just normal apps located in `~/Applications`. You could create a custom rule to match certain URLs and have them open in one of these web-wrapper apps. + #### Can you support [Firefox Multi-Account Containers](https://github.com/mozilla/multi-account-containers)? {#firefox-containers} It's not feasible to support it built-in because of missing features: @@ -324,7 +330,9 @@ This is currently not possible. The Slack app does not accept a normal deep link #### Can the default browser change based on the active [focus mode](https://support.apple.com/guide/mac-help/set-up-a-focus-to-stay-on-task-mchl613dc43f/mac)? {#focus-mode} -You can use the Shortcuts app for this. Make a shortcut for each focus mode you want to handle, where you use the “Set Default Browser” action that Velja provides. You will need the [Shortery app](https://apps.apple.com/app/id1594183810) to automatically run these shortcuts when the focus mode changes. (Shortery will most likely not be needed in macOS 14 as it's very likely it will have support for [automations](https://support.apple.com/en-gb/guide/shortcuts/apd690170742/6.0/ios/16.0)) +You can use the Shortcuts app for this. Make a shortcut for each focus mode you want to handle, where you use the “Set Default Browser” action that Velja provides. You will need the [Shortery app](https://apps.apple.com/app/id1594183810) to automatically run these shortcuts when the focus mode changes. + +I may add built-in support for focus modes at some point, but it's not a popular request, so it's not something I can prioritize right now. #### Can the default browser change depending on whether I'm at work or not? @@ -374,11 +382,11 @@ Ivory supports [Universal Links](https://developer.apple.com/ios/universal-links As of Ivory 1.0.0, it supports [these Mastodon instances](https://github.com/sindresorhus/meta/assets/170270/e256c5e1-5048-4cbc-8df2-aa09c969b639). -#### How can I export, import, sync, or back up the settings? +#### How can I export, import, sync, transfer, or back up the settings? -You can export/import rules in the settings. +You can export and import rules in the settings. See the bottom of the “Rules” settings tab. -For all settings, [see this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md) +For all settings, [see this](/apps/faq#export-settings). #### Can you support Safari profiles? {#safari-profiles} diff --git a/source/content/apps/week-number.md b/source/content/apps/week-number.md index 8992b625..4aff2bef 100644 --- a/source/content/apps/week-number.md +++ b/source/content/apps/week-number.md @@ -33,7 +33,7 @@ Click the feedback button in the app or [send it here](https://sindresorhus.com/ #### The app does not show up in the menu bar -macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender if you have it installed. +macOS hides menu bar apps when there is no space left in the menu bar. This is a common problem on MacBooks with a notch. Try quitting some other menu bar apps to free up space. If this does not solve it, try quitting Bartender/Ice if you have it installed. #### Why does it not show week 53? diff --git a/source/pages/[...apps]/[slug].astro b/source/pages/[...apps]/[slug].astro index 633d960f..f643fcac 100644 --- a/source/pages/[...apps]/[slug].astro +++ b/source/pages/[...apps]/[slug].astro @@ -105,7 +105,7 @@ const tagClass = 'text-[10px] inline-flex items-center font-bold leading-sm px-1 )} - {app.isPaid && } + {app.isPaid && }
diff --git a/source/pages/_apps-extra.md b/source/pages/_apps-extra.md index a845bfc9..f043bd64 100644 --- a/source/pages/_apps-extra.md +++ b/source/pages/_apps-extra.md @@ -18,8 +18,5 @@ - [Archived Apps](/apps/archived) - Apps that are no longer being worked on - [RSS Feed for New Apps](/feeds) - Get notified about new apps I publish - [Terms of Use](/apps/terms) - Guidelines and conditions for using my apps +- [Discounts](/apps/discounts) - Student discounts and special offers for my apps - -## Free - -If you're a student, open-source maintainer, or cannot afford my [paid apps](/apps/paid), [reach out](mailto:sindresorhus@gmail.com?subject=Free%20promo%20code%20for%20%5Bapp%5D&body=Mention%20which%20paid%20apps%20you%20want), and I will give you any of my paid apps for free. diff --git a/source/pages/apps/discounts.md b/source/pages/apps/discounts.md new file mode 100644 index 00000000..4b0e0ead --- /dev/null +++ b/source/pages/apps/discounts.md @@ -0,0 +1,28 @@ +--- +layout: ~/layouts/MarkdownLayout.astro +title: Discounts +--- + +# Discounts + + + +## Students and open source maintainers + +*Update: I'm pausing this for now. I get 20–30 emails daily about promo codes and need time to focus on work. I’ll resume sharing promo codes in the future. Thanks for understanding.* + +~~If you're a student or an open source maintainer, you can get any of my [paid apps](/apps/paid) for free. **Max one app per person.**~~ + +~~[Reach out to me](mailto:sindresorhus@gmail.com?subject=Free%20promo%20code%20for%20%5Bapp%5D&body=Mention%20which%20paid%20apps%20you%20want) to request a free promo code.~~ + +## Educational institutions + +For my [apps on the App Store](https://apps.apple.com/developer/id328077650), educational institutions get a 50% discount when they purchase 20 or more copies of one of my macOS or iOS apps through [Apple School Manager](https://support.apple.com/en-gb/guide/apple-school-manager/welcome/web). + +For my [apps on Gumroad](https://sindresorhus.gumroad.com), educational institutions get a 50% discount when they purchase 10 or more copies. Promo code: `LD13WY0` + +## Reviewers and writers + +If you're writing a review or article about one of my apps, I’m happy to provide a free license. [Contact me.](mailto:sindresorhus@gmail.com?subject=Review%20request%20-%20free%20license) diff --git a/source/pages/apps/faq.md b/source/pages/apps/faq.md index d7ff9e7f..3152604c 100644 --- a/source/pages/apps/faq.md +++ b/source/pages/apps/faq.md @@ -17,16 +17,26 @@ My apps prioritize user privacy and do not collect any personal data. ### How can I get a refund? -For apps purchased on the Apple App Store, you can [request a refund](https://support.apple.com/en-us/HT204084). However, I would appreciate if you [reached out](/feedback) first. I may be able to resolve any problems you are having. +For apps purchased on the Apple App Store, you can [request a refund](https://support.apple.com/en-us/HT204084) from Apple. + +For apps purchased on Gumroad, you can [request a refund](mailto:sindresorhus@gmail.com?subject=Gumroad%20refund&body=Mention%20which%20app%20you%20want%20a%20refund%20for%20and%20your%20Gumroad%20account%20email) within 14 days of the purchase. + +However, I would appreciate if you [reached out](/feedback) first. I may be able to resolve any problems you are having. ### How many devices can I install an app on? Apps purchased on the Apple App Store can be installed on up to 10 devices, with a maximum of 5 computers. [Learn more.](https://support.apple.com/en-us/HT204074) +Apps purchased on Gumroad can be used by one user on unlimited computers. + ### How can I transfer an app bought on the Apple App Store to a different account? This is unfortunately [not possible](https://apple.stackexchange.com/a/444878). App developers have no control over the purchase process on the Apple App Store. +### Do you provide any discounts? + +Yes. See the [discounts](/apps/discounts) page. + ### Are your apps native? Yes, all my apps are native. They are built using Swift and SwiftUI and are designed to provide the best performance and integration with the operating systems. I put a lot of effort into adhering to Apple's [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines). @@ -49,7 +59,7 @@ I hate ads. None of my apps have ads. ### How can I support your work? -Rate and review my apps on the App Store. Your ratings and reviews greatly aid in increasing the apps' visibility and discoverability, helping more users find them. +Rate and review my apps on the App Store. Your ratings and reviews greatly aid in increasing the apps' visibility and discoverability, helping more users find them. You can also rate my apps on Gumroad. ### Who makes your app icons? @@ -61,7 +71,7 @@ User-reported bugs are prioritized based on their impact on the app's functional ### What's the best way to learn about new apps? -Subscribe to my [“new apps” RSS feed](/rss-apps.xml) and follow me on [Twitter](https://twitter.com/sindresorhus) and [Mastodon](https://mastodon.social/@sindresorhus). +Subscribe to my [“new apps” RSS feed](/feeds) and follow me on [Twitter](https://twitter.com/sindresorhus) and [Mastodon](https://mastodon.social/@sindresorhus). ### Do you actively maintain all your apps? @@ -83,9 +93,11 @@ I make apps for fun and supporting older operating system versions is simply no - **Isolation:** Issues in one app don’t affect others. - **Satisfaction:** I like the satisfaction of completing an app. -### How can I export, import, sync, or back up the settings in a Mac app? +### How can I export, import, sync, transfer, or back up the settings for your Mac app? {#export-settings} + +You can do it with my [App Buddy](/app-buddy) app. -[See this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md) +If you prefer using the command-line, [see this guide.](https://github.com/sindresorhus/guides/blob/main/backup-app-settings.md#command-line) ### Can I contribute localizations to your apps? @@ -93,7 +105,9 @@ No, I don't plan to localize my apps. Localization adds complexity and maintenan ### Can you make your apps available on Homebrew? {#homebrew} -Unfortunately not. Supporting Homebrew requires distributing apps outside the App Store, and that involves significant overhead: hosting, auto-updating, and dual publishing. The demand simply doesn't justify these efforts. +For App Store apps, unfortunately not. Supporting Homebrew requires distributing apps outside the App Store, and that involves significant overhead: hosting, auto-updating, and dual publishing. The demand simply doesn't justify these efforts. + +For non-App Store apps, anyone can add to Homebrew. Feel free to [add one of my apps](https://docs.brew.sh/Adding-Software-to-Homebrew). I personally don't use Homebrew for apps, so it's not something I plan to do. ### You are doing a lot of open source, why are only some of your apps open source? {#why-not-oss} @@ -129,6 +143,8 @@ osascript -e 'id of app "AppName"' Replace `AppName` with the name of the app. +For my apps, you can also find it in [App Buddy](/app-buddy). + ### What is a bundle identifier? {#bundle-identifier} A bundle identifier (or bundle ID) uniquely identifies an app in Apple's ecosystem, using a reverse-domain format like `com.companyname.appname`. For example, `com.sindresorhus.Dato` for [Dato](/dato). @@ -168,6 +184,12 @@ iOS: Open the Settings app, go to “General › iPhone/iPad Storage”, tap the *(This is only necessary if the app asked for any permissions the first time you launched it)* +**The simple way** + +Select the app in [App Buddy](/app-buddy) and click “Reset Permissions”. + +**The manual way** + First, quit the app. Copy the following, open the Terminal app, paste it into the Terminal window, replace `` with the name of the app, and then press the Return key: @@ -200,7 +222,11 @@ You can now launch the app again. ### How can I send you a crash report for one of your apps? {#crash-report} -**macOS** +**macOS - simple** + +Select the app in [App Buddy](/app-buddy) and click “Copy to Downloads” in the “Crash Reports” section. + +**macOS - manual** - Open Finder - Select `Go to Folder…` from the `Go` menu - Enter: `~/Library/Logs/DiagnosticReports` @@ -224,6 +250,12 @@ You can now launch the app again. ### How can I send you a **process sample** for one of your Mac apps? {#sample-process} +**The simple way** + +Select the app in [App Buddy](/app-buddy) and click “Sample Process”. + +**The manual way** + - Make sure the app in question is running. - Open the Activity Monitor app. - In the search bar in the toolbar, write the name of the app. diff --git a/source/pages/apps/terms.md b/source/pages/apps/terms.md index 03d62daa..55721797 100644 --- a/source/pages/apps/terms.md +++ b/source/pages/apps/terms.md @@ -15,6 +15,10 @@ By using my apps, you agree to these terms and any subsequent changes. I may upd You may use my apps without restrictions for their intended purposes. However, malicious usage is strictly prohibited. +## Intellectual Property + +All content, features, and functionality of the apps are owned by me and protected by intellectual property laws. You may not reproduce, modify, distribute, or exploit any part of the apps without explicit permission. + ## App Store If you get my apps from the App Store, [Apple’s EULA](https://www.apple.com/legal/internet-services/itunes/dev/stdeula/) applies. @@ -23,10 +27,18 @@ If you get my apps from the App Store, [Apple’s EULA](https://www.apple.com/le Perfection is the goal, but occasional bugs may appear. I deeply value the trust you place in my apps, yet I cannot promise complete flawlessness. For your peace of mind, regular backups are highly recommended. +## Accessibility (ADA Compliance) + +I am committed to making my apps accessible to everyone, including individuals with disabilities. If you encounter any accessibility issues while using my website or apps, please [contact me](/feedback) to report them, and I will do my best to address and resolve the concerns promptly. Accessibility improvements are continuously being made to ensure a user-friendly experience for all. + ## Liability I disclaim all liability arising from the use or misuse of my apps. Users assume all risks and consequences tied to their actions based on the apps' functionality or content. +## Indemnification + +You agree to indemnify me against any claims, liabilities, damages, or expenses arising from your use of the apps or breach of these terms. + ## Refunds For apps purchased on the Apple App Store, you can [request a refund](https://support.apple.com/en-us/HT204084). However, I would appreciate if you [reached out](/feedback) first. I may be able to resolve any problems you are having. @@ -37,4 +49,4 @@ I aim to address all support and related queries within a week. There might be o --- -Last Update: 2023-10-04 +Last Update: 2024-09-13 diff --git a/source/pages/feedback.astro b/source/pages/feedback.astro index db0e0ddb..33b3d36c 100644 --- a/source/pages/feedback.astro +++ b/source/pages/feedback.astro @@ -35,8 +35,9 @@ const labelCSS = 'block mb-2 text-sm font-medium text-gray-900 dark:text-gray-30

Feedback & Support

- +

I may take longer to respond as I'm getting an overwhelming amount of emails at the moment. I appreciate your patience.
+
If you experience any issues with my apps after updating to iOS 18 / macOS 15, make sure you are on the latest update of my apps and try restarting your device one more time. It fixes a lot of issues. If you are still having problems with widgets, try changing the device language to something else and then back.
@@ -58,6 +59,8 @@ const labelCSS = 'block mb-2 text-sm font-medium text-gray-900 dark:text-gray-30 + If you haven't received a reply for two weeks, check your spam folder, it might be there. +
@@ -100,7 +103,7 @@ const labelCSS = 'block mb-2 text-sm font-medium text-gray-900 dark:text-gray-30 if (app?.hasFaqSection) { $('#additional-info').show().append(` - See the app's frequently asked questions (FAQs) and the general FAQs in case your question has already been answered.\nMake sure you are on the latest version and try to restart your device.\nIf the app crashed (macOS-only), it would be very helpful if you could include a crash report. + See the app's frequently asked questions (FAQs) and the general FAQs in case your question has already been answered.\nMake sure you are on the latest version and try to restart your device.\nIf the app crashed, it would be very helpful if you could send a crash report. `); } diff --git a/source/pages/supporters.md b/source/pages/supporters.md index 38bcef8c..b1dd8b6a 100644 --- a/source/pages/supporters.md +++ b/source/pages/supporters.md @@ -84,11 +84,10 @@ None --> Logto
-
-
## Silver sponsor [$100/month](https://www.patreon.com/bePatron?c=95723&rid=1917312) @@ -105,18 +104,16 @@ None --> - ## Top supporter [$50/month](https://www.patreon.com/bePatron?c=95723&rid=1917313) - [Jacob Gillespie](https://github.com/jacobwgillespie) - [Passbolt](https://github.com/passbolt) -- [Sideline Sports](https://github.com/SidelineSports) - [Checkly](https://github.com/checkly) - [Stefan Thomas](https://www.patreon.com/user/creators?u=15361260) +- [BoltAI](https://github.com/BoltAI) +- [n8n](https://github.com/n8nio) ## Supporter [$10/month](https://www.patreon.com/bePatron?c=95723&rid=1917314) @@ -139,7 +136,6 @@ None --> - Fission Team - Manizheh and Nick - [Addy Osmani](https://github.com/addyosmani) -- [Paul Irish](https://github.com/paulirish) - [Florian Breisch](https://github.com/florianb) - [Mikkel Malmberg](https://github.com/mikker) - [Keith Ito](https://github.com/keithito) @@ -171,7 +167,6 @@ None --> - [Sean](https://github.com/hammy2899) - [Bertrand Marron](https://github.com/tusbar) - [Eric Lanehart](https://github.com/pushred) -- [Keiichiro Amemiya](https://github.com/Hoishin) - [hilezi](https://github.com/hilezi) - [Mathieu Dutour](https://github.com/mathieudutour) - [Phan An](https://github.com/phanan) @@ -216,7 +211,6 @@ None --> - [Ilias Aboubeker](https://github.com/samyilias) - [DefineValue](https://github.com/definevalue) - [@cburatto](https://github.com/cburatto) -- [Zenika](https://github.com/Zenika) - [DevUtilsApp](https://github.com/DevUtilsApp) - [Mom's Friendly Development Company](https://github.com/MomsFriendlyDevCo) - [Mention Me Ltd](https://github.com/mention-me) @@ -232,13 +226,18 @@ None --> - [Community Boss](https://github.com/parkingboss) - [Marc Rousavy](https://github.com/mrousavy) - [Seungwoo Choe](https://github.com/seungwoochoe) -- [Preston Nalls](https://github.com/pjnalls) - [Tighten](https://github.com/tighten) - [Gregor Adams](https://github.com/pixelass) - [Lightning Jar](https://github.com/lightning-jar) - [Sourcegraph](https://github.com/sourcegraph-community) - [kaerez](https://github.com/kaerez) -- [Michael Sartain](https://github.com/mikesart) +- [MFB Technologies, Inc.](https://github.com/MFB-Technologies-Inc) +- [Jamstar00](https://github.com/Jamstar00) +- [Alessandro Maclaine](https://github.com/ALMaclaine) +- [Dan Grigsby](https://github.com/dcgrigsby) +- [GitbookIO](https://github.com/GitbookIO) +- [Niall Newman](https://github.com/niallnsec) +- [Lightning Jar](https://github.com/lightning-jar)
(It will be updated on the first day of every month) @@ -416,6 +415,14 @@ I'm forever thankful to these people and companies that have previously supporte - [Shaun Harrison](https://github.com/shnhrrsn) - [Standard Resume](https://standardresume.co) - [SerpApi](https://serpapi.com) +- [Sideline Sports](https://github.com/SidelineSports) +- [Zenika](https://github.com/Zenika) +- [Keiichiro Amemiya](https://github.com/Hoishin) +- [Paul Irish](https://github.com/paulirish) +- [Michael Sartain](https://github.com/mikesart) +- [Preston Nalls](https://github.com/pjnalls) +- [Supatool](https://supatool.io) +- [Encore](https://encore.dev) ---