From cefa08014c9108e3036304a43e01bce24e06ee6e Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Wed, 29 Nov 2023 06:01:43 +0530 Subject: [PATCH 01/72] Initial commit --- README.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000000..89e9680f5c --- /dev/null +++ b/README.md @@ -0,0 +1,2 @@ +# docs +Documentation for products made by Ente From 79f157e96fd266e7dba9a690a800df7b807000ec Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 08:21:49 +0530 Subject: [PATCH 02/72] Scaffold doc project --- .gitignore | 125 +++ docs/.vitepress/config.mts | 28 + docs/api-examples.md | 49 + docs/index.md | 27 + docs/markdown-examples.md | 85 ++ package-lock.json | 2011 ++++++++++++++++++++++++++++++++++++ package.json | 10 + 7 files changed, 2335 insertions(+) create mode 100644 .gitignore create mode 100644 docs/.vitepress/config.mts create mode 100644 docs/api-examples.md create mode 100644 docs/index.md create mode 100644 docs/markdown-examples.md create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000..81aa9db6ad --- /dev/null +++ b/.gitignore @@ -0,0 +1,125 @@ +.DS_Store + +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +lerna-debug.log* +.pnpm-debug.log* + +# Diagnostic reports (https://nodejs.org/api/report.html) +report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json + +# Runtime data +pids +*.pid +*.seed +*.pid.lock + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage +*.lcov + +# nyc test coverage +.nyc_output + +# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# Bower dependency directory (https://bower.io/) +bower_components + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (https://nodejs.org/api/addons.html) +build/Release + +# Dependency directories +node_modules/ +jspm_packages/ + +# Snowpack dependency directory (https://snowpack.dev/) +web_modules/ + +# TypeScript cache +*.tsbuildinfo + +# Optional npm cache directory +.npm + +# Optional eslint cache +.eslintcache + +# Microbundle cache +.rpt2_cache/ +.rts2_cache_cjs/ +.rts2_cache_es/ +.rts2_cache_umd/ + +# Optional REPL history +.node_repl_history + +# Output of 'npm pack' +*.tgz + +# Yarn Integrity file +.yarn-integrity + +# dotenv environment variables file +.env +.env.test +.env.production + +# parcel-bundler cache (https://parceljs.org/) +.cache +.parcel-cache + +# Next.js build output +.next +out + +# Nuxt.js build / generate output +.nuxt +dist + +# Gatsby files +.cache/ +# Comment in the public line in if your project uses Gatsby and not Next.js +# https://nextjs.org/blog/next-9-1#public-directory-support +# public + +# vuepress build output +.vuepress/dist + +# Serverless directories +.serverless/ + +# FuseBox cache +.fusebox/ + +# DynamoDB Local files +.dynamodb/ + +# TernJS port file +.tern-port + +# Stores VSCode versions used for testing VSCode extensions +.vscode-test + +# yarn v2 +.yarn/cache +.yarn/unplugged +.yarn/build-state.yml +.yarn/install-state.gz +.pnp.* + +docs/.vitepress/cache/ +docs/.vitepress/dist/ +.vitepress/cache/ +.v3-crawler.js \ No newline at end of file diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts new file mode 100644 index 0000000000..f84ee5c134 --- /dev/null +++ b/docs/.vitepress/config.mts @@ -0,0 +1,28 @@ +import { defineConfig } from 'vitepress' + +// https://vitepress.dev/reference/site-config +export default defineConfig({ + title: "Ente Photos Help", + description: "Ente Product Documentation", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + nav: [ + { text: 'Home', link: '/' }, + { text: 'Examples', link: '/markdown-examples' } + ], + + sidebar: [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ], + + socialLinks: [ + { icon: 'github', link: 'https://github.com/ente-io/' } + ] + } +}) diff --git a/docs/api-examples.md b/docs/api-examples.md new file mode 100644 index 0000000000..6bd8bb5c17 --- /dev/null +++ b/docs/api-examples.md @@ -0,0 +1,49 @@ +--- +outline: deep +--- + +# Runtime API Examples + +This page demonstrates usage of some of the runtime APIs provided by VitePress. + +The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: + +```md + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+``` + + + +## Results + +### Theme Data +
{{ theme }}
+ +### Page Data +
{{ page }}
+ +### Page Frontmatter +
{{ frontmatter }}
+ +## More + +Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..b3c304a09c --- /dev/null +++ b/docs/index.md @@ -0,0 +1,27 @@ +--- +# https://vitepress.dev/reference/default-theme-home-page +layout: home + +hero: + name: "Ente Help" + text: "Ente Product Documentation" + tagline: A secure, private world for you and your family + actions: + - theme: brand + text: Photos + link: /markdown-examples + - theme: brand + text: Authenticator + link: /api-examples + +features: + - title: Private + details: End to end encrypted, zero in-app analyatics, only you can access your data + - title: Reliable + details: Audited by Cure53, multiple copies of your data across different service providers + - title: Social + details: Share your subscription with your family, at no extra cost. Share photos with anyone, with complete privacy + - title: Available Everywhere + details: Android, iOS, Windows, Linux, Desktop, & Web. +--- + diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md new file mode 100644 index 0000000000..3ea9aa9f2a --- /dev/null +++ b/docs/markdown-examples.md @@ -0,0 +1,85 @@ +# Markdown Extension Examples + +This page demonstrates some of the built-in markdown extensions provided by VitePress. + +## Syntax Highlighting + +VitePress provides Syntax Highlighting powered by [Shikiji](https://github.com/antfu/shikiji), with additional features like line-highlighting: + +**Input** + +````md +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` +```` + +**Output** + +```js{4} +export default { + data () { + return { + msg: 'Highlighted!' + } + } +} +``` + +## Custom Containers + +**Input** + +```md +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: +``` + +**Output** + +::: info +This is an info box. +::: + +::: tip +This is a tip. +::: + +::: warning +This is a warning. +::: + +::: danger +This is a dangerous warning. +::: + +::: details +This is a details block. +::: + +## More + +Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000000..5a36591552 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,2011 @@ +{ + "name": "docs", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "devDependencies": { + "vitepress": "^1.0.0-rc.31" + } + }, + "node_modules/@algolia/autocomplete-core": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", + "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", + "@algolia/autocomplete-shared": "1.9.3" + } + }, + "node_modules/@algolia/autocomplete-plugin-algolia-insights": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", + "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "search-insights": ">= 1 < 3" + } + }, + "node_modules/@algolia/autocomplete-preset-algolia": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", + "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-shared": "1.9.3" + }, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/autocomplete-shared": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", + "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", + "dev": true, + "peerDependencies": { + "@algolia/client-search": ">= 4.9.1 < 6", + "algoliasearch": ">= 4.9.1 < 6" + } + }, + "node_modules/@algolia/cache-browser-local-storage": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", + "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.20.0" + } + }, + "node_modules/@algolia/cache-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", + "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", + "dev": true + }, + "node_modules/@algolia/cache-in-memory": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", + "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.20.0" + } + }, + "node_modules/@algolia/client-account": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", + "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-analytics": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", + "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", + "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-personalization": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", + "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/client-search": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", + "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", + "dev": true, + "dependencies": { + "@algolia/client-common": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/@algolia/logger-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", + "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", + "dev": true + }, + "node_modules/@algolia/logger-console": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", + "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", + "dev": true, + "dependencies": { + "@algolia/logger-common": "4.20.0" + } + }, + "node_modules/@algolia/requester-browser-xhr": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", + "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@algolia/requester-common": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", + "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", + "dev": true + }, + "node_modules/@algolia/requester-node-http": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", + "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", + "dev": true, + "dependencies": { + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@algolia/transporter": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", + "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", + "dev": true, + "dependencies": { + "@algolia/cache-common": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/requester-common": "4.20.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", + "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@docsearch/css": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", + "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", + "dev": true + }, + "node_modules/@docsearch/js": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", + "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", + "dev": true, + "dependencies": { + "@docsearch/react": "3.5.2", + "preact": "^10.0.0" + } + }, + "node_modules/@docsearch/react": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", + "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", + "dev": true, + "dependencies": { + "@algolia/autocomplete-core": "1.9.3", + "@algolia/autocomplete-preset-algolia": "1.9.3", + "@docsearch/css": "3.5.2", + "algoliasearch": "^4.19.1" + }, + "peerDependencies": { + "@types/react": ">= 16.8.0 < 19.0.0", + "react": ">= 16.8.0 < 19.0.0", + "react-dom": ">= 16.8.0 < 19.0.0", + "search-insights": ">= 1 < 3" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + }, + "search-insights": { + "optional": true + } + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", + "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", + "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", + "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", + "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", + "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", + "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", + "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", + "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", + "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", + "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", + "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", + "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", + "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", + "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", + "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", + "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", + "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", + "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", + "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", + "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", + "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", + "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.15", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", + "dev": true + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.0.tgz", + "integrity": "sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.0.tgz", + "integrity": "sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.0.tgz", + "integrity": "sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.0.tgz", + "integrity": "sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.0.tgz", + "integrity": "sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.0.tgz", + "integrity": "sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.0.tgz", + "integrity": "sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.0.tgz", + "integrity": "sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.0.tgz", + "integrity": "sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.0.tgz", + "integrity": "sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.0.tgz", + "integrity": "sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.0.tgz", + "integrity": "sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/hast": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", + "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", + "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", + "dev": true + }, + "node_modules/@types/markdown-it": { + "version": "13.0.7", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", + "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", + "dev": true, + "dependencies": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", + "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", + "dev": true, + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdurl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", + "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", + "dev": true + }, + "node_modules/@types/unist": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", + "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", + "dev": true + }, + "node_modules/@types/web-bluetooth": { + "version": "0.0.20", + "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", + "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", + "dev": true + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz", + "integrity": "sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==", + "dev": true, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.0.0 || ^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", + "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", + "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", + "dev": true, + "dependencies": { + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", + "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-ssr": "3.3.9", + "@vue/reactivity-transform": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5", + "postcss": "^8.4.31", + "source-map-js": "^1.0.2" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", + "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", + "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", + "dev": true + }, + "node_modules/@vue/reactivity": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", + "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", + "dev": true, + "dependencies": { + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/reactivity-transform": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", + "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.23.3", + "@vue/compiler-core": "3.3.9", + "@vue/shared": "3.3.9", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.5" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", + "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", + "dev": true, + "dependencies": { + "@vue/reactivity": "3.3.9", + "@vue/shared": "3.3.9" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", + "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", + "dev": true, + "dependencies": { + "@vue/runtime-core": "3.3.9", + "@vue/shared": "3.3.9", + "csstype": "^3.1.2" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", + "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", + "dev": true, + "dependencies": { + "@vue/compiler-ssr": "3.3.9", + "@vue/shared": "3.3.9" + }, + "peerDependencies": { + "vue": "3.3.9" + } + }, + "node_modules/@vue/shared": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", + "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==", + "dev": true + }, + "node_modules/@vueuse/core": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.6.1.tgz", + "integrity": "sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==", + "dev": true, + "dependencies": { + "@types/web-bluetooth": "^0.0.20", + "@vueuse/metadata": "10.6.1", + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/core/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.6.1.tgz", + "integrity": "sha512-mPDupuofMJ4DPmtX/FfP1MajmWRzYDv8WSaTCo8LQ5kFznjWgmUQ16ApjYqgMquqffNY6+IRMdMgosLDRZOSZA==", + "dev": true, + "dependencies": { + "@vueuse/core": "10.6.1", + "@vueuse/shared": "10.6.1", + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "async-validator": "*", + "axios": "*", + "change-case": "*", + "drauu": "*", + "focus-trap": "*", + "fuse.js": "*", + "idb-keyval": "*", + "jwt-decode": "*", + "nprogress": "*", + "qrcode": "*", + "sortablejs": "*", + "universal-cookie": "*" + }, + "peerDependenciesMeta": { + "async-validator": { + "optional": true + }, + "axios": { + "optional": true + }, + "change-case": { + "optional": true + }, + "drauu": { + "optional": true + }, + "focus-trap": { + "optional": true + }, + "fuse.js": { + "optional": true + }, + "idb-keyval": { + "optional": true + }, + "jwt-decode": { + "optional": true + }, + "nprogress": { + "optional": true + }, + "qrcode": { + "optional": true + }, + "sortablejs": { + "optional": true + }, + "universal-cookie": { + "optional": true + } + } + }, + "node_modules/@vueuse/integrations/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/@vueuse/metadata": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.6.1.tgz", + "integrity": "sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared": { + "version": "10.6.1", + "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.6.1.tgz", + "integrity": "sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==", + "dev": true, + "dependencies": { + "vue-demi": ">=0.14.6" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/@vueuse/shared/node_modules/vue-demi": { + "version": "0.14.6", + "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", + "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "vue-demi-fix": "bin/vue-demi-fix.js", + "vue-demi-switch": "bin/vue-demi-switch.js" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + }, + "peerDependencies": { + "@vue/composition-api": "^1.0.0-rc.1", + "vue": "^3.0.0-0 || ^2.6.0" + }, + "peerDependenciesMeta": { + "@vue/composition-api": { + "optional": true + } + } + }, + "node_modules/algoliasearch": { + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", + "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", + "dev": true, + "dependencies": { + "@algolia/cache-browser-local-storage": "4.20.0", + "@algolia/cache-common": "4.20.0", + "@algolia/cache-in-memory": "4.20.0", + "@algolia/client-account": "4.20.0", + "@algolia/client-analytics": "4.20.0", + "@algolia/client-common": "4.20.0", + "@algolia/client-personalization": "4.20.0", + "@algolia/client-search": "4.20.0", + "@algolia/logger-common": "4.20.0", + "@algolia/logger-console": "4.20.0", + "@algolia/requester-browser-xhr": "4.20.0", + "@algolia/requester-common": "4.20.0", + "@algolia/requester-node-http": "4.20.0", + "@algolia/transporter": "4.20.0" + } + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/csstype": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", + "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", + "dev": true + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dev": true, + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "dev": true, + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/esbuild": { + "version": "0.19.8", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", + "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.8", + "@esbuild/android-arm64": "0.19.8", + "@esbuild/android-x64": "0.19.8", + "@esbuild/darwin-arm64": "0.19.8", + "@esbuild/darwin-x64": "0.19.8", + "@esbuild/freebsd-arm64": "0.19.8", + "@esbuild/freebsd-x64": "0.19.8", + "@esbuild/linux-arm": "0.19.8", + "@esbuild/linux-arm64": "0.19.8", + "@esbuild/linux-ia32": "0.19.8", + "@esbuild/linux-loong64": "0.19.8", + "@esbuild/linux-mips64el": "0.19.8", + "@esbuild/linux-ppc64": "0.19.8", + "@esbuild/linux-riscv64": "0.19.8", + "@esbuild/linux-s390x": "0.19.8", + "@esbuild/linux-x64": "0.19.8", + "@esbuild/netbsd-x64": "0.19.8", + "@esbuild/openbsd-x64": "0.19.8", + "@esbuild/sunos-x64": "0.19.8", + "@esbuild/win32-arm64": "0.19.8", + "@esbuild/win32-ia32": "0.19.8", + "@esbuild/win32-x64": "0.19.8" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", + "dev": true + }, + "node_modules/focus-trap": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", + "dev": true, + "dependencies": { + "tabbable": "^6.2.0" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/hast-util-from-parse5": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", + "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "hastscript": "^8.0.0", + "property-information": "^6.0.0", + "vfile": "^6.0.0", + "vfile-location": "^5.0.0", + "web-namespaces": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-parse-selector": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", + "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-raw": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", + "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "@ungap/structured-clone": "^1.0.0", + "hast-util-from-parse5": "^8.0.0", + "hast-util-to-parse5": "^8.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "parse5": "^7.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "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==", + "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", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-parse5": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", + "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "web-namespaces": "^2.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hastscript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", + "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/magic-string": { + "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", + "dev": true, + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.4.15" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/mark.js": { + "version": "8.11.1", + "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", + "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", + "dev": true + }, + "node_modules/mdast-util-to-hast": { + "version": "13.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", + "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", + "dev": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-util-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", + "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", + "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", + "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", + "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", + "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", + "dev": true, + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/minisearch": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", + "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", + "dev": true + }, + "node_modules/mrmime": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", + "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/preact": { + "version": "10.19.2", + "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.2.tgz", + "integrity": "sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/preact" + } + }, + "node_modules/property-information": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", + "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/rollup": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.0.tgz", + "integrity": "sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==", + "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.6.0", + "@rollup/rollup-android-arm64": "4.6.0", + "@rollup/rollup-darwin-arm64": "4.6.0", + "@rollup/rollup-darwin-x64": "4.6.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.6.0", + "@rollup/rollup-linux-arm64-gnu": "4.6.0", + "@rollup/rollup-linux-arm64-musl": "4.6.0", + "@rollup/rollup-linux-x64-gnu": "4.6.0", + "@rollup/rollup-linux-x64-musl": "4.6.0", + "@rollup/rollup-win32-arm64-msvc": "4.6.0", + "@rollup/rollup-win32-ia32-msvc": "4.6.0", + "@rollup/rollup-win32-x64-msvc": "4.6.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/search-insights": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.11.0.tgz", + "integrity": "sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==", + "dev": true, + "peer": true + }, + "node_modules/shikiji": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.7.5.tgz", + "integrity": "sha512-He8lAcTZUVuUW+Z4VRPM+TP+HVZCe4R1qzrP7voUrmAKrFKE260YEUVgqcP7y/0ps0uVvKgVhu5vgIshGpGocQ==", + "dev": true, + "dependencies": { + "hast-util-to-html": "^9.0.0" + } + }, + "node_modules/shikiji-transformers": { + "version": "0.7.5", + "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.7.5.tgz", + "integrity": "sha512-9faGNS/3xI9QP8HZI2Xa1xtMQtaVkl/ulgMIOiaKY7XcETdUsz2yzors3UQkPUO2cwbQLS376wnZe4Xik8wMBA==", + "dev": true, + "dependencies": { + "shikiji": "0.7.5" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "dev": true, + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tabbable": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", + "dev": true + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", + "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-location": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", + "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dev": true, + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vite": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.3.tgz", + "integrity": "sha512-WgEq8WEKpZ8c0DL4M1+E+kBZEJyjBmGVrul6z8Ljfhv+PPbNF4aGq014DwNYxGz2FGq6NKL0N8usdiESWd2l2w==", + "dev": true, + "dependencies": { + "esbuild": "^0.19.3", + "postcss": "^8.4.31", + "rollup": "^4.2.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vitepress": { + "version": "1.0.0-rc.31", + "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.31.tgz", + "integrity": "sha512-ikH9pIjOOAbyoYAGBVfTz8TzuXp+UoWaIRMU4bw/oiTg8R65SbAaGKY84xx6TuL+f4VqUJ8lhzW82YyxSLvstA==", + "dev": true, + "dependencies": { + "@docsearch/css": "^3.5.2", + "@docsearch/js": "^3.5.2", + "@types/markdown-it": "^13.0.7", + "@vitejs/plugin-vue": "^4.5.0", + "@vue/devtools-api": "^6.5.1", + "@vueuse/core": "^10.6.1", + "@vueuse/integrations": "^10.6.1", + "focus-trap": "^7.5.4", + "mark.js": "8.11.1", + "minisearch": "^6.3.0", + "mrmime": "^1.0.1", + "shikiji": "^0.7.4", + "shikiji-transformers": "^0.7.4", + "vite": "^5.0.2", + "vue": "^3.3.8" + }, + "bin": { + "vitepress": "bin/vitepress.js" + }, + "peerDependencies": { + "markdown-it-mathjax3": "^4.3.2", + "postcss": "^8.4.31" + }, + "peerDependenciesMeta": { + "markdown-it-mathjax3": { + "optional": true + }, + "postcss": { + "optional": true + } + } + }, + "node_modules/vue": { + "version": "3.3.9", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", + "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", + "dev": true, + "dependencies": { + "@vue/compiler-dom": "3.3.9", + "@vue/compiler-sfc": "3.3.9", + "@vue/runtime-dom": "3.3.9", + "@vue/server-renderer": "3.3.9", + "@vue/shared": "3.3.9" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/web-namespaces": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", + "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000000..9f7c5fe4eb --- /dev/null +++ b/package.json @@ -0,0 +1,10 @@ +{ + "scripts": { + "docs:dev": "vitepress dev docs", + "docs:build": "vitepress build docs", + "docs:preview": "vitepress preview docs" + }, + "devDependencies": { + "vitepress": "^1.0.0-rc.31" + } +} From 00ee42cf6187684235d94e02aee5c2d01d905e9b Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 09:29:26 +0530 Subject: [PATCH 03/72] Add basic page for Authenticator --- docs/.vitepress/config.mts | 4 ++-- docs/authenticator/faq/faq.md | 0 .../getting-started/quick-start.md | 0 docs/authenticator/index.md | 21 +++++++++++++++++++ docs/authenticator/misc/contributors.md | 0 docs/photos/index.md | 1 + 6 files changed, 24 insertions(+), 2 deletions(-) create mode 100644 docs/authenticator/faq/faq.md create mode 100644 docs/authenticator/getting-started/quick-start.md create mode 100644 docs/authenticator/index.md create mode 100644 docs/authenticator/misc/contributors.md create mode 100644 docs/photos/index.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index f84ee5c134..b79fb82a66 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -7,8 +7,8 @@ export default defineConfig({ themeConfig: { // https://vitepress.dev/reference/default-theme-config nav: [ - { text: 'Home', link: '/' }, - { text: 'Examples', link: '/markdown-examples' } + { text: 'Photos', link: '/photos/index' }, + { text: 'Authenticator', link: '/authenticator/index' } ], sidebar: [ diff --git a/docs/authenticator/faq/faq.md b/docs/authenticator/faq/faq.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/authenticator/getting-started/quick-start.md b/docs/authenticator/getting-started/quick-start.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/authenticator/index.md b/docs/authenticator/index.md new file mode 100644 index 0000000000..7b85819bb0 --- /dev/null +++ b/docs/authenticator/index.md @@ -0,0 +1,21 @@ +# Welcome to the Ente Authenticator User Guide! + +Ente Authenticator is a free, cross-platform, end-to-end encrypted Authenticator app for everyone. +We're glad you're here! + +**Please note that Ente Authenticator Docs are in beta and thus are not yet complete.** We haven't documented all of Ente Authenticator's amazing features yet. But, we will be adding more documentation here over time. + +If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. + + + +Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. + +## Contributing + +This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. + +We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) +before making a Pull Request. + +Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! \ No newline at end of file diff --git a/docs/authenticator/misc/contributors.md b/docs/authenticator/misc/contributors.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/index.md b/docs/photos/index.md new file mode 100644 index 0000000000..e4d5be70bb --- /dev/null +++ b/docs/photos/index.md @@ -0,0 +1 @@ +### Ente Photos \ No newline at end of file From 2ec760c4d183a51dbf88ff0474b3c2e876db51f1 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 10:35:21 +0530 Subject: [PATCH 04/72] Add sidebar for photos features --- docs/.vitepress/config.mts | 63 ++++++++++++++++++++++++----- docs/index.md | 4 +- docs/photos/features/archive.md | 1 + docs/photos/features/collect.md | 0 docs/photos/features/family-plan.md | 0 docs/photos/features/hidden.md | 0 docs/photos/features/live-photos.md | 0 docs/photos/features/location.md | 0 docs/photos/features/map.md | 0 docs/photos/features/public-link.md | 0 docs/photos/features/quick-link.md | 0 docs/photos/features/referral.md | 0 12 files changed, 57 insertions(+), 11 deletions(-) create mode 100644 docs/photos/features/archive.md create mode 100644 docs/photos/features/collect.md create mode 100644 docs/photos/features/family-plan.md create mode 100644 docs/photos/features/hidden.md create mode 100644 docs/photos/features/live-photos.md create mode 100644 docs/photos/features/location.md create mode 100644 docs/photos/features/map.md create mode 100644 docs/photos/features/public-link.md create mode 100644 docs/photos/features/quick-link.md create mode 100644 docs/photos/features/referral.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index b79fb82a66..29267ae466 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -11,18 +11,63 @@ export default defineConfig({ { text: 'Authenticator', link: '/authenticator/index' } ], - sidebar: [ - { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] - } - ], + sidebar: { + '/': sidebarphotos(), + '/photos/': sidebarphotos(), + '/common/': sidebarphotos(), + '/authenticator/': sidebarAuth() + }, + socialLinks: [ { icon: 'github', link: 'https://github.com/ente-io/' } ] } }) + +function sidebarphotos() { + return [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + }, + { + text: 'User Guide', + items: [ + { + text: 'Features', + collapsed: true, + // link: '/photos/features/', + items: [ + { text: 'Archive', link: '/photos/features/archive' }, + { text: 'Hidden', link: '/photos/features/hidden' }, + { text: 'Family Plan', link: '/photos/features/family-plan' }, + { text: 'Map', link: '/photos/features/map' }, + { text: 'Location Tags', link: '/photos/features/location' }, + { text: 'Collect Photos', link: '/photos/features/collect' }, + { text: 'Public link', link: '/photos/features/public-link' }, + { text: 'Quick link', link: '/photos/features/quick-link' }, + { text: 'Referral Plan', link: '/photos/features/referral' }, + { text: 'Live & Motion Photos', link: '/photos/features/live-photos' }, + + ] + }, + ] + }, + ] +} + +function sidebarAuth() { + return [ + { + text: 'Examples', + items: [ + { text: 'Markdown Examples', link: '/markdown-examples' }, + { text: 'Runtime API Examples', link: '/api-examples' } + ] + } + ] +} \ No newline at end of file diff --git a/docs/index.md b/docs/index.md index b3c304a09c..b07c769708 100644 --- a/docs/index.md +++ b/docs/index.md @@ -9,10 +9,10 @@ hero: actions: - theme: brand text: Photos - link: /markdown-examples + link: /photos/ - theme: brand text: Authenticator - link: /api-examples + link: /authenticator/ features: - title: Private diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md new file mode 100644 index 0000000000..6f1aebb64a --- /dev/null +++ b/docs/photos/features/archive.md @@ -0,0 +1 @@ +# Archive \ No newline at end of file diff --git a/docs/photos/features/collect.md b/docs/photos/features/collect.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/family-plan.md b/docs/photos/features/family-plan.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/hidden.md b/docs/photos/features/hidden.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/live-photos.md b/docs/photos/features/live-photos.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/location.md b/docs/photos/features/location.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/map.md b/docs/photos/features/map.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/public-link.md b/docs/photos/features/public-link.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/quick-link.md b/docs/photos/features/quick-link.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/referral.md b/docs/photos/features/referral.md new file mode 100644 index 0000000000..e69de29bb2 From 75b83e8c8afbdfcabca09f42f91b46165d2a3ea0 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 12:21:37 +0530 Subject: [PATCH 05/72] Add more empty pages and index for photos --- docs/index.md | 28 +--------------------------- docs/photos/faq/faq.md | 0 docs/photos/getting-started/index.md | 0 docs/photos/index.md | 28 +++++++++++++++++++++++++++- docs/photos/misc/contributors.md | 0 5 files changed, 28 insertions(+), 28 deletions(-) mode change 100644 => 120000 docs/index.md create mode 100644 docs/photos/faq/faq.md create mode 100644 docs/photos/getting-started/index.md create mode 100644 docs/photos/misc/contributors.md diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index b07c769708..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -# https://vitepress.dev/reference/default-theme-home-page -layout: home - -hero: - name: "Ente Help" - text: "Ente Product Documentation" - tagline: A secure, private world for you and your family - actions: - - theme: brand - text: Photos - link: /photos/ - - theme: brand - text: Authenticator - link: /authenticator/ - -features: - - title: Private - details: End to end encrypted, zero in-app analyatics, only you can access your data - - title: Reliable - details: Audited by Cure53, multiple copies of your data across different service providers - - title: Social - details: Share your subscription with your family, at no extra cost. Share photos with anyone, with complete privacy - - title: Available Everywhere - details: Android, iOS, Windows, Linux, Desktop, & Web. ---- - diff --git a/docs/index.md b/docs/index.md new file mode 120000 index 0000000000..5c1abcf149 --- /dev/null +++ b/docs/index.md @@ -0,0 +1 @@ +docs/photos/index.md \ No newline at end of file diff --git a/docs/photos/faq/faq.md b/docs/photos/faq/faq.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/getting-started/index.md b/docs/photos/getting-started/index.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/index.md b/docs/photos/index.md index e4d5be70bb..0fd1613dd4 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -1 +1,27 @@ -### Ente Photos \ No newline at end of file +# Welcome to Ente Photos Help! + +Welcome to Ente Photos Help! If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great places to begin. If you can’t find an answer to your question, [ask the community](https://ente.io/discord) or email us at **support@ente.io**. + +To send a bug report or a feature suggestion, you can use [Github Issues](https://github.com/ente-io/photos-app/issues). + +You can access our documentation in several ways: + +Feedback about this Ente Photos documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. + +## About Ente Photos + +Ente Photos is safe home for your photos. You can Store, share, and rediscover your memories with absolute privacy. + + +## About Ente Authenticator + +Ente Authenticator is a secure,end-to-end encrypted Authenticator app, with cross device sync. Learn more about [Ente Authenticator](https://ente.io/auth) or check [Authenticator documentation](../authenticator/). + +## Contributing + +This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. + +We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) +before making a Pull Request. + +Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! diff --git a/docs/photos/misc/contributors.md b/docs/photos/misc/contributors.md new file mode 100644 index 0000000000..e69de29bb2 From a93914511fe7aabdfb83224e1195124b9a09b8d2 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 13:03:15 +0530 Subject: [PATCH 06/72] Add symlink photos/index.md -> index.md --- docs/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.md b/docs/index.md index 5c1abcf149..fee7ba2281 120000 --- a/docs/index.md +++ b/docs/index.md @@ -1 +1 @@ -docs/photos/index.md \ No newline at end of file +photos/index.md \ No newline at end of file From e486e55e60ebf5cb62558965f6c1efd49dd41a73 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:08:56 +0530 Subject: [PATCH 07/72] Clean up docs --- docs/.vitepress/config.mts | 34 +++++--- docs/api-examples.md | 49 ----------- docs/authenticator/support/contribute.md | 8 ++ docs/markdown-examples.md | 85 ------------------- .../troubleshooting/files-not-uploading.md | 16 ++++ docs/photos/troubleshooting/report-bug.md | 16 ++++ .../troubleshooting/video-not-playing.md | 8 ++ 7 files changed, 71 insertions(+), 145 deletions(-) delete mode 100644 docs/api-examples.md create mode 100644 docs/authenticator/support/contribute.md delete mode 100644 docs/markdown-examples.md create mode 100644 docs/photos/troubleshooting/files-not-uploading.md create mode 100644 docs/photos/troubleshooting/report-bug.md create mode 100644 docs/photos/troubleshooting/video-not-playing.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 29267ae466..72440d9778 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -2,8 +2,8 @@ import { defineConfig } from 'vitepress' // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente Photos Help", - description: "Ente Product Documentation", + title: "Ente Docs", + description: "Guide for ente.io apps", themeConfig: { // https://vitepress.dev/reference/default-theme-config nav: [ @@ -28,10 +28,14 @@ export default defineConfig({ function sidebarphotos() { return [ { - text: 'Examples', + text: 'Troubleshoot', + collapsed: true, + link: '/photos/troubleshooting/files-not-uploading', items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } + { text: 'Files not uploading', link: '/photos/troubleshooting/files-not-uploading' }, + { text: 'Failed to play video', link: '/photos/troubleshooting/video-not-playing' }, + + { text: 'Report bug', link: '/photos/troubleshooting/report-bug' }, ] }, { @@ -40,7 +44,7 @@ function sidebarphotos() { { text: 'Features', collapsed: true, - // link: '/photos/features/', + link: '/photos/features/archive', items: [ { text: 'Archive', link: '/photos/features/archive' }, { text: 'Hidden', link: '/photos/features/hidden' }, @@ -63,11 +67,19 @@ function sidebarphotos() { function sidebarAuth() { return [ { - text: 'Examples', - items: [ - { text: 'Markdown Examples', link: '/markdown-examples' }, - { text: 'Runtime API Examples', link: '/api-examples' } - ] + text: 'FAQ', + link: '/authenticator/faq/faq', + // items: [ + // { text: 'Contribute', link: '/authenticator/support/contribute' }, + // { text: 'Report bug', link: '/authenticator/contribute/report-bug' }, + // ] + + }, + { + text: 'Contribute', + link: '/authenticator/support/contribute' + + } ] } \ No newline at end of file diff --git a/docs/api-examples.md b/docs/api-examples.md deleted file mode 100644 index 6bd8bb5c17..0000000000 --- a/docs/api-examples.md +++ /dev/null @@ -1,49 +0,0 @@ ---- -outline: deep ---- - -# Runtime API Examples - -This page demonstrates usage of some of the runtime APIs provided by VitePress. - -The main `useData()` API can be used to access site, theme, and page data for the current page. It works in both `.md` and `.vue` files: - -```md - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
-``` - - - -## Results - -### Theme Data -
{{ theme }}
- -### Page Data -
{{ page }}
- -### Page Frontmatter -
{{ frontmatter }}
- -## More - -Check out the documentation for the [full list of runtime APIs](https://vitepress.dev/reference/runtime-api#usedata). diff --git a/docs/authenticator/support/contribute.md b/docs/authenticator/support/contribute.md new file mode 100644 index 0000000000..76412cfca4 --- /dev/null +++ b/docs/authenticator/support/contribute.md @@ -0,0 +1,8 @@ +## Translation + + +## Icons + +## Support Development + +If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) \ No newline at end of file diff --git a/docs/markdown-examples.md b/docs/markdown-examples.md deleted file mode 100644 index 3ea9aa9f2a..0000000000 --- a/docs/markdown-examples.md +++ /dev/null @@ -1,85 +0,0 @@ -# Markdown Extension Examples - -This page demonstrates some of the built-in markdown extensions provided by VitePress. - -## Syntax Highlighting - -VitePress provides Syntax Highlighting powered by [Shikiji](https://github.com/antfu/shikiji), with additional features like line-highlighting: - -**Input** - -````md -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` -```` - -**Output** - -```js{4} -export default { - data () { - return { - msg: 'Highlighted!' - } - } -} -``` - -## Custom Containers - -**Input** - -```md -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: -``` - -**Output** - -::: info -This is an info box. -::: - -::: tip -This is a tip. -::: - -::: warning -This is a warning. -::: - -::: danger -This is a dangerous warning. -::: - -::: details -This is a details block. -::: - -## More - -Check out the documentation for the [full list of markdown extensions](https://vitepress.dev/guide/markdown). diff --git a/docs/photos/troubleshooting/files-not-uploading.md b/docs/photos/troubleshooting/files-not-uploading.md new file mode 100644 index 0000000000..8f7addf4fe --- /dev/null +++ b/docs/photos/troubleshooting/files-not-uploading.md @@ -0,0 +1,16 @@ + +## Network Issue + +If you are using VPN, please try disabling the VPN or switching provider. + + +## Web/Desktop + + +**Certain file types are not uploading** + +The desktop/web app tries to detect if a particular file is video or image. If the detection fails, then the app skips the upload. +Please share either the sample file or logs with us @support.ente.io + + +## Mobile diff --git a/docs/photos/troubleshooting/report-bug.md b/docs/photos/troubleshooting/report-bug.md new file mode 100644 index 0000000000..0f1996ef89 --- /dev/null +++ b/docs/photos/troubleshooting/report-bug.md @@ -0,0 +1,16 @@ +## Report Bug + +Guide to help the user in sharing logs. + + +### Mobile + +Placeholder + +### Desktop + +Placeholder + +### Web + +Placeholder \ No newline at end of file diff --git a/docs/photos/troubleshooting/video-not-playing.md b/docs/photos/troubleshooting/video-not-playing.md new file mode 100644 index 0000000000..08e7a7f39a --- /dev/null +++ b/docs/photos/troubleshooting/video-not-playing.md @@ -0,0 +1,8 @@ +## Video Playback Issue + + +### Web + + + +### Desktop / Mobile \ No newline at end of file From fd2b32158ed20e423528a86ddb4a4ab85e349a7f Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:22:52 +0530 Subject: [PATCH 08/72] More empty sections --- docs/.vitepress/config.mts | 17 ++++++++++++++--- docs/photos/features/trash.md | 1 + docs/photos/features/uncategorized.md | 0 docs/photos/features/watch-folder.md | 0 docs/photos/import/index.md | 1 + 5 files changed, 16 insertions(+), 3 deletions(-) create mode 100644 docs/photos/features/trash.md create mode 100644 docs/photos/features/uncategorized.md create mode 100644 docs/photos/features/watch-folder.md create mode 100644 docs/photos/import/index.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 72440d9778..b5880faafa 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -20,7 +20,7 @@ export default defineConfig({ socialLinks: [ - { icon: 'github', link: 'https://github.com/ente-io/' } + { icon: 'github', link: 'https://github.com/ente-io/docs/' } ] } }) @@ -46,19 +46,30 @@ function sidebarphotos() { collapsed: true, link: '/photos/features/archive', items: [ + { text: 'Family Plan', link: '/photos/features/family-plan' }, { text: 'Archive', link: '/photos/features/archive' }, { text: 'Hidden', link: '/photos/features/hidden' }, - { text: 'Family Plan', link: '/photos/features/family-plan' }, { text: 'Map', link: '/photos/features/map' }, { text: 'Location Tags', link: '/photos/features/location' }, { text: 'Collect Photos', link: '/photos/features/collect' }, { text: 'Public link', link: '/photos/features/public-link' }, { text: 'Quick link', link: '/photos/features/quick-link' }, + { text: 'Watch folder', link: '/photos/features/watch-folder' }, + { text: 'Trash', link: '/photos/features/trash' }, + { text: 'Uncategorized', link: '/photos/features/uncategorized' }, { text: 'Referral Plan', link: '/photos/features/referral' }, { text: 'Live & Motion Photos', link: '/photos/features/live-photos' }, - ] }, + { + text: 'Import', + collapsed: true, + link: '/photos/import/index', + items: [ + { text: 'Watch folder', link: '/photos/features/watch-folder' }, + + ] + }, ] }, ] diff --git a/docs/photos/features/trash.md b/docs/photos/features/trash.md new file mode 100644 index 0000000000..6f1aebb64a --- /dev/null +++ b/docs/photos/features/trash.md @@ -0,0 +1 @@ +# Archive \ No newline at end of file diff --git a/docs/photos/features/uncategorized.md b/docs/photos/features/uncategorized.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/features/watch-folder.md b/docs/photos/features/watch-folder.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/photos/import/index.md b/docs/photos/import/index.md new file mode 100644 index 0000000000..44a35f1572 --- /dev/null +++ b/docs/photos/import/index.md @@ -0,0 +1 @@ +# Import \ No newline at end of file From c6bf8ed6fa7820290b8645a4b386771cc938a7dd Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:37:35 +0530 Subject: [PATCH 09/72] Add edited index for de/authenticator/index --- docs/de/authenticator/index.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 docs/de/authenticator/index.md diff --git a/docs/de/authenticator/index.md b/docs/de/authenticator/index.md new file mode 100644 index 0000000000..873e8bf9f1 --- /dev/null +++ b/docs/de/authenticator/index.md @@ -0,0 +1,22 @@ +# Willkommen beim Ente Authenticator-Benutzerhandbuch! + + +Ente Authenticator ist eine kostenlose, plattformübergreifende, Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. +Wir sind froh, dass du hier bist! + +**Please note that Ente Authenticator Docs are in beta and thus are not yet complete.** We haven't documented all of Ente Authenticator's amazing features yet. But, we will be adding more documentation here over time. + +If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. + + + +Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. + +## Contributing + +This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. + +We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) +before making a Pull Request. + +Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! \ No newline at end of file From 6a8684892a3ba6ede833dc75fe1a6541cd9eb7f0 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:40:30 +0530 Subject: [PATCH 10/72] Add link to edit on Github --- docs/.vitepress/config.mts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index b5880faafa..0d60aaf8f0 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -5,6 +5,9 @@ export default defineConfig({ title: "Ente Docs", description: "Guide for ente.io apps", themeConfig: { + editLink: { + pattern: 'https://github.com/ente-io/docs/edit/main/docs/:path' + }, // https://vitepress.dev/reference/default-theme-config nav: [ { text: 'Photos', link: '/photos/index' }, @@ -18,7 +21,6 @@ export default defineConfig({ '/authenticator/': sidebarAuth() }, - socialLinks: [ { icon: 'github', link: 'https://github.com/ente-io/docs/' } ] From 30cfa3a3ecda24a7c2f5251c24290310ec0b4edd Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:48:37 +0530 Subject: [PATCH 11/72] Clean up --- docs/.vitepress/config.mts | 6 ------ 1 file changed, 6 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 0d60aaf8f0..e2bdd75713 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -20,7 +20,6 @@ export default defineConfig({ '/common/': sidebarphotos(), '/authenticator/': sidebarAuth() }, - socialLinks: [ { icon: 'github', link: 'https://github.com/ente-io/docs/' } ] @@ -36,7 +35,6 @@ function sidebarphotos() { items: [ { text: 'Files not uploading', link: '/photos/troubleshooting/files-not-uploading' }, { text: 'Failed to play video', link: '/photos/troubleshooting/video-not-playing' }, - { text: 'Report bug', link: '/photos/troubleshooting/report-bug' }, ] }, @@ -82,10 +80,6 @@ function sidebarAuth() { { text: 'FAQ', link: '/authenticator/faq/faq', - // items: [ - // { text: 'Contribute', link: '/authenticator/support/contribute' }, - // { text: 'Report bug', link: '/authenticator/contribute/report-bug' }, - // ] }, { From c6dfb182fb39cdfff8a85fbe0e1a6320b137f4c5 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Wed, 29 Nov 2023 14:52:49 +0530 Subject: [PATCH 12/72] Fix build --- docs/de/authenticator/faq/faq.md | 0 docs/de/authenticator/getting-started/quick-start.md | 0 docs/de/authenticator/misc/contributors.md | 0 docs/de/authenticator/support/contribute.md | 8 ++++++++ 4 files changed, 8 insertions(+) create mode 100644 docs/de/authenticator/faq/faq.md create mode 100644 docs/de/authenticator/getting-started/quick-start.md create mode 100644 docs/de/authenticator/misc/contributors.md create mode 100644 docs/de/authenticator/support/contribute.md diff --git a/docs/de/authenticator/faq/faq.md b/docs/de/authenticator/faq/faq.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/de/authenticator/getting-started/quick-start.md b/docs/de/authenticator/getting-started/quick-start.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/de/authenticator/misc/contributors.md b/docs/de/authenticator/misc/contributors.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/de/authenticator/support/contribute.md b/docs/de/authenticator/support/contribute.md new file mode 100644 index 0000000000..76412cfca4 --- /dev/null +++ b/docs/de/authenticator/support/contribute.md @@ -0,0 +1,8 @@ +## Translation + + +## Icons + +## Support Development + +If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) \ No newline at end of file From 8a942bbd8884e126330dec3dcfafede259309d8a Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Wed, 29 Nov 2023 17:55:22 +0530 Subject: [PATCH 13/72] Update archive.md --- docs/photos/features/archive.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md index 6f1aebb64a..253f4ba26b 100644 --- a/docs/photos/features/archive.md +++ b/docs/photos/features/archive.md @@ -1 +1,26 @@ -# Archive \ No newline at end of file +# Archive + +You can hide a photo or album from your **home timeline** by archiving it. Archived photos will be hidden from the memories section on the mobile app. + + +* Any search result will include archived photos. +* All photos within a archived album will be hidden from home timeline, even when some of the photos are also present in a non-archived album. +* You can archive albums that are owned by you or shared with you. + + +### How to archive + + + +### How to view archived photos or album. + + +### Metadata Privacy + +Both Ente and the person with whom you are sharing an album or photo have no information about whether you have +- Archived a photo +- Archived an album +- Archived a shared album. + + + From bc4de8b0f6561755eca9d6e3504e9894beca3d52 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Wed, 29 Nov 2023 18:21:21 +0530 Subject: [PATCH 14/72] Update archive.md --- docs/photos/features/archive.md | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md index 253f4ba26b..1f4a54ac09 100644 --- a/docs/photos/features/archive.md +++ b/docs/photos/features/archive.md @@ -1,14 +1,28 @@ # Archive -You can hide a photo or album from your **home timeline** by archiving it. Archived photos will be hidden from the memories section on the mobile app. +You can remove a photo (owned by you) or an album from your **home timeline** by archiving it. Archived photos won't be included in the memories section on the mobile app. - -* Any search result will include archived photos. -* All photos within a archived album will be hidden from home timeline, even when some of the photos are also present in a non-archived album. +* All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. * You can archive albums that are owned by you or shared with you. +* Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. +### How to +#### Archive Album + * Open the album + * Click on the overflow menu + * Click on Archive album -### How to archive +#### Archive Photo + * Long press to select the photo + * Select Archive option from the bottom menu. + +#### View Archived Photos + + **Mobile** + * Go to Albums tab + * Scroll down to bottom + * Click on Archive button. + From 6014a522c424e46d2c07d187a563c6159fa1e599 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Wed, 29 Nov 2023 18:25:41 +0530 Subject: [PATCH 15/72] Update trash.md --- docs/photos/features/trash.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/photos/features/trash.md b/docs/photos/features/trash.md index 6f1aebb64a..494af3aaf4 100644 --- a/docs/photos/features/trash.md +++ b/docs/photos/features/trash.md @@ -1 +1,5 @@ -# Archive \ No newline at end of file +# Trash + +Whenever you delete an item from ente, it is moved to Trash. These items will be automatically deleted from Trash after 30 days. You can manaully select or completely empty the trash, if you wish. + +Items in trash are included in your used storage calculation. From 1f3567a5dac02c14d5fa75e16cc78b0faeebff30 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Wed, 29 Nov 2023 18:51:25 +0530 Subject: [PATCH 16/72] Update family-plan.md --- docs/photos/features/family-plan.md | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/photos/features/family-plan.md b/docs/photos/features/family-plan.md index e69de29bb2..b986e80308 100644 --- a/docs/photos/features/family-plan.md +++ b/docs/photos/features/family-plan.md @@ -0,0 +1,13 @@ +# Family plans + +Paid subscribers of Ente can share the storage with their family, **at no additional cost** as you have already paid for the storage. + +In breif, + +- Your family members can use storage space from your plan without paying extra. + +- Ask them to sign up for Ente, and then just add them to your existing plan using the "Manage family" option within your Subscription settings. + +- Each member gets their own private space, and cannot see each other's files unless they're shared. + +- You can invite 5 family members. So including yourself, it will be 6 people who can share a single subscription, paying only once. From 0973ebf2ce56e30a7c98eb5e2ecc2b6393134a98 Mon Sep 17 00:00:00 2001 From: NullPointer <126418158+0nullpointer@users.noreply.github.com> Date: Fri, 1 Dec 2023 11:01:15 +0100 Subject: [PATCH 17/72] Cosmetic changes --- docs/photos/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/photos/index.md b/docs/photos/index.md index 0fd1613dd4..2584540b2b 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -10,12 +10,12 @@ Feedback about this Ente Photos documentation can be shared on our [Discord Serv ## About Ente Photos -Ente Photos is safe home for your photos. You can Store, share, and rediscover your memories with absolute privacy. +Ente Photos is safe home for your photos. You can store, share, and rediscover your memories with absolute privacy. ## About Ente Authenticator -Ente Authenticator is a secure,end-to-end encrypted Authenticator app, with cross device sync. Learn more about [Ente Authenticator](https://ente.io/auth) or check [Authenticator documentation](../authenticator/). +Ente Authenticator is a secure, end-to-end encrypted Authenticator app with cross device sync. Learn more about [Ente Authenticator](https://ente.io/auth) or check [Authenticator documentation](../authenticator/). ## Contributing From 1e2418ec9999f3d7a44115bd60579afd1ca6e852 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Sat, 16 Dec 2023 14:03:55 +0530 Subject: [PATCH 18/72] Update routing --- docs/.vitepress/config.mts | 3 +-- docs/photos/features/trash.md | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index e2bdd75713..04ba127294 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -44,9 +44,8 @@ function sidebarphotos() { { text: 'Features', collapsed: true, - link: '/photos/features/archive', items: [ - { text: 'Family Plan', link: '/photos/features/family-plan' }, + { text: 'Family Plan', link: '/photos/features/family-plan' }, { text: 'Archive', link: '/photos/features/archive' }, { text: 'Hidden', link: '/photos/features/hidden' }, { text: 'Map', link: '/photos/features/map' }, diff --git a/docs/photos/features/trash.md b/docs/photos/features/trash.md index 6f1aebb64a..376ee6faac 100644 --- a/docs/photos/features/trash.md +++ b/docs/photos/features/trash.md @@ -1 +1 @@ -# Archive \ No newline at end of file +# Trash \ No newline at end of file From 75bfd2fbaf3a3732b860d69e1afac8f8adb883e3 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta <254676+ua741@users.noreply.github.com> Date: Sat, 16 Dec 2023 15:18:32 +0530 Subject: [PATCH 19/72] Add albums section --- docs/.vitepress/config.mts | 1 + docs/photos/features/albums.md | 7 +++++++ docs/photos/features/uncategorized.md | 14 ++++++++++++++ 3 files changed, 22 insertions(+) create mode 100644 docs/photos/features/albums.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 04ba127294..d35cc3810b 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -46,6 +46,7 @@ function sidebarphotos() { collapsed: true, items: [ { text: 'Family Plan', link: '/photos/features/family-plan' }, + { text: 'Albums', link: '/photos/features/albums' }, { text: 'Archive', link: '/photos/features/archive' }, { text: 'Hidden', link: '/photos/features/hidden' }, { text: 'Map', link: '/photos/features/map' }, diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md new file mode 100644 index 0000000000..1d925f4053 --- /dev/null +++ b/docs/photos/features/albums.md @@ -0,0 +1,7 @@ +# Albums + + +#### Pin Album + + +### Set cover \ No newline at end of file diff --git a/docs/photos/features/uncategorized.md b/docs/photos/features/uncategorized.md index e69de29bb2..76ae89e2c2 100644 --- a/docs/photos/features/uncategorized.md +++ b/docs/photos/features/uncategorized.md @@ -0,0 +1,14 @@ +## Uncategoried + +"Uncategorized" is a special album type where photos are automatically added under the following circumstances: + +- When you remove a photo from the last album, it is relocated to "Uncategorized." +- During album deletion, if you choose to keep photos but delete the album, all photos exclusive to the current album are moved to the "Uncategorized" section. + +Note: This does not include photos uploaded by others. + + + +### Clean up Uncategorized + +In the mobile app, you can click on the overflow menu \ No newline at end of file From 83f1ca10eba984439062140d36463fd6c9265334 Mon Sep 17 00:00:00 2001 From: Vishnu Mohandas Date: Sat, 16 Dec 2023 18:18:47 +0530 Subject: [PATCH 20/72] Update README.md --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 89e9680f5c..8a96205eb6 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,8 @@ -# docs -Documentation for products made by Ente +# Docs +Documentation for products made by [Ente](https://ente.io) + +## Running +``` +npm install +npm run docs:dev +``` From 50a9f292195126861d9bbcae406d113d6c0366b0 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sat, 16 Dec 2023 18:19:31 +0530 Subject: [PATCH 21/72] Minor refactor --- docs/.vitepress/config.mts | 10 +++++----- .../features/{public-link.md => public-links.md} | 0 2 files changed, 5 insertions(+), 5 deletions(-) rename docs/photos/features/{public-link.md => public-links.md} (100%) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index d35cc3810b..4d23463615 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -15,9 +15,9 @@ export default defineConfig({ ], sidebar: { - '/': sidebarphotos(), - '/photos/': sidebarphotos(), - '/common/': sidebarphotos(), + '/': sidebarPhotos(), + '/photos/': sidebarPhotos(), + '/common/': sidebarPhotos(), '/authenticator/': sidebarAuth() }, socialLinks: [ @@ -26,7 +26,7 @@ export default defineConfig({ } }) -function sidebarphotos() { +function sidebarPhotos() { return [ { text: 'Troubleshoot', @@ -52,7 +52,7 @@ function sidebarphotos() { { text: 'Map', link: '/photos/features/map' }, { text: 'Location Tags', link: '/photos/features/location' }, { text: 'Collect Photos', link: '/photos/features/collect' }, - { text: 'Public link', link: '/photos/features/public-link' }, + { text: 'Public links', link: '/photos/features/public-links' }, { text: 'Quick link', link: '/photos/features/quick-link' }, { text: 'Watch folder', link: '/photos/features/watch-folder' }, { text: 'Trash', link: '/photos/features/trash' }, diff --git a/docs/photos/features/public-link.md b/docs/photos/features/public-links.md similarity index 100% rename from docs/photos/features/public-link.md rename to docs/photos/features/public-links.md From b9de8ae0d42ee103a0495a0f3fdb16f415f44c81 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sat, 16 Dec 2023 18:33:48 +0530 Subject: [PATCH 22/72] Update docs --- docs/photos/features/public-links.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/photos/features/public-links.md b/docs/photos/features/public-links.md index e69de29bb2..1c52febb05 100644 --- a/docs/photos/features/public-links.md +++ b/docs/photos/features/public-links.md @@ -0,0 +1,18 @@ +# Public Links + +Ente lets you share your photos via links, that can be accessed by anyone, +without an app or account. + +The contents within these links are also end-to-end encrypted. + +> Implementation details have been +> documented [here](https://ente.io/blog/building-shareable-links/). + +You can also use these links to collect photos from your friends after a party +or event. Everything they add also remains end-to-end encrypted. + +In addition to this, links support the following features: +- Link expiry (so the links go poof after a duration you define) +- Device limits (in case you don't want someone to forwarding your link) +- Password lock (to add an additional level of protection to your photos) +- Prevent downloads (while we can't prevent screenshots, we can disable the option to download your original photos) From d7456517077210f59594e1c2512d80f87337f839 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sat, 16 Dec 2023 18:54:29 +0530 Subject: [PATCH 23/72] Update color --- docs/.vitepress/config.mts | 123 ++++++++++++++++--------------- docs/.vitepress/theme/custom.css | 6 ++ docs/.vitepress/theme/index.js | 4 + 3 files changed, 73 insertions(+), 60 deletions(-) create mode 100644 docs/.vitepress/theme/custom.css create mode 100644 docs/.vitepress/theme/index.js diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 4d23463615..c52ff04b3c 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -1,4 +1,4 @@ -import { defineConfig } from 'vitepress' +import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ @@ -6,87 +6,90 @@ export default defineConfig({ description: "Guide for ente.io apps", themeConfig: { editLink: { - pattern: 'https://github.com/ente-io/docs/edit/main/docs/:path' + pattern: "https://github.com/ente-io/docs/edit/main/docs/:path", }, // https://vitepress.dev/reference/default-theme-config nav: [ - { text: 'Photos', link: '/photos/index' }, - { text: 'Authenticator', link: '/authenticator/index' } + { text: "Photos", link: "/photos/index" }, + { text: "Authenticator", link: "/authenticator/index" }, ], sidebar: { - '/': sidebarPhotos(), - '/photos/': sidebarPhotos(), - '/common/': sidebarPhotos(), - '/authenticator/': sidebarAuth() + "/": sidebarPhotos(), + "/photos/": sidebarPhotos(), + "/common/": sidebarPhotos(), + "/authenticator/": sidebarAuth(), + }, + socialLinks: [{ icon: "github", link: "https://github.com/ente-io/docs/" }], }, - socialLinks: [ - { icon: 'github', link: 'https://github.com/ente-io/docs/' } - ] - } -}) +}); function sidebarPhotos() { return [ { - text: 'Troubleshoot', + text: "Troubleshoot", collapsed: true, - link: '/photos/troubleshooting/files-not-uploading', + link: "/photos/troubleshooting/files-not-uploading", items: [ - { text: 'Files not uploading', link: '/photos/troubleshooting/files-not-uploading' }, - { text: 'Failed to play video', link: '/photos/troubleshooting/video-not-playing' }, - { text: 'Report bug', link: '/photos/troubleshooting/report-bug' }, - ] + { + text: "Files not uploading", + link: "/photos/troubleshooting/files-not-uploading", + }, + { + text: "Failed to play video", + link: "/photos/troubleshooting/video-not-playing", + }, + { text: "Report bug", link: "/photos/troubleshooting/report-bug" }, + ], }, { - text: 'User Guide', + text: "User Guide", items: [ - { - text: 'Features', - collapsed: true, - items: [ - { text: 'Family Plan', link: '/photos/features/family-plan' }, - { text: 'Albums', link: '/photos/features/albums' }, - { text: 'Archive', link: '/photos/features/archive' }, - { text: 'Hidden', link: '/photos/features/hidden' }, - { text: 'Map', link: '/photos/features/map' }, - { text: 'Location Tags', link: '/photos/features/location' }, - { text: 'Collect Photos', link: '/photos/features/collect' }, - { text: 'Public links', link: '/photos/features/public-links' }, - { text: 'Quick link', link: '/photos/features/quick-link' }, - { text: 'Watch folder', link: '/photos/features/watch-folder' }, - { text: 'Trash', link: '/photos/features/trash' }, - { text: 'Uncategorized', link: '/photos/features/uncategorized' }, - { text: 'Referral Plan', link: '/photos/features/referral' }, - { text: 'Live & Motion Photos', link: '/photos/features/live-photos' }, - ] - }, - { - text: 'Import', - collapsed: true, - link: '/photos/import/index', - items: [ - { text: 'Watch folder', link: '/photos/features/watch-folder' }, - - ] + { + text: "Features", + collapsed: true, + items: [ + { text: "Family Plan", link: "/photos/features/family-plan" }, + { text: "Albums", link: "/photos/features/albums" }, + { text: "Archive", link: "/photos/features/archive" }, + { text: "Hidden", link: "/photos/features/hidden" }, + { text: "Map", link: "/photos/features/map" }, + { text: "Location Tags", link: "/photos/features/location" }, + { text: "Collect Photos", link: "/photos/features/collect" }, + { text: "Public links", link: "/photos/features/public-links" }, + { text: "Quick link", link: "/photos/features/quick-link" }, + { text: "Watch folder", link: "/photos/features/watch-folder" }, + { text: "Trash", link: "/photos/features/trash" }, + { text: "Uncategorized", link: "/photos/features/uncategorized" }, + { text: "Referral Plan", link: "/photos/features/referral" }, + { + text: "Live & Motion Photos", + link: "/photos/features/live-photos", + }, + ], }, - ] + { + text: "Import", + collapsed: true, + link: "/photos/import/index", + items: [ + { text: "Watch folder", link: "/photos/features/watch-folder" }, + ], + }, + ], }, - ] + ]; } function sidebarAuth() { return [ { - text: 'FAQ', - link: '/authenticator/faq/faq', - + text: "FAQ", + link: "/authenticator/faq/faq", }, { - text: 'Contribute', - link: '/authenticator/support/contribute' - - - } - ] -} \ No newline at end of file + text: "Contribute", + link: "/authenticator/support/contribute", + }, + ]; +} diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css new file mode 100644 index 0000000000..f63c00c8b5 --- /dev/null +++ b/docs/.vitepress/theme/custom.css @@ -0,0 +1,6 @@ +:root { + --vp-theme-color: #1DB954; + --vp-c-brand-1: #1DB954; + --vp-c-brand-2: #00B33C; + /* Replace with your desired color */ +} \ No newline at end of file diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js new file mode 100644 index 0000000000..42fe9a9361 --- /dev/null +++ b/docs/.vitepress/theme/index.js @@ -0,0 +1,4 @@ +import DefaultTheme from 'vitepress/theme' +import './custom.css' + +export default DefaultTheme From 5e5c00808ad728313c737415b9bb6e13cc7697d6 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sun, 17 Dec 2023 01:25:56 +0530 Subject: [PATCH 24/72] Update brand colors --- docs/.vitepress/theme/custom.css | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index f63c00c8b5..bf82b54e26 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,6 +1,16 @@ :root { --vp-theme-color: #1DB954; + --vp-c-brand: #1DB954; --vp-c-brand-1: #1DB954; --vp-c-brand-2: #00B33C; - /* Replace with your desired color */ -} \ No newline at end of file + --vp-home-hero-name-color: #1DB954; + --vp-c-brand-light: #1DB954; + --vp-button-brand-border: #1DB954; + --vp-button-brand-bg: #1DB954; + --vp-button-brand-text: #191919; + --vp-button-brand-hover-border: #00B33C; + --vp-button-brand-hover-bg: #191919; + --vp-button-brand-hover-text: #e5e5e5; + --vp-local-search-highlight-bg: #1DB954; + --docsearch-hit-active-color: #191919; +} From e962a2678d245d0e42f6f0725d37865b22f29f19 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sun, 17 Dec 2023 01:26:32 +0530 Subject: [PATCH 25/72] Add local search --- docs/.vitepress/config.mts | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index c52ff04b3c..bd41ed4c6a 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -13,7 +13,9 @@ export default defineConfig({ { text: "Photos", link: "/photos/index" }, { text: "Authenticator", link: "/authenticator/index" }, ], - + search: { + provider: 'local', + }, sidebar: { "/": sidebarPhotos(), "/photos/": sidebarPhotos(), From bf0fbdd0caba119080f0502ff124d69d18417e9a Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sun, 17 Dec 2023 01:38:28 +0530 Subject: [PATCH 26/72] Render search results in detailed view --- docs/.vitepress/config.mts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index bd41ed4c6a..7fb7ab21c9 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -14,7 +14,10 @@ export default defineConfig({ { text: "Authenticator", link: "/authenticator/index" }, ], search: { - provider: 'local', + provider: "local", + options: { + detailedView: true, + }, }, sidebar: { "/": sidebarPhotos(), From a1ba3f2015f1562ba185d618cf197ae83e72ab55 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sun, 17 Dec 2023 01:53:48 +0530 Subject: [PATCH 27/72] Add favicon --- docs/.vitepress/config.mts | 36 +++++++++++++++++++++++++++---- docs/public/apple-touch-icon.png | Bin 0 -> 4716 bytes docs/public/favicon-16x16.png | Bin 0 -> 473 bytes docs/public/favicon-32x32.png | Bin 0 -> 863 bytes 4 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 docs/public/apple-touch-icon.png create mode 100644 docs/public/favicon-16x16.png create mode 100644 docs/public/favicon-32x32.png diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 7fb7ab21c9..bdd6616869 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -2,13 +2,41 @@ import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente Docs", - description: "Guide for ente.io apps", + title: "Ente's Docs", + description: "Help guide for apps from Ente", + head: [ + [ + "link", + { + rel: "apple-touch-icon", + sizes: "180x180", + href: "/apple-touch-icon.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "32x32", + href: "/favicon-32x32.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "16x16", + href: "/favicon-16x16.png", + }, + ], + ], themeConfig: { + // https://vitepress.dev/reference/default-theme-config editLink: { pattern: "https://github.com/ente-io/docs/edit/main/docs/:path", }, - // https://vitepress.dev/reference/default-theme-config nav: [ { text: "Photos", link: "/photos/index" }, { text: "Authenticator", link: "/authenticator/index" }, @@ -16,7 +44,7 @@ export default defineConfig({ search: { provider: "local", options: { - detailedView: true, + detailedView: true, }, }, sidebar: { diff --git a/docs/public/apple-touch-icon.png b/docs/public/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..8a84dfb18ae2ecf4287284f61a1dff859561efb4 GIT binary patch literal 4716 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 literal 0 HcmV?d00001 diff --git a/docs/public/favicon-16x16.png b/docs/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..658b5e39a586c382b48aa54ed5bf1d97d723c44c GIT binary patch literal 473 zcmV;~0Ve*5P)z2W!x-h1Es-pB7Twy1Ak1cGP)4A?MZjruBR0xX(@rWVPAJB;z43;OzAVWwHFffV16($j~M%ZCwgJ*td-J_zw7dQo$=Su(WbG9u3jM z&xJH1sdLJ&+2#qy;q&Jko~rrIR(hYmA0BXUdcR)3RqFAC;3h^%zxhGorTvA=&KA(cukpaTLv@dY>`;_CH P00000NkvXXu0mjfdNamu literal 0 HcmV?d00001 diff --git a/docs/public/favicon-32x32.png b/docs/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..9265411708e66fc29415ba2a8855cea1c900e3d6 GIT binary patch literal 863 zcmV-l1EBngP)OG3sd7AvGMT7`|JgmiF9beU2NWk6;gBRU{3l=_oubY{K4z0?1*^X+_1mt0Xl} z(Q%SR*u1rN&BFL@OJ()7@va|-=Z_2eR~6>5M9qolIt3C2~Y2w=tV2Z^~$HK zHWi~Ow+cF?W?4I!To^R}dVWZ74$&2;G8gl-*00^THu8YCv|QfLeQe{6zmRQ#7=i{; z)rr_;*tSYzyiVNx{zT{!^vw?74N1vL_9Wy(uha=%Bbb8R7&A|^lczqNbr@nqD^xr! zN0){{W(=|n7}W-zW+LzY#hhc1OQtqO&_GzWVz=KT7!zCphkuc$afR18-V3=5*}p-y zf&PUNp2ihZ&(D`+tDVNbLNEn$9)?%Z9349vgN;at_^4Q%+FXWEQN&f}wFm{L+_SKx z9ayCq)$urzvJZ1!hOER4ysR&%C#m94mr;uLf(Ddr+6|Y_jStKyq>$_dH}lWpczTgw zoNG7=iiTDZ&5K)X^hv`F|{@DGCfChn1#SsuPi;OBrLs6}z5N p1gO9XA|xX`%mi56v6l9<`~i!{`D>`HBZvS1002ovPDHLkV1obZf+hd} literal 0 HcmV?d00001 From 49c79e2f572ae0f183806968c0bc69d9d2bedd08 Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sun, 17 Dec 2023 02:06:59 +0530 Subject: [PATCH 28/72] Update home page --- docs/.vitepress/config.mts | 2 +- docs/photos/index.md | 41 +++++++++++++++++++++++--------------- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index bdd6616869..0e13baa9ec 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -76,7 +76,7 @@ function sidebarPhotos() { ], }, { - text: "User Guide", + text: "Welcome", items: [ { text: "Features", diff --git a/docs/photos/index.md b/docs/photos/index.md index 2584540b2b..f5953ff79e 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -1,27 +1,36 @@ -# Welcome to Ente Photos Help! +# Welcome to Help! -Welcome to Ente Photos Help! If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great places to begin. If you can’t find an answer to your question, [ask the community](https://ente.io/discord) or email us at **support@ente.io**. +If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) is a +great place to begin. -To send a bug report or a feature suggestion, you can use [Github Issues](https://github.com/ente-io/photos-app/issues). +If you can’t find an answer to your question, please ask in [our +community](https://ente.io/discord) or email us at **support@ente.io**. -You can access our documentation in several ways: - -Feedback about this Ente Photos documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. - -## About Ente Photos - -Ente Photos is safe home for your photos. You can store, share, and rediscover your memories with absolute privacy. +To share a bug report or feature suggestion, you can use [Github +Issues](https://github.com/ente-io/photos-app/issues). -## About Ente Authenticator +## About -Ente Authenticator is a secure, end-to-end encrypted Authenticator app with cross device sync. Learn more about [Ente Authenticator](https://ente.io/auth) or check [Authenticator documentation](../authenticator/). +### Photos + +Ente Photos is safe home for your photos and videos. We provide open-source apps +that can be used to store, share, and rediscover your memories with absolute +privacy. + +### Authenticator + +Ente Authenticator is an open-source 2FA app that provides end-to-end encrypted +backups for your 2FA secrets. You can access your codes on Android, iOS and web. ## Contributing -This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. +This documentation is open source at our [Ente +Docs](https://github.com/ente-io/docs) repo. -We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) -before making a Pull Request. +We gladly welcome any fixes & improvements! Please see our [contribution +guide](https://github.com/ente-io/docs#contributing) before making a Pull +Request. -Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! +Once your contributions are accepted, make sure to add yourself to the list of +[Contributors](./misc/contributors.md). Thank you! From 7ef61e12cf023965a969218c2cbf0a04c4946315 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Sun, 17 Dec 2023 18:46:18 +0530 Subject: [PATCH 29/72] Update quick-link.md --- docs/photos/features/quick-link.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/photos/features/quick-link.md b/docs/photos/features/quick-link.md index e69de29bb2..09fbc2f180 100644 --- a/docs/photos/features/quick-link.md +++ b/docs/photos/features/quick-link.md @@ -0,0 +1,10 @@ +# Quick Links + +Quick links allows you to select single or multiple photos & create a link. Behind the scene, ente creates a special album and put all the selected files in that special album. + +* You can view all quick links created by you in the sharing tab, under Quick links section. +* Quick links can be converted to regular album. +* Remove link will not delete the photos that are present in that link. +* Similar to [public-links](./public-links.md), you can set link expirty, set passwords or device limits. + + From d10900eacbcdbf673be20cabcb5bda8876b3a2e3 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Sun, 17 Dec 2023 14:37:33 +0100 Subject: [PATCH 30/72] Typo --- docs/photos/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/photos/index.md b/docs/photos/index.md index 2584540b2b..4243896a22 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -10,8 +10,7 @@ Feedback about this Ente Photos documentation can be shared on our [Discord Serv ## About Ente Photos -Ente Photos is safe home for your photos. You can store, share, and rediscover your memories with absolute privacy. - +Ente Photos is the safe home for your photos. You can store, share, and rediscover your memories with absolute privacy. ## About Ente Authenticator From 6d1e4daa917bbb5e160137b546711f1ac29cd160 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Sun, 17 Dec 2023 14:37:41 +0100 Subject: [PATCH 31/72] Fill hidden --- docs/photos/features/hidden.md | 51 ++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/docs/photos/features/hidden.md b/docs/photos/features/hidden.md index e69de29bb2..055556e468 100644 --- a/docs/photos/features/hidden.md +++ b/docs/photos/features/hidden.md @@ -0,0 +1,51 @@ +# Hidden + +You can further protect extra sensitive photos or albums by hiding them. Hidden photos or albums will **only be viewable** after an extra layer of authentication inside the app. Hidden differs from [Archive](./archive.md) in the fact that hidden photos won't be surfaced anywhere in the app without explicit authentication, whereas Archive only removes them from the home timeline and memories sections. + +- Hidden photos and albums will be removed from home timelines, memories, albums tab, search results, and any other visable place in the app. +- Hidden photos will be removed from all regular albums. If you want to unhide again you will have to specify the album to move it to. +- You cannot hide photos or albums shared with you. You can archive shared albums instead. + +### How to + +#### Hide album + +- Open the album +- Click on the overflow menu +- Click on Hide album + +#### Hide photo + +- Select the photo +- Click on Hide option from the select menu + +#### View hidden photos and albums + +_Mobile_: + +- Go to Albums tab +- Scroll down to bottom +- Click on Hidden button +- Authenticate in app + +_Desktop_: + +- Click on the topleft hamburger menu +- Click on Hidden +- Authenticate in app + +#### Unhide album + +- Open the hidden album +- Click on the overflow menu +- Click on Unhide album + +#### Unhide photo + +- Select the hidden photo +- Click on Unhide option from the select menu +- Click on the album the photo should be restored to + +### Metadata Privacy + +Ente has no information about whether you have hidden a photo or album. From 2f7380df86792d883c464f9465893ab33703d759 Mon Sep 17 00:00:00 2001 From: laurenspriem Date: Sun, 17 Dec 2023 14:38:16 +0100 Subject: [PATCH 32/72] Add desktop view for archive --- docs/photos/features/archive.md | 45 +++++++++++++++++---------------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md index 1f4a54ac09..849e136e00 100644 --- a/docs/photos/features/archive.md +++ b/docs/photos/features/archive.md @@ -1,40 +1,41 @@ # Archive -You can remove a photo (owned by you) or an album from your **home timeline** by archiving it. Archived photos won't be included in the memories section on the mobile app. +You can remove a photo (owned by you) or an album from your **home timeline** by archiving it. Archived photos won't be included in the memories section on the mobile app. -* All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. -* You can archive albums that are owned by you or shared with you. -* Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. +- All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. +- You can archive albums that are owned by you or shared with you. +- Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. + +### How to -### How to #### Archive Album - * Open the album - * Click on the overflow menu - * Click on Archive album + +- Open the album +- Click on the overflow menu +- Click on Archive album #### Archive Photo - * Long press to select the photo - * Select Archive option from the bottom menu. - -#### View Archived Photos - - **Mobile** - * Go to Albums tab - * Scroll down to bottom - * Click on Archive button. - +- Long press to select the photo +- Select Archive option from the bottom menu. +#### View Archived Photos and Albums -### How to view archived photos or album. +**Mobile** +- Go to Albums tab +- Scroll down to bottom +- Click on Archive button. + +**Desktop** + +- Click on the topleft hamburger menu +- Click on Archive ### Metadata Privacy Both Ente and the person with whom you are sharing an album or photo have no information about whether you have + - Archived a photo - Archived an album - Archived a shared album. - - - From 30dc4810da73c4e18ee766bca2fdec1e178a0446 Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 08:28:50 +0530 Subject: [PATCH 33/72] Update albums.md --- docs/photos/features/albums.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md index 1d925f4053..e59b905638 100644 --- a/docs/photos/features/albums.md +++ b/docs/photos/features/albums.md @@ -1,7 +1,7 @@ # Albums - +This guide #### Pin Album -### Set cover \ No newline at end of file +### Set cover From eb3d7cb7558fadd73c96c6e8ca07e94eede96a84 Mon Sep 17 00:00:00 2001 From: Neeraj Gupta Date: Mon, 18 Dec 2023 09:34:06 +0530 Subject: [PATCH 34/72] Update uncategorized.md --- docs/photos/features/uncategorized.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/photos/features/uncategorized.md b/docs/photos/features/uncategorized.md index 76ae89e2c2..7a9d79b725 100644 --- a/docs/photos/features/uncategorized.md +++ b/docs/photos/features/uncategorized.md @@ -11,4 +11,4 @@ Note: This does not include photos uploaded by others. ### Clean up Uncategorized -In the mobile app, you can click on the overflow menu \ No newline at end of file +In the mobile app, you can click on the overflow menu and click `Clean Uncategorized` option. All files that are also present in another album, that is owned by the user, will be removed from the Uncategorized section. From 0223b7bc96c316ab61265b0ebc2c6f4e2749882d Mon Sep 17 00:00:00 2001 From: Ashil <77285023+ashilkn@users.noreply.github.com> Date: Mon, 18 Dec 2023 09:53:43 +0530 Subject: [PATCH 35/72] Update location tags help --- docs/photos/features/location.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/photos/features/location.md b/docs/photos/features/location.md index e69de29bb2..88193d1843 100644 --- a/docs/photos/features/location.md +++ b/docs/photos/features/location.md @@ -0,0 +1,25 @@ +# Location Tags: Search and Organize Your Photos + +## Overview: +The Location Tags feature allows you to efficiently search and organize your photos based on their geographical location. Instead of sending your queries to our servers, we've implemented a privacy-friendly solution that runs searches locally on your device. + +## How to Use Location Tags: + +### Method 1: Adding Location Tags from a Photo +1. Open a photo. +2. Click on "Info." +3. Select "Add Location." +4. Enter the location name and define a radius. + +### Method 2: Adding Location Tags from the Search Tab +1. Go to the search tab. +2. Click on "Add new" at the end of the location tags section. +3. Select a photo as the center point for the location tag. +4. Enter the location name and define a radius. + +## Note: +- The app will automatically cluster photos falling within a radius under a specified location. +- Location Tags provide a seamless way to filter photos without compromising your privacy. +- Location tags are stored end-to-end encrypted, ensuring the security of your data. +- Enjoy a more organized photo library by tagging important places like home, office, and vacation spots. + From aa36eb346f56727f3b528350354a54154ac1987e Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:07:50 +0530 Subject: [PATCH 36/72] Update albums.md All features on album done. 1. Rename album 2. Set cover 3. Map 4. Sort by 5. Pin album 6. Archive album --- docs/photos/features/albums.md | 56 +++++++++++++++++++++++++++++++--- 1 file changed, 52 insertions(+), 4 deletions(-) diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md index e59b905638..cde50f6649 100644 --- a/docs/photos/features/albums.md +++ b/docs/photos/features/albums.md @@ -1,7 +1,55 @@ # Albums -This guide - -#### Pin Album +This guide will show you how to make the most of your albums with simple yet effective features. +Below are the features that allow you to personailze your albums according to your preferences: +## 1. Rename album +Personalize your albums by giving them a meaningful name + ### How to Rename an album on your mobile? + - Open the album + - Tap the three dots button in the top right corner of the screen + - Tap rename album, then type in a new name + - Tap on Rename button +### How to Rename an album on your Desktop? +- Open the album +- Click on the overflow menu in the top right corner +- Click the Rename album +- Type in a new name +- Click on Rename or Press enter +## 2. Set cover +Select any photo you want to use as the cover for your album. +### How to set an album cover on mobile? +- Open the album you want to change +- Tap the three dots button in the top right corner +- From the menu options, select Set cover +- A new screen will appear, propmpting you to select the cover photo +- Browse through your photos and tap on the image you want to set as the album cover +- Then tap on Use selected photo + ## 3. Map +Explore the memories based on their location +### How to explore the album's photo in map view? +- Open the album +- Tap on the three dots button in the top right corner +- Select map +- View all photos of the album in map view +## 4. Sort by +Maintain order in your albums by arranging them from the newest to the oldest +### How to sort by on mobile? +- Open the album +- Tap on the three dots button in the top right corner +- Select sort by +- Tap on the Newst first for the latest, Or Oldest first for the oldest +### How to sort by on desktop? +- Open the album +- Click on the three dots button in the top right corner +- Click sort by +- Click on the Newest first for the latest, Or oldest first for the oldest +## 5. Pin album +Keep your favorite album at the top by pinning them for quick access. +### How to Pin/Unpin an album on Mobile? +- Open the album +- Tap on the three dots button in the top right corner +- Tap on Pin album/Unpin album + + + -### Set cover From 44ee6b3ff38c24fb03f8c59b3ac6810c2b576d3c Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 11:07:10 +0530 Subject: [PATCH 37/72] Update collect.md Collect photos --- docs/photos/features/collect.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/docs/photos/features/collect.md b/docs/photos/features/collect.md index e69de29bb2..fd4b64fb6e 100644 --- a/docs/photos/features/collect.md +++ b/docs/photos/features/collect.md @@ -0,0 +1,18 @@ +# Collect photos: Collecting memories from events is now a breeze! +- Whether it's a birthday party, vacation trip or wedding, easily share your album using a unique, secure, end-to-end encrypted link. +- Introduce the 'collect photos' feature to your friends and family who can contribute without an ente account. +- This allows them to effortlessly add, view, and download photos from the link without an ente account. +- Also preserves metadata and photo quality +## How to Collect photos on mobile? +- Open the album you want to share with +- Tap on the Share album icon in the top right corner of the screen +- Select 'Collect photos' +- Tap 'Copy link' +- The link has been copied to your clipboard. Now, feel free to share it +## How to Collect photos on Web/Desktop? +To collect photos on the web/desktop: +- Open the album +- Click on the share album icon +- Select Collect photos +- Click on Copy link +- The link has been copied to your clipboard. Share it effortlessly with others! From 71ced5e9fc201ad9d8509e176be8cc15cf91a88e Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 12:22:39 +0530 Subject: [PATCH 38/72] Update albums.md --- docs/photos/features/albums.md | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md index cde50f6649..19f2e3f75e 100644 --- a/docs/photos/features/albums.md +++ b/docs/photos/features/albums.md @@ -1,8 +1,8 @@ # Albums This guide will show you how to make the most of your albums with simple yet effective features. Below are the features that allow you to personailze your albums according to your preferences: -## 1. Rename album -Personalize your albums by giving them a meaningful name +## 1. Rename album: Personalize your albums by giving them a meaningful name + ### How to Rename an album on your mobile? - Open the album - Tap the three dots button in the top right corner of the screen @@ -14,8 +14,8 @@ Personalize your albums by giving them a meaningful name - Click the Rename album - Type in a new name - Click on Rename or Press enter -## 2. Set cover -Select any photo you want to use as the cover for your album. +## 2. Set cover: Select any photo you want to use as the cover for your album. + ### How to set an album cover on mobile? - Open the album you want to change - Tap the three dots button in the top right corner @@ -23,15 +23,15 @@ Select any photo you want to use as the cover for your album. - A new screen will appear, propmpting you to select the cover photo - Browse through your photos and tap on the image you want to set as the album cover - Then tap on Use selected photo - ## 3. Map -Explore the memories based on their location + ## 3. Map: Explore the memories based on their location + ### How to explore the album's photo in map view? - Open the album - Tap on the three dots button in the top right corner - Select map - View all photos of the album in map view -## 4. Sort by -Maintain order in your albums by arranging them from the newest to the oldest +## 4. Sort by: Maintain order in your albums by arranging them from the newest to the oldest + ### How to sort by on mobile? - Open the album - Tap on the three dots button in the top right corner @@ -42,8 +42,8 @@ Maintain order in your albums by arranging them from the newest to the oldest - Click on the three dots button in the top right corner - Click sort by - Click on the Newest first for the latest, Or oldest first for the oldest -## 5. Pin album -Keep your favorite album at the top by pinning them for quick access. +## 5. Pin album: Keep your favorite album at the top by pinning them for quick access. + ### How to Pin/Unpin an album on Mobile? - Open the album - Tap on the three dots button in the top right corner From a01d4cb34ac0cb6649a207600cadf7e84aba7b2f Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 14:15:07 +0530 Subject: [PATCH 39/72] Update referral.md --- docs/photos/features/referral.md | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/docs/photos/features/referral.md b/docs/photos/features/referral.md index e69de29bb2..fa4616fca7 100644 --- a/docs/photos/features/referral.md +++ b/docs/photos/features/referral.md @@ -0,0 +1,28 @@ +# Referral plan: Earn and Expand Your Storage + +## Overview: +Did you know you can boost your storage on Ente simply by referring your friends? Our referral program lets you earn 10 GB of free storage for each friend who upgrades to a paid plan, and your referred friends receive an additional 10 GB with their subscription. + +## How to Refer a friend? + On the Home Page: +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Tap on 'General' +- Select Referrals +- Share the code with your friend or family + + Note: +- Once your friend upgrades to a paid plan, both you and your friend receive an additional 10 GB of storage +- Keep track of your earned storage and referral details on Claim free storage screen +- If you refer more friends than your plan allows, the extra storage earned will be reserved until you upgrade your plan +- Earned storage remains accessible as long as your subscription is active + +## How to apply Refferal code of a friend? + On the Home Page: +- Click on the hamburger menu inthe top left corner +- Tap on 'General' from the options +- Select 'Referrals' from the menu +- Find and tap on 'Apply Code.' +- Enter the referral code provided by your friend. + +Note: Please note that referral codes should be applied within one month of account creation to claim free storage. From 9a23bbeb1d6141c629ea1c5061c94f964c1040aa Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Mon, 18 Dec 2023 15:34:00 +0530 Subject: [PATCH 40/72] Update watch-folder.md --- docs/photos/features/watch-folder.md | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/docs/photos/features/watch-folder.md b/docs/photos/features/watch-folder.md index e69de29bb2..efe78934a4 100644 --- a/docs/photos/features/watch-folder.md +++ b/docs/photos/features/watch-folder.md @@ -0,0 +1,23 @@ +# Watched Folders: Effortless Syncing + +## Overview: + +The ente desktop app now allows you to "watch" a folder on your computer for any changes, creating a one-way sync from your device to the Ente cloud. This will make photo management and backup a breeze. + +## How to add Watch folders? +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Choose "Add Watch Folders" +- Pick the folder from your system that you want to add as Watch folder + +## How to remove Watch folders? +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Click on the three dots menu next to the folders on the right side +- Choose "Stop Watching" from the menu + +# Note: +- Option to choose whether to sync nested folders to a single album or separate albums. +- The app continuously monitors changes in the watched folder, such as the addition or removal of files From 55b93d3394837d1a35dd5c05d34847a9f4af980a Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Wed, 20 Dec 2023 00:07:06 +0530 Subject: [PATCH 41/72] Setup the About section --- docs/.vitepress/config.mts | 26 ++++++++++++++++++++++++++ docs/about/community.md | 0 docs/about/company.md | 0 docs/about/contribute.md | 0 docs/about/open-source.md | 0 docs/about/plans.md | 0 docs/about/products.md | 0 docs/about/support.md | 0 8 files changed, 26 insertions(+) create mode 100644 docs/about/community.md create mode 100644 docs/about/company.md create mode 100644 docs/about/contribute.md create mode 100644 docs/about/open-source.md create mode 100644 docs/about/plans.md create mode 100644 docs/about/products.md create mode 100644 docs/about/support.md diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 0e13baa9ec..6e5cae34a6 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -78,6 +78,20 @@ function sidebarPhotos() { { text: "Welcome", items: [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Plans", link: "/about/plans" }, + { text: "Support", link: "/about/support" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, { text: "Features", collapsed: true, @@ -116,6 +130,18 @@ function sidebarPhotos() { function sidebarAuth() { return [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, { text: "FAQ", link: "/authenticator/faq/faq", diff --git a/docs/about/community.md b/docs/about/community.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/company.md b/docs/about/company.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/contribute.md b/docs/about/contribute.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/open-source.md b/docs/about/open-source.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/plans.md b/docs/about/plans.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/products.md b/docs/about/products.md new file mode 100644 index 0000000000..e69de29bb2 diff --git a/docs/about/support.md b/docs/about/support.md new file mode 100644 index 0000000000..e69de29bb2 From c3450df500fb0690d2cea63acba1c6cd1a5edc21 Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Wed, 20 Dec 2023 02:46:31 +0530 Subject: [PATCH 42/72] Update map.md --- docs/photos/features/map.md | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/photos/features/map.md b/docs/photos/features/map.md index e69de29bb2..c622eb4b75 100644 --- a/docs/photos/features/map.md +++ b/docs/photos/features/map.md @@ -0,0 +1,25 @@ +# Map : View and explore your photos on the map + +## How can I view photos on the map on mobile? +- Step 1. Find the search icon located at the bottom right corner of your screen. +- Step 2. Tap on the globe icon (Your map) withing the location +- Step 3. Enter the map view and start exploring your photos from around the world. + +## How to enable map on your mobile app? +- Step 1. Tap the three horizontal lines located at the top left corner of your home screen or swipe left on the home screen. +- Step 2. Select "General" settings. +- Step 3. Enter the "Advanced" settings. +- Step 4. Use the toggle switch to turn the map feature on or off + +## How to view Album photos on the map? +- Step 1. Open the album containing the photos you want to view +- Step 2. Tap on the three horizontal lines located in the top right corner of the screen. +- Step 3. Select "Map" from the options. +- Step 4. View and explore your photos on the map. + +## How to enable map on desktop? +- Step 1. Click on the three horizontal lines located in the top left corner of the app. +- Step 2. Navigate to "preferences" from the menu. +- Step 3. Select "Advanced" in the preference menu. +- Step 4. Click on "Map" to access map settings. +- Step 5. Toggle the map settings on and off based on your preferences. From e21eee859561c4c0a1b84ca0d5b7c0e1cd58196e Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Wed, 20 Dec 2023 04:25:07 +0530 Subject: [PATCH 43/72] Update company.md --- docs/about/company.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/about/company.md b/docs/about/company.md index e69de29bb2..2b693e429e 100644 --- a/docs/about/company.md +++ b/docs/about/company.md @@ -0,0 +1,9 @@ +# About +On February 1, 2020, Ente was born out of the necessity for a secure archival solution for personal photos and videos. Founded by Vishnu Mohandas in response to privacy concerns with major tech companies, Ente provides end-to-end encrypted apps across platforms. + +The team at Ente aims to contribute to making the world a safer place for the preservation of personal memories. The road ahead is long, but the journey has started, fueled by a commitment to privacy and a deep sense of responsibility towards the users we serve. + +In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon + +# What does Ente mean? +"Ente" holds dual significance for us. In Malayalam, the native language of our founder, it translates to "mine," giving "ente Photos" the direct meaning of "my photos." Additionally, our founder discovered that "ente" means "duck" in German. This unexpected connection led to the adoption of the duck as our mascot and we lovingly refer to our mascot as "Ducky," From 7b5b5fc13d4e2a987d9116d203811f759a840627 Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Wed, 20 Dec 2023 05:28:10 +0530 Subject: [PATCH 44/72] Update products.md --- docs/about/products.md | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/docs/about/products.md b/docs/about/products.md index e69de29bb2..d5509bd33c 100644 --- a/docs/about/products.md +++ b/docs/about/products.md @@ -0,0 +1,33 @@ +# Ente products + +In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon + +# Ente photos +Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and the safety of your cherished memories. All your photos, along with their metadata, are stored end-to-end encrypted, ensuring that only you have access to your data. + +To fortify the security of your memories, Ente preserves your encrypted photos across three different clouds in three separate locations, including an underground fallout shelter. This multi-layered backup strategy guarantees the utmost safety for your data. + +Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. + +Ente Photos is not just a storage solution; it's a commitment to safeguarding your memories. + +# Ente auth + + Ente auth is not just an authenticator app; it's an open-source initiative dedicated to securing your 2FA secrets. Now, you can backup and view your two-factor authentication secrets seamlessly. + find more information about the project on GitHub at github.com/ente-io/auth. + +As a token of gratitude to the community that has supported us, Ente Auth is offered as a free service. In the spirit of transparency, If in the future we convert this to a paid service, existing users will be grandfathered in. + +Ente auth is available on Android, iOS, and the web + +# Ente lockers (coming soon) +Ente Lockers is more than just a file storage solution; it's a purpose-driven platform designed to redefine how you manage crucial documents in your life. With a straightforward interface, it ensures easy access to files that matter the most—those frequently needed and intended for future generations. + +Stay tuned for our upcoming product end-to-end encryption file storage app, currently under construction! + + + + + + + From e63b2e7a2d41f23668e502146142f8f1404a8f9c Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Wed, 20 Dec 2023 13:18:07 +0530 Subject: [PATCH 45/72] Update plans.md --- docs/about/plans.md | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/docs/about/plans.md b/docs/about/plans.md index e69de29bb2..ec35cf15b6 100644 --- a/docs/about/plans.md +++ b/docs/about/plans.md @@ -0,0 +1,30 @@ +# Ente plans : Tailored for Every User +At ente, we understand that each user is unique, and so are their storage needs. Our range of plans is designed to cater to a diverse to diverse users, ensuring everyone finds the perfect fit for their requirements. + + +## Basic plan +- Monthly plan ₹49 +- Yearly plan ₹499 +- Storage: 10 GB +- Ideal for casual users with limited storage needs. + +## Standard plan +- Monthly plan ₹299 +- Yearly plan ₹2999 +- Storage: 100 Gb +- Perfect for enthusiasts who capture and store more photos. + +## Popular plan +- Monthly plan ₹799 +- Yearly plan ₹7999 +- Storage: 500Gb +- Tailored for most users, Offering a balanced mix of storage and value. + +- ## Pro plan +- Monthly plan ₹1799 +- Yearly plan ₹17999 +- Storage: 2000GB +- Crafted for professionals, heavy users and content creators. + + +#### Select the plan aligns with your needs, whether you're an occasional snapper or a content maestro. From 218221cd963fe824cd7f986e8bca8e5ca7169d65 Mon Sep 17 00:00:00 2001 From: Jishnuraj9 <118880285+Jishnuraj9@users.noreply.github.com> Date: Wed, 20 Dec 2023 16:40:10 +0530 Subject: [PATCH 46/72] Update support.md --- docs/about/support.md | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/docs/about/support.md b/docs/about/support.md index e69de29bb2..5bed7327f0 100644 --- a/docs/about/support.md +++ b/docs/about/support.md @@ -0,0 +1,35 @@ +# Connect with Ente + + + +## Customer support +Connect with our support team for swift assistance and expert guidance email us @support@ente.io. +Reach out to our dev team @team@ente.io, even our CEO and CTO personally responds here. + +## Blog +As Ente continues to evolve, So does our story. Follow our blog @ https://ente.io/blog As Ente undergoes continuous growth and development, our narrative unfolds. Explore our blog for exclusive company updates that offer an insider's perspective. +Regularly visit the Ente blog to maintain your connection, stay well informed, and draw insipration. + +## Roadmap +You plays a pivotal role in shaping the future direction of Ente's product, and we invite you to be an integral part of it. + +Take a look at our roadmap to see where we're headed https://roadmap.ente.io/roadmap/ + + +# Community +#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content + +#### Discord +Join our Discord for real-time discussions, solutions to queries, and a thriving camaraderie. Stay updated on all things on Ente! + + +🐦 Twitter: https://twitter.com/enteio + +🔗 Reddit: https://www.reddit.com/r/enteio + +📸 Instagram: https://www.instagram.com/ente.app/ + +🐘 Mastodon: https://mstdn.social/@ente + +🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ + From ed1217b932cf0ee4528d66e0ab0f1acaaed0ff81 Mon Sep 17 00:00:00 2001 From: httpjamesm Date: Fri, 22 Dec 2023 20:11:02 -0500 Subject: [PATCH 47/72] cast help article --- docs/photos/features/cast.md | 23 +++++++++++++++++++++ docs/public/cast/tv-pairing-screen.webp | Bin 0 -> 54930 bytes docs/public/cast/web-pairing-options.webp | Bin 0 -> 51850 bytes docs/public/cast/web-play-album-on-tv.webp | Bin 0 -> 13772 bytes 4 files changed, 23 insertions(+) create mode 100644 docs/photos/features/cast.md create mode 100644 docs/public/cast/tv-pairing-screen.webp create mode 100644 docs/public/cast/web-pairing-options.webp create mode 100644 docs/public/cast/web-play-album-on-tv.webp diff --git a/docs/photos/features/cast.md b/docs/photos/features/cast.md new file mode 100644 index 0000000000..04d439d17d --- /dev/null +++ b/docs/photos/features/cast.md @@ -0,0 +1,23 @@ +# Cast + +With ente Cast, you can play a slideshow of your favourite albums on your Google Chromecast TVs or other Internet-connected large screen devices. + +## Get Started + +1. Open ente on the web or on your mobile device. +2. Select the album you want to play on your large screen device. +3. Click "Play album on TV" in the album menu. + +On the web, you can find this menu in the balls menu on the right hand side. ![Balls menu](../../public/cast/web-play-album-on-tv.webp) + +4. Choose how you want to pair your device with your large screen device. ![Pairing options](../../public/cast/web-pairing-options.webp) + +On Chromium browsers, you will see a button labeled "Auto Pair". This option will prompt you to select a Chromecast supported device on your local network. Note: this option requires connecting to Google servers to load necessary dependencies. This option does not transmit any sensitive data through Google servers, such as your photos. Once your Chromecast device is connected, you're all set. + +On all browsers, you'll see the option to "Pair with PIN". This option works with all devices, Chromecast-enabled or not. You'll be required to load up [cast.ente.io](https://cast.ente.io) on your large screen device. + +5. Enter the PIN displayed on your large screen device into the input field on your mobile or web device. + +On your large screen device, you'll see the following screen. ![Pairing screen](../../public/cast/tv-pairing-screen.webp) + +6. If you entered your PIN correctly, you'll see a screen on your TV with a green checkmark confirming the connection. diff --git a/docs/public/cast/tv-pairing-screen.webp b/docs/public/cast/tv-pairing-screen.webp new file mode 100644 index 0000000000000000000000000000000000000000..201fc088bbd48425eebabdb6a6c770ba5f0c7759 GIT binary patch literal 54930 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 BMD+jw literal 0 HcmV?d00001 diff --git a/docs/public/cast/web-pairing-options.webp b/docs/public/cast/web-pairing-options.webp new file mode 100644 index 0000000000000000000000000000000000000000..586b887bcc3e6a3d0e96afb1034bf6c1fac2db43 GIT binary patch literal 51850 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 literal 0 HcmV?d00001 diff --git a/docs/public/cast/web-play-album-on-tv.webp b/docs/public/cast/web-play-album-on-tv.webp new file mode 100644 index 0000000000000000000000000000000000000000..26c9191cd335f9bee6de7e3df17f2f44b24bae18 GIT binary patch literal 13772 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 literal 0 HcmV?d00001 From 2ecab325426c6ec7403193b9df535dc5f81f841f Mon Sep 17 00:00:00 2001 From: httpjamesm Date: Fri, 22 Dec 2023 20:13:23 -0500 Subject: [PATCH 48/72] feat: assets public folder --- docs/photos/features/cast.md | 6 +++--- .../public/{ => assets}/cast/tv-pairing-screen.webp | Bin .../{ => assets}/cast/web-pairing-options.webp | Bin .../{ => assets}/cast/web-play-album-on-tv.webp | Bin 4 files changed, 3 insertions(+), 3 deletions(-) rename docs/public/{ => assets}/cast/tv-pairing-screen.webp (100%) rename docs/public/{ => assets}/cast/web-pairing-options.webp (100%) rename docs/public/{ => assets}/cast/web-play-album-on-tv.webp (100%) diff --git a/docs/photos/features/cast.md b/docs/photos/features/cast.md index 04d439d17d..2191e81009 100644 --- a/docs/photos/features/cast.md +++ b/docs/photos/features/cast.md @@ -8,9 +8,9 @@ With ente Cast, you can play a slideshow of your favourite albums on your Google 2. Select the album you want to play on your large screen device. 3. Click "Play album on TV" in the album menu. -On the web, you can find this menu in the balls menu on the right hand side. ![Balls menu](../../public/cast/web-play-album-on-tv.webp) +On the web, you can find this menu in the balls menu on the right hand side. ![Balls menu](/assets/cast/web-play-album-on-tv.webp) -4. Choose how you want to pair your device with your large screen device. ![Pairing options](../../public/cast/web-pairing-options.webp) +1. Choose how you want to pair your device with your large screen device. ![Pairing options](/assets/cast/web-pairing-options.webp) On Chromium browsers, you will see a button labeled "Auto Pair". This option will prompt you to select a Chromecast supported device on your local network. Note: this option requires connecting to Google servers to load necessary dependencies. This option does not transmit any sensitive data through Google servers, such as your photos. Once your Chromecast device is connected, you're all set. @@ -18,6 +18,6 @@ On all browsers, you'll see the option to "Pair with PIN". This option works wit 5. Enter the PIN displayed on your large screen device into the input field on your mobile or web device. -On your large screen device, you'll see the following screen. ![Pairing screen](../../public/cast/tv-pairing-screen.webp) +On your large screen device, you'll see the following screen. ![Pairing screen](/assets/cast/tv-pairing-screen.webp) 6. If you entered your PIN correctly, you'll see a screen on your TV with a green checkmark confirming the connection. diff --git a/docs/public/cast/tv-pairing-screen.webp b/docs/public/assets/cast/tv-pairing-screen.webp similarity index 100% rename from docs/public/cast/tv-pairing-screen.webp rename to docs/public/assets/cast/tv-pairing-screen.webp diff --git a/docs/public/cast/web-pairing-options.webp b/docs/public/assets/cast/web-pairing-options.webp similarity index 100% rename from docs/public/cast/web-pairing-options.webp rename to docs/public/assets/cast/web-pairing-options.webp diff --git a/docs/public/cast/web-play-album-on-tv.webp b/docs/public/assets/cast/web-play-album-on-tv.webp similarity index 100% rename from docs/public/cast/web-play-album-on-tv.webp rename to docs/public/assets/cast/web-play-album-on-tv.webp From fb8b8c36cad33c7ec16cd5b6da4c044c5ff3bfd9 Mon Sep 17 00:00:00 2001 From: httpjamesm Date: Fri, 22 Dec 2023 20:14:28 -0500 Subject: [PATCH 49/72] feat: cast sidebar link --- docs/.vitepress/config.mts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index 6e5cae34a6..a71bc8159d 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -113,6 +113,7 @@ function sidebarPhotos() { text: "Live & Motion Photos", link: "/photos/features/live-photos", }, + { text: "Cast", link: "/photos/features/cast" }, ], }, { @@ -141,7 +142,7 @@ function sidebarAuth() { { text: "Open source", link: "/about/open-source" }, { text: "Contribute", link: "/about/contribute" }, ], - }, + }, { text: "FAQ", link: "/authenticator/faq/faq", From a81fa9c5e39883d62e2c2c1ab42ef79b8d4930cd Mon Sep 17 00:00:00 2001 From: httpjamesm Date: Fri, 22 Dec 2023 20:15:52 -0500 Subject: [PATCH 50/72] fix: #4 --- docs/photos/features/cast.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/photos/features/cast.md b/docs/photos/features/cast.md index 2191e81009..98f8e738c9 100644 --- a/docs/photos/features/cast.md +++ b/docs/photos/features/cast.md @@ -10,7 +10,7 @@ With ente Cast, you can play a slideshow of your favourite albums on your Google On the web, you can find this menu in the balls menu on the right hand side. ![Balls menu](/assets/cast/web-play-album-on-tv.webp) -1. Choose how you want to pair your device with your large screen device. ![Pairing options](/assets/cast/web-pairing-options.webp) +4. Choose how you want to pair your device with your large screen device. ![Pairing options](/assets/cast/web-pairing-options.webp) On Chromium browsers, you will see a button labeled "Auto Pair". This option will prompt you to select a Chromecast supported device on your local network. Note: this option requires connecting to Google servers to load necessary dependencies. This option does not transmit any sensitive data through Google servers, such as your photos. Once your Chromecast device is connected, you're all set. From 813b99db71ad603c55a01043f53b0a6054414f69 Mon Sep 17 00:00:00 2001 From: Vishnu Mohandas Date: Fri, 12 Jan 2024 23:54:56 +0530 Subject: [PATCH 51/72] Update index.md --- docs/photos/index.md | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/docs/photos/index.md b/docs/photos/index.md index 5a0075a041..096112f7f9 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -1,29 +1,32 @@ # Welcome to Help! -Welcome to Ente Photos Help! If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great places to begin. If you can’t find an answer to your question, [ask the community](https://ente.io/discord) or email us at **support@ente.io**. +Welcome to Ente Photos Help! If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great places to begin. + +If you can’t find an answer, please [ask the community](https://ente.io/discord) or write to **support@ente.io**. To send a bug report or a feature suggestion, you can use [Github Issues](https://github.com/ente-io/photos-app/issues). -You can access our documentation in several ways: - -Feedback about this Ente Photos documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. +Feedback about this documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#docs** channel. We would love to hear your thoughts on anything we can fix or improve. ## About Ente Photos -Ente Photos is the safe home for your photos. You can store, share, and rediscover your memories with absolute privacy. +[Ente Photos](https://ente.io) is a safe home for your photos and videos. -## About Ente Authenticator +You can store, share, and re-discover your moments with absolute privacy. -Ente Authenticator is a secure, end-to-end encrypted Authenticator app with cross device sync. Learn more about [Ente Authenticator](https://ente.io/auth) or check [Authenticator documentation](../authenticator/). +## About Ente Auth + +[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with multi-platform sync. + +Learn more about Auth [here](../authenticator/). ## Contributing -This documentation is open source at our [Ente -Docs](https://github.com/ente-io/docs) repo. +The source for this documentation is available at [github.com/ente-io/docs](https://github.com/ente-io/docs). -We gladly welcome any fixes & improvements! Please see our [contribution -guide](https://github.com/ente-io/docs#contributing) before making a Pull -Request. +Please see our [contribution guide](https://github.com/ente-io/docs#contributing). We'd be grateful for any fixes and improvements! -Once your contributions are accepted, make sure to add yourself to the list of -[Contributors](./misc/contributors.md). Thank you! +Once your contributions are accepted, please add yourself to the list of +[Contributors](./misc/contributors.md). + +Thank you! From ee150cd9366035ccfed7d2fb12bed6a1f43c0fef Mon Sep 17 00:00:00 2001 From: vishnukvmd Date: Sat, 13 Jan 2024 00:32:42 +0530 Subject: [PATCH 52/72] Update sidebar --- docs/.vitepress/config.mts | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index a71bc8159d..b80f68a751 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -59,22 +59,6 @@ export default defineConfig({ function sidebarPhotos() { return [ - { - text: "Troubleshoot", - collapsed: true, - link: "/photos/troubleshooting/files-not-uploading", - items: [ - { - text: "Files not uploading", - link: "/photos/troubleshooting/files-not-uploading", - }, - { - text: "Failed to play video", - link: "/photos/troubleshooting/video-not-playing", - }, - { text: "Report bug", link: "/photos/troubleshooting/report-bug" }, - ], - }, { text: "Welcome", items: [ @@ -117,11 +101,19 @@ function sidebarPhotos() { ], }, { - text: "Import", + text: "Troubleshoot", collapsed: true, - link: "/photos/import/index", + link: "/photos/troubleshooting/files-not-uploading", items: [ - { text: "Watch folder", link: "/photos/features/watch-folder" }, + { + text: "Files not uploading", + link: "/photos/troubleshooting/files-not-uploading", + }, + { + text: "Failed to play video", + link: "/photos/troubleshooting/video-not-playing", + }, + { text: "Report bug", link: "/photos/troubleshooting/report-bug" }, ], }, ], From aa06f10668152954e9f00f569e94ff9358d795cd Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:31:08 +0530 Subject: [PATCH 53/72] Switch to yarn (classic) to match the rest of our JS code --- README.md | 15 +- package-lock.json | 2011 --------------------------------------------- package.json | 16 +- yarn.lock | 756 +++++++++++++++++ 4 files changed, 776 insertions(+), 2022 deletions(-) delete mode 100644 package-lock.json create mode 100644 yarn.lock diff --git a/README.md b/README.md index 8a96205eb6..f3743708a3 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,17 @@ # Docs -Documentation for products made by [Ente](https://ente.io) + +Help and documentation for Ente's products ## Running + +Install dependencies + +```sh +yarn install ``` -npm install -npm run docs:dev + +Then start a local server + +```sh +yarn dev ``` diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 5a36591552..0000000000 --- a/package-lock.json +++ /dev/null @@ -1,2011 +0,0 @@ -{ - "name": "docs", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "devDependencies": { - "vitepress": "^1.0.0-rc.31" - } - }, - "node_modules/@algolia/autocomplete-core": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz", - "integrity": "sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-plugin-algolia-insights": "1.9.3", - "@algolia/autocomplete-shared": "1.9.3" - } - }, - "node_modules/@algolia/autocomplete-plugin-algolia-insights": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz", - "integrity": "sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "search-insights": ">= 1 < 3" - } - }, - "node_modules/@algolia/autocomplete-preset-algolia": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz", - "integrity": "sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-shared": "1.9.3" - }, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/autocomplete-shared": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz", - "integrity": "sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ==", - "dev": true, - "peerDependencies": { - "@algolia/client-search": ">= 4.9.1 < 6", - "algoliasearch": ">= 4.9.1 < 6" - } - }, - "node_modules/@algolia/cache-browser-local-storage": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.20.0.tgz", - "integrity": "sha512-uujahcBt4DxduBTvYdwO3sBfHuJvJokiC3BP1+O70fglmE1ShkH8lpXqZBac1rrU3FnNYSUs4pL9lBdTKeRPOQ==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.20.0" - } - }, - "node_modules/@algolia/cache-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-common/-/cache-common-4.20.0.tgz", - "integrity": "sha512-vCfxauaZutL3NImzB2G9LjLt36vKAckc6DhMp05An14kVo8F1Yofb6SIl6U3SaEz8pG2QOB9ptwM5c+zGevwIQ==", - "dev": true - }, - "node_modules/@algolia/cache-in-memory": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/cache-in-memory/-/cache-in-memory-4.20.0.tgz", - "integrity": "sha512-Wm9ak/IaacAZXS4mB3+qF/KCoVSBV6aLgIGFEtQtJwjv64g4ePMapORGmCyulCFwfePaRAtcaTbMcJF+voc/bg==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.20.0" - } - }, - "node_modules/@algolia/client-account": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-account/-/client-account-4.20.0.tgz", - "integrity": "sha512-GGToLQvrwo7am4zVkZTnKa72pheQeez/16sURDWm7Seyz+HUxKi3BM6fthVVPUEBhtJ0reyVtuK9ArmnaKl10Q==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/@algolia/client-analytics": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-analytics/-/client-analytics-4.20.0.tgz", - "integrity": "sha512-EIr+PdFMOallRdBTHHdKI3CstslgLORQG7844Mq84ib5oVFRVASuuPmG4bXBgiDbcsMLUeOC6zRVJhv1KWI0ug==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/@algolia/client-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-common/-/client-common-4.20.0.tgz", - "integrity": "sha512-P3WgMdEss915p+knMMSd/fwiHRHKvDu4DYRrCRaBrsfFw7EQHon+EbRSm4QisS9NYdxbS04kcvNoavVGthyfqQ==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/@algolia/client-personalization": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-personalization/-/client-personalization-4.20.0.tgz", - "integrity": "sha512-N9+zx0tWOQsLc3K4PVRDV8GUeOLAY0i445En79Pr3zWB+m67V+n/8w4Kw1C5LlbHDDJcyhMMIlqezh6BEk7xAQ==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/@algolia/client-search": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/client-search/-/client-search-4.20.0.tgz", - "integrity": "sha512-zgwqnMvhWLdpzKTpd3sGmMlr4c+iS7eyyLGiaO51zDZWGMkpgoNVmltkzdBwxOVXz0RsFMznIxB9zuarUv4TZg==", - "dev": true, - "dependencies": { - "@algolia/client-common": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/@algolia/logger-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-common/-/logger-common-4.20.0.tgz", - "integrity": "sha512-xouigCMB5WJYEwvoWW5XDv7Z9f0A8VoXJc3VKwlHJw/je+3p2RcDXfksLI4G4lIVncFUYMZx30tP/rsdlvvzHQ==", - "dev": true - }, - "node_modules/@algolia/logger-console": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/logger-console/-/logger-console-4.20.0.tgz", - "integrity": "sha512-THlIGG1g/FS63z0StQqDhT6bprUczBI8wnLT3JWvfAQDZX5P6fCg7dG+pIrUBpDIHGszgkqYEqECaKKsdNKOUA==", - "dev": true, - "dependencies": { - "@algolia/logger-common": "4.20.0" - } - }, - "node_modules/@algolia/requester-browser-xhr": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.20.0.tgz", - "integrity": "sha512-HbzoSjcjuUmYOkcHECkVTwAelmvTlgs48N6Owt4FnTOQdwn0b8pdht9eMgishvk8+F8bal354nhx/xOoTfwiAw==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.20.0" - } - }, - "node_modules/@algolia/requester-common": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-common/-/requester-common-4.20.0.tgz", - "integrity": "sha512-9h6ye6RY/BkfmeJp7Z8gyyeMrmmWsMOCRBXQDs4mZKKsyVlfIVICpcSibbeYcuUdurLhIlrOUkH3rQEgZzonng==", - "dev": true - }, - "node_modules/@algolia/requester-node-http": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/requester-node-http/-/requester-node-http-4.20.0.tgz", - "integrity": "sha512-ocJ66L60ABSSTRFnCHIEZpNHv6qTxsBwJEPfYaSBsLQodm0F9ptvalFkHMpvj5DfE22oZrcrLbOYM2bdPJRHng==", - "dev": true, - "dependencies": { - "@algolia/requester-common": "4.20.0" - } - }, - "node_modules/@algolia/transporter": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/@algolia/transporter/-/transporter-4.20.0.tgz", - "integrity": "sha512-Lsii1pGWOAISbzeyuf+r/GPhvHMPHSPrTDWNcIzOE1SG1inlJHICaVe2ikuoRjcpgxZNU54Jl+if15SUCsaTUg==", - "dev": true, - "dependencies": { - "@algolia/cache-common": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/requester-common": "4.20.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.23.4", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.4.tgz", - "integrity": "sha512-vf3Xna6UEprW+7t6EtOmFpHNAuxw3xqPZghy+brsnusscJRW5BMUzzHZc5ICjULee81WeUV2jjakG09MDglJXQ==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@docsearch/css": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/css/-/css-3.5.2.tgz", - "integrity": "sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA==", - "dev": true - }, - "node_modules/@docsearch/js": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/js/-/js-3.5.2.tgz", - "integrity": "sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg==", - "dev": true, - "dependencies": { - "@docsearch/react": "3.5.2", - "preact": "^10.0.0" - } - }, - "node_modules/@docsearch/react": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@docsearch/react/-/react-3.5.2.tgz", - "integrity": "sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng==", - "dev": true, - "dependencies": { - "@algolia/autocomplete-core": "1.9.3", - "@algolia/autocomplete-preset-algolia": "1.9.3", - "@docsearch/css": "3.5.2", - "algoliasearch": "^4.19.1" - }, - "peerDependencies": { - "@types/react": ">= 16.8.0 < 19.0.0", - "react": ">= 16.8.0 < 19.0.0", - "react-dom": ">= 16.8.0 < 19.0.0", - "search-insights": ">= 1 < 3" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - }, - "search-insights": { - "optional": true - } - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz", - "integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz", - "integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz", - "integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz", - "integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz", - "integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz", - "integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz", - "integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz", - "integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz", - "integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz", - "integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz", - "integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==", - "cpu": [ - "loong64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz", - "integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==", - "cpu": [ - "mips64el" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz", - "integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz", - "integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz", - "integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz", - "integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz", - "integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz", - "integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz", - "integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz", - "integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz", - "integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz", - "integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.6.0.tgz", - "integrity": "sha512-keHkkWAe7OtdALGoutLY3utvthkGF+Y17ws9LYT8pxMBYXaCoH/8dXS2uzo6e8+sEhY7y/zi5RFo22Dy2lFpDw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.6.0.tgz", - "integrity": "sha512-y3Kt+34smKQNWilicPbBz/MXEY7QwDzMFNgwEWeYiOhUt9MTWKjHqe3EVkXwT2fR7izOvHpDWZ0o2IyD9SWX7A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.6.0.tgz", - "integrity": "sha512-oLzzxcUIHltHxOCmaXl+pkIlU+uhSxef5HfntW7RsLh1eHm+vJzjD9Oo4oUKso4YuP4PpbFJNlZjJuOrxo8dPg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.6.0.tgz", - "integrity": "sha512-+ANnmjkcOBaV25n0+M0Bere3roeVAnwlKW65qagtuAfIxXF9YxUneRyAn/RDcIdRa7QrjRNJL3jR7T43ObGe8Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.6.0.tgz", - "integrity": "sha512-tBTSIkjSVUyrekddpkAqKOosnj1Fc0ZY0rJL2bIEWPKqlEQk0paORL9pUIlt7lcGJi3LzMIlUGXvtNi1Z6MOCQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.6.0.tgz", - "integrity": "sha512-Ed8uJI3kM11de9S0j67wAV07JUNhbAqIrDYhQBrQW42jGopgheyk/cdcshgGO4fW5Wjq97COCY/BHogdGvKVNQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.6.0.tgz", - "integrity": "sha512-mZoNQ/qK4D7SSY8v6kEsAAyDgznzLLuSFCA3aBHZTmf3HP/dW4tNLTtWh9+LfyO0Z1aUn+ecpT7IQ3WtIg3ViQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.6.0.tgz", - "integrity": "sha512-rouezFHpwCqdEXsqAfNsTgSWO0FoZ5hKv5p+TGO5KFhyN/dvYXNMqMolOb8BkyKcPqjYRBeT+Z6V3aM26rPaYg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.6.0.tgz", - "integrity": "sha512-Bbm+fyn3S6u51urfj3YnqBXg5vI2jQPncRRELaucmhBVyZkbWClQ1fEsRmdnCPpQOQfkpg9gZArvtMVkOMsh1w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.6.0.tgz", - "integrity": "sha512-+MRMcyx9L2kTrTUzYmR61+XVsliMG4odFb5UmqtiT8xOfEicfYAGEuF/D1Pww1+uZkYhBqAHpvju7VN+GnC3ng==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.6.0.tgz", - "integrity": "sha512-rxfeE6K6s/Xl2HGeK6cO8SiQq3k/3BYpw7cfhW5Bk2euXNEpuzi2cc7llxx1si1QgwfjNtdRNTGqdBzGlFZGFw==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.6.0.tgz", - "integrity": "sha512-QqmCsydHS172Y0Kc13bkMXvipbJSvzeglBncJG3LsYJSiPlxYACz7MmJBs4A8l1oU+jfhYEIC/+AUSlvjmiX/g==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/hast": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.3.tgz", - "integrity": "sha512-2fYGlaDy/qyLlhidX42wAH0KBi2TCjKMH8CHmBXgRlJ3Y+OXTiqsPQ6IWarZKwF1JoUcAJdPogv1d4b0COTpmQ==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/linkify-it": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.5.tgz", - "integrity": "sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw==", - "dev": true - }, - "node_modules/@types/markdown-it": { - "version": "13.0.7", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-13.0.7.tgz", - "integrity": "sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA==", - "dev": true, - "dependencies": { - "@types/linkify-it": "*", - "@types/mdurl": "*" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.3.tgz", - "integrity": "sha512-LsjtqsyF+d2/yFOYaN22dHZI1Cpwkrj+g06G8+qtUKlhovPW89YhqSnfKtMbkgmEtYpH2gydRNULd6y8mciAFg==", - "dev": true, - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdurl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.5.tgz", - "integrity": "sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA==", - "dev": true - }, - "node_modules/@types/unist": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.2.tgz", - "integrity": "sha512-dqId9J8K/vGi5Zr7oo212BGii5m3q5Hxlkwy3WpYuKPklmBEvsbMYYyLxAQpSffdLl/gdW0XUpKWFvYmyoWCoQ==", - "dev": true - }, - "node_modules/@types/web-bluetooth": { - "version": "0.0.20", - "resolved": "https://registry.npmjs.org/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz", - "integrity": "sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow==", - "dev": true - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "dev": true - }, - "node_modules/@vitejs/plugin-vue": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.5.0.tgz", - "integrity": "sha512-a2WSpP8X8HTEww/U00bU4mX1QpLINNuz/2KMNpLsdu3BzOpak3AGI1CJYBTXcc4SPhaD0eNRUp7IyQK405L5dQ==", - "dev": true, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "peerDependencies": { - "vite": "^4.0.0 || ^5.0.0", - "vue": "^3.2.25" - } - }, - "node_modules/@vue/compiler-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.3.9.tgz", - "integrity": "sha512-+/Lf68Vr/nFBA6ol4xOtJrW+BQWv3QWKfRwGSm70jtXwfhZNF4R/eRgyVJYoxFRhdCTk/F6g99BP0ffPgZihfQ==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.3.9.tgz", - "integrity": "sha512-nfWubTtLXuT4iBeDSZ5J3m218MjOy42Vp2pmKVuBKo2/BLcrFUX8nCSr/bKRFiJ32R8qbdnnnBgRn9AdU5v0Sg==", - "dev": true, - "dependencies": { - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "node_modules/@vue/compiler-sfc": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.3.9.tgz", - "integrity": "sha512-wy0CNc8z4ihoDzjASCOCsQuzW0A/HP27+0MDSSICMjVIFzk/rFViezkR3dzH+miS2NDEz8ywMdbjO5ylhOLI2A==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-ssr": "3.3.9", - "@vue/reactivity-transform": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5", - "postcss": "^8.4.31", - "source-map-js": "^1.0.2" - } - }, - "node_modules/@vue/compiler-ssr": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.3.9.tgz", - "integrity": "sha512-NO5oobAw78R0G4SODY5A502MGnDNiDjf6qvhn7zD7TJGc8XDeIEw4fg6JU705jZ/YhuokBKz0A5a/FL/XZU73g==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "node_modules/@vue/devtools-api": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.5.1.tgz", - "integrity": "sha512-+KpckaAQyfbvshdDW5xQylLni1asvNSGme1JFs8I1+/H5pHEhqUKMEQD/qn3Nx5+/nycBq11qAEi8lk+LXI2dA==", - "dev": true - }, - "node_modules/@vue/reactivity": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.3.9.tgz", - "integrity": "sha512-VmpIqlNp+aYDg2X0xQhJqHx9YguOmz2UxuUJDckBdQCNkipJvfk9yA75woLWElCa0Jtyec3lAAt49GO0izsphw==", - "dev": true, - "dependencies": { - "@vue/shared": "3.3.9" - } - }, - "node_modules/@vue/reactivity-transform": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.3.9.tgz", - "integrity": "sha512-HnUFm7Ry6dFa4Lp63DAxTixUp8opMtQr6RxQCpDI1vlh12rkGIeYqMvJtK+IKyEfEOa2I9oCkD1mmsPdaGpdVg==", - "dev": true, - "dependencies": { - "@babel/parser": "^7.23.3", - "@vue/compiler-core": "3.3.9", - "@vue/shared": "3.3.9", - "estree-walker": "^2.0.2", - "magic-string": "^0.30.5" - } - }, - "node_modules/@vue/runtime-core": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.3.9.tgz", - "integrity": "sha512-xxaG9KvPm3GTRuM4ZyU8Tc+pMVzcu6eeoSRQJ9IE7NmCcClW6z4B3Ij6L4EDl80sxe/arTtQ6YmgiO4UZqRc+w==", - "dev": true, - "dependencies": { - "@vue/reactivity": "3.3.9", - "@vue/shared": "3.3.9" - } - }, - "node_modules/@vue/runtime-dom": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.3.9.tgz", - "integrity": "sha512-e7LIfcxYSWbV6BK1wQv9qJyxprC75EvSqF/kQKe6bdZEDNValzeRXEVgiX7AHI6hZ59HA4h7WT5CGvm69vzJTQ==", - "dev": true, - "dependencies": { - "@vue/runtime-core": "3.3.9", - "@vue/shared": "3.3.9", - "csstype": "^3.1.2" - } - }, - "node_modules/@vue/server-renderer": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.3.9.tgz", - "integrity": "sha512-w0zT/s5l3Oa3ZjtLW88eO4uV6AQFqU8X5GOgzq7SkQQu6vVr+8tfm+OI2kDBplS/W/XgCBuFXiPw6T5EdwXP0A==", - "dev": true, - "dependencies": { - "@vue/compiler-ssr": "3.3.9", - "@vue/shared": "3.3.9" - }, - "peerDependencies": { - "vue": "3.3.9" - } - }, - "node_modules/@vue/shared": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.3.9.tgz", - "integrity": "sha512-ZE0VTIR0LmYgeyhurPTpy4KzKsuDyQbMSdM49eKkMnT5X4VfFBLysMzjIZhLEFQYjjOVVfbvUDHckwjDFiO2eA==", - "dev": true - }, - "node_modules/@vueuse/core": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/@vueuse/core/-/core-10.6.1.tgz", - "integrity": "sha512-Pc26IJbqgC9VG1u6VY/xrXXfxD33hnvxBnKrLlA2LJlyHII+BSrRoTPJgGYq7qZOu61itITFUnm6QbacwZ4H8Q==", - "dev": true, - "dependencies": { - "@types/web-bluetooth": "^0.0.20", - "@vueuse/metadata": "10.6.1", - "@vueuse/shared": "10.6.1", - "vue-demi": ">=0.14.6" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/core/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/integrations": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/@vueuse/integrations/-/integrations-10.6.1.tgz", - "integrity": "sha512-mPDupuofMJ4DPmtX/FfP1MajmWRzYDv8WSaTCo8LQ5kFznjWgmUQ16ApjYqgMquqffNY6+IRMdMgosLDRZOSZA==", - "dev": true, - "dependencies": { - "@vueuse/core": "10.6.1", - "@vueuse/shared": "10.6.1", - "vue-demi": ">=0.14.6" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "async-validator": "*", - "axios": "*", - "change-case": "*", - "drauu": "*", - "focus-trap": "*", - "fuse.js": "*", - "idb-keyval": "*", - "jwt-decode": "*", - "nprogress": "*", - "qrcode": "*", - "sortablejs": "*", - "universal-cookie": "*" - }, - "peerDependenciesMeta": { - "async-validator": { - "optional": true - }, - "axios": { - "optional": true - }, - "change-case": { - "optional": true - }, - "drauu": { - "optional": true - }, - "focus-trap": { - "optional": true - }, - "fuse.js": { - "optional": true - }, - "idb-keyval": { - "optional": true - }, - "jwt-decode": { - "optional": true - }, - "nprogress": { - "optional": true - }, - "qrcode": { - "optional": true - }, - "sortablejs": { - "optional": true - }, - "universal-cookie": { - "optional": true - } - } - }, - "node_modules/@vueuse/integrations/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/@vueuse/metadata": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/@vueuse/metadata/-/metadata-10.6.1.tgz", - "integrity": "sha512-qhdwPI65Bgcj23e5lpGfQsxcy0bMjCAsUGoXkJ7DsoeDUdasbZ2DBa4dinFCOER3lF4gwUv+UD2AlA11zdzMFw==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared": { - "version": "10.6.1", - "resolved": "https://registry.npmjs.org/@vueuse/shared/-/shared-10.6.1.tgz", - "integrity": "sha512-TECVDTIedFlL0NUfHWncf3zF9Gc4VfdxfQc8JFwoVZQmxpONhLxFrlm0eHQeidHj4rdTPL3KXJa0TZCk1wnc5Q==", - "dev": true, - "dependencies": { - "vue-demi": ">=0.14.6" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@vueuse/shared/node_modules/vue-demi": { - "version": "0.14.6", - "resolved": "https://registry.npmjs.org/vue-demi/-/vue-demi-0.14.6.tgz", - "integrity": "sha512-8QA7wrYSHKaYgUxDA5ZC24w+eHm3sYCbp0EzcDwKqN3p6HqtTCGR/GVsPyZW92unff4UlcSh++lmqDWN3ZIq4w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "vue-demi-fix": "bin/vue-demi-fix.js", - "vue-demi-switch": "bin/vue-demi-switch.js" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - }, - "peerDependencies": { - "@vue/composition-api": "^1.0.0-rc.1", - "vue": "^3.0.0-0 || ^2.6.0" - }, - "peerDependenciesMeta": { - "@vue/composition-api": { - "optional": true - } - } - }, - "node_modules/algoliasearch": { - "version": "4.20.0", - "resolved": "https://registry.npmjs.org/algoliasearch/-/algoliasearch-4.20.0.tgz", - "integrity": "sha512-y+UHEjnOItoNy0bYO+WWmLWBlPwDjKHW6mNHrPi0NkuhpQOOEbrkwQH/wgKFDLh7qlKjzoKeiRtlpewDPDG23g==", - "dev": true, - "dependencies": { - "@algolia/cache-browser-local-storage": "4.20.0", - "@algolia/cache-common": "4.20.0", - "@algolia/cache-in-memory": "4.20.0", - "@algolia/client-account": "4.20.0", - "@algolia/client-analytics": "4.20.0", - "@algolia/client-common": "4.20.0", - "@algolia/client-personalization": "4.20.0", - "@algolia/client-search": "4.20.0", - "@algolia/logger-common": "4.20.0", - "@algolia/logger-console": "4.20.0", - "@algolia/requester-browser-xhr": "4.20.0", - "@algolia/requester-common": "4.20.0", - "@algolia/requester-node-http": "4.20.0", - "@algolia/transporter": "4.20.0" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/csstype": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz", - "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==", - "dev": true - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dev": true, - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "dev": true, - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/esbuild": { - "version": "0.19.8", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz", - "integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==", - "dev": true, - "hasInstallScript": true, - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.19.8", - "@esbuild/android-arm64": "0.19.8", - "@esbuild/android-x64": "0.19.8", - "@esbuild/darwin-arm64": "0.19.8", - "@esbuild/darwin-x64": "0.19.8", - "@esbuild/freebsd-arm64": "0.19.8", - "@esbuild/freebsd-x64": "0.19.8", - "@esbuild/linux-arm": "0.19.8", - "@esbuild/linux-arm64": "0.19.8", - "@esbuild/linux-ia32": "0.19.8", - "@esbuild/linux-loong64": "0.19.8", - "@esbuild/linux-mips64el": "0.19.8", - "@esbuild/linux-ppc64": "0.19.8", - "@esbuild/linux-riscv64": "0.19.8", - "@esbuild/linux-s390x": "0.19.8", - "@esbuild/linux-x64": "0.19.8", - "@esbuild/netbsd-x64": "0.19.8", - "@esbuild/openbsd-x64": "0.19.8", - "@esbuild/sunos-x64": "0.19.8", - "@esbuild/win32-arm64": "0.19.8", - "@esbuild/win32-ia32": "0.19.8", - "@esbuild/win32-x64": "0.19.8" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/focus-trap": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", - "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", - "dev": true, - "dependencies": { - "tabbable": "^6.2.0" - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.1.tgz", - "integrity": "sha512-Er/Iixbc7IEa7r/XLtuG52zoqn/b3Xng/w6aZQ0xGVxzhw5xUFxcRqdPzP6yFi/4HBYRaifaI5fQ1RH8n0ZeOQ==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^8.0.0", - "property-information": "^6.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.0.1.tgz", - "integrity": "sha512-5m1gmba658Q+lO5uqL5YNGQWeh1MYWZbZmWrM5lncdcuiXuo5E2HT/CIOp0rLF8ksfSwiCVJ3twlgVRyTGThGA==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "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==", - "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", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hastscript": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-8.0.0.tgz", - "integrity": "sha512-dMOtzCEd3ABUeSIISmrETiKuyydk1w0pa+gE/uormcTpSYuaNJPbX1NU3JLyscSLjwAQM8bWMhhIlnCqnRvDTw==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/magic-string": { - "version": "0.30.5", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", - "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/mark.js": { - "version": "8.11.1", - "resolved": "https://registry.npmjs.org/mark.js/-/mark.js-8.11.1.tgz", - "integrity": "sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ==", - "dev": true - }, - "node_modules/mdast-util-to-hast": { - "version": "13.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.0.2.tgz", - "integrity": "sha512-U5I+500EOOw9e3ZrclN3Is3fRpw8c19SMyNZlZ2IS+7vLsNzb2Om11VpIVOR+/0137GhZsFEF6YiKD5+0Hr2Og==", - "dev": true, - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-util-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.0.1.tgz", - "integrity": "sha512-3wgnrmEAJ4T+mGXAUfMvMAbxU9RDG43XmGce4j6CwPtVxB3vfwXSZ6KhFwDzZ3mZHhmPimMAXg71veiBGzeAZw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.0.tgz", - "integrity": "sha512-pS+ROfCXAGLWCOc8egcBvT0kf27GoWMqtdarNfDcjb6YLuV5cM3ioG45Ys2qOVqeqSbjaKg72vU+Wby3eddPsA==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.0.tgz", - "integrity": "sha512-WhYv5UEcZrbAtlsnPuChHUAsu/iBPOVaEVsntLBIdpibO0ddy8OzavZz3iL2xVvBZOpolujSliP65Kq0/7KIYw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.0.tgz", - "integrity": "sha512-8JZt9ElZ5kyTnO94muPxIGS8oyElRJaiJO8EzV6ZSyGQ1Is8xwl4Q45qU5UOg+bGH4AikWziz0iN4sFLWs8PGw==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.0.tgz", - "integrity": "sha512-oNh6S2WMHWRZrmutsRmDDfkzKtxF+bc2VxLC9dvtrDIRFln627VsFP6fLMgTryGDljgLPjkrzQSDcPrjPyDJ5w==", - "dev": true, - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/minisearch": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/minisearch/-/minisearch-6.3.0.tgz", - "integrity": "sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ==", - "dev": true - }, - "node_modules/mrmime": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-1.0.1.tgz", - "integrity": "sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/preact": { - "version": "10.19.2", - "resolved": "https://registry.npmjs.org/preact/-/preact-10.19.2.tgz", - "integrity": "sha512-UA9DX/OJwv6YwP9Vn7Ti/vF80XL+YA5H2l7BpCtUr3ya8LWHFzpiO5R+N7dN16ujpIxhekRFuOOF82bXX7K/lg==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/preact" - } - }, - "node_modules/property-information": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.4.0.tgz", - "integrity": "sha512-9t5qARVofg2xQqKtytzt+lZ4d1Qvj8t5B8fEwXK6qOfgRLgH/b13QlgEyDh033NOS31nXeFbYv7CLUDG1CeifQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/rollup": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.6.0.tgz", - "integrity": "sha512-R8i5Her4oO1LiMQ3jKf7MUglYV/mhQ5g5OKeld5CnkmPdIGo79FDDQYqPhq/PCVuTQVuxsWgIbDy9F+zdHn80w==", - "dev": true, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.6.0", - "@rollup/rollup-android-arm64": "4.6.0", - "@rollup/rollup-darwin-arm64": "4.6.0", - "@rollup/rollup-darwin-x64": "4.6.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.6.0", - "@rollup/rollup-linux-arm64-gnu": "4.6.0", - "@rollup/rollup-linux-arm64-musl": "4.6.0", - "@rollup/rollup-linux-x64-gnu": "4.6.0", - "@rollup/rollup-linux-x64-musl": "4.6.0", - "@rollup/rollup-win32-arm64-msvc": "4.6.0", - "@rollup/rollup-win32-ia32-msvc": "4.6.0", - "@rollup/rollup-win32-x64-msvc": "4.6.0", - "fsevents": "~2.3.2" - } - }, - "node_modules/search-insights": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/search-insights/-/search-insights-2.11.0.tgz", - "integrity": "sha512-Uin2J8Bpm3xaZi9Y8QibSys6uJOFZ+REMrf42v20AA3FUDUrshKkMEP6liJbMAHCm71wO6ls4mwAf7a3gFVxLw==", - "dev": true, - "peer": true - }, - "node_modules/shikiji": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/shikiji/-/shikiji-0.7.5.tgz", - "integrity": "sha512-He8lAcTZUVuUW+Z4VRPM+TP+HVZCe4R1qzrP7voUrmAKrFKE260YEUVgqcP7y/0ps0uVvKgVhu5vgIshGpGocQ==", - "dev": true, - "dependencies": { - "hast-util-to-html": "^9.0.0" - } - }, - "node_modules/shikiji-transformers": { - "version": "0.7.5", - "resolved": "https://registry.npmjs.org/shikiji-transformers/-/shikiji-transformers-0.7.5.tgz", - "integrity": "sha512-9faGNS/3xI9QP8HZI2Xa1xtMQtaVkl/ulgMIOiaKY7XcETdUsz2yzors3UQkPUO2cwbQLS376wnZe4Xik8wMBA==", - "dev": true, - "dependencies": { - "shikiji": "0.7.5" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "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==", - "dev": true, - "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==", - "dev": true - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.1.tgz", - "integrity": "sha512-1bYqc7pt6NIADBJ98UiG0Bn/CHIVOoZ/IyEkqIruLg0mE1BKzkOXY2D6CSqQIcKqgadppE5lrxgWXJmXd7zZJw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-location": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.2.tgz", - "integrity": "sha512-NXPYyxyBSH7zB5U6+3uDdd6Nybz6o6/od9rk8bp9H8GR3L+cm/fC0uUTbqBmUTnMCUDslAGBOIKNfvvb+gGlDg==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", - "dev": true, - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/vite": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-5.0.3.tgz", - "integrity": "sha512-WgEq8WEKpZ8c0DL4M1+E+kBZEJyjBmGVrul6z8Ljfhv+PPbNF4aGq014DwNYxGz2FGq6NKL0N8usdiESWd2l2w==", - "dev": true, - "dependencies": { - "esbuild": "^0.19.3", - "postcss": "^8.4.31", - "rollup": "^4.2.0" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^18.0.0 || >=20.0.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^18.0.0 || >=20.0.0", - "less": "*", - "lightningcss": "^1.21.0", - "sass": "*", - "stylus": "*", - "sugarss": "*", - "terser": "^5.4.0" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - } - } - }, - "node_modules/vitepress": { - "version": "1.0.0-rc.31", - "resolved": "https://registry.npmjs.org/vitepress/-/vitepress-1.0.0-rc.31.tgz", - "integrity": "sha512-ikH9pIjOOAbyoYAGBVfTz8TzuXp+UoWaIRMU4bw/oiTg8R65SbAaGKY84xx6TuL+f4VqUJ8lhzW82YyxSLvstA==", - "dev": true, - "dependencies": { - "@docsearch/css": "^3.5.2", - "@docsearch/js": "^3.5.2", - "@types/markdown-it": "^13.0.7", - "@vitejs/plugin-vue": "^4.5.0", - "@vue/devtools-api": "^6.5.1", - "@vueuse/core": "^10.6.1", - "@vueuse/integrations": "^10.6.1", - "focus-trap": "^7.5.4", - "mark.js": "8.11.1", - "minisearch": "^6.3.0", - "mrmime": "^1.0.1", - "shikiji": "^0.7.4", - "shikiji-transformers": "^0.7.4", - "vite": "^5.0.2", - "vue": "^3.3.8" - }, - "bin": { - "vitepress": "bin/vitepress.js" - }, - "peerDependencies": { - "markdown-it-mathjax3": "^4.3.2", - "postcss": "^8.4.31" - }, - "peerDependenciesMeta": { - "markdown-it-mathjax3": { - "optional": true - }, - "postcss": { - "optional": true - } - } - }, - "node_modules/vue": { - "version": "3.3.9", - "resolved": "https://registry.npmjs.org/vue/-/vue-3.3.9.tgz", - "integrity": "sha512-sy5sLCTR8m6tvUk1/ijri3Yqzgpdsmxgj6n6yl7GXXCXqVbmW2RCXe9atE4cEI6Iv7L89v5f35fZRRr5dChP9w==", - "dev": true, - "dependencies": { - "@vue/compiler-dom": "3.3.9", - "@vue/compiler-sfc": "3.3.9", - "@vue/runtime-dom": "3.3.9", - "@vue/server-renderer": "3.3.9", - "@vue/shared": "3.3.9" - }, - "peerDependencies": { - "typescript": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - } - } -} diff --git a/package.json b/package.json index 9f7c5fe4eb..ef33c24356 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,10 @@ { - "scripts": { - "docs:dev": "vitepress dev docs", - "docs:build": "vitepress build docs", - "docs:preview": "vitepress preview docs" - }, - "devDependencies": { - "vitepress": "^1.0.0-rc.31" - } + "scripts": { + "dev": "vitepress dev docs", + "build": "vitepress build docs", + "preview": "vitepress preview docs" + }, + "devDependencies": { + "vitepress": "^1.0.0-rc.44" + } } diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..6b7333b3a8 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,756 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@algolia/autocomplete-core@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-core/-/autocomplete-core-1.9.3.tgz#1d56482a768c33aae0868c8533049e02e8961be7" + integrity sha512-009HdfugtGCdC4JdXUbVJClA0q0zh24yyePn+KUGk3rP7j8FEe/m5Yo/z65gn6nP/cM39PxpzqKrL7A6fP6PPw== + dependencies: + "@algolia/autocomplete-plugin-algolia-insights" "1.9.3" + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-plugin-algolia-insights@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-plugin-algolia-insights/-/autocomplete-plugin-algolia-insights-1.9.3.tgz#9b7f8641052c8ead6d66c1623d444cbe19dde587" + integrity sha512-a/yTUkcO/Vyy+JffmAnTWbr4/90cLzw+CC3bRbhnULr/EM0fGNvM13oQQ14f2moLMcVDyAx/leczLlAOovhSZg== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-preset-algolia@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-preset-algolia/-/autocomplete-preset-algolia-1.9.3.tgz#64cca4a4304cfcad2cf730e83067e0c1b2f485da" + integrity sha512-d4qlt6YmrLMYy95n5TB52wtNDr6EgAIPH81dvvvW8UmuWRgxEtY0NJiPwl/h95JtG2vmRM804M0DSwMCNZlzRA== + dependencies: + "@algolia/autocomplete-shared" "1.9.3" + +"@algolia/autocomplete-shared@1.9.3": + version "1.9.3" + resolved "https://registry.yarnpkg.com/@algolia/autocomplete-shared/-/autocomplete-shared-1.9.3.tgz#2e22e830d36f0a9cf2c0ccd3c7f6d59435b77dfa" + integrity sha512-Wnm9E4Ye6Rl6sTTqjoymD+l8DjSTHsHboVRYrKgEt8Q7UHm9nYbqhN/i0fhUYA3OAEH7WA8x3jfpnmJm3rKvaQ== + +"@algolia/cache-browser-local-storage@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-browser-local-storage/-/cache-browser-local-storage-4.22.1.tgz#14b6dc9abc9e3a304a5fffb063d15f30af1032d1" + integrity sha512-Sw6IAmOCvvP6QNgY9j+Hv09mvkvEIDKjYW8ow0UDDAxSXy664RBNQk3i/0nt7gvceOJ6jGmOTimaZoY1THmU7g== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/cache-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-common/-/cache-common-4.22.1.tgz#c625dff4bc2a74e79f9aed67b4e053b0ef1b3ec1" + integrity sha512-TJMBKqZNKYB9TptRRjSUtevJeQVXRmg6rk9qgFKWvOy8jhCPdyNZV1nB3SKGufzvTVbomAukFR8guu/8NRKBTA== + +"@algolia/cache-in-memory@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/cache-in-memory/-/cache-in-memory-4.22.1.tgz#858a3d887f521362e87d04f3943e2810226a0d71" + integrity sha512-ve+6Ac2LhwpufuWavM/aHjLoNz/Z/sYSgNIXsinGofWOysPilQZPUetqLj8vbvi+DHZZaYSEP9H5SRVXnpsNNw== + dependencies: + "@algolia/cache-common" "4.22.1" + +"@algolia/client-account@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-account/-/client-account-4.22.1.tgz#a7fb8b66b9a4f0a428e1426b2561144267d76d43" + integrity sha512-k8m+oegM2zlns/TwZyi4YgCtyToackkOpE+xCaKCYfBfDtdGOaVZCM5YvGPtK+HGaJMIN/DoTL8asbM3NzHonw== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-analytics@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-analytics/-/client-analytics-4.22.1.tgz#506558740b4d49b1b1e3393861f729a8ce921851" + integrity sha512-1ssi9pyxyQNN4a7Ji9R50nSdISIumMFDwKNuwZipB6TkauJ8J7ha/uO60sPJFqQyqvvI+px7RSNRQT3Zrvzieg== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-common/-/client-common-4.22.1.tgz#042b19c1b6157c485fa1b551349ab313944d2b05" + integrity sha512-IvaL5v9mZtm4k4QHbBGDmU3wa/mKokmqNBqPj0K7lcR8ZDKzUorhcGp/u8PkPC/e0zoHSTvRh7TRkGX3Lm7iOQ== + dependencies: + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-personalization@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-personalization/-/client-personalization-4.22.1.tgz#ff088d797648224fb582e9fe5828f8087835fa3d" + integrity sha512-sl+/klQJ93+4yaqZ7ezOttMQ/nczly/3GmgZXJ1xmoewP5jmdP/X/nV5U7EHHH3hCUEHeN7X1nsIhGPVt9E1cQ== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/client-search@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/client-search/-/client-search-4.22.1.tgz#508cc6ab3d1f4e9c02735a630d4dff6fbb8514a2" + integrity sha512-yb05NA4tNaOgx3+rOxAmFztgMTtGBi97X7PC3jyNeGiwkAjOZc2QrdZBYyIdcDLoI09N0gjtpClcackoTN0gPA== + dependencies: + "@algolia/client-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/transporter" "4.22.1" + +"@algolia/logger-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-common/-/logger-common-4.22.1.tgz#79cf4cd295de0377a94582c6aaac59b1ded731d9" + integrity sha512-OnTFymd2odHSO39r4DSWRFETkBufnY2iGUZNrMXpIhF5cmFE8pGoINNPzwg02QLBlGSaLqdKy0bM8S0GyqPLBg== + +"@algolia/logger-console@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/logger-console/-/logger-console-4.22.1.tgz#0355345f6940f67aaa78ae9b81c06e44e49f2336" + integrity sha512-O99rcqpVPKN1RlpgD6H3khUWylU24OXlzkavUAMy6QZd1776QAcauE3oP8CmD43nbaTjBexZj2nGsBH9Tc0FVA== + dependencies: + "@algolia/logger-common" "4.22.1" + +"@algolia/requester-browser-xhr@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-browser-xhr/-/requester-browser-xhr-4.22.1.tgz#f04df6fe9690a071b267c77d26b83a3be9280361" + integrity sha512-dtQGYIg6MteqT1Uay3J/0NDqD+UciHy3QgRbk7bNddOJu+p3hzjTRYESqEnoX/DpEkaNYdRHUKNylsqMpgwaEw== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/requester-common@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-common/-/requester-common-4.22.1.tgz#27be35f3718aafcb6b388ff9c3aa2defabd559ff" + integrity sha512-dgvhSAtg2MJnR+BxrIFqlLtkLlVVhas9HgYKMk2Uxiy5m6/8HZBL40JVAMb2LovoPFs9I/EWIoFVjOrFwzn5Qg== + +"@algolia/requester-node-http@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/requester-node-http/-/requester-node-http-4.22.1.tgz#589a6fa828ad0f325e727a6fcaf4e1a2343cc62b" + integrity sha512-JfmZ3MVFQkAU+zug8H3s8rZ6h0ahHZL/SpMaSasTCGYR5EEJsCc8SI5UZ6raPN2tjxa5bxS13BRpGSBUens7EA== + dependencies: + "@algolia/requester-common" "4.22.1" + +"@algolia/transporter@4.22.1": + version "4.22.1" + resolved "https://registry.yarnpkg.com/@algolia/transporter/-/transporter-4.22.1.tgz#8843841b857dc021668f31647aa557ff19cd9cb1" + integrity sha512-kzWgc2c9IdxMa3YqA6TN0NW5VrKYYW/BELIn7vnLyn+U/RFdZ4lxxt9/8yq3DKV5snvoDzzO4ClyejZRdV3lMQ== + dependencies: + "@algolia/cache-common" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/requester-common" "4.22.1" + +"@babel/parser@^7.23.9": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + +"@docsearch/css@3.5.2", "@docsearch/css@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/css/-/css-3.5.2.tgz#610f47b48814ca94041df969d9fcc47b91fc5aac" + integrity sha512-SPiDHaWKQZpwR2siD0KQUwlStvIAnEyK6tAE2h2Wuoq8ue9skzhlyVQ1ddzOxX6khULnAALDiR/isSF3bnuciA== + +"@docsearch/js@^3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/js/-/js-3.5.2.tgz#a11cb2e7e62890e9e940283fed6972ecf632629d" + integrity sha512-p1YFTCDflk8ieHgFJYfmyHBki1D61+U9idwrLh+GQQMrBSP3DLGKpy0XUJtPjAOPltcVbqsTjiPFfH7JImjUNg== + dependencies: + "@docsearch/react" "3.5.2" + preact "^10.0.0" + +"@docsearch/react@3.5.2": + version "3.5.2" + resolved "https://registry.yarnpkg.com/@docsearch/react/-/react-3.5.2.tgz#2e6bbee00eb67333b64906352734da6aef1232b9" + integrity sha512-9Ahcrs5z2jq/DcAvYtvlqEBHImbm4YJI8M9y0x6Tqg598P40HTEkX7hsMcIuThI+hTFxRGZ9hll0Wygm2yEjng== + dependencies: + "@algolia/autocomplete-core" "1.9.3" + "@algolia/autocomplete-preset-algolia" "1.9.3" + "@docsearch/css" "3.5.2" + algoliasearch "^4.19.1" + +"@esbuild/aix-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.19.12.tgz#d1bc06aedb6936b3b6d313bf809a5a40387d2b7f" + integrity sha512-bmoCYyWdEL3wDQIVbcyzRyeKLgk2WtWLTWz1ZIAZF/EGbNOwSA6ew3PftJ1PqMiOOGu0OyFMzG53L0zqIpPeNA== + +"@esbuild/android-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.19.12.tgz#7ad65a36cfdb7e0d429c353e00f680d737c2aed4" + integrity sha512-P0UVNGIienjZv3f5zq0DP3Nt2IE/3plFzuaS96vihvD0Hd6H/q4WXUGpCxD/E8YrSXfNyRPbpTq+T8ZQioSuPA== + +"@esbuild/android-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.19.12.tgz#b0c26536f37776162ca8bde25e42040c203f2824" + integrity sha512-qg/Lj1mu3CdQlDEEiWrlC4eaPZ1KztwGJ9B6J+/6G+/4ewxJg7gqj8eVYWvao1bXrqGiW2rsBZFSX3q2lcW05w== + +"@esbuild/android-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.19.12.tgz#cb13e2211282012194d89bf3bfe7721273473b3d" + integrity sha512-3k7ZoUW6Q6YqhdhIaq/WZ7HwBpnFBlW905Fa4s4qWJyiNOgT1dOqDiVAQFwBH7gBRZr17gLrlFCRzF6jFh7Kew== + +"@esbuild/darwin-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.19.12.tgz#cbee41e988020d4b516e9d9e44dd29200996275e" + integrity sha512-B6IeSgZgtEzGC42jsI+YYu9Z3HKRxp8ZT3cqhvliEHovq8HSX2YX8lNocDn79gCKJXOSaEot9MVYky7AKjCs8g== + +"@esbuild/darwin-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.19.12.tgz#e37d9633246d52aecf491ee916ece709f9d5f4cd" + integrity sha512-hKoVkKzFiToTgn+41qGhsUJXFlIjxI/jSYeZf3ugemDYZldIXIxhvwN6erJGlX4t5h417iFuheZ7l+YVn05N3A== + +"@esbuild/freebsd-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.12.tgz#1ee4d8b682ed363b08af74d1ea2b2b4dbba76487" + integrity sha512-4aRvFIXmwAcDBw9AueDQ2YnGmz5L6obe5kmPT8Vd+/+x/JMVKCgdcRwH6APrbpNXsPz+K653Qg8HB/oXvXVukA== + +"@esbuild/freebsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.19.12.tgz#37a693553d42ff77cd7126764b535fb6cc28a11c" + integrity sha512-EYoXZ4d8xtBoVN7CEwWY2IN4ho76xjYXqSXMNccFSx2lgqOG/1TBPW0yPx1bJZk94qu3tX0fycJeeQsKovA8gg== + +"@esbuild/linux-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.19.12.tgz#be9b145985ec6c57470e0e051d887b09dddb2d4b" + integrity sha512-EoTjyYyLuVPfdPLsGVVVC8a0p1BFFvtpQDB/YLEhaXyf/5bczaGeN15QkR+O4S5LeJ92Tqotve7i1jn35qwvdA== + +"@esbuild/linux-arm@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.19.12.tgz#207ecd982a8db95f7b5279207d0ff2331acf5eef" + integrity sha512-J5jPms//KhSNv+LO1S1TX1UWp1ucM6N6XuL6ITdKWElCu8wXP72l9MM0zDTzzeikVyqFE6U8YAV9/tFyj0ti+w== + +"@esbuild/linux-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.19.12.tgz#d0d86b5ca1562523dc284a6723293a52d5860601" + integrity sha512-Thsa42rrP1+UIGaWz47uydHSBOgTUnwBwNq59khgIwktK6x60Hivfbux9iNR0eHCHzOLjLMLfUMLCypBkZXMHA== + +"@esbuild/linux-loong64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.19.12.tgz#9a37f87fec4b8408e682b528391fa22afd952299" + integrity sha512-LiXdXA0s3IqRRjm6rV6XaWATScKAXjI4R4LoDlvO7+yQqFdlr1Bax62sRwkVvRIrwXxvtYEHHI4dm50jAXkuAA== + +"@esbuild/linux-mips64el@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.19.12.tgz#4ddebd4e6eeba20b509d8e74c8e30d8ace0b89ec" + integrity sha512-fEnAuj5VGTanfJ07ff0gOA6IPsvrVHLVb6Lyd1g2/ed67oU1eFzL0r9WL7ZzscD+/N6i3dWumGE1Un4f7Amf+w== + +"@esbuild/linux-ppc64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.19.12.tgz#adb67dadb73656849f63cd522f5ecb351dd8dee8" + integrity sha512-nYJA2/QPimDQOh1rKWedNOe3Gfc8PabU7HT3iXWtNUbRzXS9+vgB0Fjaqr//XNbd82mCxHzik2qotuI89cfixg== + +"@esbuild/linux-riscv64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.19.12.tgz#11bc0698bf0a2abf8727f1c7ace2112612c15adf" + integrity sha512-2MueBrlPQCw5dVJJpQdUYgeqIzDQgw3QtiAHUC4RBz9FXPrskyyU3VI1hw7C0BSKB9OduwSJ79FTCqtGMWqJHg== + +"@esbuild/linux-s390x@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.19.12.tgz#e86fb8ffba7c5c92ba91fc3b27ed5a70196c3cc8" + integrity sha512-+Pil1Nv3Umes4m3AZKqA2anfhJiVmNCYkPchwFJNEJN5QxmTs1uzyy4TvmDrCRNT2ApwSari7ZIgrPeUx4UZDg== + +"@esbuild/linux-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.19.12.tgz#5f37cfdc705aea687dfe5dfbec086a05acfe9c78" + integrity sha512-B71g1QpxfwBvNrfyJdVDexenDIt1CiDN1TIXLbhOw0KhJzE78KIFGX6OJ9MrtC0oOqMWf+0xop4qEU8JrJTwCg== + +"@esbuild/netbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.19.12.tgz#29da566a75324e0d0dd7e47519ba2f7ef168657b" + integrity sha512-3ltjQ7n1owJgFbuC61Oj++XhtzmymoCihNFgT84UAmJnxJfm4sYCiSLTXZtE00VWYpPMYc+ZQmB6xbSdVh0JWA== + +"@esbuild/openbsd-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.19.12.tgz#306c0acbdb5a99c95be98bdd1d47c916e7dc3ff0" + integrity sha512-RbrfTB9SWsr0kWmb9srfF+L933uMDdu9BIzdA7os2t0TXhCRjrQyCeOt6wVxr79CKD4c+p+YhCj31HBkYcXebw== + +"@esbuild/sunos-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.19.12.tgz#0933eaab9af8b9b2c930236f62aae3fc593faf30" + integrity sha512-HKjJwRrW8uWtCQnQOz9qcU3mUZhTUQvi56Q8DPTLLB+DawoiQdjsYq+j+D3s9I8VFtDr+F9CjgXKKC4ss89IeA== + +"@esbuild/win32-arm64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.19.12.tgz#773bdbaa1971b36db2f6560088639ccd1e6773ae" + integrity sha512-URgtR1dJnmGvX864pn1B2YUYNzjmXkuJOIqG2HdU62MVS4EHpU2946OZoTMnRUHklGtJdJZ33QfzdjGACXhn1A== + +"@esbuild/win32-ia32@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.19.12.tgz#000516cad06354cc84a73f0943a4aa690ef6fd67" + integrity sha512-+ZOE6pUkMOJfmxmBZElNOx72NKpIa/HFOMGzu8fqzQJ5kgf6aTGrcJaFsNiVMH4JKpMipyK+7k0n2UXN7a8YKQ== + +"@esbuild/win32-x64@0.19.12": + version "0.19.12" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.19.12.tgz#c57c8afbb4054a3ab8317591a0b7320360b444ae" + integrity sha512-T1QyPSDCyMXaO3pzBkF96E8xMkiRYbUEZADd29SyPGabqxMViNoii+NcK7eWJAEoU6RZyEm5lVSIjTmcdoB9HA== + +"@jridgewell/sourcemap-codec@^1.4.15": + version "1.4.15" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" + integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== + +"@rollup/rollup-android-arm-eabi@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" + integrity sha512-+ac02NL/2TCKRrJu2wffk1kZ+RyqxVUlbjSagNgPm94frxtr+XDL12E5Ll1enWskLrtrZ2r8L3wED1orIibV/w== + +"@rollup/rollup-android-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.12.0.tgz#3822e929f415627609e53b11cec9a4be806de0e2" + integrity sha512-OBqcX2BMe6nvjQ0Nyp7cC90cnumt8PXmO7Dp3gfAju/6YwG0Tj74z1vKrfRz7qAv23nBcYM8BCbhrsWqO7PzQQ== + +"@rollup/rollup-darwin-arm64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.12.0.tgz#6c082de71f481f57df6cfa3701ab2a7afde96f69" + integrity sha512-X64tZd8dRE/QTrBIEs63kaOBG0b5GVEd3ccoLtyf6IdXtHdh8h+I56C2yC3PtC9Ucnv0CpNFJLqKFVgCYe0lOQ== + +"@rollup/rollup-darwin-x64@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.12.0.tgz#c34ca0d31f3c46a22c9afa0e944403eea0edcfd8" + integrity sha512-cc71KUZoVbUJmGP2cOuiZ9HSOP14AzBAThn3OU+9LcA1+IUqswJyR1cAJj3Mg55HbjZP6OLAIscbQsQLrpgTOg== + +"@rollup/rollup-linux-arm-gnueabihf@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.12.0.tgz#48e899c1e438629c072889b824a98787a7c2362d" + integrity sha512-a6w/Y3hyyO6GlpKL2xJ4IOh/7d+APaqLYdMf86xnczU3nurFTaVN9s9jOXQg97BE4nYm/7Ga51rjec5nfRdrvA== + +"@rollup/rollup-linux-arm64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.12.0.tgz#788c2698a119dc229062d40da6ada8a090a73a68" + integrity sha512-0fZBq27b+D7Ar5CQMofVN8sggOVhEtzFUwOwPppQt0k+VR+7UHMZZY4y+64WJ06XOhBTKXtQB/Sv0NwQMXyNAA== + +"@rollup/rollup-linux-arm64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.12.0.tgz#3882a4e3a564af9e55804beeb67076857b035ab7" + integrity sha512-eTvzUS3hhhlgeAv6bfigekzWZjaEX9xP9HhxB0Dvrdbkk5w/b+1Sxct2ZuDxNJKzsRStSq1EaEkVSEe7A7ipgQ== + +"@rollup/rollup-linux-riscv64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.12.0.tgz#0c6ad792e1195c12bfae634425a3d2aa0fe93ab7" + integrity sha512-ix+qAB9qmrCRiaO71VFfY8rkiAZJL8zQRXveS27HS+pKdjwUfEhqo2+YF2oI+H/22Xsiski+qqwIBxVewLK7sw== + +"@rollup/rollup-linux-x64-gnu@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.12.0.tgz#9d62485ea0f18d8674033b57aa14fb758f6ec6e3" + integrity sha512-TenQhZVOtw/3qKOPa7d+QgkeM6xY0LtwzR8OplmyL5LrgTWIXpTQg2Q2ycBf8jm+SFW2Wt/DTn1gf7nFp3ssVA== + +"@rollup/rollup-linux-x64-musl@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.12.0.tgz#50e8167e28b33c977c1f813def2b2074d1435e05" + integrity sha512-LfFdRhNnW0zdMvdCb5FNuWlls2WbbSridJvxOvYWgSBOYZtgBfW9UGNJG//rwMqTX1xQE9BAodvMH9tAusKDUw== + +"@rollup/rollup-win32-arm64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.12.0.tgz#68d233272a2004429124494121a42c4aebdc5b8e" + integrity sha512-JPDxovheWNp6d7AHCgsUlkuCKvtu3RB55iNEkaQcf0ttsDU/JZF+iQnYcQJSk/7PtT4mjjVG8N1kpwnI9SLYaw== + +"@rollup/rollup-win32-ia32-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.12.0.tgz#366ca62221d1689e3b55a03f4ae12ae9ba595d40" + integrity sha512-fjtuvMWRGJn1oZacG8IPnzIV6GF2/XG+h71FKn76OYFqySXInJtseAqdprVTDTyqPxQOG9Exak5/E9Z3+EJ8ZA== + +"@rollup/rollup-win32-x64-msvc@4.12.0": + version "4.12.0" + resolved "https://registry.yarnpkg.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.12.0.tgz#9ffdf9ed133a7464f4ae187eb9e1294413fab235" + integrity sha512-ZYmr5mS2wd4Dew/JjT0Fqi2NPB/ZhZ2VvPp7SmvPZb4Y1CG/LRcS6tcRo2cYU7zLK5A7cdbhWnnWmUjoI4qapg== + +"@shikijs/core@1.1.7", "@shikijs/core@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@shikijs/core/-/core-1.1.7.tgz#560de8d503ace894e36934f1e680762ed51ea394" + integrity sha512-gTYLUIuD1UbZp/11qozD3fWpUTuMqPSf3svDMMrL0UmlGU7D9dPw/V1FonwAorCUJBltaaESxq90jrSjQyGixg== + +"@shikijs/transformers@^1.1.5": + version "1.1.7" + resolved "https://registry.yarnpkg.com/@shikijs/transformers/-/transformers-1.1.7.tgz#aee9df395aed77ff94fa95e02297aa0e5267802d" + integrity sha512-lXz011ao4+rvweps/9h3CchBfzb1U5OtP5D51Tqc9lQYdLblWMIxQxH6Ybe1GeGINcEVM4goMyPrI0JvlIp4UQ== + dependencies: + shiki "1.1.7" + +"@types/estree@1.0.5": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.5.tgz#a6ce3e556e00fd9895dd872dd172ad0d4bd687f4" + integrity sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw== + +"@types/linkify-it@*": + version "3.0.5" + resolved "https://registry.yarnpkg.com/@types/linkify-it/-/linkify-it-3.0.5.tgz#1e78a3ac2428e6d7e6c05c1665c242023a4601d8" + integrity sha512-yg6E+u0/+Zjva+buc3EIb+29XEg4wltq7cSmd4Uc2EE/1nUVmxyzpX6gUXD0V8jIrG0r7YeOGVIbYRkxeooCtw== + +"@types/markdown-it@^13.0.7": + version "13.0.7" + resolved "https://registry.yarnpkg.com/@types/markdown-it/-/markdown-it-13.0.7.tgz#4a495115f470075bd4434a0438ac477a49c2e152" + integrity sha512-U/CBi2YUUcTHBt5tjO2r5QV/x0Po6nsYwQU4Y04fBS6vfoImaiZ6f8bi3CjTCxBPQSO1LMyUqkByzi8AidyxfA== + dependencies: + "@types/linkify-it" "*" + "@types/mdurl" "*" + +"@types/mdurl@*": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@types/mdurl/-/mdurl-1.0.5.tgz#3e0d2db570e9fb6ccb2dc8fde0be1d79ac810d39" + integrity sha512-6L6VymKTzYSrEf4Nev4Xa1LCHKrlTlYCBMTlQKFuddo1CvQcE52I0mwfOJayueUC7MJuXOeHTcIU683lzd0cUA== + +"@types/web-bluetooth@^0.0.20": + version "0.0.20" + resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" + integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== + +"@vitejs/plugin-vue@^5.0.4": + version "5.0.4" + resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" + integrity sha512-WS3hevEszI6CEVEx28F8RjTX97k3KsrcY6kvTg7+Whm5y3oYvcqzVeGCU3hxSAn4uY2CLCkeokkGKpoctccilQ== + +"@vue/compiler-core@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-core/-/compiler-core-3.4.21.tgz#868b7085378fc24e58c9aed14c8d62110a62be1a" + integrity sha512-MjXawxZf2SbZszLPYxaFCjxfibYrzr3eYbKxwpLR9EQN+oaziSu3qKVbwBERj1IFIB8OLUewxB5m/BFzi613og== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/shared" "3.4.21" + entities "^4.5.0" + estree-walker "^2.0.2" + source-map-js "^1.0.2" + +"@vue/compiler-dom@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-dom/-/compiler-dom-3.4.21.tgz#0077c355e2008207283a5a87d510330d22546803" + integrity sha512-IZC6FKowtT1sl0CR5DpXSiEB5ayw75oT2bma1BEhV7RRR1+cfwLrxc2Z8Zq/RGFzJ8w5r9QtCOvTjQgdn0IKmA== + dependencies: + "@vue/compiler-core" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/compiler-sfc@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-sfc/-/compiler-sfc-3.4.21.tgz#4af920dc31ab99e1ff5d152b5fe0ad12181145b2" + integrity sha512-me7epoTxYlY+2CUM7hy9PCDdpMPfIwrOvAXud2Upk10g4YLv9UBW7kL798TvMeDhPthkZ0CONNrK2GoeI1ODiQ== + dependencies: + "@babel/parser" "^7.23.9" + "@vue/compiler-core" "3.4.21" + "@vue/compiler-dom" "3.4.21" + "@vue/compiler-ssr" "3.4.21" + "@vue/shared" "3.4.21" + estree-walker "^2.0.2" + magic-string "^0.30.7" + postcss "^8.4.35" + source-map-js "^1.0.2" + +"@vue/compiler-ssr@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/compiler-ssr/-/compiler-ssr-3.4.21.tgz#b84ae64fb9c265df21fc67f7624587673d324fef" + integrity sha512-M5+9nI2lPpAsgXOGQobnIueVqc9sisBFexh5yMIMRAPYLa7+5wEJs8iqOZc1WAa9WQbx9GR2twgznU8LTIiZ4Q== + dependencies: + "@vue/compiler-dom" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/devtools-api@^7.0.14": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-api/-/devtools-api-7.0.15.tgz#875a228fb5154fa4a6678e8cbc4c894089d87cde" + integrity sha512-kgEYWosDyWpS1vFSuJNNWUnHkP+VkL3Y+9mw+rf7ex41SwbYL/WdC3KXqAtjiSrEs7r/FrHmUTh0BkINJPFkbA== + dependencies: + "@vue/devtools-kit" "^7.0.15" + +"@vue/devtools-kit@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-kit/-/devtools-kit-7.0.15.tgz#d6f5d527358ad6c707cb13ccbbc4260a9c6dcae5" + integrity sha512-dT7OeCe1LUCIhHIb/yRR6Hn+XHh73r1o78onqCrxEKHdoZwBItiIeVnmJZPEUDFstIxfs+tJL231mySk3laTow== + dependencies: + "@vue/devtools-shared" "^7.0.15" + hookable "^5.5.3" + mitt "^3.0.1" + perfect-debounce "^1.0.0" + speakingurl "^14.0.1" + +"@vue/devtools-shared@^7.0.15": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@vue/devtools-shared/-/devtools-shared-7.0.15.tgz#a179552dab23b7c7e4bb22726a82a268eef7239b" + integrity sha512-fpfvMVvS7aDgO7x2JPFiTQ1MHcCc63/bE7yTgs278gMBybuO9b3hdiZ/k0Pw1rN+RefaU9yQiFA+5CCFc1D+6w== + dependencies: + rfdc "^1.3.1" + +"@vue/reactivity@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/reactivity/-/reactivity-3.4.21.tgz#affd3415115b8ebf4927c8d2a0d6a24bccfa9f02" + integrity sha512-UhenImdc0L0/4ahGCyEzc/pZNwVgcglGy9HVzJ1Bq2Mm9qXOpP8RyNTjookw/gOCUlXSEtuZ2fUg5nrHcoqJcw== + dependencies: + "@vue/shared" "3.4.21" + +"@vue/runtime-core@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/runtime-core/-/runtime-core-3.4.21.tgz#3749c3f024a64c4c27ecd75aea4ca35634db0062" + integrity sha512-pQthsuYzE1XcGZznTKn73G0s14eCJcjaLvp3/DKeYWoFacD9glJoqlNBxt3W2c5S40t6CCcpPf+jG01N3ULyrA== + dependencies: + "@vue/reactivity" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/runtime-dom@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/runtime-dom/-/runtime-dom-3.4.21.tgz#91f867ef64eff232cac45095ab28ebc93ac74588" + integrity sha512-gvf+C9cFpevsQxbkRBS1NpU8CqxKw0ebqMvLwcGQrNpx6gqRDodqKqA+A2VZZpQ9RpK2f9yfg8VbW/EpdFUOJw== + dependencies: + "@vue/runtime-core" "3.4.21" + "@vue/shared" "3.4.21" + csstype "^3.1.3" + +"@vue/server-renderer@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/server-renderer/-/server-renderer-3.4.21.tgz#150751579d26661ee3ed26a28604667fa4222a97" + integrity sha512-aV1gXyKSN6Rz+6kZ6kr5+Ll14YzmIbeuWe7ryJl5muJ4uwSwY/aStXTixx76TwkZFJLm1aAlA/HSWEJ4EyiMkg== + dependencies: + "@vue/compiler-ssr" "3.4.21" + "@vue/shared" "3.4.21" + +"@vue/shared@3.4.21": + version "3.4.21" + resolved "https://registry.yarnpkg.com/@vue/shared/-/shared-3.4.21.tgz#de526a9059d0a599f0b429af7037cd0c3ed7d5a1" + integrity sha512-PuJe7vDIi6VYSinuEbUIQgMIRZGgM8e4R+G+/dQTk0X1NEdvgvvgv7m+rfmDH1gZzyA1OjjoWskvHlfRNfQf3g== + +"@vueuse/core@10.9.0", "@vueuse/core@^10.7.2": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/core/-/core-10.9.0.tgz#7d779a95cf0189de176fee63cee4ba44b3c85d64" + integrity sha512-/1vjTol8SXnx6xewDEKfS0Ra//ncg4Hb0DaZiwKf7drgfMsKFExQ+FnnENcN6efPen+1kIzhLQoGSy0eDUVOMg== + dependencies: + "@types/web-bluetooth" "^0.0.20" + "@vueuse/metadata" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/integrations@^10.7.2": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/integrations/-/integrations-10.9.0.tgz#2b1a9556215ad3c1f96d39cbfbef102cf6e0ec05" + integrity sha512-acK+A01AYdWSvL4BZmCoJAcyHJ6EqhmkQEXbQLwev1MY7NBnS+hcEMx/BzVoR9zKI+UqEPMD9u6PsyAuiTRT4Q== + dependencies: + "@vueuse/core" "10.9.0" + "@vueuse/shared" "10.9.0" + vue-demi ">=0.14.7" + +"@vueuse/metadata@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/metadata/-/metadata-10.9.0.tgz#769a1a9db65daac15cf98084cbf7819ed3758620" + integrity sha512-iddNbg3yZM0X7qFY2sAotomgdHK7YJ6sKUvQqbvwnf7TmaVPxS4EJydcNsVejNdS8iWCtDk+fYXr7E32nyTnGA== + +"@vueuse/shared@10.9.0": + version "10.9.0" + resolved "https://registry.yarnpkg.com/@vueuse/shared/-/shared-10.9.0.tgz#13af2a348de15d07b7be2fd0c7fc9853a69d8fe0" + integrity sha512-Uud2IWncmAfJvRaFYzv5OHDli+FbOzxiVEQdLCKQKLyhz94PIyFC3CHcH7EDMwIn8NPtD06+PNbC/PiO0LGLtw== + dependencies: + vue-demi ">=0.14.7" + +algoliasearch@^4.19.1: + version "4.22.1" + resolved "https://registry.yarnpkg.com/algoliasearch/-/algoliasearch-4.22.1.tgz#f10fbecdc7654639ec20d62f109c1b3a46bc6afc" + integrity sha512-jwydKFQJKIx9kIZ8Jm44SdpigFwRGPESaxZBaHSV0XWN2yBJAOT4mT7ppvlrpA4UGzz92pqFnVKr/kaZXrcreg== + dependencies: + "@algolia/cache-browser-local-storage" "4.22.1" + "@algolia/cache-common" "4.22.1" + "@algolia/cache-in-memory" "4.22.1" + "@algolia/client-account" "4.22.1" + "@algolia/client-analytics" "4.22.1" + "@algolia/client-common" "4.22.1" + "@algolia/client-personalization" "4.22.1" + "@algolia/client-search" "4.22.1" + "@algolia/logger-common" "4.22.1" + "@algolia/logger-console" "4.22.1" + "@algolia/requester-browser-xhr" "4.22.1" + "@algolia/requester-common" "4.22.1" + "@algolia/requester-node-http" "4.22.1" + "@algolia/transporter" "4.22.1" + +csstype@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" + integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== + +entities@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" + integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw== + +esbuild@^0.19.3: + version "0.19.12" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.19.12.tgz#dc82ee5dc79e82f5a5c3b4323a2a641827db3e04" + integrity sha512-aARqgq8roFBj054KvQr5f1sFu0D65G+miZRCuJyJ0G13Zwx7vRar5Zhn2tkQNzIXcBrNVsv/8stehpj+GAjgbg== + optionalDependencies: + "@esbuild/aix-ppc64" "0.19.12" + "@esbuild/android-arm" "0.19.12" + "@esbuild/android-arm64" "0.19.12" + "@esbuild/android-x64" "0.19.12" + "@esbuild/darwin-arm64" "0.19.12" + "@esbuild/darwin-x64" "0.19.12" + "@esbuild/freebsd-arm64" "0.19.12" + "@esbuild/freebsd-x64" "0.19.12" + "@esbuild/linux-arm" "0.19.12" + "@esbuild/linux-arm64" "0.19.12" + "@esbuild/linux-ia32" "0.19.12" + "@esbuild/linux-loong64" "0.19.12" + "@esbuild/linux-mips64el" "0.19.12" + "@esbuild/linux-ppc64" "0.19.12" + "@esbuild/linux-riscv64" "0.19.12" + "@esbuild/linux-s390x" "0.19.12" + "@esbuild/linux-x64" "0.19.12" + "@esbuild/netbsd-x64" "0.19.12" + "@esbuild/openbsd-x64" "0.19.12" + "@esbuild/sunos-x64" "0.19.12" + "@esbuild/win32-arm64" "0.19.12" + "@esbuild/win32-ia32" "0.19.12" + "@esbuild/win32-x64" "0.19.12" + +estree-walker@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" + integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== + +focus-trap@^7.5.4: + version "7.5.4" + resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" + integrity sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w== + dependencies: + tabbable "^6.2.0" + +fsevents@~2.3.2, fsevents@~2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +hookable@^5.5.3: + version "5.5.3" + resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" + integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== + +magic-string@^0.30.7: + version "0.30.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" + integrity sha512-8vBuFF/I/+OSLRmdf2wwFCJCz+nSn0m6DPvGH1fS/KiQoSaR+sETbov0eIk9KhEKy8CYqIkIAnbohxT/4H0kuA== + dependencies: + "@jridgewell/sourcemap-codec" "^1.4.15" + +mark.js@8.11.1: + version "8.11.1" + resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" + integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== + +minisearch@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.3.0.tgz#985a2f1ca3c73c2d65af94f0616bfe57164b0b6b" + integrity sha512-ihFnidEeU8iXzcVHy74dhkxh/dn8Dc08ERl0xwoMMGqp4+LvRSCgicb+zGqWthVokQKvCSxITlh3P08OzdTYCQ== + +mitt@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" + integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== + +nanoid@^3.3.7: + version "3.3.7" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" + integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== + +perfect-debounce@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" + integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA== + +picocolors@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" + integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== + +postcss@^8.4.35: + version "8.4.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" + integrity sha512-u5U8qYpBCpN13BsiEB0CbR1Hhh4Gc0zLFuedrHJKMctHCHAGrMdG0PRM/KErzAL3CU6/eckEtmHNB3x6e3c0vA== + dependencies: + nanoid "^3.3.7" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +preact@^10.0.0: + version "10.19.6" + resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.6.tgz#66007b67aad4d11899f583df1b0116d94a89b8f5" + integrity sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw== + +rfdc@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" + integrity sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg== + +rollup@^4.2.0: + version "4.12.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-4.12.0.tgz#0b6d1e5f3d46bbcf244deec41a7421dc54cc45b5" + integrity sha512-wz66wn4t1OHIJw3+XU7mJJQV/2NAfw5OAk6G6Hoo3zcvz/XOfQ52Vgi+AN4Uxoxi0KBBwk2g8zPrTDA4btSB/Q== + dependencies: + "@types/estree" "1.0.5" + optionalDependencies: + "@rollup/rollup-android-arm-eabi" "4.12.0" + "@rollup/rollup-android-arm64" "4.12.0" + "@rollup/rollup-darwin-arm64" "4.12.0" + "@rollup/rollup-darwin-x64" "4.12.0" + "@rollup/rollup-linux-arm-gnueabihf" "4.12.0" + "@rollup/rollup-linux-arm64-gnu" "4.12.0" + "@rollup/rollup-linux-arm64-musl" "4.12.0" + "@rollup/rollup-linux-riscv64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-gnu" "4.12.0" + "@rollup/rollup-linux-x64-musl" "4.12.0" + "@rollup/rollup-win32-arm64-msvc" "4.12.0" + "@rollup/rollup-win32-ia32-msvc" "4.12.0" + "@rollup/rollup-win32-x64-msvc" "4.12.0" + fsevents "~2.3.2" + +shiki@1.1.7, shiki@^1.1.5: + version "1.1.7" + resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.1.7.tgz#270f7830b4d08bdf6b63eb97ef93e06c7af604de" + integrity sha512-9kUTMjZtcPH3i7vHunA6EraTPpPOITYTdA5uMrvsJRexktqP0s7P3s9HVK80b4pP42FRVe03D7fT3NmJv2yYhw== + dependencies: + "@shikijs/core" "1.1.7" + +source-map-js@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" + integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== + +speakingurl@^14.0.1: + version "14.0.1" + resolved "https://registry.yarnpkg.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53" + integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ== + +tabbable@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" + integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== + +vite@^5.1.3: + version "5.1.4" + resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" + integrity sha512-n+MPqzq+d9nMVTKyewqw6kSt+R3CkvF9QAKY8obiQn8g1fwTscKxyfaYnC632HtBXAQGc1Yjomphwn1dtwGAHg== + dependencies: + esbuild "^0.19.3" + postcss "^8.4.35" + rollup "^4.2.0" + optionalDependencies: + fsevents "~2.3.3" + +vitepress@^1.0.0-rc.44: + version "1.0.0-rc.44" + resolved "https://registry.yarnpkg.com/vitepress/-/vitepress-1.0.0-rc.44.tgz#01bce883761c22de42b9869a95f04bd02cbb8cdb" + integrity sha512-tO5taxGI7fSpBK1D8zrZTyJJERlyU9nnt0jHSt3fywfq3VKn977Hg0wUuTkEmwXlFYwuW26+6+3xorf4nD3XvA== + dependencies: + "@docsearch/css" "^3.5.2" + "@docsearch/js" "^3.5.2" + "@shikijs/core" "^1.1.5" + "@shikijs/transformers" "^1.1.5" + "@types/markdown-it" "^13.0.7" + "@vitejs/plugin-vue" "^5.0.4" + "@vue/devtools-api" "^7.0.14" + "@vueuse/core" "^10.7.2" + "@vueuse/integrations" "^10.7.2" + focus-trap "^7.5.4" + mark.js "8.11.1" + minisearch "^6.3.0" + shiki "^1.1.5" + vite "^5.1.3" + vue "^3.4.19" + +vue-demi@>=0.14.7: + version "0.14.7" + resolved "https://registry.yarnpkg.com/vue-demi/-/vue-demi-0.14.7.tgz#8317536b3ef74c5b09f268f7782e70194567d8f2" + integrity sha512-EOG8KXDQNwkJILkx/gPcoL/7vH+hORoBaKgGe+6W7VFMvCYJfmF2dGbvgDroVnI8LU7/kTu8mbjRZGBU1z9NTA== + +vue@^3.4.19: + version "3.4.21" + resolved "https://registry.yarnpkg.com/vue/-/vue-3.4.21.tgz#69ec30e267d358ee3a0ce16612ba89e00aaeb731" + integrity sha512-5hjyV/jLEIKD/jYl4cavMcnzKwjMKohureP8ejn3hhEjwhWIhWeuzL2kJAjzl/WyVsgPY56Sy4Z40C3lVshxXA== + dependencies: + "@vue/compiler-dom" "3.4.21" + "@vue/compiler-sfc" "3.4.21" + "@vue/runtime-dom" "3.4.21" + "@vue/server-renderer" "3.4.21" + "@vue/shared" "3.4.21" From 71920538a1ec19173c93d30ff317f3f82058ddc2 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:35:56 +0530 Subject: [PATCH 54/72] Prettier --- .prettierrc.json | 3 + docs/.vitepress/config.mts | 293 ++++++++++-------- docs/.vitepress/theme/custom.css | 28 +- docs/.vitepress/theme/index.js | 6 +- docs/about/company.md | 20 +- docs/about/plans.md | 62 ++-- docs/about/products.md | 61 ++-- docs/about/support.md | 70 ++--- docs/authenticator/index.md | 4 +- docs/authenticator/support/contribute.md | 3 +- docs/de/authenticator/index.md | 5 +- docs/de/authenticator/support/contribute.md | 3 +- docs/photos/features/albums.md | 90 +++--- docs/photos/features/archive.md | 32 +- docs/photos/features/collect.md | 42 +-- docs/photos/features/family-plan.md | 26 +- docs/photos/features/hidden.md | 42 +-- docs/photos/features/location.md | 53 ++-- docs/photos/features/map.md | 54 ++-- docs/photos/features/public-links.md | 11 +- docs/photos/features/quick-link.md | 18 +- docs/photos/features/referral.md | 62 ++-- docs/photos/features/uncategorized.md | 6 +- docs/photos/features/watch-folder.md | 49 +-- docs/photos/import/index.md | 2 +- .../troubleshooting/files-not-uploading.md | 6 +- docs/photos/troubleshooting/report-bug.md | 3 +- .../troubleshooting/video-not-playing.md | 5 +- package.json | 1 + yarn.lock | 5 + 30 files changed, 558 insertions(+), 507 deletions(-) create mode 100644 .prettierrc.json diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000000..0a02bcefda --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,3 @@ +{ + "tabWidth": 4 +} diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.mts index b80f68a751..7a01cba8a8 100644 --- a/docs/.vitepress/config.mts +++ b/docs/.vitepress/config.mts @@ -2,146 +2,175 @@ import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente's Docs", - description: "Help guide for apps from Ente", - head: [ - [ - "link", - { - rel: "apple-touch-icon", - sizes: "180x180", - href: "/apple-touch-icon.png", - }, + title: "Ente's Docs", + description: "Help guide for apps from Ente", + head: [ + [ + "link", + { + rel: "apple-touch-icon", + sizes: "180x180", + href: "/apple-touch-icon.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "32x32", + href: "/favicon-32x32.png", + }, + ], + [ + "link", + { + rel: "icon", + type: "image/png", + sizes: "16x16", + href: "/favicon-16x16.png", + }, + ], ], - [ - "link", - { - rel: "icon", - type: "image/png", - sizes: "32x32", - href: "/favicon-32x32.png", - }, - ], - [ - "link", - { - rel: "icon", - type: "image/png", - sizes: "16x16", - href: "/favicon-16x16.png", - }, - ], - ], - themeConfig: { - // https://vitepress.dev/reference/default-theme-config - editLink: { - pattern: "https://github.com/ente-io/docs/edit/main/docs/:path", + themeConfig: { + // https://vitepress.dev/reference/default-theme-config + editLink: { + pattern: "https://github.com/ente-io/docs/edit/main/docs/:path", + }, + nav: [ + { text: "Photos", link: "/photos/index" }, + { text: "Authenticator", link: "/authenticator/index" }, + ], + search: { + provider: "local", + options: { + detailedView: true, + }, + }, + sidebar: { + "/": sidebarPhotos(), + "/photos/": sidebarPhotos(), + "/common/": sidebarPhotos(), + "/authenticator/": sidebarAuth(), + }, + socialLinks: [ + { icon: "github", link: "https://github.com/ente-io/docs/" }, + ], }, - nav: [ - { text: "Photos", link: "/photos/index" }, - { text: "Authenticator", link: "/authenticator/index" }, - ], - search: { - provider: "local", - options: { - detailedView: true, - }, - }, - sidebar: { - "/": sidebarPhotos(), - "/photos/": sidebarPhotos(), - "/common/": sidebarPhotos(), - "/authenticator/": sidebarAuth(), - }, - socialLinks: [{ icon: "github", link: "https://github.com/ente-io/docs/" }], - }, }); function sidebarPhotos() { - return [ - { - text: "Welcome", - items: [ + return [ { - text: "About", - collapsed: true, - link: "/about/company", - items: [ - { text: "Company", link: "/about/company" }, - { text: "Products", link: "/about/products" }, - { text: "Plans", link: "/about/plans" }, - { text: "Support", link: "/about/support" }, - { text: "Community", link: "/about/community" }, - { text: "Open source", link: "/about/open-source" }, - { text: "Contribute", link: "/about/contribute" }, - ], + text: "Welcome", + items: [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Plans", link: "/about/plans" }, + { text: "Support", link: "/about/support" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, + { + text: "Features", + collapsed: true, + items: [ + { + text: "Family Plan", + link: "/photos/features/family-plan", + }, + { text: "Albums", link: "/photos/features/albums" }, + { text: "Archive", link: "/photos/features/archive" }, + { text: "Hidden", link: "/photos/features/hidden" }, + { text: "Map", link: "/photos/features/map" }, + { + text: "Location Tags", + link: "/photos/features/location", + }, + { + text: "Collect Photos", + link: "/photos/features/collect", + }, + { + text: "Public links", + link: "/photos/features/public-links", + }, + { + text: "Quick link", + link: "/photos/features/quick-link", + }, + { + text: "Watch folder", + link: "/photos/features/watch-folder", + }, + { text: "Trash", link: "/photos/features/trash" }, + { + text: "Uncategorized", + link: "/photos/features/uncategorized", + }, + { + text: "Referral Plan", + link: "/photos/features/referral", + }, + { + text: "Live & Motion Photos", + link: "/photos/features/live-photos", + }, + { text: "Cast", link: "/photos/features/cast" }, + ], + }, + { + text: "Troubleshoot", + collapsed: true, + link: "/photos/troubleshooting/files-not-uploading", + items: [ + { + text: "Files not uploading", + link: "/photos/troubleshooting/files-not-uploading", + }, + { + text: "Failed to play video", + link: "/photos/troubleshooting/video-not-playing", + }, + { + text: "Report bug", + link: "/photos/troubleshooting/report-bug", + }, + ], + }, + ], }, - { - text: "Features", - collapsed: true, - items: [ - { text: "Family Plan", link: "/photos/features/family-plan" }, - { text: "Albums", link: "/photos/features/albums" }, - { text: "Archive", link: "/photos/features/archive" }, - { text: "Hidden", link: "/photos/features/hidden" }, - { text: "Map", link: "/photos/features/map" }, - { text: "Location Tags", link: "/photos/features/location" }, - { text: "Collect Photos", link: "/photos/features/collect" }, - { text: "Public links", link: "/photos/features/public-links" }, - { text: "Quick link", link: "/photos/features/quick-link" }, - { text: "Watch folder", link: "/photos/features/watch-folder" }, - { text: "Trash", link: "/photos/features/trash" }, - { text: "Uncategorized", link: "/photos/features/uncategorized" }, - { text: "Referral Plan", link: "/photos/features/referral" }, - { - text: "Live & Motion Photos", - link: "/photos/features/live-photos", - }, - { text: "Cast", link: "/photos/features/cast" }, - ], - }, - { - text: "Troubleshoot", - collapsed: true, - link: "/photos/troubleshooting/files-not-uploading", - items: [ - { - text: "Files not uploading", - link: "/photos/troubleshooting/files-not-uploading", - }, - { - text: "Failed to play video", - link: "/photos/troubleshooting/video-not-playing", - }, - { text: "Report bug", link: "/photos/troubleshooting/report-bug" }, - ], - }, - ], - }, - ]; + ]; } function sidebarAuth() { - return [ - { - text: "About", - collapsed: true, - link: "/about/company", - items: [ - { text: "Company", link: "/about/company" }, - { text: "Products", link: "/about/products" }, - { text: "Community", link: "/about/community" }, - { text: "Open source", link: "/about/open-source" }, - { text: "Contribute", link: "/about/contribute" }, - ], - }, - { - text: "FAQ", - link: "/authenticator/faq/faq", - }, - { - text: "Contribute", - link: "/authenticator/support/contribute", - }, - ]; + return [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, + { + text: "FAQ", + link: "/authenticator/faq/faq", + }, + { + text: "Contribute", + link: "/authenticator/support/contribute", + }, + ]; } diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index bf82b54e26..fcd23a4a6c 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,16 +1,16 @@ :root { - --vp-theme-color: #1DB954; - --vp-c-brand: #1DB954; - --vp-c-brand-1: #1DB954; - --vp-c-brand-2: #00B33C; - --vp-home-hero-name-color: #1DB954; - --vp-c-brand-light: #1DB954; - --vp-button-brand-border: #1DB954; - --vp-button-brand-bg: #1DB954; - --vp-button-brand-text: #191919; - --vp-button-brand-hover-border: #00B33C; - --vp-button-brand-hover-bg: #191919; - --vp-button-brand-hover-text: #e5e5e5; - --vp-local-search-highlight-bg: #1DB954; - --docsearch-hit-active-color: #191919; + --vp-theme-color: #1db954; + --vp-c-brand: #1db954; + --vp-c-brand-1: #1db954; + --vp-c-brand-2: #00b33c; + --vp-home-hero-name-color: #1db954; + --vp-c-brand-light: #1db954; + --vp-button-brand-border: #1db954; + --vp-button-brand-bg: #1db954; + --vp-button-brand-text: #191919; + --vp-button-brand-hover-border: #00b33c; + --vp-button-brand-hover-bg: #191919; + --vp-button-brand-hover-text: #e5e5e5; + --vp-local-search-highlight-bg: #1db954; + --docsearch-hit-active-color: #191919; } diff --git a/docs/.vitepress/theme/index.js b/docs/.vitepress/theme/index.js index 42fe9a9361..c495bc1b8d 100644 --- a/docs/.vitepress/theme/index.js +++ b/docs/.vitepress/theme/index.js @@ -1,4 +1,4 @@ -import DefaultTheme from 'vitepress/theme' -import './custom.css' +import DefaultTheme from "vitepress/theme"; +import "./custom.css"; -export default DefaultTheme +export default DefaultTheme; diff --git a/docs/about/company.md b/docs/about/company.md index 2b693e429e..03f9b9d2aa 100644 --- a/docs/about/company.md +++ b/docs/about/company.md @@ -1,9 +1,11 @@ -# About -On February 1, 2020, Ente was born out of the necessity for a secure archival solution for personal photos and videos. Founded by Vishnu Mohandas in response to privacy concerns with major tech companies, Ente provides end-to-end encrypted apps across platforms. - -The team at Ente aims to contribute to making the world a safer place for the preservation of personal memories. The road ahead is long, but the journey has started, fueled by a commitment to privacy and a deep sense of responsibility towards the users we serve. - -In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon - -# What does Ente mean? -"Ente" holds dual significance for us. In Malayalam, the native language of our founder, it translates to "mine," giving "ente Photos" the direct meaning of "my photos." Additionally, our founder discovered that "ente" means "duck" in German. This unexpected connection led to the adoption of the duck as our mascot and we lovingly refer to our mascot as "Ducky," +# About + +On February 1, 2020, Ente was born out of the necessity for a secure archival solution for personal photos and videos. Founded by Vishnu Mohandas in response to privacy concerns with major tech companies, Ente provides end-to-end encrypted apps across platforms. + +The team at Ente aims to contribute to making the world a safer place for the preservation of personal memories. The road ahead is long, but the journey has started, fueled by a commitment to privacy and a deep sense of responsibility towards the users we serve. + +In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon + +# What does Ente mean? + +"Ente" holds dual significance for us. In Malayalam, the native language of our founder, it translates to "mine," giving "ente Photos" the direct meaning of "my photos." Additionally, our founder discovered that "ente" means "duck" in German. This unexpected connection led to the adoption of the duck as our mascot and we lovingly refer to our mascot as "Ducky," diff --git a/docs/about/plans.md b/docs/about/plans.md index ec35cf15b6..e02e77d225 100644 --- a/docs/about/plans.md +++ b/docs/about/plans.md @@ -1,30 +1,32 @@ -# Ente plans : Tailored for Every User -At ente, we understand that each user is unique, and so are their storage needs. Our range of plans is designed to cater to a diverse to diverse users, ensuring everyone finds the perfect fit for their requirements. - - -## Basic plan -- Monthly plan ₹49 -- Yearly plan ₹499 -- Storage: 10 GB -- Ideal for casual users with limited storage needs. - -## Standard plan -- Monthly plan ₹299 -- Yearly plan ₹2999 -- Storage: 100 Gb -- Perfect for enthusiasts who capture and store more photos. - -## Popular plan -- Monthly plan ₹799 -- Yearly plan ₹7999 -- Storage: 500Gb -- Tailored for most users, Offering a balanced mix of storage and value. - -- ## Pro plan -- Monthly plan ₹1799 -- Yearly plan ₹17999 -- Storage: 2000GB -- Crafted for professionals, heavy users and content creators. - - -#### Select the plan aligns with your needs, whether you're an occasional snapper or a content maestro. +# Ente plans : Tailored for Every User + +At ente, we understand that each user is unique, and so are their storage needs. Our range of plans is designed to cater to a diverse to diverse users, ensuring everyone finds the perfect fit for their requirements. + +## Basic plan + +- Monthly plan ₹49 +- Yearly plan ₹499 +- Storage: 10 GB +- Ideal for casual users with limited storage needs. + +## Standard plan + +- Monthly plan ₹299 +- Yearly plan ₹2999 +- Storage: 100 Gb +- Perfect for enthusiasts who capture and store more photos. + +## Popular plan + +- Monthly plan ₹799 +- Yearly plan ₹7999 +- Storage: 500Gb +- Tailored for most users, Offering a balanced mix of storage and value. + +- ## Pro plan +- Monthly plan ₹1799 +- Yearly plan ₹17999 +- Storage: 2000GB +- Crafted for professionals, heavy users and content creators. + +#### Select the plan aligns with your needs, whether you're an occasional snapper or a content maestro. diff --git a/docs/about/products.md b/docs/about/products.md index d5509bd33c..a5a6ecd7b5 100644 --- a/docs/about/products.md +++ b/docs/about/products.md @@ -1,33 +1,28 @@ -# Ente products - -In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon - -# Ente photos -Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and the safety of your cherished memories. All your photos, along with their metadata, are stored end-to-end encrypted, ensuring that only you have access to your data. - -To fortify the security of your memories, Ente preserves your encrypted photos across three different clouds in three separate locations, including an underground fallout shelter. This multi-layered backup strategy guarantees the utmost safety for your data. - -Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. - -Ente Photos is not just a storage solution; it's a commitment to safeguarding your memories. - -# Ente auth - - Ente auth is not just an authenticator app; it's an open-source initiative dedicated to securing your 2FA secrets. Now, you can backup and view your two-factor authentication secrets seamlessly. - find more information about the project on GitHub at github.com/ente-io/auth. - -As a token of gratitude to the community that has supported us, Ente Auth is offered as a free service. In the spirit of transparency, If in the future we convert this to a paid service, existing users will be grandfathered in. - -Ente auth is available on Android, iOS, and the web - -# Ente lockers (coming soon) -Ente Lockers is more than just a file storage solution; it's a purpose-driven platform designed to redefine how you manage crucial documents in your life. With a straightforward interface, it ensures easy access to files that matter the most—those frequently needed and intended for future generations. - -Stay tuned for our upcoming product end-to-end encryption file storage app, currently under construction! - - - - - - - +# Ente products + +In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon + +# Ente photos + +Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and the safety of your cherished memories. All your photos, along with their metadata, are stored end-to-end encrypted, ensuring that only you have access to your data. + +To fortify the security of your memories, Ente preserves your encrypted photos across three different clouds in three separate locations, including an underground fallout shelter. This multi-layered backup strategy guarantees the utmost safety for your data. + +Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. + +Ente Photos is not just a storage solution; it's a commitment to safeguarding your memories. + +# Ente auth + +Ente auth is not just an authenticator app; it's an open-source initiative dedicated to securing your 2FA secrets. Now, you can backup and view your two-factor authentication secrets seamlessly. +find more information about the project on GitHub at github.com/ente-io/auth. + +As a token of gratitude to the community that has supported us, Ente Auth is offered as a free service. In the spirit of transparency, If in the future we convert this to a paid service, existing users will be grandfathered in. + +Ente auth is available on Android, iOS, and the web + +# Ente lockers (coming soon) + +Ente Lockers is more than just a file storage solution; it's a purpose-driven platform designed to redefine how you manage crucial documents in your life. With a straightforward interface, it ensures easy access to files that matter the most—those frequently needed and intended for future generations. + +Stay tuned for our upcoming product end-to-end encryption file storage app, currently under construction! diff --git a/docs/about/support.md b/docs/about/support.md index 5bed7327f0..126c9a1128 100644 --- a/docs/about/support.md +++ b/docs/about/support.md @@ -1,35 +1,35 @@ -# Connect with Ente - - - -## Customer support -Connect with our support team for swift assistance and expert guidance email us @support@ente.io. -Reach out to our dev team @team@ente.io, even our CEO and CTO personally responds here. - -## Blog -As Ente continues to evolve, So does our story. Follow our blog @ https://ente.io/blog As Ente undergoes continuous growth and development, our narrative unfolds. Explore our blog for exclusive company updates that offer an insider's perspective. -Regularly visit the Ente blog to maintain your connection, stay well informed, and draw insipration. - -## Roadmap -You plays a pivotal role in shaping the future direction of Ente's product, and we invite you to be an integral part of it. - -Take a look at our roadmap to see where we're headed https://roadmap.ente.io/roadmap/ - - -# Community -#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content - -#### Discord -Join our Discord for real-time discussions, solutions to queries, and a thriving camaraderie. Stay updated on all things on Ente! - - -🐦 Twitter: https://twitter.com/enteio - -🔗 Reddit: https://www.reddit.com/r/enteio - -📸 Instagram: https://www.instagram.com/ente.app/ - -🐘 Mastodon: https://mstdn.social/@ente - -🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ - +# Connect with Ente + +## Customer support + +Connect with our support team for swift assistance and expert guidance email us @support@ente.io. +Reach out to our dev team @team@ente.io, even our CEO and CTO personally responds here. + +## Blog + +As Ente continues to evolve, So does our story. Follow our blog @ https://ente.io/blog As Ente undergoes continuous growth and development, our narrative unfolds. Explore our blog for exclusive company updates that offer an insider's perspective. +Regularly visit the Ente blog to maintain your connection, stay well informed, and draw insipration. + +## Roadmap + +You plays a pivotal role in shaping the future direction of Ente's product, and we invite you to be an integral part of it. + +Take a look at our roadmap to see where we're headed https://roadmap.ente.io/roadmap/ + +# Community + +#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content + +#### Discord + +Join our Discord for real-time discussions, solutions to queries, and a thriving camaraderie. Stay updated on all things on Ente! + +🐦 Twitter: https://twitter.com/enteio + +🔗 Reddit: https://www.reddit.com/r/enteio + +📸 Instagram: https://www.instagram.com/ente.app/ + +🐘 Mastodon: https://mstdn.social/@ente + +🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ diff --git a/docs/authenticator/index.md b/docs/authenticator/index.md index 7b85819bb0..edca84ab71 100644 --- a/docs/authenticator/index.md +++ b/docs/authenticator/index.md @@ -7,8 +7,6 @@ We're glad you're here! If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. - - Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. ## Contributing @@ -18,4 +16,4 @@ This documentation is open source at our [Ente Docs](https://github.com/ente-io/ We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) before making a Pull Request. -Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! \ No newline at end of file +Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! diff --git a/docs/authenticator/support/contribute.md b/docs/authenticator/support/contribute.md index 76412cfca4..4b89a6c9d4 100644 --- a/docs/authenticator/support/contribute.md +++ b/docs/authenticator/support/contribute.md @@ -1,8 +1,7 @@ ## Translation - ## Icons ## Support Development -If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) \ No newline at end of file +If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/de/authenticator/index.md b/docs/de/authenticator/index.md index 873e8bf9f1..ef21a11ac0 100644 --- a/docs/de/authenticator/index.md +++ b/docs/de/authenticator/index.md @@ -1,6 +1,5 @@ # Willkommen beim Ente Authenticator-Benutzerhandbuch! - Ente Authenticator ist eine kostenlose, plattformübergreifende, Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, dass du hier bist! @@ -8,8 +7,6 @@ Wir sind froh, dass du hier bist! If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. - - Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. ## Contributing @@ -19,4 +16,4 @@ This documentation is open source at our [Ente Docs](https://github.com/ente-io/ We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) before making a Pull Request. -Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! \ No newline at end of file +Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! diff --git a/docs/de/authenticator/support/contribute.md b/docs/de/authenticator/support/contribute.md index 76412cfca4..4b89a6c9d4 100644 --- a/docs/de/authenticator/support/contribute.md +++ b/docs/de/authenticator/support/contribute.md @@ -1,8 +1,7 @@ ## Translation - ## Icons ## Support Development -If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) \ No newline at end of file +If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md index 19f2e3f75e..d12b259aa0 100644 --- a/docs/photos/features/albums.md +++ b/docs/photos/features/albums.md @@ -1,55 +1,65 @@ # Albums -This guide will show you how to make the most of your albums with simple yet effective features. -Below are the features that allow you to personailze your albums according to your preferences: -## 1. Rename album: Personalize your albums by giving them a meaningful name - ### How to Rename an album on your mobile? - - Open the album - - Tap the three dots button in the top right corner of the screen - - Tap rename album, then type in a new name - - Tap on Rename button -### How to Rename an album on your Desktop? -- Open the album -- Click on the overflow menu in the top right corner -- Click the Rename album -- Type in a new name -- Click on Rename or Press enter +This guide will show you how to make the most of your albums with simple yet effective features. +Below are the features that allow you to personailze your albums according to your preferences: + +## 1. Rename album: Personalize your albums by giving them a meaningful name + +### How to Rename an album on your mobile? + +- Open the album +- Tap the three dots button in the top right corner of the screen +- Tap rename album, then type in a new name +- Tap on Rename button + +### How to Rename an album on your Desktop? + +- Open the album +- Click on the overflow menu in the top right corner +- Click the Rename album +- Type in a new name +- Click on Rename or Press enter + ## 2. Set cover: Select any photo you want to use as the cover for your album. ### How to set an album cover on mobile? -- Open the album you want to change -- Tap the three dots button in the top right corner -- From the menu options, select Set cover -- A new screen will appear, propmpting you to select the cover photo -- Browse through your photos and tap on the image you want to set as the album cover -- Then tap on Use selected photo - ## 3. Map: Explore the memories based on their location + +- Open the album you want to change +- Tap the three dots button in the top right corner +- From the menu options, select Set cover +- A new screen will appear, propmpting you to select the cover photo +- Browse through your photos and tap on the image you want to set as the album cover +- Then tap on Use selected photo + +## 3. Map: Explore the memories based on their location ### How to explore the album's photo in map view? -- Open the album -- Tap on the three dots button in the top right corner -- Select map -- View all photos of the album in map view + +- Open the album +- Tap on the three dots button in the top right corner +- Select map +- View all photos of the album in map view + ## 4. Sort by: Maintain order in your albums by arranging them from the newest to the oldest ### How to sort by on mobile? -- Open the album -- Tap on the three dots button in the top right corner -- Select sort by -- Tap on the Newst first for the latest, Or Oldest first for the oldest + +- Open the album +- Tap on the three dots button in the top right corner +- Select sort by +- Tap on the Newst first for the latest, Or Oldest first for the oldest + ### How to sort by on desktop? -- Open the album -- Click on the three dots button in the top right corner -- Click sort by -- Click on the Newest first for the latest, Or oldest first for the oldest + +- Open the album +- Click on the three dots button in the top right corner +- Click sort by +- Click on the Newest first for the latest, Or oldest first for the oldest + ## 5. Pin album: Keep your favorite album at the top by pinning them for quick access. ### How to Pin/Unpin an album on Mobile? -- Open the album -- Tap on the three dots button in the top right corner -- Tap on Pin album/Unpin album - - - - +- Open the album +- Tap on the three dots button in the top right corner +- Tap on Pin album/Unpin album diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md index 849e136e00..e10f981924 100644 --- a/docs/photos/features/archive.md +++ b/docs/photos/features/archive.md @@ -2,40 +2,40 @@ You can remove a photo (owned by you) or an album from your **home timeline** by archiving it. Archived photos won't be included in the memories section on the mobile app. -- All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. -- You can archive albums that are owned by you or shared with you. -- Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. +- All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. +- You can archive albums that are owned by you or shared with you. +- Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. ### How to #### Archive Album -- Open the album -- Click on the overflow menu -- Click on Archive album +- Open the album +- Click on the overflow menu +- Click on Archive album #### Archive Photo -- Long press to select the photo -- Select Archive option from the bottom menu. +- Long press to select the photo +- Select Archive option from the bottom menu. #### View Archived Photos and Albums **Mobile** -- Go to Albums tab -- Scroll down to bottom -- Click on Archive button. +- Go to Albums tab +- Scroll down to bottom +- Click on Archive button. **Desktop** -- Click on the topleft hamburger menu -- Click on Archive +- Click on the topleft hamburger menu +- Click on Archive ### Metadata Privacy Both Ente and the person with whom you are sharing an album or photo have no information about whether you have -- Archived a photo -- Archived an album -- Archived a shared album. +- Archived a photo +- Archived an album +- Archived a shared album. diff --git a/docs/photos/features/collect.md b/docs/photos/features/collect.md index fd4b64fb6e..1d0bdbbe8d 100644 --- a/docs/photos/features/collect.md +++ b/docs/photos/features/collect.md @@ -1,18 +1,24 @@ -# Collect photos: Collecting memories from events is now a breeze! -- Whether it's a birthday party, vacation trip or wedding, easily share your album using a unique, secure, end-to-end encrypted link. -- Introduce the 'collect photos' feature to your friends and family who can contribute without an ente account. -- This allows them to effortlessly add, view, and download photos from the link without an ente account. -- Also preserves metadata and photo quality -## How to Collect photos on mobile? -- Open the album you want to share with -- Tap on the Share album icon in the top right corner of the screen -- Select 'Collect photos' -- Tap 'Copy link' -- The link has been copied to your clipboard. Now, feel free to share it -## How to Collect photos on Web/Desktop? -To collect photos on the web/desktop: -- Open the album -- Click on the share album icon -- Select Collect photos -- Click on Copy link -- The link has been copied to your clipboard. Share it effortlessly with others! +# Collect photos: Collecting memories from events is now a breeze! + +- Whether it's a birthday party, vacation trip or wedding, easily share your album using a unique, secure, end-to-end encrypted link. +- Introduce the 'collect photos' feature to your friends and family who can contribute without an ente account. +- This allows them to effortlessly add, view, and download photos from the link without an ente account. +- Also preserves metadata and photo quality + +## How to Collect photos on mobile? + +- Open the album you want to share with +- Tap on the Share album icon in the top right corner of the screen +- Select 'Collect photos' +- Tap 'Copy link' +- The link has been copied to your clipboard. Now, feel free to share it + +## How to Collect photos on Web/Desktop? + +To collect photos on the web/desktop: + +- Open the album +- Click on the share album icon +- Select Collect photos +- Click on Copy link +- The link has been copied to your clipboard. Share it effortlessly with others! diff --git a/docs/photos/features/family-plan.md b/docs/photos/features/family-plan.md index b986e80308..8856ce7cfa 100644 --- a/docs/photos/features/family-plan.md +++ b/docs/photos/features/family-plan.md @@ -1,13 +1,13 @@ -# Family plans - -Paid subscribers of Ente can share the storage with their family, **at no additional cost** as you have already paid for the storage. - -In breif, - -- Your family members can use storage space from your plan without paying extra. - -- Ask them to sign up for Ente, and then just add them to your existing plan using the "Manage family" option within your Subscription settings. - -- Each member gets their own private space, and cannot see each other's files unless they're shared. - -- You can invite 5 family members. So including yourself, it will be 6 people who can share a single subscription, paying only once. +# Family plans + +Paid subscribers of Ente can share the storage with their family, **at no additional cost** as you have already paid for the storage. + +In breif, + +- Your family members can use storage space from your plan without paying extra. + +- Ask them to sign up for Ente, and then just add them to your existing plan using the "Manage family" option within your Subscription settings. + +- Each member gets their own private space, and cannot see each other's files unless they're shared. + +- You can invite 5 family members. So including yourself, it will be 6 people who can share a single subscription, paying only once. diff --git a/docs/photos/features/hidden.md b/docs/photos/features/hidden.md index 055556e468..05b7a8c5ad 100644 --- a/docs/photos/features/hidden.md +++ b/docs/photos/features/hidden.md @@ -2,49 +2,49 @@ You can further protect extra sensitive photos or albums by hiding them. Hidden photos or albums will **only be viewable** after an extra layer of authentication inside the app. Hidden differs from [Archive](./archive.md) in the fact that hidden photos won't be surfaced anywhere in the app without explicit authentication, whereas Archive only removes them from the home timeline and memories sections. -- Hidden photos and albums will be removed from home timelines, memories, albums tab, search results, and any other visable place in the app. -- Hidden photos will be removed from all regular albums. If you want to unhide again you will have to specify the album to move it to. -- You cannot hide photos or albums shared with you. You can archive shared albums instead. +- Hidden photos and albums will be removed from home timelines, memories, albums tab, search results, and any other visable place in the app. +- Hidden photos will be removed from all regular albums. If you want to unhide again you will have to specify the album to move it to. +- You cannot hide photos or albums shared with you. You can archive shared albums instead. ### How to #### Hide album -- Open the album -- Click on the overflow menu -- Click on Hide album +- Open the album +- Click on the overflow menu +- Click on Hide album #### Hide photo -- Select the photo -- Click on Hide option from the select menu +- Select the photo +- Click on Hide option from the select menu #### View hidden photos and albums _Mobile_: -- Go to Albums tab -- Scroll down to bottom -- Click on Hidden button -- Authenticate in app +- Go to Albums tab +- Scroll down to bottom +- Click on Hidden button +- Authenticate in app _Desktop_: -- Click on the topleft hamburger menu -- Click on Hidden -- Authenticate in app +- Click on the topleft hamburger menu +- Click on Hidden +- Authenticate in app #### Unhide album -- Open the hidden album -- Click on the overflow menu -- Click on Unhide album +- Open the hidden album +- Click on the overflow menu +- Click on Unhide album #### Unhide photo -- Select the hidden photo -- Click on Unhide option from the select menu -- Click on the album the photo should be restored to +- Select the hidden photo +- Click on Unhide option from the select menu +- Click on the album the photo should be restored to ### Metadata Privacy diff --git a/docs/photos/features/location.md b/docs/photos/features/location.md index 88193d1843..66f70119f3 100644 --- a/docs/photos/features/location.md +++ b/docs/photos/features/location.md @@ -1,25 +1,28 @@ -# Location Tags: Search and Organize Your Photos - -## Overview: -The Location Tags feature allows you to efficiently search and organize your photos based on their geographical location. Instead of sending your queries to our servers, we've implemented a privacy-friendly solution that runs searches locally on your device. - -## How to Use Location Tags: - -### Method 1: Adding Location Tags from a Photo -1. Open a photo. -2. Click on "Info." -3. Select "Add Location." -4. Enter the location name and define a radius. - -### Method 2: Adding Location Tags from the Search Tab -1. Go to the search tab. -2. Click on "Add new" at the end of the location tags section. -3. Select a photo as the center point for the location tag. -4. Enter the location name and define a radius. - -## Note: -- The app will automatically cluster photos falling within a radius under a specified location. -- Location Tags provide a seamless way to filter photos without compromising your privacy. -- Location tags are stored end-to-end encrypted, ensuring the security of your data. -- Enjoy a more organized photo library by tagging important places like home, office, and vacation spots. - +# Location Tags: Search and Organize Your Photos + +## Overview: + +The Location Tags feature allows you to efficiently search and organize your photos based on their geographical location. Instead of sending your queries to our servers, we've implemented a privacy-friendly solution that runs searches locally on your device. + +## How to Use Location Tags: + +### Method 1: Adding Location Tags from a Photo + +1. Open a photo. +2. Click on "Info." +3. Select "Add Location." +4. Enter the location name and define a radius. + +### Method 2: Adding Location Tags from the Search Tab + +1. Go to the search tab. +2. Click on "Add new" at the end of the location tags section. +3. Select a photo as the center point for the location tag. +4. Enter the location name and define a radius. + +## Note: + +- The app will automatically cluster photos falling within a radius under a specified location. +- Location Tags provide a seamless way to filter photos without compromising your privacy. +- Location tags are stored end-to-end encrypted, ensuring the security of your data. +- Enjoy a more organized photo library by tagging important places like home, office, and vacation spots. diff --git a/docs/photos/features/map.md b/docs/photos/features/map.md index c622eb4b75..5e050c1dae 100644 --- a/docs/photos/features/map.md +++ b/docs/photos/features/map.md @@ -1,25 +1,29 @@ -# Map : View and explore your photos on the map - -## How can I view photos on the map on mobile? -- Step 1. Find the search icon located at the bottom right corner of your screen. -- Step 2. Tap on the globe icon (Your map) withing the location -- Step 3. Enter the map view and start exploring your photos from around the world. - -## How to enable map on your mobile app? -- Step 1. Tap the three horizontal lines located at the top left corner of your home screen or swipe left on the home screen. -- Step 2. Select "General" settings. -- Step 3. Enter the "Advanced" settings. -- Step 4. Use the toggle switch to turn the map feature on or off - -## How to view Album photos on the map? -- Step 1. Open the album containing the photos you want to view -- Step 2. Tap on the three horizontal lines located in the top right corner of the screen. -- Step 3. Select "Map" from the options. -- Step 4. View and explore your photos on the map. - -## How to enable map on desktop? -- Step 1. Click on the three horizontal lines located in the top left corner of the app. -- Step 2. Navigate to "preferences" from the menu. -- Step 3. Select "Advanced" in the preference menu. -- Step 4. Click on "Map" to access map settings. -- Step 5. Toggle the map settings on and off based on your preferences. +# Map : View and explore your photos on the map + +## How can I view photos on the map on mobile? + +- Step 1. Find the search icon located at the bottom right corner of your screen. +- Step 2. Tap on the globe icon (Your map) withing the location +- Step 3. Enter the map view and start exploring your photos from around the world. + +## How to enable map on your mobile app? + +- Step 1. Tap the three horizontal lines located at the top left corner of your home screen or swipe left on the home screen. +- Step 2. Select "General" settings. +- Step 3. Enter the "Advanced" settings. +- Step 4. Use the toggle switch to turn the map feature on or off + +## How to view Album photos on the map? + +- Step 1. Open the album containing the photos you want to view +- Step 2. Tap on the three horizontal lines located in the top right corner of the screen. +- Step 3. Select "Map" from the options. +- Step 4. View and explore your photos on the map. + +## How to enable map on desktop? + +- Step 1. Click on the three horizontal lines located in the top left corner of the app. +- Step 2. Navigate to "preferences" from the menu. +- Step 3. Select "Advanced" in the preference menu. +- Step 4. Click on "Map" to access map settings. +- Step 5. Toggle the map settings on and off based on your preferences. diff --git a/docs/photos/features/public-links.md b/docs/photos/features/public-links.md index 1c52febb05..3610be469d 100644 --- a/docs/photos/features/public-links.md +++ b/docs/photos/features/public-links.md @@ -3,7 +3,7 @@ Ente lets you share your photos via links, that can be accessed by anyone, without an app or account. -The contents within these links are also end-to-end encrypted. +The contents within these links are also end-to-end encrypted. > Implementation details have been > documented [here](https://ente.io/blog/building-shareable-links/). @@ -12,7 +12,8 @@ You can also use these links to collect photos from your friends after a party or event. Everything they add also remains end-to-end encrypted. In addition to this, links support the following features: -- Link expiry (so the links go poof after a duration you define) -- Device limits (in case you don't want someone to forwarding your link) -- Password lock (to add an additional level of protection to your photos) -- Prevent downloads (while we can't prevent screenshots, we can disable the option to download your original photos) + +- Link expiry (so the links go poof after a duration you define) +- Device limits (in case you don't want someone to forwarding your link) +- Password lock (to add an additional level of protection to your photos) +- Prevent downloads (while we can't prevent screenshots, we can disable the option to download your original photos) diff --git a/docs/photos/features/quick-link.md b/docs/photos/features/quick-link.md index 09fbc2f180..19d75b1072 100644 --- a/docs/photos/features/quick-link.md +++ b/docs/photos/features/quick-link.md @@ -1,10 +1,8 @@ -# Quick Links - -Quick links allows you to select single or multiple photos & create a link. Behind the scene, ente creates a special album and put all the selected files in that special album. - -* You can view all quick links created by you in the sharing tab, under Quick links section. -* Quick links can be converted to regular album. -* Remove link will not delete the photos that are present in that link. -* Similar to [public-links](./public-links.md), you can set link expirty, set passwords or device limits. - - +# Quick Links + +Quick links allows you to select single or multiple photos & create a link. Behind the scene, ente creates a special album and put all the selected files in that special album. + +- You can view all quick links created by you in the sharing tab, under Quick links section. +- Quick links can be converted to regular album. +- Remove link will not delete the photos that are present in that link. +- Similar to [public-links](./public-links.md), you can set link expirty, set passwords or device limits. diff --git a/docs/photos/features/referral.md b/docs/photos/features/referral.md index fa4616fca7..00d66a869f 100644 --- a/docs/photos/features/referral.md +++ b/docs/photos/features/referral.md @@ -1,28 +1,34 @@ -# Referral plan: Earn and Expand Your Storage - -## Overview: -Did you know you can boost your storage on Ente simply by referring your friends? Our referral program lets you earn 10 GB of free storage for each friend who upgrades to a paid plan, and your referred friends receive an additional 10 GB with their subscription. - -## How to Refer a friend? - On the Home Page: -- Click on the hamburger menu in the top left corner -- Open the sidebar -- Tap on 'General' -- Select Referrals -- Share the code with your friend or family - - Note: -- Once your friend upgrades to a paid plan, both you and your friend receive an additional 10 GB of storage -- Keep track of your earned storage and referral details on Claim free storage screen -- If you refer more friends than your plan allows, the extra storage earned will be reserved until you upgrade your plan -- Earned storage remains accessible as long as your subscription is active - -## How to apply Refferal code of a friend? - On the Home Page: -- Click on the hamburger menu inthe top left corner -- Tap on 'General' from the options -- Select 'Referrals' from the menu -- Find and tap on 'Apply Code.' -- Enter the referral code provided by your friend. - -Note: Please note that referral codes should be applied within one month of account creation to claim free storage. +# Referral plan: Earn and Expand Your Storage + +## Overview: + +Did you know you can boost your storage on Ente simply by referring your friends? Our referral program lets you earn 10 GB of free storage for each friend who upgrades to a paid plan, and your referred friends receive an additional 10 GB with their subscription. + +## How to Refer a friend? + +On the Home Page: + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Tap on 'General' +- Select Referrals +- Share the code with your friend or family + +Note: + +- Once your friend upgrades to a paid plan, both you and your friend receive an additional 10 GB of storage +- Keep track of your earned storage and referral details on Claim free storage screen +- If you refer more friends than your plan allows, the extra storage earned will be reserved until you upgrade your plan +- Earned storage remains accessible as long as your subscription is active + +## How to apply Refferal code of a friend? + +On the Home Page: + +- Click on the hamburger menu inthe top left corner +- Tap on 'General' from the options +- Select 'Referrals' from the menu +- Find and tap on 'Apply Code.' +- Enter the referral code provided by your friend. + +Note: Please note that referral codes should be applied within one month of account creation to claim free storage. diff --git a/docs/photos/features/uncategorized.md b/docs/photos/features/uncategorized.md index 7a9d79b725..ea84b22002 100644 --- a/docs/photos/features/uncategorized.md +++ b/docs/photos/features/uncategorized.md @@ -2,13 +2,11 @@ "Uncategorized" is a special album type where photos are automatically added under the following circumstances: -- When you remove a photo from the last album, it is relocated to "Uncategorized." -- During album deletion, if you choose to keep photos but delete the album, all photos exclusive to the current album are moved to the "Uncategorized" section. +- When you remove a photo from the last album, it is relocated to "Uncategorized." +- During album deletion, if you choose to keep photos but delete the album, all photos exclusive to the current album are moved to the "Uncategorized" section. Note: This does not include photos uploaded by others. - - ### Clean up Uncategorized In the mobile app, you can click on the overflow menu and click `Clean Uncategorized` option. All files that are also present in another album, that is owned by the user, will be removed from the Uncategorized section. diff --git a/docs/photos/features/watch-folder.md b/docs/photos/features/watch-folder.md index efe78934a4..86d4b330d2 100644 --- a/docs/photos/features/watch-folder.md +++ b/docs/photos/features/watch-folder.md @@ -1,23 +1,26 @@ -# Watched Folders: Effortless Syncing - -## Overview: - -The ente desktop app now allows you to "watch" a folder on your computer for any changes, creating a one-way sync from your device to the Ente cloud. This will make photo management and backup a breeze. - -## How to add Watch folders? -- Click on the hamburger menu in the top left corner -- Open the sidebar -- Select "Watch Folders" -- Choose "Add Watch Folders" -- Pick the folder from your system that you want to add as Watch folder - -## How to remove Watch folders? -- Click on the hamburger menu in the top left corner -- Open the sidebar -- Select "Watch Folders" -- Click on the three dots menu next to the folders on the right side -- Choose "Stop Watching" from the menu - -# Note: -- Option to choose whether to sync nested folders to a single album or separate albums. -- The app continuously monitors changes in the watched folder, such as the addition or removal of files +# Watched Folders: Effortless Syncing + +## Overview: + +The ente desktop app now allows you to "watch" a folder on your computer for any changes, creating a one-way sync from your device to the Ente cloud. This will make photo management and backup a breeze. + +## How to add Watch folders? + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Choose "Add Watch Folders" +- Pick the folder from your system that you want to add as Watch folder + +## How to remove Watch folders? + +- Click on the hamburger menu in the top left corner +- Open the sidebar +- Select "Watch Folders" +- Click on the three dots menu next to the folders on the right side +- Choose "Stop Watching" from the menu + +# Note: + +- Option to choose whether to sync nested folders to a single album or separate albums. +- The app continuously monitors changes in the watched folder, such as the addition or removal of files diff --git a/docs/photos/import/index.md b/docs/photos/import/index.md index 44a35f1572..9ecf368dd5 100644 --- a/docs/photos/import/index.md +++ b/docs/photos/import/index.md @@ -1 +1 @@ -# Import \ No newline at end of file +# Import diff --git a/docs/photos/troubleshooting/files-not-uploading.md b/docs/photos/troubleshooting/files-not-uploading.md index 8f7addf4fe..4953a3cae9 100644 --- a/docs/photos/troubleshooting/files-not-uploading.md +++ b/docs/photos/troubleshooting/files-not-uploading.md @@ -1,16 +1,12 @@ - ## Network Issue -If you are using VPN, please try disabling the VPN or switching provider. - +If you are using VPN, please try disabling the VPN or switching provider. ## Web/Desktop - **Certain file types are not uploading** The desktop/web app tries to detect if a particular file is video or image. If the detection fails, then the app skips the upload. Please share either the sample file or logs with us @support.ente.io - ## Mobile diff --git a/docs/photos/troubleshooting/report-bug.md b/docs/photos/troubleshooting/report-bug.md index 0f1996ef89..239cb30d9e 100644 --- a/docs/photos/troubleshooting/report-bug.md +++ b/docs/photos/troubleshooting/report-bug.md @@ -2,7 +2,6 @@ Guide to help the user in sharing logs. - ### Mobile Placeholder @@ -13,4 +12,4 @@ Placeholder ### Web -Placeholder \ No newline at end of file +Placeholder diff --git a/docs/photos/troubleshooting/video-not-playing.md b/docs/photos/troubleshooting/video-not-playing.md index 08e7a7f39a..ff02510432 100644 --- a/docs/photos/troubleshooting/video-not-playing.md +++ b/docs/photos/troubleshooting/video-not-playing.md @@ -1,8 +1,5 @@ ## Video Playback Issue - ### Web - - -### Desktop / Mobile \ No newline at end of file +### Desktop / Mobile diff --git a/package.json b/package.json index ef33c24356..bff45f0e33 100644 --- a/package.json +++ b/package.json @@ -5,6 +5,7 @@ "preview": "vitepress preview docs" }, "devDependencies": { + "prettier": "^3", "vitepress": "^1.0.0-rc.44" } } diff --git a/yarn.lock b/yarn.lock index 6b7333b3a8..5f12adede5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -658,6 +658,11 @@ preact@^10.0.0: resolved "https://registry.yarnpkg.com/preact/-/preact-10.19.6.tgz#66007b67aad4d11899f583df1b0116d94a89b8f5" integrity sha512-gympg+T2Z1fG1unB8NH29yHJwnEaCH37Z32diPDku316OTnRPeMbiRV9kTrfZpocXjdfnWuFUl/Mj4BHaf6gnw== +prettier@^3: + version "3.2.5" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" + integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== + rfdc@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" From 84c0e7a78afb99bae58297344f2df439914aeebf Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:38:18 +0530 Subject: [PATCH 55/72] Prose wrap using Prettier --- .prettierrc.json | 3 ++- README.md | 21 +++++++++++++++++++++ package.json | 3 ++- 3 files changed, 25 insertions(+), 2 deletions(-) diff --git a/.prettierrc.json b/.prettierrc.json index 0a02bcefda..8af31cded5 100644 --- a/.prettierrc.json +++ b/.prettierrc.json @@ -1,3 +1,4 @@ { - "tabWidth": 4 + "tabWidth": 4, + "proseWrap": "always" } diff --git a/README.md b/README.md index f3743708a3..fe5119de2f 100644 --- a/README.md +++ b/README.md @@ -15,3 +15,24 @@ Then start a local server ```sh yarn dev ``` + +## Workflow + +You can edit these files directly on GitHub and open a pull request. That is the +easiest workflow to get started without needing to install anything on your +local machine. + +If you plan on contributing frequently, we recommend using an editor. VSCode is +a good choice. Also install the Prettier extension for VSCode, and set VSCode to +format on save. This will use the standard formatting and text wrapping options +for this project, so you can just focus on the content. + +We currently don't enforce the prettier formatting to make it easy for people +unfamiliar with programming to also be able to make edits from GitHub directly. + +This is a common theme - unlike the rest of the codebase where expect some +baseline understanding of the tools involved, the docs are meant to be a place +for non-technical people to also provide their input. The reason for this is not +to increase the number of docs, but to bring more diversity to them. Such +diversity of viewpoints is essential for evolving documents that can be of help +to people of varying level of familiarity with tech. diff --git a/package.json b/package.json index bff45f0e33..23f58d1cc9 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,8 @@ "scripts": { "dev": "vitepress dev docs", "build": "vitepress build docs", - "preview": "vitepress preview docs" + "preview": "vitepress preview docs", + "pretty": "prettier --write ." }, "devDependencies": { "prettier": "^3", From 5fc7fc2f4e11767e666ea0b7c43dcc3ff1e21759 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:50:21 +0530 Subject: [PATCH 56/72] Do the actual prose wrap --- docs/about/company.md | 19 ++++++++--- docs/about/plans.md | 4 ++- docs/about/products.md | 34 ++++++++++++++----- docs/about/support.md | 22 ++++++++---- docs/authenticator/index.md | 27 ++++++++++----- docs/authenticator/support/contribute.md | 3 +- docs/de/authenticator/index.md | 28 ++++++++++----- docs/de/authenticator/support/contribute.md | 3 +- docs/photos/features/albums.md | 8 +++-- docs/photos/features/archive.md | 13 ++++--- docs/photos/features/cast.md | 29 +++++++++++----- docs/photos/features/collect.md | 12 ++++--- docs/photos/features/family-plan.md | 15 +++++--- docs/photos/features/hidden.md | 16 ++++++--- docs/photos/features/location.md | 17 +++++++--- docs/photos/features/map.md | 15 +++++--- docs/photos/features/public-links.md | 7 ++-- docs/photos/features/quick-link.md | 10 ++++-- docs/photos/features/referral.md | 17 +++++++--- docs/photos/features/trash.md | 4 ++- docs/photos/features/uncategorized.md | 14 +++++--- docs/photos/features/watch-folder.md | 10 ++++-- docs/photos/index.md | 24 +++++++++---- .../troubleshooting/files-not-uploading.md | 5 +-- 24 files changed, 249 insertions(+), 107 deletions(-) diff --git a/docs/about/company.md b/docs/about/company.md index 03f9b9d2aa..4c3fa8a137 100644 --- a/docs/about/company.md +++ b/docs/about/company.md @@ -1,11 +1,22 @@ # About -On February 1, 2020, Ente was born out of the necessity for a secure archival solution for personal photos and videos. Founded by Vishnu Mohandas in response to privacy concerns with major tech companies, Ente provides end-to-end encrypted apps across platforms. +On February 1, 2020, Ente was born out of the necessity for a secure archival +solution for personal photos and videos. Founded by Vishnu Mohandas in response +to privacy concerns with major tech companies, Ente provides end-to-end +encrypted apps across platforms. -The team at Ente aims to contribute to making the world a safer place for the preservation of personal memories. The road ahead is long, but the journey has started, fueled by a commitment to privacy and a deep sense of responsibility towards the users we serve. +The team at Ente aims to contribute to making the world a safer place for the +preservation of personal memories. The road ahead is long, but the journey has +started, fueled by a commitment to privacy and a deep sense of responsibility +towards the users we serve. -In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon +In the realm of privacy and protection, we currently offer two products—Ente +Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon # What does Ente mean? -"Ente" holds dual significance for us. In Malayalam, the native language of our founder, it translates to "mine," giving "ente Photos" the direct meaning of "my photos." Additionally, our founder discovered that "ente" means "duck" in German. This unexpected connection led to the adoption of the duck as our mascot and we lovingly refer to our mascot as "Ducky," +"Ente" holds dual significance for us. In Malayalam, the native language of our +founder, it translates to "mine," giving "ente Photos" the direct meaning of "my +photos." Additionally, our founder discovered that "ente" means "duck" in +German. This unexpected connection led to the adoption of the duck as our mascot +and we lovingly refer to our mascot as "Ducky," diff --git a/docs/about/plans.md b/docs/about/plans.md index e02e77d225..123482b5b1 100644 --- a/docs/about/plans.md +++ b/docs/about/plans.md @@ -1,6 +1,8 @@ # Ente plans : Tailored for Every User -At ente, we understand that each user is unique, and so are their storage needs. Our range of plans is designed to cater to a diverse to diverse users, ensuring everyone finds the perfect fit for their requirements. +At ente, we understand that each user is unique, and so are their storage needs. +Our range of plans is designed to cater to a diverse to diverse users, ensuring +everyone finds the perfect fit for their requirements. ## Basic plan diff --git a/docs/about/products.md b/docs/about/products.md index a5a6ecd7b5..4b78740d5b 100644 --- a/docs/about/products.md +++ b/docs/about/products.md @@ -1,28 +1,44 @@ # Ente products -In the realm of privacy and protection, we currently offer two products—Ente Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon +In the realm of privacy and protection, we currently offer two products—Ente +Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon # Ente photos -Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and the safety of your cherished memories. All your photos, along with their metadata, are stored end-to-end encrypted, ensuring that only you have access to your data. +Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and +the safety of your cherished memories. All your photos, along with their +metadata, are stored end-to-end encrypted, ensuring that only you have access to +your data. -To fortify the security of your memories, Ente preserves your encrypted photos across three different clouds in three separate locations, including an underground fallout shelter. This multi-layered backup strategy guarantees the utmost safety for your data. +To fortify the security of your memories, Ente preserves your encrypted photos +across three different clouds in three separate locations, including an +underground fallout shelter. This multi-layered backup strategy guarantees the +utmost safety for your data. Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. -Ente Photos is not just a storage solution; it's a commitment to safeguarding your memories. +Ente Photos is not just a storage solution; it's a commitment to safeguarding +your memories. # Ente auth -Ente auth is not just an authenticator app; it's an open-source initiative dedicated to securing your 2FA secrets. Now, you can backup and view your two-factor authentication secrets seamlessly. -find more information about the project on GitHub at github.com/ente-io/auth. +Ente auth is not just an authenticator app; it's an open-source initiative +dedicated to securing your 2FA secrets. Now, you can backup and view your +two-factor authentication secrets seamlessly. find more information about the +project on GitHub at github.com/ente-io/auth. -As a token of gratitude to the community that has supported us, Ente Auth is offered as a free service. In the spirit of transparency, If in the future we convert this to a paid service, existing users will be grandfathered in. +As a token of gratitude to the community that has supported us, Ente Auth is +offered as a free service. In the spirit of transparency, If in the future we +convert this to a paid service, existing users will be grandfathered in. Ente auth is available on Android, iOS, and the web # Ente lockers (coming soon) -Ente Lockers is more than just a file storage solution; it's a purpose-driven platform designed to redefine how you manage crucial documents in your life. With a straightforward interface, it ensures easy access to files that matter the most—those frequently needed and intended for future generations. +Ente Lockers is more than just a file storage solution; it's a purpose-driven +platform designed to redefine how you manage crucial documents in your life. +With a straightforward interface, it ensures easy access to files that matter +the most—those frequently needed and intended for future generations. -Stay tuned for our upcoming product end-to-end encryption file storage app, currently under construction! +Stay tuned for our upcoming product end-to-end encryption file storage app, +currently under construction! diff --git a/docs/about/support.md b/docs/about/support.md index 126c9a1128..3adb28f0d0 100644 --- a/docs/about/support.md +++ b/docs/about/support.md @@ -2,19 +2,26 @@ ## Customer support -Connect with our support team for swift assistance and expert guidance email us @support@ente.io. -Reach out to our dev team @team@ente.io, even our CEO and CTO personally responds here. +Connect with our support team for swift assistance and expert guidance email us +@support@ente.io. +Reach out to our dev team @team@ente.io, even our CEO and CTO personally +responds here. ## Blog -As Ente continues to evolve, So does our story. Follow our blog @ https://ente.io/blog As Ente undergoes continuous growth and development, our narrative unfolds. Explore our blog for exclusive company updates that offer an insider's perspective. -Regularly visit the Ente blog to maintain your connection, stay well informed, and draw insipration. +As Ente continues to evolve, So does our story. Follow our blog @ +https://ente.io/blog As Ente undergoes continuous growth and development, our +narrative unfolds. Explore our blog for exclusive company updates that offer an +insider's perspective. Regularly visit the Ente blog to maintain your +connection, stay well informed, and draw insipration. ## Roadmap -You plays a pivotal role in shaping the future direction of Ente's product, and we invite you to be an integral part of it. +You plays a pivotal role in shaping the future direction of Ente's product, and +we invite you to be an integral part of it. -Take a look at our roadmap to see where we're headed https://roadmap.ente.io/roadmap/ +Take a look at our roadmap to see where we're headed +https://roadmap.ente.io/roadmap/ # Community @@ -22,7 +29,8 @@ Take a look at our roadmap to see where we're headed https://roadmap.ente.io/roa #### Discord -Join our Discord for real-time discussions, solutions to queries, and a thriving camaraderie. Stay updated on all things on Ente! +Join our Discord for real-time discussions, solutions to queries, and a thriving +camaraderie. Stay updated on all things on Ente! 🐦 Twitter: https://twitter.com/enteio diff --git a/docs/authenticator/index.md b/docs/authenticator/index.md index edca84ab71..4cbb210a32 100644 --- a/docs/authenticator/index.md +++ b/docs/authenticator/index.md @@ -1,19 +1,28 @@ # Welcome to the Ente Authenticator User Guide! -Ente Authenticator is a free, cross-platform, end-to-end encrypted Authenticator app for everyone. -We're glad you're here! +Ente Authenticator is a free, cross-platform, end-to-end encrypted Authenticator +app for everyone. We're glad you're here! -**Please note that Ente Authenticator Docs are in beta and thus are not yet complete.** We haven't documented all of Ente Authenticator's amazing features yet. But, we will be adding more documentation here over time. +**Please note that Ente Authenticator Docs are in beta and thus are not yet +complete.** We haven't documented all of Ente Authenticator's amazing features +yet. But, we will be adding more documentation here over time. -If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. +If you're new to Authenticator, our +[Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are +great places to begin. -Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. +Feedback about this Authenticator documentation can be shared on our +[Discord Server](https://ente.io/discord) in the **\#documentation** channel. We +would love to hear your thoughts on anything we can fix or improve. ## Contributing -This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. +This documentation is open source at our +[Ente Docs](https://github.com/ente-io/docs) repo. -We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) -before making a Pull Request. +We gladly welcome any fixes & improvements! Please see our +[contribution guide](https://github.com/ente-io/docs#contributing) before making +a Pull Request. -Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! +Once your contributions are accepted, make sure to add yourself to the list of +[Contributors](./misc/contributors.md). Thank you! diff --git a/docs/authenticator/support/contribute.md b/docs/authenticator/support/contribute.md index 4b89a6c9d4..dd208e1f3b 100644 --- a/docs/authenticator/support/contribute.md +++ b/docs/authenticator/support/contribute.md @@ -4,4 +4,5 @@ ## Support Development -If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) +If you wish to support the development of the project, please consider switching +to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/de/authenticator/index.md b/docs/de/authenticator/index.md index ef21a11ac0..9fdb3555ec 100644 --- a/docs/de/authenticator/index.md +++ b/docs/de/authenticator/index.md @@ -1,19 +1,29 @@ # Willkommen beim Ente Authenticator-Benutzerhandbuch! -Ente Authenticator ist eine kostenlose, plattformübergreifende, Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. -Wir sind froh, dass du hier bist! +Ente Authenticator ist eine kostenlose, plattformübergreifende, +Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, dass +du hier bist! -**Please note that Ente Authenticator Docs are in beta and thus are not yet complete.** We haven't documented all of Ente Authenticator's amazing features yet. But, we will be adding more documentation here over time. +**Please note that Ente Authenticator Docs are in beta and thus are not yet +complete.** We haven't documented all of Ente Authenticator's amazing features +yet. But, we will be adding more documentation here over time. -If you're new to Authenticator, our [Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are great places to begin. +If you're new to Authenticator, our +[Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are +great places to begin. -Feedback about this Authenticator documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#documentation** channel. We would love to hear your thoughts on anything we can fix or improve. +Feedback about this Authenticator documentation can be shared on our +[Discord Server](https://ente.io/discord) in the **\#documentation** channel. We +would love to hear your thoughts on anything we can fix or improve. ## Contributing -This documentation is open source at our [Ente Docs](https://github.com/ente-io/docs) repo. +This documentation is open source at our +[Ente Docs](https://github.com/ente-io/docs) repo. -We gladly welcome any fixes & improvements! Please see our [contribution guide](https://github.com/ente-io/docs#contributing) -before making a Pull Request. +We gladly welcome any fixes & improvements! Please see our +[contribution guide](https://github.com/ente-io/docs#contributing) before making +a Pull Request. -Once your contributions are accepted, make sure to add yourself to the list of [Contributors](./misc/contributors.md). Thank you! +Once your contributions are accepted, make sure to add yourself to the list of +[Contributors](./misc/contributors.md). Thank you! diff --git a/docs/de/authenticator/support/contribute.md b/docs/de/authenticator/support/contribute.md index 4b89a6c9d4..dd208e1f3b 100644 --- a/docs/de/authenticator/support/contribute.md +++ b/docs/de/authenticator/support/contribute.md @@ -4,4 +4,5 @@ ## Support Development -If you wish to support the development of the project, please consider switching to paid plan of [Ente Photos](https://ente.io) +If you wish to support the development of the project, please consider switching +to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/photos/features/albums.md b/docs/photos/features/albums.md index d12b259aa0..18d9b4722e 100644 --- a/docs/photos/features/albums.md +++ b/docs/photos/features/albums.md @@ -1,7 +1,8 @@ # Albums -This guide will show you how to make the most of your albums with simple yet effective features. -Below are the features that allow you to personailze your albums according to your preferences: +This guide will show you how to make the most of your albums with simple yet +effective features. Below are the features that allow you to personailze your +albums according to your preferences: ## 1. Rename album: Personalize your albums by giving them a meaningful name @@ -28,7 +29,8 @@ Below are the features that allow you to personailze your albums according to yo - Tap the three dots button in the top right corner - From the menu options, select Set cover - A new screen will appear, propmpting you to select the cover photo -- Browse through your photos and tap on the image you want to set as the album cover +- Browse through your photos and tap on the image you want to set as the album + cover - Then tap on Use selected photo ## 3. Map: Explore the memories based on their location diff --git a/docs/photos/features/archive.md b/docs/photos/features/archive.md index e10f981924..5464bf15af 100644 --- a/docs/photos/features/archive.md +++ b/docs/photos/features/archive.md @@ -1,10 +1,14 @@ # Archive -You can remove a photo (owned by you) or an album from your **home timeline** by archiving it. Archived photos won't be included in the memories section on the mobile app. +You can remove a photo (owned by you) or an album from your **home timeline** by +archiving it. Archived photos won't be included in the memories section on the +mobile app. -- All photos within a archived album will be removed from home timeline, even when some of the photos are also present in a non-archived album. +- All photos within a archived album will be removed from home timeline, even + when some of the photos are also present in a non-archived album. - You can archive albums that are owned by you or shared with you. -- Search results will include archived photos. If you want to hide photos from search result, use [Hide](./hidden.md) feature. +- Search results will include archived photos. If you want to hide photos from + search result, use [Hide](./hidden.md) feature. ### How to @@ -34,7 +38,8 @@ You can remove a photo (owned by you) or an album from your **home timeline** by ### Metadata Privacy -Both Ente and the person with whom you are sharing an album or photo have no information about whether you have +Both Ente and the person with whom you are sharing an album or photo have no +information about whether you have - Archived a photo - Archived an album diff --git a/docs/photos/features/cast.md b/docs/photos/features/cast.md index 98f8e738c9..faec1c9db4 100644 --- a/docs/photos/features/cast.md +++ b/docs/photos/features/cast.md @@ -1,6 +1,7 @@ # Cast -With ente Cast, you can play a slideshow of your favourite albums on your Google Chromecast TVs or other Internet-connected large screen devices. +With ente Cast, you can play a slideshow of your favourite albums on your Google +Chromecast TVs or other Internet-connected large screen devices. ## Get Started @@ -8,16 +9,28 @@ With ente Cast, you can play a slideshow of your favourite albums on your Google 2. Select the album you want to play on your large screen device. 3. Click "Play album on TV" in the album menu. -On the web, you can find this menu in the balls menu on the right hand side. ![Balls menu](/assets/cast/web-play-album-on-tv.webp) +On the web, you can find this menu in the balls menu on the right hand side. +![Balls menu](/assets/cast/web-play-album-on-tv.webp) -4. Choose how you want to pair your device with your large screen device. ![Pairing options](/assets/cast/web-pairing-options.webp) +4. Choose how you want to pair your device with your large screen device. + ![Pairing options](/assets/cast/web-pairing-options.webp) -On Chromium browsers, you will see a button labeled "Auto Pair". This option will prompt you to select a Chromecast supported device on your local network. Note: this option requires connecting to Google servers to load necessary dependencies. This option does not transmit any sensitive data through Google servers, such as your photos. Once your Chromecast device is connected, you're all set. +On Chromium browsers, you will see a button labeled "Auto Pair". This option +will prompt you to select a Chromecast supported device on your local network. +Note: this option requires connecting to Google servers to load necessary +dependencies. This option does not transmit any sensitive data through Google +servers, such as your photos. Once your Chromecast device is connected, you're +all set. -On all browsers, you'll see the option to "Pair with PIN". This option works with all devices, Chromecast-enabled or not. You'll be required to load up [cast.ente.io](https://cast.ente.io) on your large screen device. +On all browsers, you'll see the option to "Pair with PIN". This option works +with all devices, Chromecast-enabled or not. You'll be required to load up +[cast.ente.io](https://cast.ente.io) on your large screen device. -5. Enter the PIN displayed on your large screen device into the input field on your mobile or web device. +5. Enter the PIN displayed on your large screen device into the input field on + your mobile or web device. -On your large screen device, you'll see the following screen. ![Pairing screen](/assets/cast/tv-pairing-screen.webp) +On your large screen device, you'll see the following screen. +![Pairing screen](/assets/cast/tv-pairing-screen.webp) -6. If you entered your PIN correctly, you'll see a screen on your TV with a green checkmark confirming the connection. +6. If you entered your PIN correctly, you'll see a screen on your TV with a + green checkmark confirming the connection. diff --git a/docs/photos/features/collect.md b/docs/photos/features/collect.md index 1d0bdbbe8d..8297750431 100644 --- a/docs/photos/features/collect.md +++ b/docs/photos/features/collect.md @@ -1,8 +1,11 @@ # Collect photos: Collecting memories from events is now a breeze! -- Whether it's a birthday party, vacation trip or wedding, easily share your album using a unique, secure, end-to-end encrypted link. -- Introduce the 'collect photos' feature to your friends and family who can contribute without an ente account. -- This allows them to effortlessly add, view, and download photos from the link without an ente account. +- Whether it's a birthday party, vacation trip or wedding, easily share your + album using a unique, secure, end-to-end encrypted link. +- Introduce the 'collect photos' feature to your friends and family who can + contribute without an ente account. +- This allows them to effortlessly add, view, and download photos from the + link without an ente account. - Also preserves metadata and photo quality ## How to Collect photos on mobile? @@ -21,4 +24,5 @@ To collect photos on the web/desktop: - Click on the share album icon - Select Collect photos - Click on Copy link -- The link has been copied to your clipboard. Share it effortlessly with others! +- The link has been copied to your clipboard. Share it effortlessly with + others! diff --git a/docs/photos/features/family-plan.md b/docs/photos/features/family-plan.md index 8856ce7cfa..cda8382aad 100644 --- a/docs/photos/features/family-plan.md +++ b/docs/photos/features/family-plan.md @@ -1,13 +1,18 @@ # Family plans -Paid subscribers of Ente can share the storage with their family, **at no additional cost** as you have already paid for the storage. +Paid subscribers of Ente can share the storage with their family, **at no +additional cost** as you have already paid for the storage. In breif, -- Your family members can use storage space from your plan without paying extra. +- Your family members can use storage space from your plan without paying + extra. -- Ask them to sign up for Ente, and then just add them to your existing plan using the "Manage family" option within your Subscription settings. +- Ask them to sign up for Ente, and then just add them to your existing plan + using the "Manage family" option within your Subscription settings. -- Each member gets their own private space, and cannot see each other's files unless they're shared. +- Each member gets their own private space, and cannot see each other's files + unless they're shared. -- You can invite 5 family members. So including yourself, it will be 6 people who can share a single subscription, paying only once. +- You can invite 5 family members. So including yourself, it will be 6 people + who can share a single subscription, paying only once. diff --git a/docs/photos/features/hidden.md b/docs/photos/features/hidden.md index 05b7a8c5ad..46a99ec96c 100644 --- a/docs/photos/features/hidden.md +++ b/docs/photos/features/hidden.md @@ -1,10 +1,18 @@ # Hidden -You can further protect extra sensitive photos or albums by hiding them. Hidden photos or albums will **only be viewable** after an extra layer of authentication inside the app. Hidden differs from [Archive](./archive.md) in the fact that hidden photos won't be surfaced anywhere in the app without explicit authentication, whereas Archive only removes them from the home timeline and memories sections. +You can further protect extra sensitive photos or albums by hiding them. Hidden +photos or albums will **only be viewable** after an extra layer of +authentication inside the app. Hidden differs from [Archive](./archive.md) in +the fact that hidden photos won't be surfaced anywhere in the app without +explicit authentication, whereas Archive only removes them from the home +timeline and memories sections. -- Hidden photos and albums will be removed from home timelines, memories, albums tab, search results, and any other visable place in the app. -- Hidden photos will be removed from all regular albums. If you want to unhide again you will have to specify the album to move it to. -- You cannot hide photos or albums shared with you. You can archive shared albums instead. +- Hidden photos and albums will be removed from home timelines, memories, + albums tab, search results, and any other visable place in the app. +- Hidden photos will be removed from all regular albums. If you want to unhide + again you will have to specify the album to move it to. +- You cannot hide photos or albums shared with you. You can archive shared + albums instead. ### How to diff --git a/docs/photos/features/location.md b/docs/photos/features/location.md index 66f70119f3..9dfcfbdd74 100644 --- a/docs/photos/features/location.md +++ b/docs/photos/features/location.md @@ -2,7 +2,10 @@ ## Overview: -The Location Tags feature allows you to efficiently search and organize your photos based on their geographical location. Instead of sending your queries to our servers, we've implemented a privacy-friendly solution that runs searches locally on your device. +The Location Tags feature allows you to efficiently search and organize your +photos based on their geographical location. Instead of sending your queries to +our servers, we've implemented a privacy-friendly solution that runs searches +locally on your device. ## How to Use Location Tags: @@ -22,7 +25,11 @@ The Location Tags feature allows you to efficiently search and organize your pho ## Note: -- The app will automatically cluster photos falling within a radius under a specified location. -- Location Tags provide a seamless way to filter photos without compromising your privacy. -- Location tags are stored end-to-end encrypted, ensuring the security of your data. -- Enjoy a more organized photo library by tagging important places like home, office, and vacation spots. +- The app will automatically cluster photos falling within a radius under a + specified location. +- Location Tags provide a seamless way to filter photos without compromising + your privacy. +- Location tags are stored end-to-end encrypted, ensuring the security of your + data. +- Enjoy a more organized photo library by tagging important places like home, + office, and vacation spots. diff --git a/docs/photos/features/map.md b/docs/photos/features/map.md index 5e050c1dae..3890b1c47d 100644 --- a/docs/photos/features/map.md +++ b/docs/photos/features/map.md @@ -2,13 +2,16 @@ ## How can I view photos on the map on mobile? -- Step 1. Find the search icon located at the bottom right corner of your screen. +- Step 1. Find the search icon located at the bottom right corner of your + screen. - Step 2. Tap on the globe icon (Your map) withing the location -- Step 3. Enter the map view and start exploring your photos from around the world. +- Step 3. Enter the map view and start exploring your photos from around the + world. ## How to enable map on your mobile app? -- Step 1. Tap the three horizontal lines located at the top left corner of your home screen or swipe left on the home screen. +- Step 1. Tap the three horizontal lines located at the top left corner of + your home screen or swipe left on the home screen. - Step 2. Select "General" settings. - Step 3. Enter the "Advanced" settings. - Step 4. Use the toggle switch to turn the map feature on or off @@ -16,13 +19,15 @@ ## How to view Album photos on the map? - Step 1. Open the album containing the photos you want to view -- Step 2. Tap on the three horizontal lines located in the top right corner of the screen. +- Step 2. Tap on the three horizontal lines located in the top right corner of + the screen. - Step 3. Select "Map" from the options. - Step 4. View and explore your photos on the map. ## How to enable map on desktop? -- Step 1. Click on the three horizontal lines located in the top left corner of the app. +- Step 1. Click on the three horizontal lines located in the top left corner + of the app. - Step 2. Navigate to "preferences" from the menu. - Step 3. Select "Advanced" in the preference menu. - Step 4. Click on "Map" to access map settings. diff --git a/docs/photos/features/public-links.md b/docs/photos/features/public-links.md index 3610be469d..2afce455e6 100644 --- a/docs/photos/features/public-links.md +++ b/docs/photos/features/public-links.md @@ -5,8 +5,8 @@ without an app or account. The contents within these links are also end-to-end encrypted. -> Implementation details have been -> documented [here](https://ente.io/blog/building-shareable-links/). +> Implementation details have been documented +> [here](https://ente.io/blog/building-shareable-links/). You can also use these links to collect photos from your friends after a party or event. Everything they add also remains end-to-end encrypted. @@ -16,4 +16,5 @@ In addition to this, links support the following features: - Link expiry (so the links go poof after a duration you define) - Device limits (in case you don't want someone to forwarding your link) - Password lock (to add an additional level of protection to your photos) -- Prevent downloads (while we can't prevent screenshots, we can disable the option to download your original photos) +- Prevent downloads (while we can't prevent screenshots, we can disable the + option to download your original photos) diff --git a/docs/photos/features/quick-link.md b/docs/photos/features/quick-link.md index 19d75b1072..286b6d282e 100644 --- a/docs/photos/features/quick-link.md +++ b/docs/photos/features/quick-link.md @@ -1,8 +1,12 @@ # Quick Links -Quick links allows you to select single or multiple photos & create a link. Behind the scene, ente creates a special album and put all the selected files in that special album. +Quick links allows you to select single or multiple photos & create a link. +Behind the scene, ente creates a special album and put all the selected files in +that special album. -- You can view all quick links created by you in the sharing tab, under Quick links section. +- You can view all quick links created by you in the sharing tab, under Quick + links section. - Quick links can be converted to regular album. - Remove link will not delete the photos that are present in that link. -- Similar to [public-links](./public-links.md), you can set link expirty, set passwords or device limits. +- Similar to [public-links](./public-links.md), you can set link expirty, set + passwords or device limits. diff --git a/docs/photos/features/referral.md b/docs/photos/features/referral.md index 00d66a869f..f0818bb9bd 100644 --- a/docs/photos/features/referral.md +++ b/docs/photos/features/referral.md @@ -2,7 +2,10 @@ ## Overview: -Did you know you can boost your storage on Ente simply by referring your friends? Our referral program lets you earn 10 GB of free storage for each friend who upgrades to a paid plan, and your referred friends receive an additional 10 GB with their subscription. +Did you know you can boost your storage on Ente simply by referring your +friends? Our referral program lets you earn 10 GB of free storage for each +friend who upgrades to a paid plan, and your referred friends receive an +additional 10 GB with their subscription. ## How to Refer a friend? @@ -16,9 +19,12 @@ On the Home Page: Note: -- Once your friend upgrades to a paid plan, both you and your friend receive an additional 10 GB of storage -- Keep track of your earned storage and referral details on Claim free storage screen -- If you refer more friends than your plan allows, the extra storage earned will be reserved until you upgrade your plan +- Once your friend upgrades to a paid plan, both you and your friend receive + an additional 10 GB of storage +- Keep track of your earned storage and referral details on Claim free storage + screen +- If you refer more friends than your plan allows, the extra storage earned + will be reserved until you upgrade your plan - Earned storage remains accessible as long as your subscription is active ## How to apply Refferal code of a friend? @@ -31,4 +37,5 @@ On the Home Page: - Find and tap on 'Apply Code.' - Enter the referral code provided by your friend. -Note: Please note that referral codes should be applied within one month of account creation to claim free storage. +Note: Please note that referral codes should be applied within one month of +account creation to claim free storage. diff --git a/docs/photos/features/trash.md b/docs/photos/features/trash.md index 494af3aaf4..f52ed676db 100644 --- a/docs/photos/features/trash.md +++ b/docs/photos/features/trash.md @@ -1,5 +1,7 @@ # Trash -Whenever you delete an item from ente, it is moved to Trash. These items will be automatically deleted from Trash after 30 days. You can manaully select or completely empty the trash, if you wish. +Whenever you delete an item from ente, it is moved to Trash. These items will be +automatically deleted from Trash after 30 days. You can manaully select or +completely empty the trash, if you wish. Items in trash are included in your used storage calculation. diff --git a/docs/photos/features/uncategorized.md b/docs/photos/features/uncategorized.md index ea84b22002..e73333c9a6 100644 --- a/docs/photos/features/uncategorized.md +++ b/docs/photos/features/uncategorized.md @@ -1,12 +1,18 @@ ## Uncategoried -"Uncategorized" is a special album type where photos are automatically added under the following circumstances: +"Uncategorized" is a special album type where photos are automatically added +under the following circumstances: -- When you remove a photo from the last album, it is relocated to "Uncategorized." -- During album deletion, if you choose to keep photos but delete the album, all photos exclusive to the current album are moved to the "Uncategorized" section. +- When you remove a photo from the last album, it is relocated to + "Uncategorized." +- During album deletion, if you choose to keep photos but delete the album, + all photos exclusive to the current album are moved to the "Uncategorized" + section. Note: This does not include photos uploaded by others. ### Clean up Uncategorized -In the mobile app, you can click on the overflow menu and click `Clean Uncategorized` option. All files that are also present in another album, that is owned by the user, will be removed from the Uncategorized section. +In the mobile app, you can click on the overflow menu and click +`Clean Uncategorized` option. All files that are also present in another album, +that is owned by the user, will be removed from the Uncategorized section. diff --git a/docs/photos/features/watch-folder.md b/docs/photos/features/watch-folder.md index 86d4b330d2..52a33bd523 100644 --- a/docs/photos/features/watch-folder.md +++ b/docs/photos/features/watch-folder.md @@ -2,7 +2,9 @@ ## Overview: -The ente desktop app now allows you to "watch" a folder on your computer for any changes, creating a one-way sync from your device to the Ente cloud. This will make photo management and backup a breeze. +The ente desktop app now allows you to "watch" a folder on your computer for any +changes, creating a one-way sync from your device to the Ente cloud. This will +make photo management and backup a breeze. ## How to add Watch folders? @@ -22,5 +24,7 @@ The ente desktop app now allows you to "watch" a folder on your computer for any # Note: -- Option to choose whether to sync nested folders to a single album or separate albums. -- The app continuously monitors changes in the watched folder, such as the addition or removal of files +- Option to choose whether to sync nested folders to a single album or + separate albums. +- The app continuously monitors changes in the watched folder, such as the + addition or removal of files diff --git a/docs/photos/index.md b/docs/photos/index.md index 096112f7f9..7fd7214a1f 100644 --- a/docs/photos/index.md +++ b/docs/photos/index.md @@ -1,12 +1,18 @@ # Welcome to Help! -Welcome to Ente Photos Help! If you're new to Ente Photos, our [Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great places to begin. +Welcome to Ente Photos Help! If you're new to Ente Photos, our +[Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great +places to begin. -If you can’t find an answer, please [ask the community](https://ente.io/discord) or write to **support@ente.io**. +If you can’t find an answer, please [ask the community](https://ente.io/discord) +or write to **support@ente.io**. -To send a bug report or a feature suggestion, you can use [Github Issues](https://github.com/ente-io/photos-app/issues). +To send a bug report or a feature suggestion, you can use +[Github Issues](https://github.com/ente-io/photos-app/issues). -Feedback about this documentation can be shared on our [Discord Server](https://ente.io/discord) in the **\#docs** channel. We would love to hear your thoughts on anything we can fix or improve. +Feedback about this documentation can be shared on our +[Discord Server](https://ente.io/discord) in the **\#docs** channel. We would +love to hear your thoughts on anything we can fix or improve. ## About Ente Photos @@ -16,15 +22,19 @@ You can store, share, and re-discover your moments with absolute privacy. ## About Ente Auth -[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with multi-platform sync. +[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with +multi-platform sync. Learn more about Auth [here](../authenticator/). ## Contributing -The source for this documentation is available at [github.com/ente-io/docs](https://github.com/ente-io/docs). +The source for this documentation is available at +[github.com/ente-io/docs](https://github.com/ente-io/docs). -Please see our [contribution guide](https://github.com/ente-io/docs#contributing). We'd be grateful for any fixes and improvements! +Please see our +[contribution guide](https://github.com/ente-io/docs#contributing). We'd be +grateful for any fixes and improvements! Once your contributions are accepted, please add yourself to the list of [Contributors](./misc/contributors.md). diff --git a/docs/photos/troubleshooting/files-not-uploading.md b/docs/photos/troubleshooting/files-not-uploading.md index 4953a3cae9..c3f538b4a9 100644 --- a/docs/photos/troubleshooting/files-not-uploading.md +++ b/docs/photos/troubleshooting/files-not-uploading.md @@ -6,7 +6,8 @@ If you are using VPN, please try disabling the VPN or switching provider. **Certain file types are not uploading** -The desktop/web app tries to detect if a particular file is video or image. If the detection fails, then the app skips the upload. -Please share either the sample file or logs with us @support.ente.io +The desktop/web app tries to detect if a particular file is video or image. If +the detection fails, then the app skips the upload. Please share either the +sample file or logs with us @support.ente.io ## Mobile From a8e89fe1312319625277e5612f2ed65a53c7e2fa Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:54:00 +0530 Subject: [PATCH 57/72] Cleanup gitignore --- .gitignore | 127 +++-------------------------------------------------- 1 file changed, 6 insertions(+), 121 deletions(-) diff --git a/.gitignore b/.gitignore index 81aa9db6ad..5ee9888d78 100644 --- a/.gitignore +++ b/.gitignore @@ -1,125 +1,10 @@ -.DS_Store - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* -lerna-debug.log* -.pnpm-debug.log* - -# Diagnostic reports (https://nodejs.org/api/report.html) -report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json - -# Runtime data -pids -*.pid -*.seed -*.pid.lock - -# Directory for instrumented libs generated by jscoverage/JSCover -lib-cov - -# Coverage directory used by tools like istanbul -coverage -*.lcov - -# nyc test coverage -.nyc_output - -# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) -.grunt - -# Bower dependency directory (https://bower.io/) -bower_components - -# node-waf configuration -.lock-wscript - -# Compiled binary addons (https://nodejs.org/api/addons.html) -build/Release - # Dependency directories node_modules/ -jspm_packages/ -# Snowpack dependency directory (https://snowpack.dev/) -web_modules/ +# macOS +.DS_Store -# TypeScript cache -*.tsbuildinfo - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Microbundle cache -.rpt2_cache/ -.rts2_cache_cjs/ -.rts2_cache_es/ -.rts2_cache_umd/ - -# Optional REPL history -.node_repl_history - -# Output of 'npm pack' -*.tgz - -# Yarn Integrity file -.yarn-integrity - -# dotenv environment variables file -.env -.env.test -.env.production - -# parcel-bundler cache (https://parceljs.org/) -.cache -.parcel-cache - -# Next.js build output -.next -out - -# Nuxt.js build / generate output -.nuxt -dist - -# Gatsby files -.cache/ -# Comment in the public line in if your project uses Gatsby and not Next.js -# https://nextjs.org/blog/next-9-1#public-directory-support -# public - -# vuepress build output -.vuepress/dist - -# Serverless directories -.serverless/ - -# FuseBox cache -.fusebox/ - -# DynamoDB Local files -.dynamodb/ - -# TernJS port file -.tern-port - -# Stores VSCode versions used for testing VSCode extensions -.vscode-test - -# yarn v2 -.yarn/cache -.yarn/unplugged -.yarn/build-state.yml -.yarn/install-state.gz -.pnp.* - -docs/.vitepress/cache/ -docs/.vitepress/dist/ -.vitepress/cache/ -.v3-crawler.js \ No newline at end of file +# VitePress' dev server cache +docs/.vitepress/cache +# VitePress' production build +docs/.vitepress/dist From 1709b1e5c164c84ca97bf7338fe503fcbcc18801 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:57:28 +0530 Subject: [PATCH 58/72] Fix warning --- README.md | 2 +- package.json | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fe5119de2f..82130d3414 100644 --- a/README.md +++ b/README.md @@ -30,7 +30,7 @@ for this project, so you can just focus on the content. We currently don't enforce the prettier formatting to make it easy for people unfamiliar with programming to also be able to make edits from GitHub directly. -This is a common theme - unlike the rest of the codebase where expect some +This is a common theme - unlike the rest of the codebase where we expect some baseline understanding of the tools involved, the docs are meant to be a place for non-technical people to also provide their input. The reason for this is not to increase the number of docs, but to bring more diversity to them. Such diff --git a/package.json b/package.json index 23f58d1cc9..165f5fb888 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "private": true, "scripts": { "dev": "vitepress dev docs", "build": "vitepress build docs", From 20ef0bef6a4231c92cd7f125a4d682cb1ea84a9f Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 09:58:05 +0530 Subject: [PATCH 59/72] Don't require the m prefix on extensions --- docs/.vitepress/{config.mts => config.ts} | 0 package.json | 1 + 2 files changed, 1 insertion(+) rename docs/.vitepress/{config.mts => config.ts} (100%) diff --git a/docs/.vitepress/config.mts b/docs/.vitepress/config.ts similarity index 100% rename from docs/.vitepress/config.mts rename to docs/.vitepress/config.ts diff --git a/package.json b/package.json index 165f5fb888..d6b4b8a3b8 100644 --- a/package.json +++ b/package.json @@ -1,4 +1,5 @@ { + "type": "module", "private": true, "scripts": { "dev": "vitepress dev docs", From 04f273cf568eab5bd8a73874641ef6411ddfc5ed Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 10:09:37 +0530 Subject: [PATCH 60/72] 96x96 favicon png, single --- .gitignore | 2 +- docs/.vitepress/config.ts | 16 +++------------- docs/public/favicon-16x16.png | Bin 473 -> 0 bytes docs/public/favicon-32x32.png | Bin 863 -> 0 bytes docs/public/favicon.png | Bin 0 -> 5609 bytes 5 files changed, 4 insertions(+), 14 deletions(-) delete mode 100644 docs/public/favicon-16x16.png delete mode 100644 docs/public/favicon-32x32.png create mode 100644 docs/public/favicon.png diff --git a/.gitignore b/.gitignore index 5ee9888d78..5fb7262b94 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,4 @@ -# Dependency directories +# Dependencies node_modules/ # macOS diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 7a01cba8a8..c104c5da25 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -2,8 +2,8 @@ import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente's Docs", - description: "Help guide for apps from Ente", + title: "Ente Help", + description: "Help and documentation for Ente's products", head: [ [ "link", @@ -18,17 +18,7 @@ export default defineConfig({ { rel: "icon", type: "image/png", - sizes: "32x32", - href: "/favicon-32x32.png", - }, - ], - [ - "link", - { - rel: "icon", - type: "image/png", - sizes: "16x16", - href: "/favicon-16x16.png", + href: "/favicon.png", }, ], ], diff --git a/docs/public/favicon-16x16.png b/docs/public/favicon-16x16.png deleted file mode 100644 index 658b5e39a586c382b48aa54ed5bf1d97d723c44c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 473 zcmV;~0Ve*5P)z2W!x-h1Es-pB7Twy1Ak1cGP)4A?MZjruBR0xX(@rWVPAJB;z43;OzAVWwHFffV16($j~M%ZCwgJ*td-J_zw7dQo$=Su(WbG9u3jM z&xJH1sdLJ&+2#qy;q&Jko~rrIR(hYmA0BXUdcR)3RqFAC;3h^%zxhGorTvA=&KA(cukpaTLv@dY>`;_CH P00000NkvXXu0mjfdNamu diff --git a/docs/public/favicon-32x32.png b/docs/public/favicon-32x32.png deleted file mode 100644 index 9265411708e66fc29415ba2a8855cea1c900e3d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 863 zcmV-l1EBngP)OG3sd7AvGMT7`|JgmiF9beU2NWk6;gBRU{3l=_oubY{K4z0?1*^X+_1mt0Xl} z(Q%SR*u1rN&BFL@OJ()7@va|-=Z_2eR~6>5M9qolIt3C2~Y2w=tV2Z^~$HK zHWi~Ow+cF?W?4I!To^R}dVWZ74$&2;G8gl-*00^THu8YCv|QfLeQe{6zmRQ#7=i{; z)rr_;*tSYzyiVNx{zT{!^vw?74N1vL_9Wy(uha=%Bbb8R7&A|^lczqNbr@nqD^xr! zN0){{W(=|n7}W-zW+LzY#hhc1OQtqO&_GzWVz=KT7!zCphkuc$afR18-V3=5*}p-y zf&PUNp2ihZ&(D`+tDVNbLNEn$9)?%Z9349vgN;at_^4Q%+FXWEQN&f}wFm{L+_SKx z9ayCq)$urzvJZ1!hOER4ysR&%C#m94mr;uLf(Ddr+6|Y_jStKyq>$_dH}lWpczTgw zoNG7=iiTDZ&5K)X^hv`F|{@DGCfChn1#SsuPi;OBrLs6}z5N p1gO9XA|xX`%mi56v6l9<`~i!{`D>`HBZvS1002ovPDHLkV1obZf+hd} diff --git a/docs/public/favicon.png b/docs/public/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..334abda0d7f678e189098b74846b4160fa960f8b GIT binary patch literal 5609 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 kUa`>um3%9g|KY+ Date: Fri, 1 Mar 2024 10:18:44 +0530 Subject: [PATCH 61/72] Mention the pending publishing --- README.md | 15 +++++++++++---- docs/.vitepress/config.ts | 7 ++++--- 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 82130d3414..e281afd2a2 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ Help and documentation for Ente's products +> [!CAUTION] +> +> **Currently not published**. There are minor bits we need to clean up before +> publishing these. They'll likely be available at help.ente.io once we wrap +> those loose ends up. + ## Running Install dependencies @@ -24,11 +30,12 @@ local machine. If you plan on contributing frequently, we recommend using an editor. VSCode is a good choice. Also install the Prettier extension for VSCode, and set VSCode to -format on save. This will use the standard formatting and text wrapping options -for this project, so you can just focus on the content. +format on save. This way the editor will automatically format and wrap the text +using the project's standard, so you can just focus on the content. -We currently don't enforce the prettier formatting to make it easy for people -unfamiliar with programming to also be able to make edits from GitHub directly. +Note that we currently don't enforce these formatting standards to make it easy +for people unfamiliar with programming to also be able to make edits from GitHub +directly. This is a common theme - unlike the rest of the codebase where we expect some baseline understanding of the tools involved, the docs are meant to be a place diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index c104c5da25..4676b17199 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -2,7 +2,7 @@ import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente Help", + title: "Ente Docs", description: "Help and documentation for Ente's products", head: [ [ @@ -25,7 +25,8 @@ export default defineConfig({ themeConfig: { // https://vitepress.dev/reference/default-theme-config editLink: { - pattern: "https://github.com/ente-io/docs/edit/main/docs/:path", + pattern: + "https://github.com/ente-io/ente/edit/main/docs/docs/:path", }, nav: [ { text: "Photos", link: "/photos/index" }, @@ -44,7 +45,7 @@ export default defineConfig({ "/authenticator/": sidebarAuth(), }, socialLinks: [ - { icon: "github", link: "https://github.com/ente-io/docs/" }, + { icon: "github", link: "https://github.com/ente-io/ente/" }, ], }, }); From 34efae430cd77455c3aa22e34802b43084e615b5 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 10:21:08 +0530 Subject: [PATCH 62/72] Drop unnecessary support for web apps --- docs/.vitepress/config.ts | 19 +------------------ docs/public/apple-touch-icon.png | Bin 4716 -> 0 bytes 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 docs/public/apple-touch-icon.png diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 4676b17199..cab80c49d2 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -4,24 +4,7 @@ import { defineConfig } from "vitepress"; export default defineConfig({ title: "Ente Docs", description: "Help and documentation for Ente's products", - head: [ - [ - "link", - { - rel: "apple-touch-icon", - sizes: "180x180", - href: "/apple-touch-icon.png", - }, - ], - [ - "link", - { - rel: "icon", - type: "image/png", - href: "/favicon.png", - }, - ], - ], + head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]], themeConfig: { // https://vitepress.dev/reference/default-theme-config editLink: { diff --git a/docs/public/apple-touch-icon.png b/docs/public/apple-touch-icon.png deleted file mode 100644 index 8a84dfb18ae2ecf4287284f61a1dff859561efb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4716 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 From 4d7ac418f55fe040b83caab7296221fbf85f70dd Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 10:26:27 +0530 Subject: [PATCH 63/72] Cloudflare likely supports them ...didn't find it mentione in docs though, if it doesn't work will revert. --- docs/.vitepress/config.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index cab80c49d2..ebd1930a40 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -5,6 +5,7 @@ export default defineConfig({ title: "Ente Docs", description: "Help and documentation for Ente's products", head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]], + cleanUrls: true, themeConfig: { // https://vitepress.dev/reference/default-theme-config editLink: { From f9cdf477f106d85a42d6d22ab0ecce6b696ffed6 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 10:37:27 +0530 Subject: [PATCH 64/72] vars --- docs/.vitepress/theme/custom.css | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/.vitepress/theme/custom.css b/docs/.vitepress/theme/custom.css index fcd23a4a6c..41132ee648 100644 --- a/docs/.vitepress/theme/custom.css +++ b/docs/.vitepress/theme/custom.css @@ -1,16 +1,19 @@ :root { - --vp-theme-color: #1db954; - --vp-c-brand: #1db954; - --vp-c-brand-1: #1db954; - --vp-c-brand-2: #00b33c; - --vp-home-hero-name-color: #1db954; - --vp-c-brand-light: #1db954; - --vp-button-brand-border: #1db954; - --vp-button-brand-bg: #1db954; + --ente-theme-color: #1db954; + --ente-theme-color-alt: #00b33c; + + --vp-theme-color: var(--ente-theme-color); + --vp-c-brand: var(--ente-theme-color); + --vp-c-brand-1: var(--ente-theme-color); + --vp-c-brand-2: var(--ente-theme-color-alt); + --vp-home-hero-name-color: var(--ente-theme-color); + --vp-c-brand-light: var(--ente-theme-color); + --vp-button-brand-border: var(--ente-theme-color); + --vp-button-brand-bg: var(--ente-theme-color); --vp-button-brand-text: #191919; - --vp-button-brand-hover-border: #00b33c; + --vp-button-brand-hover-border: var(--ente-theme-color-alt); --vp-button-brand-hover-bg: #191919; --vp-button-brand-hover-text: #e5e5e5; - --vp-local-search-highlight-bg: #1db954; + --vp-local-search-highlight-bg: var(--ente-theme-color); --docsearch-hit-active-color: #191919; } From d460584808d19c6ba6a90b733584e9cddbd58948 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 10:49:09 +0530 Subject: [PATCH 65/72] Tweak config --- docs/.vitepress/config.ts | 11 +++++++++-- docs/public/logo.png | Bin 0 -> 4716 bytes 2 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 docs/public/logo.png diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index ebd1930a40..61dcc71d82 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -2,12 +2,17 @@ import { defineConfig } from "vitepress"; // https://vitepress.dev/reference/site-config export default defineConfig({ - title: "Ente Docs", - description: "Help and documentation for Ente's products", + title: "Ente Help", + description: "Documentation and help for Ente's products", head: [["link", { rel: "icon", type: "image/png", href: "/favicon.png" }]], cleanUrls: true, themeConfig: { + // We use the default theme (with some CSS color overrides). This + // themeConfig block can be used to further customize the default theme. + // // https://vitepress.dev/reference/default-theme-config + logo: "/logo.png", + externalLinkIcon: true, editLink: { pattern: "https://github.com/ente-io/ente/edit/main/docs/docs/:path", @@ -30,6 +35,8 @@ export default defineConfig({ }, socialLinks: [ { icon: "github", link: "https://github.com/ente-io/ente/" }, + { icon: "twitter", link: "https://twitter.com/enteio" }, + { icon: "discord", link: "https://discord.gg/z2YVKkycX3" }, ], }, }); diff --git a/docs/public/logo.png b/docs/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..8a84dfb18ae2ecf4287284f61a1dff859561efb4 GIT binary patch literal 4716 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 literal 0 HcmV?d00001 From fb386098c9a4ae91a9f6a7a07b29d2caa5c81042 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 11:05:31 +0530 Subject: [PATCH 66/72] Give the automatic sidebar generation plugin a shot --- docs/.vitepress/config.ts | 26 ++-- docs/about/community.md | 5 + package.json | 3 + yarn.lock | 258 ++++++++++++++++++++++++++++++++++++++ 4 files changed, 282 insertions(+), 10 deletions(-) diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 61dcc71d82..274c924782 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,4 +1,5 @@ import { defineConfig } from "vitepress"; +import AutoSidebar from "vite-plugin-vitepress-auto-sidebar"; // https://vitepress.dev/reference/site-config export default defineConfig({ @@ -17,28 +18,33 @@ export default defineConfig({ pattern: "https://github.com/ente-io/ente/edit/main/docs/docs/:path", }, - nav: [ - { text: "Photos", link: "/photos/index" }, - { text: "Authenticator", link: "/authenticator/index" }, - ], + // nav: [ + // { text: "Photos", link: "/photos/index" }, + // { text: "Authenticator", link: "/authenticator/index" }, + // ], search: { provider: "local", options: { detailedView: true, }, }, - sidebar: { - "/": sidebarPhotos(), - "/photos/": sidebarPhotos(), - "/common/": sidebarPhotos(), - "/authenticator/": sidebarAuth(), - }, + // sidebar: { + // "/": sidebarPhotos(), + // "/photos/": sidebarPhotos(), + // "/common/": sidebarPhotos(), + // "/authenticator/": sidebarAuth(), + // }, socialLinks: [ { icon: "github", link: "https://github.com/ente-io/ente/" }, { icon: "twitter", link: "https://twitter.com/enteio" }, { icon: "discord", link: "https://discord.gg/z2YVKkycX3" }, ], }, + vite: { + // Automatically create a sidebar by scanning directories + // https://github.com/QC2168/vite-plugin-vitepress-auto-sidebar + plugins: [AutoSidebar({})], + }, }); function sidebarPhotos() { diff --git a/docs/about/community.md b/docs/about/community.md index e69de29bb2..d22b07e257 100644 --- a/docs/about/community.md +++ b/docs/about/community.md @@ -0,0 +1,5 @@ +--- +title: Community +description: Connect with the community +--- + diff --git a/package.json b/package.json index d6b4b8a3b8..817c15b68e 100644 --- a/package.json +++ b/package.json @@ -10,5 +10,8 @@ "devDependencies": { "prettier": "^3", "vitepress": "^1.0.0-rc.44" + }, + "dependencies": { + "vite-plugin-vitepress-auto-sidebar": "^1.6.2" } } diff --git a/yarn.lock b/yarn.lock index 5f12adede5..903a06a33e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,6 +281,27 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + "@rollup/rollup-android-arm-eabi@4.12.0": version "4.12.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" @@ -386,6 +407,50 @@ resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== +"@typescript-eslint/parser@^5.59.2": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + "@vitejs/plugin-vue@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" @@ -546,11 +611,37 @@ algoliasearch@^4.19.1: "@algolia/requester-node-http" "4.22.1" "@algolia/transporter" "4.22.1" +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +braces@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" + integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== + dependencies: + fill-range "^7.0.1" + csstype@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== +debug@^4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -585,11 +676,41 @@ esbuild@^0.19.3: "@esbuild/win32-ia32" "0.19.12" "@esbuild/win32-x64" "0.19.12" +eslint-visitor-keys@^3.3.0: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== +fast-glob@^3.2.9: + version "3.3.2" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" + integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== + dependencies: + "@nodelib/fs.stat" "^2.0.2" + "@nodelib/fs.walk" "^1.2.3" + glob-parent "^5.1.2" + merge2 "^1.3.0" + micromatch "^4.0.4" + +fastq@^1.6.0: + version "1.17.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" + integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== + dependencies: + reusify "^1.0.4" + +fill-range@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" + integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== + dependencies: + to-regex-range "^5.0.1" + focus-trap@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" @@ -602,11 +723,59 @@ fsevents@~2.3.2, fsevents@~2.3.3: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +glob-parent@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== + dependencies: + array-union "^2.1.0" + dir-glob "^3.0.1" + fast-glob "^3.2.9" + ignore "^5.2.0" + merge2 "^1.4.1" + slash "^3.0.0" + hookable@^5.5.3: version "5.5.3" resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== +ignore@^5.2.0: + version "5.3.1" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" + integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-glob@^4.0.1, is-glob@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + magic-string@^0.30.7: version "0.30.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" @@ -619,6 +788,19 @@ mark.js@8.11.1: resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +micromatch@^4.0.4: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + minisearch@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.3.0.tgz#985a2f1ca3c73c2d65af94f0616bfe57164b0b6b" @@ -629,11 +811,21 @@ mitt@^3.0.1: resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + perfect-debounce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" @@ -644,6 +836,11 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + postcss@^8.4.35: version "8.4.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" @@ -663,6 +860,16 @@ prettier@^3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +reusify@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" + integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== + rfdc@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" @@ -690,6 +897,20 @@ rollup@^4.2.0: "@rollup/rollup-win32-x64-msvc" "4.12.0" fsevents "~2.3.2" +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +semver@^7.3.7: + version "7.6.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" + integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== + dependencies: + lru-cache "^6.0.0" + shiki@1.1.7, shiki@^1.1.5: version "1.1.7" resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.1.7.tgz#270f7830b4d08bdf6b63eb97ef93e06c7af604de" @@ -697,6 +918,11 @@ shiki@1.1.7, shiki@^1.1.5: dependencies: "@shikijs/core" "1.1.7" +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -712,6 +938,33 @@ tabbable@^6.2.0: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +tslib@^1.8.1: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +vite-plugin-vitepress-auto-sidebar@^1.6.2: + version "1.6.2" + resolved "https://registry.yarnpkg.com/vite-plugin-vitepress-auto-sidebar/-/vite-plugin-vitepress-auto-sidebar-1.6.2.tgz#f091973ee96e7100e921e992d1623199c23f8327" + integrity sha512-u8q3ZTKT6AstvKsQMC9r+vBNqzTq4oRU+/i4DLdckGkAk+n0WwPcpBcRepGW0Ie+9KT4WGhaSneMLFCbsIAMoA== + dependencies: + "@typescript-eslint/parser" "^5.59.2" + picocolors "^1.0.0" + vite@^5.1.3: version "5.1.4" resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" @@ -759,3 +1012,8 @@ vue@^3.4.19: "@vue/runtime-dom" "3.4.21" "@vue/server-renderer" "3.4.21" "@vue/shared" "3.4.21" + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== From dadfb82c2e21d49b2ebef88069b9a48af9bd2358 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 11:17:44 +0530 Subject: [PATCH 67/72] Cleanup --- .vscode/settings.json | 1 + docs/about/community.md | 5 --- docs/about/contribute.md | 0 docs/about/open-source.md | 0 docs/about/plans.md | 34 --------------- docs/auth/index.md | 15 +++++++ .../support/contribute.md | 0 docs/authenticator/faq/faq.md | 0 .../getting-started/quick-start.md | 0 docs/authenticator/index.md | 28 ------------ docs/authenticator/misc/contributors.md | 0 docs/de/auth/index.md | 13 ++++++ docs/de/authenticator/faq/faq.md | 0 .../getting-started/quick-start.md | 0 docs/de/authenticator/index.md | 29 ------------- docs/de/authenticator/misc/contributors.md | 0 docs/de/authenticator/support/contribute.md | 8 ---- docs/index.md | 43 ++++++++++++++++++- 18 files changed, 71 insertions(+), 105 deletions(-) create mode 100644 .vscode/settings.json delete mode 100644 docs/about/community.md delete mode 100644 docs/about/contribute.md delete mode 100644 docs/about/open-source.md delete mode 100644 docs/about/plans.md create mode 100644 docs/auth/index.md rename docs/{authenticator => auth}/support/contribute.md (100%) delete mode 100644 docs/authenticator/faq/faq.md delete mode 100644 docs/authenticator/getting-started/quick-start.md delete mode 100644 docs/authenticator/index.md delete mode 100644 docs/authenticator/misc/contributors.md create mode 100644 docs/de/auth/index.md delete mode 100644 docs/de/authenticator/faq/faq.md delete mode 100644 docs/de/authenticator/getting-started/quick-start.md delete mode 100644 docs/de/authenticator/index.md delete mode 100644 docs/de/authenticator/misc/contributors.md delete mode 100644 docs/de/authenticator/support/contribute.md mode change 120000 => 100644 docs/index.md diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000000..0967ef424b --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1 @@ +{} diff --git a/docs/about/community.md b/docs/about/community.md deleted file mode 100644 index d22b07e257..0000000000 --- a/docs/about/community.md +++ /dev/null @@ -1,5 +0,0 @@ ---- -title: Community -description: Connect with the community ---- - diff --git a/docs/about/contribute.md b/docs/about/contribute.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/about/open-source.md b/docs/about/open-source.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/about/plans.md b/docs/about/plans.md deleted file mode 100644 index 123482b5b1..0000000000 --- a/docs/about/plans.md +++ /dev/null @@ -1,34 +0,0 @@ -# Ente plans : Tailored for Every User - -At ente, we understand that each user is unique, and so are their storage needs. -Our range of plans is designed to cater to a diverse to diverse users, ensuring -everyone finds the perfect fit for their requirements. - -## Basic plan - -- Monthly plan ₹49 -- Yearly plan ₹499 -- Storage: 10 GB -- Ideal for casual users with limited storage needs. - -## Standard plan - -- Monthly plan ₹299 -- Yearly plan ₹2999 -- Storage: 100 Gb -- Perfect for enthusiasts who capture and store more photos. - -## Popular plan - -- Monthly plan ₹799 -- Yearly plan ₹7999 -- Storage: 500Gb -- Tailored for most users, Offering a balanced mix of storage and value. - -- ## Pro plan -- Monthly plan ₹1799 -- Yearly plan ₹17999 -- Storage: 2000GB -- Crafted for professionals, heavy users and content creators. - -#### Select the plan aligns with your needs, whether you're an occasional snapper or a content maestro. diff --git a/docs/auth/index.md b/docs/auth/index.md new file mode 100644 index 0000000000..491d1d11cc --- /dev/null +++ b/docs/auth/index.md @@ -0,0 +1,15 @@ +--- +title: Ente Auth +description: User guide for Ente Auth +--- + +# Welcome to the Ente Auth's User Guide! + +Ente Auth is a free, cross-platform, end-to-end encrypted authenticator app for +everyone. You can use it to safely store your 2FA codes (second-factor +authentication codes). + +> [!CAUTION] +> +> These docs are still incomplete. If you feel like contributing though, help us +> [fill them in](https://github.com/ente-io/ente/docs). diff --git a/docs/authenticator/support/contribute.md b/docs/auth/support/contribute.md similarity index 100% rename from docs/authenticator/support/contribute.md rename to docs/auth/support/contribute.md diff --git a/docs/authenticator/faq/faq.md b/docs/authenticator/faq/faq.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/authenticator/getting-started/quick-start.md b/docs/authenticator/getting-started/quick-start.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/authenticator/index.md b/docs/authenticator/index.md deleted file mode 100644 index 4cbb210a32..0000000000 --- a/docs/authenticator/index.md +++ /dev/null @@ -1,28 +0,0 @@ -# Welcome to the Ente Authenticator User Guide! - -Ente Authenticator is a free, cross-platform, end-to-end encrypted Authenticator -app for everyone. We're glad you're here! - -**Please note that Ente Authenticator Docs are in beta and thus are not yet -complete.** We haven't documented all of Ente Authenticator's amazing features -yet. But, we will be adding more documentation here over time. - -If you're new to Authenticator, our -[Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are -great places to begin. - -Feedback about this Authenticator documentation can be shared on our -[Discord Server](https://ente.io/discord) in the **\#documentation** channel. We -would love to hear your thoughts on anything we can fix or improve. - -## Contributing - -This documentation is open source at our -[Ente Docs](https://github.com/ente-io/docs) repo. - -We gladly welcome any fixes & improvements! Please see our -[contribution guide](https://github.com/ente-io/docs#contributing) before making -a Pull Request. - -Once your contributions are accepted, make sure to add yourself to the list of -[Contributors](./misc/contributors.md). Thank you! diff --git a/docs/authenticator/misc/contributors.md b/docs/authenticator/misc/contributors.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/de/auth/index.md b/docs/de/auth/index.md new file mode 100644 index 0000000000..3dfee073d2 --- /dev/null +++ b/docs/de/auth/index.md @@ -0,0 +1,13 @@ +--- +title: Ente Auth +description: Ente Auth-Benutzerhandbuch +--- + +# Willkommen beim Ente Auth-Benutzerhandbuch! + +Ente Authenticator ist eine kostenlose, plattformübergreifende, +Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, dass +du hier bist! + +**Please note that this German translation is currently just a placeholder.** +Know German? [Help us fill this in!](https://github.com/ente-io/ente/docs). diff --git a/docs/de/authenticator/faq/faq.md b/docs/de/authenticator/faq/faq.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/de/authenticator/getting-started/quick-start.md b/docs/de/authenticator/getting-started/quick-start.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/de/authenticator/index.md b/docs/de/authenticator/index.md deleted file mode 100644 index 9fdb3555ec..0000000000 --- a/docs/de/authenticator/index.md +++ /dev/null @@ -1,29 +0,0 @@ -# Willkommen beim Ente Authenticator-Benutzerhandbuch! - -Ente Authenticator ist eine kostenlose, plattformübergreifende, -Ende-zu-Ende-verschlüsselte Authenticator-App für jedermann. Wir sind froh, dass -du hier bist! - -**Please note that Ente Authenticator Docs are in beta and thus are not yet -complete.** We haven't documented all of Ente Authenticator's amazing features -yet. But, we will be adding more documentation here over time. - -If you're new to Authenticator, our -[Quick Start](./getting-started/quick-start.md) and [FAQ](./faq/faq.md) are -great places to begin. - -Feedback about this Authenticator documentation can be shared on our -[Discord Server](https://ente.io/discord) in the **\#documentation** channel. We -would love to hear your thoughts on anything we can fix or improve. - -## Contributing - -This documentation is open source at our -[Ente Docs](https://github.com/ente-io/docs) repo. - -We gladly welcome any fixes & improvements! Please see our -[contribution guide](https://github.com/ente-io/docs#contributing) before making -a Pull Request. - -Once your contributions are accepted, make sure to add yourself to the list of -[Contributors](./misc/contributors.md). Thank you! diff --git a/docs/de/authenticator/misc/contributors.md b/docs/de/authenticator/misc/contributors.md deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/docs/de/authenticator/support/contribute.md b/docs/de/authenticator/support/contribute.md deleted file mode 100644 index dd208e1f3b..0000000000 --- a/docs/de/authenticator/support/contribute.md +++ /dev/null @@ -1,8 +0,0 @@ -## Translation - -## Icons - -## Support Development - -If you wish to support the development of the project, please consider switching -to paid plan of [Ente Photos](https://ente.io) diff --git a/docs/index.md b/docs/index.md deleted file mode 120000 index fee7ba2281..0000000000 --- a/docs/index.md +++ /dev/null @@ -1 +0,0 @@ -photos/index.md \ No newline at end of file diff --git a/docs/index.md b/docs/index.md new file mode 100644 index 0000000000..7fd7214a1f --- /dev/null +++ b/docs/index.md @@ -0,0 +1,42 @@ +# Welcome to Help! + +Welcome to Ente Photos Help! If you're new to Ente Photos, our +[Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great +places to begin. + +If you can’t find an answer, please [ask the community](https://ente.io/discord) +or write to **support@ente.io**. + +To send a bug report or a feature suggestion, you can use +[Github Issues](https://github.com/ente-io/photos-app/issues). + +Feedback about this documentation can be shared on our +[Discord Server](https://ente.io/discord) in the **\#docs** channel. We would +love to hear your thoughts on anything we can fix or improve. + +## About Ente Photos + +[Ente Photos](https://ente.io) is a safe home for your photos and videos. + +You can store, share, and re-discover your moments with absolute privacy. + +## About Ente Auth + +[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with +multi-platform sync. + +Learn more about Auth [here](../authenticator/). + +## Contributing + +The source for this documentation is available at +[github.com/ente-io/docs](https://github.com/ente-io/docs). + +Please see our +[contribution guide](https://github.com/ente-io/docs#contributing). We'd be +grateful for any fixes and improvements! + +Once your contributions are accepted, please add yourself to the list of +[Contributors](./misc/contributors.md). + +Thank you! From a509043627e3e3c5673383ee0fd6df5ac9b58d3c Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 11:39:07 +0530 Subject: [PATCH 68/72] Auto sidebar didn't kinda work for us --- README.md | 6 +- docs/.vitepress/config.ts | 130 +------------------ docs/.vitepress/sidebar.ts | 95 ++++++++++++++ docs/about/company.md | 22 ---- docs/about/ducky.png | Bin 0 -> 88813 bytes docs/about/index.md | 118 +++++++++++++++++ docs/about/products.md | 44 ------- docs/about/support.md | 43 ------- docs/index.md | 42 ------ package.json | 3 - yarn.lock | 258 ------------------------------------- 11 files changed, 218 insertions(+), 543 deletions(-) create mode 100644 docs/.vitepress/sidebar.ts delete mode 100644 docs/about/company.md create mode 100644 docs/about/ducky.png create mode 100644 docs/about/index.md delete mode 100644 docs/about/products.md delete mode 100644 docs/about/support.md delete mode 100644 docs/index.md diff --git a/README.md b/README.md index e281afd2a2..30095e8efb 100644 --- a/README.md +++ b/README.md @@ -4,9 +4,9 @@ Help and documentation for Ente's products > [!CAUTION] > -> **Currently not published**. There are minor bits we need to clean up before -> publishing these. They'll likely be available at help.ente.io once we wrap -> those loose ends up. +> **Currently not published**. There are bits we need to clean up before +> publishing these docs. They'll likely be available at help.ente.io once we +> wrap those loose ends up. ## Running diff --git a/docs/.vitepress/config.ts b/docs/.vitepress/config.ts index 274c924782..460dacc8af 100644 --- a/docs/.vitepress/config.ts +++ b/docs/.vitepress/config.ts @@ -1,5 +1,5 @@ import { defineConfig } from "vitepress"; -import AutoSidebar from "vite-plugin-vitepress-auto-sidebar"; +import { sidebar } from "./sidebar"; // https://vitepress.dev/reference/site-config export default defineConfig({ @@ -28,137 +28,11 @@ export default defineConfig({ detailedView: true, }, }, - // sidebar: { - // "/": sidebarPhotos(), - // "/photos/": sidebarPhotos(), - // "/common/": sidebarPhotos(), - // "/authenticator/": sidebarAuth(), - // }, + sidebar: sidebar, socialLinks: [ { icon: "github", link: "https://github.com/ente-io/ente/" }, { icon: "twitter", link: "https://twitter.com/enteio" }, { icon: "discord", link: "https://discord.gg/z2YVKkycX3" }, ], }, - vite: { - // Automatically create a sidebar by scanning directories - // https://github.com/QC2168/vite-plugin-vitepress-auto-sidebar - plugins: [AutoSidebar({})], - }, }); - -function sidebarPhotos() { - return [ - { - text: "Welcome", - items: [ - { - text: "About", - collapsed: true, - link: "/about/company", - items: [ - { text: "Company", link: "/about/company" }, - { text: "Products", link: "/about/products" }, - { text: "Plans", link: "/about/plans" }, - { text: "Support", link: "/about/support" }, - { text: "Community", link: "/about/community" }, - { text: "Open source", link: "/about/open-source" }, - { text: "Contribute", link: "/about/contribute" }, - ], - }, - { - text: "Features", - collapsed: true, - items: [ - { - text: "Family Plan", - link: "/photos/features/family-plan", - }, - { text: "Albums", link: "/photos/features/albums" }, - { text: "Archive", link: "/photos/features/archive" }, - { text: "Hidden", link: "/photos/features/hidden" }, - { text: "Map", link: "/photos/features/map" }, - { - text: "Location Tags", - link: "/photos/features/location", - }, - { - text: "Collect Photos", - link: "/photos/features/collect", - }, - { - text: "Public links", - link: "/photos/features/public-links", - }, - { - text: "Quick link", - link: "/photos/features/quick-link", - }, - { - text: "Watch folder", - link: "/photos/features/watch-folder", - }, - { text: "Trash", link: "/photos/features/trash" }, - { - text: "Uncategorized", - link: "/photos/features/uncategorized", - }, - { - text: "Referral Plan", - link: "/photos/features/referral", - }, - { - text: "Live & Motion Photos", - link: "/photos/features/live-photos", - }, - { text: "Cast", link: "/photos/features/cast" }, - ], - }, - { - text: "Troubleshoot", - collapsed: true, - link: "/photos/troubleshooting/files-not-uploading", - items: [ - { - text: "Files not uploading", - link: "/photos/troubleshooting/files-not-uploading", - }, - { - text: "Failed to play video", - link: "/photos/troubleshooting/video-not-playing", - }, - { - text: "Report bug", - link: "/photos/troubleshooting/report-bug", - }, - ], - }, - ], - }, - ]; -} - -function sidebarAuth() { - return [ - { - text: "About", - collapsed: true, - link: "/about/company", - items: [ - { text: "Company", link: "/about/company" }, - { text: "Products", link: "/about/products" }, - { text: "Community", link: "/about/community" }, - { text: "Open source", link: "/about/open-source" }, - { text: "Contribute", link: "/about/contribute" }, - ], - }, - { - text: "FAQ", - link: "/authenticator/faq/faq", - }, - { - text: "Contribute", - link: "/authenticator/support/contribute", - }, - ]; -} diff --git a/docs/.vitepress/sidebar.ts b/docs/.vitepress/sidebar.ts new file mode 100644 index 0000000000..8f2d556f42 --- /dev/null +++ b/docs/.vitepress/sidebar.ts @@ -0,0 +1,95 @@ +// When adding new pages, they need to manually inserted into their appropriate +// place here if you wish them to also appear in the sidebar. + +export const sidebar = []; + +function sidebarOld() { + return [ + { + text: "Welcome", + items: [ + { + text: "About", + collapsed: true, + link: "/about/company", + items: [ + { text: "Company", link: "/about/company" }, + { text: "Products", link: "/about/products" }, + { text: "Plans", link: "/about/plans" }, + { text: "Support", link: "/about/support" }, + { text: "Community", link: "/about/community" }, + { text: "Open source", link: "/about/open-source" }, + { text: "Contribute", link: "/about/contribute" }, + ], + }, + { + text: "Features", + collapsed: true, + items: [ + { + text: "Family Plan", + link: "/photos/features/family-plan", + }, + { text: "Albums", link: "/photos/features/albums" }, + { text: "Archive", link: "/photos/features/archive" }, + { text: "Hidden", link: "/photos/features/hidden" }, + { text: "Map", link: "/photos/features/map" }, + { + text: "Location Tags", + link: "/photos/features/location", + }, + { + text: "Collect Photos", + link: "/photos/features/collect", + }, + { + text: "Public links", + link: "/photos/features/public-links", + }, + { + text: "Quick link", + link: "/photos/features/quick-link", + }, + { + text: "Watch folder", + link: "/photos/features/watch-folder", + }, + { text: "Trash", link: "/photos/features/trash" }, + { + text: "Uncategorized", + link: "/photos/features/uncategorized", + }, + { + text: "Referral Plan", + link: "/photos/features/referral", + }, + { + text: "Live & Motion Photos", + link: "/photos/features/live-photos", + }, + { text: "Cast", link: "/photos/features/cast" }, + ], + }, + { + text: "Troubleshoot", + collapsed: true, + link: "/photos/troubleshooting/files-not-uploading", + items: [ + { + text: "Files not uploading", + link: "/photos/troubleshooting/files-not-uploading", + }, + { + text: "Failed to play video", + link: "/photos/troubleshooting/video-not-playing", + }, + { + text: "Report bug", + link: "/photos/troubleshooting/report-bug", + }, + ], + }, + ], + }, + ]; +} diff --git a/docs/about/company.md b/docs/about/company.md deleted file mode 100644 index 4c3fa8a137..0000000000 --- a/docs/about/company.md +++ /dev/null @@ -1,22 +0,0 @@ -# About - -On February 1, 2020, Ente was born out of the necessity for a secure archival -solution for personal photos and videos. Founded by Vishnu Mohandas in response -to privacy concerns with major tech companies, Ente provides end-to-end -encrypted apps across platforms. - -The team at Ente aims to contribute to making the world a safer place for the -preservation of personal memories. The road ahead is long, but the journey has -started, fueled by a commitment to privacy and a deep sense of responsibility -towards the users we serve. - -In the realm of privacy and protection, we currently offer two products—Ente -Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon - -# What does Ente mean? - -"Ente" holds dual significance for us. In Malayalam, the native language of our -founder, it translates to "mine," giving "ente Photos" the direct meaning of "my -photos." Additionally, our founder discovered that "ente" means "duck" in -German. This unexpected connection led to the adoption of the duck as our mascot -and we lovingly refer to our mascot as "Ducky," diff --git a/docs/about/ducky.png b/docs/about/ducky.png new file mode 100644 index 0000000000000000000000000000000000000000..991252998b5d565ee8091c6b38ff8671cd17fd70 GIT binary patch literal 88813 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 P00000NkvXXu0mjfF`jGn literal 0 HcmV?d00001 diff --git a/docs/about/index.md b/docs/about/index.md new file mode 100644 index 0000000000..4600d8b62b --- /dev/null +++ b/docs/about/index.md @@ -0,0 +1,118 @@ +--- +title: About Ente +description: > + An overview of Ente: the company, and the people behind it, and the products + that we make. +--- + +Ente is a platform for privately, reliably, and securely storing your data on +the cloud. On top of this platform, Ente offers two products currently: + +* Ente Photos - An alternative to Google Photos and Apple Photos + +* Ente Auth - A (free!) app for storing your 2FA codes. + +and more products are in the pipeline. + +## History + +Ente was the founded by Vishnu Mohandas, who is also the current CEO, in +response to privacy concerns with major tech companies. The underlying +motivation was the understanding that big tech had no incentive to fix their +act, but with end-to-end encrypted cross platform apps, there was a way for +people to take back control over their own data without sacrificing on features. + +### What does Ente mean? + +In Malayalam, Vishnu's native language, "ente" means "mine". Thus "Ente Photos" +has the literal meaning "my photos". + +This was a good name, but still Vishnu looked around for better ones. But one +day, he discovered that "ente" means "duck" in German. This unexpected +connection sealed the deal! We should ask him why he likes ducks so much, but +apparently he does, so this dual meaning ("mine" / "duck") led him to finalize +the name, and also led to the adoption of the duck as Ente's mascot, "Ducky": + +![Ente's mascot, Ducky](ducky.png) + + +# Ente products + +In the realm of privacy and protection, we currently offer two products—Ente +Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon + +# Ente photos + +Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and +the safety of your cherished memories. All your photos, along with their +metadata, are stored end-to-end encrypted, ensuring that only you have access to +your data. + +To fortify the security of your memories, Ente preserves your encrypted photos +across three different clouds in three separate locations, including an +underground fallout shelter. This multi-layered backup strategy guarantees the +utmost safety for your data. + +Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. + +Ente Photos is not just a storage solution; it's a commitment to safeguarding +your memories. + +# Ente auth + +Ente auth is not just an authenticator app; it's an open-source initiative +dedicated to securing your 2FA secrets. Now, you can backup and view your +two-factor authentication secrets seamlessly. find more information about the +project on GitHub at github.com/ente-io/auth. + +As a token of gratitude to the community that has supported us, Ente Auth is +offered as a free service. In the spirit of transparency, If in the future we +convert this to a paid service, existing users will be grandfathered in. + +Ente auth is available on Android, iOS, and the web + + +# Connect with Ente + +## Customer support + +Connect with our support team for swift assistance and expert guidance email us +@support@ente.io. +Reach out to our dev team @team@ente.io, even our CEO and CTO personally +responds here. + +## Blog + +As Ente continues to evolve, So does our story. Follow our blog @ +https://ente.io/blog As Ente undergoes continuous growth and development, our +narrative unfolds. Explore our blog for exclusive company updates that offer an +insider's perspective. Regularly visit the Ente blog to maintain your +connection, stay well informed, and draw insipration. + +## Roadmap + +You plays a pivotal role in shaping the future direction of Ente's product, and +we invite you to be an integral part of it. + +Take a look at our roadmap to see where we're headed +https://roadmap.ente.io/roadmap/ + +# Community + +#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content + +#### Discord + +Join our Discord for real-time discussions, solutions to queries, and a thriving +camaraderie. Stay updated on all things on Ente! + +🐦 Twitter: https://twitter.com/enteio + +🔗 Reddit: https://www.reddit.com/r/enteio + +📸 Instagram: https://www.instagram.com/ente.app/ + +🐘 Mastodon: https://mstdn.social/@ente + +🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ + diff --git a/docs/about/products.md b/docs/about/products.md deleted file mode 100644 index 4b78740d5b..0000000000 --- a/docs/about/products.md +++ /dev/null @@ -1,44 +0,0 @@ -# Ente products - -In the realm of privacy and protection, we currently offer two products—Ente -Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon - -# Ente photos - -Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and -the safety of your cherished memories. All your photos, along with their -metadata, are stored end-to-end encrypted, ensuring that only you have access to -your data. - -To fortify the security of your memories, Ente preserves your encrypted photos -across three different clouds in three separate locations, including an -underground fallout shelter. This multi-layered backup strategy guarantees the -utmost safety for your data. - -Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. - -Ente Photos is not just a storage solution; it's a commitment to safeguarding -your memories. - -# Ente auth - -Ente auth is not just an authenticator app; it's an open-source initiative -dedicated to securing your 2FA secrets. Now, you can backup and view your -two-factor authentication secrets seamlessly. find more information about the -project on GitHub at github.com/ente-io/auth. - -As a token of gratitude to the community that has supported us, Ente Auth is -offered as a free service. In the spirit of transparency, If in the future we -convert this to a paid service, existing users will be grandfathered in. - -Ente auth is available on Android, iOS, and the web - -# Ente lockers (coming soon) - -Ente Lockers is more than just a file storage solution; it's a purpose-driven -platform designed to redefine how you manage crucial documents in your life. -With a straightforward interface, it ensures easy access to files that matter -the most—those frequently needed and intended for future generations. - -Stay tuned for our upcoming product end-to-end encryption file storage app, -currently under construction! diff --git a/docs/about/support.md b/docs/about/support.md deleted file mode 100644 index 3adb28f0d0..0000000000 --- a/docs/about/support.md +++ /dev/null @@ -1,43 +0,0 @@ -# Connect with Ente - -## Customer support - -Connect with our support team for swift assistance and expert guidance email us -@support@ente.io. -Reach out to our dev team @team@ente.io, even our CEO and CTO personally -responds here. - -## Blog - -As Ente continues to evolve, So does our story. Follow our blog @ -https://ente.io/blog As Ente undergoes continuous growth and development, our -narrative unfolds. Explore our blog for exclusive company updates that offer an -insider's perspective. Regularly visit the Ente blog to maintain your -connection, stay well informed, and draw insipration. - -## Roadmap - -You plays a pivotal role in shaping the future direction of Ente's product, and -we invite you to be an integral part of it. - -Take a look at our roadmap to see where we're headed -https://roadmap.ente.io/roadmap/ - -# Community - -#### Join our vibrant community and stay updated on all things on Ente! Follow us on various platforms for the latest news, updates, and engaging content - -#### Discord - -Join our Discord for real-time discussions, solutions to queries, and a thriving -camaraderie. Stay updated on all things on Ente! - -🐦 Twitter: https://twitter.com/enteio - -🔗 Reddit: https://www.reddit.com/r/enteio - -📸 Instagram: https://www.instagram.com/ente.app/ - -🐘 Mastodon: https://mstdn.social/@ente - -🔗 LinkedIn: https://www.linkedin.com/company/ente-io/ diff --git a/docs/index.md b/docs/index.md deleted file mode 100644 index 7fd7214a1f..0000000000 --- a/docs/index.md +++ /dev/null @@ -1,42 +0,0 @@ -# Welcome to Help! - -Welcome to Ente Photos Help! If you're new to Ente Photos, our -[Quick Start](./getting-started/index.md) and [FAQs](./faq/faq.md) are great -places to begin. - -If you can’t find an answer, please [ask the community](https://ente.io/discord) -or write to **support@ente.io**. - -To send a bug report or a feature suggestion, you can use -[Github Issues](https://github.com/ente-io/photos-app/issues). - -Feedback about this documentation can be shared on our -[Discord Server](https://ente.io/discord) in the **\#docs** channel. We would -love to hear your thoughts on anything we can fix or improve. - -## About Ente Photos - -[Ente Photos](https://ente.io) is a safe home for your photos and videos. - -You can store, share, and re-discover your moments with absolute privacy. - -## About Ente Auth - -[Ente Auth](https://ente.io/auth) is a secure, end-to-end encrypted 2FA app with -multi-platform sync. - -Learn more about Auth [here](../authenticator/). - -## Contributing - -The source for this documentation is available at -[github.com/ente-io/docs](https://github.com/ente-io/docs). - -Please see our -[contribution guide](https://github.com/ente-io/docs#contributing). We'd be -grateful for any fixes and improvements! - -Once your contributions are accepted, please add yourself to the list of -[Contributors](./misc/contributors.md). - -Thank you! diff --git a/package.json b/package.json index 817c15b68e..d6b4b8a3b8 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,5 @@ "devDependencies": { "prettier": "^3", "vitepress": "^1.0.0-rc.44" - }, - "dependencies": { - "vite-plugin-vitepress-auto-sidebar": "^1.6.2" } } diff --git a/yarn.lock b/yarn.lock index 903a06a33e..5f12adede5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -281,27 +281,6 @@ resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz#d7c6e6755c78567a951e04ab52ef0fd26de59f32" integrity sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg== -"@nodelib/fs.scandir@2.1.5": - version "2.1.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" - integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== - dependencies: - "@nodelib/fs.stat" "2.0.5" - run-parallel "^1.1.9" - -"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": - version "2.0.5" - resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" - integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== - -"@nodelib/fs.walk@^1.2.3": - version "1.2.8" - resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" - integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== - dependencies: - "@nodelib/fs.scandir" "2.1.5" - fastq "^1.6.0" - "@rollup/rollup-android-arm-eabi@4.12.0": version "4.12.0" resolved "https://registry.yarnpkg.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.12.0.tgz#38c3abd1955a3c21d492af6b1a1dca4bb1d894d6" @@ -407,50 +386,6 @@ resolved "https://registry.yarnpkg.com/@types/web-bluetooth/-/web-bluetooth-0.0.20.tgz#f066abfcd1cbe66267cdbbf0de010d8a41b41597" integrity sha512-g9gZnnXVq7gM7v3tJCWV/qw7w+KeOlSHAhgF9RytFyifW6AF61hdT2ucrYhPq9hLs5JIryeupHV3qGk95dH9ow== -"@typescript-eslint/parser@^5.59.2": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" - integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== - dependencies: - "@typescript-eslint/scope-manager" "5.62.0" - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/typescript-estree" "5.62.0" - debug "^4.3.4" - -"@typescript-eslint/scope-manager@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" - integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - -"@typescript-eslint/types@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" - integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== - -"@typescript-eslint/typescript-estree@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" - integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== - dependencies: - "@typescript-eslint/types" "5.62.0" - "@typescript-eslint/visitor-keys" "5.62.0" - debug "^4.3.4" - globby "^11.1.0" - is-glob "^4.0.3" - semver "^7.3.7" - tsutils "^3.21.0" - -"@typescript-eslint/visitor-keys@5.62.0": - version "5.62.0" - resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" - integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== - dependencies: - "@typescript-eslint/types" "5.62.0" - eslint-visitor-keys "^3.3.0" - "@vitejs/plugin-vue@^5.0.4": version "5.0.4" resolved "https://registry.yarnpkg.com/@vitejs/plugin-vue/-/plugin-vue-5.0.4.tgz#508d6a0f2440f86945835d903fcc0d95d1bb8a37" @@ -611,37 +546,11 @@ algoliasearch@^4.19.1: "@algolia/requester-node-http" "4.22.1" "@algolia/transporter" "4.22.1" -array-union@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" - integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== - -braces@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.2.tgz#3454e1a462ee8d599e236df336cd9ea4f8afe107" - integrity sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A== - dependencies: - fill-range "^7.0.1" - csstype@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81" integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw== -debug@^4.3.4: - version "4.3.4" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" - integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== - dependencies: - ms "2.1.2" - -dir-glob@^3.0.1: - version "3.0.1" - resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" - integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== - dependencies: - path-type "^4.0.0" - entities@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48" @@ -676,41 +585,11 @@ esbuild@^0.19.3: "@esbuild/win32-ia32" "0.19.12" "@esbuild/win32-x64" "0.19.12" -eslint-visitor-keys@^3.3.0: - version "3.4.3" - resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" - integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== - estree-walker@^2.0.2: version "2.0.2" resolved "https://registry.yarnpkg.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac" integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w== -fast-glob@^3.2.9: - version "3.3.2" - resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.2.tgz#a904501e57cfdd2ffcded45e99a54fef55e46129" - integrity sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow== - dependencies: - "@nodelib/fs.stat" "^2.0.2" - "@nodelib/fs.walk" "^1.2.3" - glob-parent "^5.1.2" - merge2 "^1.3.0" - micromatch "^4.0.4" - -fastq@^1.6.0: - version "1.17.1" - resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.17.1.tgz#2a523f07a4e7b1e81a42b91b8bf2254107753b47" - integrity sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w== - dependencies: - reusify "^1.0.4" - -fill-range@^7.0.1: - version "7.0.1" - resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" - integrity sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ== - dependencies: - to-regex-range "^5.0.1" - focus-trap@^7.5.4: version "7.5.4" resolved "https://registry.yarnpkg.com/focus-trap/-/focus-trap-7.5.4.tgz#6c4e342fe1dae6add9c2aa332a6e7a0bbd495ba2" @@ -723,59 +602,11 @@ fsevents@~2.3.2, fsevents@~2.3.3: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== -glob-parent@^5.1.2: - version "5.1.2" - resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" - integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== - dependencies: - is-glob "^4.0.1" - -globby@^11.1.0: - version "11.1.0" - resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" - integrity sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g== - dependencies: - array-union "^2.1.0" - dir-glob "^3.0.1" - fast-glob "^3.2.9" - ignore "^5.2.0" - merge2 "^1.4.1" - slash "^3.0.0" - hookable@^5.5.3: version "5.5.3" resolved "https://registry.yarnpkg.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d" integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ== -ignore@^5.2.0: - version "5.3.1" - resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.1.tgz#5073e554cd42c5b33b394375f538b8593e34d4ef" - integrity sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw== - -is-extglob@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" - integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== - -is-glob@^4.0.1, is-glob@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" - integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== - dependencies: - is-extglob "^2.1.1" - -is-number@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" - integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== - -lru-cache@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" - integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== - dependencies: - yallist "^4.0.0" - magic-string@^0.30.7: version "0.30.7" resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.30.7.tgz#0cecd0527d473298679da95a2d7aeb8c64048505" @@ -788,19 +619,6 @@ mark.js@8.11.1: resolved "https://registry.yarnpkg.com/mark.js/-/mark.js-8.11.1.tgz#180f1f9ebef8b0e638e4166ad52db879beb2ffc5" integrity sha512-1I+1qpDt4idfgLQG+BNWmrqku+7/2bi5nLf4YwF8y8zXvmfiTBY3PV3ZibfrjBueCByROpuBjLLFCajqkgYoLQ== -merge2@^1.3.0, merge2@^1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" - integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== - -micromatch@^4.0.4: - version "4.0.5" - resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" - integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== - dependencies: - braces "^3.0.2" - picomatch "^2.3.1" - minisearch@^6.3.0: version "6.3.0" resolved "https://registry.yarnpkg.com/minisearch/-/minisearch-6.3.0.tgz#985a2f1ca3c73c2d65af94f0616bfe57164b0b6b" @@ -811,21 +629,11 @@ mitt@^3.0.1: resolved "https://registry.yarnpkg.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1" integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw== -ms@2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" - integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== - nanoid@^3.3.7: version "3.3.7" resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.7.tgz#d0c301a691bc8d54efa0a2226ccf3fe2fd656bd8" integrity sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g== -path-type@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" - integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== - perfect-debounce@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a" @@ -836,11 +644,6 @@ picocolors@^1.0.0: resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" integrity sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ== -picomatch@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" - integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== - postcss@^8.4.35: version "8.4.35" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.35.tgz#60997775689ce09011edf083a549cea44aabe2f7" @@ -860,16 +663,6 @@ prettier@^3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.2.5.tgz#e52bc3090586e824964a8813b09aba6233b28368" integrity sha512-3/GWa9aOC0YeD7LUfvOG2NiDyhOWRvt1k+rcKhOuYnMY24iiCphgneUfJDyFXd6rZCAnuLBv6UeAULtrhT/F4A== -queue-microtask@^1.2.2: - version "1.2.3" - resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" - integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== - -reusify@^1.0.4: - version "1.0.4" - resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.0.4.tgz#90da382b1e126efc02146e90845a88db12925d76" - integrity sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw== - rfdc@^1.3.1: version "1.3.1" resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.3.1.tgz#2b6d4df52dffe8bb346992a10ea9451f24373a8f" @@ -897,20 +690,6 @@ rollup@^4.2.0: "@rollup/rollup-win32-x64-msvc" "4.12.0" fsevents "~2.3.2" -run-parallel@^1.1.9: - version "1.2.0" - resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" - integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== - dependencies: - queue-microtask "^1.2.2" - -semver@^7.3.7: - version "7.6.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-7.6.0.tgz#1a46a4db4bffcccd97b743b5005c8325f23d4e2d" - integrity sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg== - dependencies: - lru-cache "^6.0.0" - shiki@1.1.7, shiki@^1.1.5: version "1.1.7" resolved "https://registry.yarnpkg.com/shiki/-/shiki-1.1.7.tgz#270f7830b4d08bdf6b63eb97ef93e06c7af604de" @@ -918,11 +697,6 @@ shiki@1.1.7, shiki@^1.1.5: dependencies: "@shikijs/core" "1.1.7" -slash@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" - integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== - source-map-js@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" @@ -938,33 +712,6 @@ tabbable@^6.2.0: resolved "https://registry.yarnpkg.com/tabbable/-/tabbable-6.2.0.tgz#732fb62bc0175cfcec257330be187dcfba1f3b97" integrity sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew== -to-regex-range@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" - integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== - dependencies: - is-number "^7.0.0" - -tslib@^1.8.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" - integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== - -tsutils@^3.21.0: - version "3.21.0" - resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" - integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== - dependencies: - tslib "^1.8.1" - -vite-plugin-vitepress-auto-sidebar@^1.6.2: - version "1.6.2" - resolved "https://registry.yarnpkg.com/vite-plugin-vitepress-auto-sidebar/-/vite-plugin-vitepress-auto-sidebar-1.6.2.tgz#f091973ee96e7100e921e992d1623199c23f8327" - integrity sha512-u8q3ZTKT6AstvKsQMC9r+vBNqzTq4oRU+/i4DLdckGkAk+n0WwPcpBcRepGW0Ie+9KT4WGhaSneMLFCbsIAMoA== - dependencies: - "@typescript-eslint/parser" "^5.59.2" - picocolors "^1.0.0" - vite@^5.1.3: version "5.1.4" resolved "https://registry.yarnpkg.com/vite/-/vite-5.1.4.tgz#14e9d3e7a6e488f36284ef13cebe149f060bcfb6" @@ -1012,8 +759,3 @@ vue@^3.4.19: "@vue/runtime-dom" "3.4.21" "@vue/server-renderer" "3.4.21" "@vue/shared" "3.4.21" - -yallist@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" - integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== From f5a27f2b2c8efc0d189c52f442620b743212b910 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 11:46:32 +0530 Subject: [PATCH 69/72] Resize image https://github.com/vuejs/vitepress/discussions/1611 --- README.md | 4 ++++ docs/about/index.md | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 30095e8efb..7af2291779 100644 --- a/README.md +++ b/README.md @@ -43,3 +43,7 @@ for non-technical people to also provide their input. The reason for this is not to increase the number of docs, but to bring more diversity to them. Such diversity of viewpoints is essential for evolving documents that can be of help to people of varying level of familiarity with tech. + +If you're unsure about how to do something, just look around in the other files +and copy paste whatever seems to match the look of what you're trying to do. And +remember, writing docs should not be a chore, have fun! diff --git a/docs/about/index.md b/docs/about/index.md index 4600d8b62b..81db998846 100644 --- a/docs/about/index.md +++ b/docs/about/index.md @@ -33,7 +33,7 @@ connection sealed the deal! We should ask him why he likes ducks so much, but apparently he does, so this dual meaning ("mine" / "duck") led him to finalize the name, and also led to the adoption of the duck as Ente's mascot, "Ducky": -![Ente's mascot, Ducky](ducky.png) +![Ente's mascot, Ducky](ducky.png){width=250px} # Ente products From 22af3e4359de7dbb4fe9a9008703eafa21468359 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 12:01:52 +0530 Subject: [PATCH 70/72] Prepare for merge --- docs/about/index.md | 48 ++++++++++++++++++++----------------- docs/photos/import/index.md | 1 - 2 files changed, 26 insertions(+), 23 deletions(-) delete mode 100644 docs/photos/import/index.md diff --git a/docs/about/index.md b/docs/about/index.md index 81db998846..d52fbf1c9c 100644 --- a/docs/about/index.md +++ b/docs/about/index.md @@ -16,11 +16,11 @@ and more products are in the pipeline. ## History -Ente was the founded by Vishnu Mohandas, who is also the current CEO, in -response to privacy concerns with major tech companies. The underlying -motivation was the understanding that big tech had no incentive to fix their -act, but with end-to-end encrypted cross platform apps, there was a way for -people to take back control over their own data without sacrificing on features. +Ente was the founded by Vishnu Mohandas, who is also the Ente's CEO, in response +to privacy concerns with major tech companies. The underlying motivation was the +understanding that big tech had no incentive to fix their act, but with +end-to-end encrypted cross platform apps, there was a way for people to take +back control over their own data without sacrificing on features. ### What does Ente mean? @@ -33,45 +33,49 @@ connection sealed the deal! We should ask him why he likes ducks so much, but apparently he does, so this dual meaning ("mine" / "duck") led him to finalize the name, and also led to the adoption of the duck as Ente's mascot, "Ducky": -![Ente's mascot, Ducky](ducky.png){width=250px} +
+![Ente's mascot, Ducky](ducky.png){width=200px} -# Ente products +
-In the realm of privacy and protection, we currently offer two products—Ente -Photos and Ente Authenticator—with Ente Lockers set to join our lineup soon +### How do I pronounce Ente? -# Ente photos +en-_tay_. Like cafe. + +--- + +# Products + +Ente currently offers Photo and Auth. Additionally, there are some other +products (Lockers and Legacy) that are being considered. + +## Ente Photos Ente Photos goes beyond traditional cloud storage, prioritizing your privacy and the safety of your cherished memories. All your photos, along with their metadata, are stored end-to-end encrypted, ensuring that only you have access to your data. -To fortify the security of your memories, Ente preserves your encrypted photos -across three different clouds in three separate locations, including an -underground fallout shelter. This multi-layered backup strategy guarantees the -utmost safety for your data. +Ente preserves your encrypted photos across three different clouds in three +separate locations, including an underground fallout shelter. This multi-layered +backup strategy provides a high level of reliability. Ente photos is available for Android, iOS, Linux, Mac, Windows and the web. -Ente Photos is not just a storage solution; it's a commitment to safeguarding -your memories. +# Ente Auth -# Ente auth - -Ente auth is not just an authenticator app; it's an open-source initiative +Ente auth is ust an authenticator app; it's an open-source initiative dedicated to securing your 2FA secrets. Now, you can backup and view your two-factor authentication secrets seamlessly. find more information about the project on GitHub at github.com/ente-io/auth. As a token of gratitude to the community that has supported us, Ente Auth is -offered as a free service. In the spirit of transparency, If in the future we -convert this to a paid service, existing users will be grandfathered in. +offered as a free service. If in the future we convert this to a paid service, +existing users will be grandfathered in. Ente auth is available on Android, iOS, and the web - # Connect with Ente ## Customer support diff --git a/docs/photos/import/index.md b/docs/photos/import/index.md deleted file mode 100644 index 9ecf368dd5..0000000000 --- a/docs/photos/import/index.md +++ /dev/null @@ -1 +0,0 @@ -# Import From bc2551e544fd021ddd8d28a88793ec3051a20360 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 12:06:06 +0530 Subject: [PATCH 71/72] Remove accidentally committed vscode --- .vscode/settings.json | 1 - 1 file changed, 1 deletion(-) delete mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json deleted file mode 100644 index 0967ef424b..0000000000 --- a/.vscode/settings.json +++ /dev/null @@ -1 +0,0 @@ -{} From 6dfc05907308e1e2c7891960479f84bdc9176da9 Mon Sep 17 00:00:00 2001 From: Manav Rathi Date: Fri, 1 Mar 2024 12:43:55 +0530 Subject: [PATCH 72/72] Move into docs/ --- .gitignore => docs/.gitignore | 0 .prettierrc.json => docs/.prettierrc.json | 0 README.md => docs/README.md | 0 docs/{ => docs}/.vitepress/config.ts | 0 docs/{ => docs}/.vitepress/sidebar.ts | 0 docs/{ => docs}/.vitepress/theme/custom.css | 0 docs/{ => docs}/.vitepress/theme/index.js | 0 docs/{ => docs}/about/ducky.png | Bin docs/{ => docs}/about/index.md | 0 docs/{ => docs}/auth/index.md | 0 docs/{ => docs}/auth/support/contribute.md | 0 docs/{ => docs}/de/auth/index.md | 0 docs/{ => docs}/photos/faq/faq.md | 0 docs/{ => docs}/photos/features/albums.md | 0 docs/{ => docs}/photos/features/archive.md | 0 docs/{ => docs}/photos/features/cast.md | 0 docs/{ => docs}/photos/features/collect.md | 0 docs/{ => docs}/photos/features/family-plan.md | 0 docs/{ => docs}/photos/features/hidden.md | 0 docs/{ => docs}/photos/features/live-photos.md | 0 docs/{ => docs}/photos/features/location.md | 0 docs/{ => docs}/photos/features/map.md | 0 docs/{ => docs}/photos/features/public-links.md | 0 docs/{ => docs}/photos/features/quick-link.md | 0 docs/{ => docs}/photos/features/referral.md | 0 docs/{ => docs}/photos/features/trash.md | 0 docs/{ => docs}/photos/features/uncategorized.md | 0 docs/{ => docs}/photos/features/watch-folder.md | 0 docs/{ => docs}/photos/getting-started/index.md | 0 docs/{ => docs}/photos/index.md | 0 docs/{ => docs}/photos/misc/contributors.md | 0 .../photos/troubleshooting/files-not-uploading.md | 0 .../{ => docs}/photos/troubleshooting/report-bug.md | 0 .../photos/troubleshooting/video-not-playing.md | 0 .../public/assets/cast/tv-pairing-screen.webp | Bin .../public/assets/cast/web-pairing-options.webp | Bin .../public/assets/cast/web-play-album-on-tv.webp | Bin docs/{ => docs}/public/favicon.png | Bin docs/{ => docs}/public/logo.png | Bin package.json => docs/package.json | 0 yarn.lock => docs/yarn.lock | 0 41 files changed, 0 insertions(+), 0 deletions(-) rename .gitignore => docs/.gitignore (100%) rename .prettierrc.json => docs/.prettierrc.json (100%) rename README.md => docs/README.md (100%) rename docs/{ => docs}/.vitepress/config.ts (100%) rename docs/{ => docs}/.vitepress/sidebar.ts (100%) rename docs/{ => docs}/.vitepress/theme/custom.css (100%) rename docs/{ => docs}/.vitepress/theme/index.js (100%) rename docs/{ => docs}/about/ducky.png (100%) rename docs/{ => docs}/about/index.md (100%) rename docs/{ => docs}/auth/index.md (100%) rename docs/{ => docs}/auth/support/contribute.md (100%) rename docs/{ => docs}/de/auth/index.md (100%) rename docs/{ => docs}/photos/faq/faq.md (100%) rename docs/{ => docs}/photos/features/albums.md (100%) rename docs/{ => docs}/photos/features/archive.md (100%) rename docs/{ => docs}/photos/features/cast.md (100%) rename docs/{ => docs}/photos/features/collect.md (100%) rename docs/{ => docs}/photos/features/family-plan.md (100%) rename docs/{ => docs}/photos/features/hidden.md (100%) rename docs/{ => docs}/photos/features/live-photos.md (100%) rename docs/{ => docs}/photos/features/location.md (100%) rename docs/{ => docs}/photos/features/map.md (100%) rename docs/{ => docs}/photos/features/public-links.md (100%) rename docs/{ => docs}/photos/features/quick-link.md (100%) rename docs/{ => docs}/photos/features/referral.md (100%) rename docs/{ => docs}/photos/features/trash.md (100%) rename docs/{ => docs}/photos/features/uncategorized.md (100%) rename docs/{ => docs}/photos/features/watch-folder.md (100%) rename docs/{ => docs}/photos/getting-started/index.md (100%) rename docs/{ => docs}/photos/index.md (100%) rename docs/{ => docs}/photos/misc/contributors.md (100%) rename docs/{ => docs}/photos/troubleshooting/files-not-uploading.md (100%) rename docs/{ => docs}/photos/troubleshooting/report-bug.md (100%) rename docs/{ => docs}/photos/troubleshooting/video-not-playing.md (100%) rename docs/{ => docs}/public/assets/cast/tv-pairing-screen.webp (100%) rename docs/{ => docs}/public/assets/cast/web-pairing-options.webp (100%) rename docs/{ => docs}/public/assets/cast/web-play-album-on-tv.webp (100%) rename docs/{ => docs}/public/favicon.png (100%) rename docs/{ => docs}/public/logo.png (100%) rename package.json => docs/package.json (100%) rename yarn.lock => docs/yarn.lock (100%) diff --git a/.gitignore b/docs/.gitignore similarity index 100% rename from .gitignore rename to docs/.gitignore diff --git a/.prettierrc.json b/docs/.prettierrc.json similarity index 100% rename from .prettierrc.json rename to docs/.prettierrc.json diff --git a/README.md b/docs/README.md similarity index 100% rename from README.md rename to docs/README.md diff --git a/docs/.vitepress/config.ts b/docs/docs/.vitepress/config.ts similarity index 100% rename from docs/.vitepress/config.ts rename to docs/docs/.vitepress/config.ts diff --git a/docs/.vitepress/sidebar.ts b/docs/docs/.vitepress/sidebar.ts similarity index 100% rename from docs/.vitepress/sidebar.ts rename to docs/docs/.vitepress/sidebar.ts diff --git a/docs/.vitepress/theme/custom.css b/docs/docs/.vitepress/theme/custom.css similarity index 100% rename from docs/.vitepress/theme/custom.css rename to docs/docs/.vitepress/theme/custom.css diff --git a/docs/.vitepress/theme/index.js b/docs/docs/.vitepress/theme/index.js similarity index 100% rename from docs/.vitepress/theme/index.js rename to docs/docs/.vitepress/theme/index.js diff --git a/docs/about/ducky.png b/docs/docs/about/ducky.png similarity index 100% rename from docs/about/ducky.png rename to docs/docs/about/ducky.png diff --git a/docs/about/index.md b/docs/docs/about/index.md similarity index 100% rename from docs/about/index.md rename to docs/docs/about/index.md diff --git a/docs/auth/index.md b/docs/docs/auth/index.md similarity index 100% rename from docs/auth/index.md rename to docs/docs/auth/index.md diff --git a/docs/auth/support/contribute.md b/docs/docs/auth/support/contribute.md similarity index 100% rename from docs/auth/support/contribute.md rename to docs/docs/auth/support/contribute.md diff --git a/docs/de/auth/index.md b/docs/docs/de/auth/index.md similarity index 100% rename from docs/de/auth/index.md rename to docs/docs/de/auth/index.md diff --git a/docs/photos/faq/faq.md b/docs/docs/photos/faq/faq.md similarity index 100% rename from docs/photos/faq/faq.md rename to docs/docs/photos/faq/faq.md diff --git a/docs/photos/features/albums.md b/docs/docs/photos/features/albums.md similarity index 100% rename from docs/photos/features/albums.md rename to docs/docs/photos/features/albums.md diff --git a/docs/photos/features/archive.md b/docs/docs/photos/features/archive.md similarity index 100% rename from docs/photos/features/archive.md rename to docs/docs/photos/features/archive.md diff --git a/docs/photos/features/cast.md b/docs/docs/photos/features/cast.md similarity index 100% rename from docs/photos/features/cast.md rename to docs/docs/photos/features/cast.md diff --git a/docs/photos/features/collect.md b/docs/docs/photos/features/collect.md similarity index 100% rename from docs/photos/features/collect.md rename to docs/docs/photos/features/collect.md diff --git a/docs/photos/features/family-plan.md b/docs/docs/photos/features/family-plan.md similarity index 100% rename from docs/photos/features/family-plan.md rename to docs/docs/photos/features/family-plan.md diff --git a/docs/photos/features/hidden.md b/docs/docs/photos/features/hidden.md similarity index 100% rename from docs/photos/features/hidden.md rename to docs/docs/photos/features/hidden.md diff --git a/docs/photos/features/live-photos.md b/docs/docs/photos/features/live-photos.md similarity index 100% rename from docs/photos/features/live-photos.md rename to docs/docs/photos/features/live-photos.md diff --git a/docs/photos/features/location.md b/docs/docs/photos/features/location.md similarity index 100% rename from docs/photos/features/location.md rename to docs/docs/photos/features/location.md diff --git a/docs/photos/features/map.md b/docs/docs/photos/features/map.md similarity index 100% rename from docs/photos/features/map.md rename to docs/docs/photos/features/map.md diff --git a/docs/photos/features/public-links.md b/docs/docs/photos/features/public-links.md similarity index 100% rename from docs/photos/features/public-links.md rename to docs/docs/photos/features/public-links.md diff --git a/docs/photos/features/quick-link.md b/docs/docs/photos/features/quick-link.md similarity index 100% rename from docs/photos/features/quick-link.md rename to docs/docs/photos/features/quick-link.md diff --git a/docs/photos/features/referral.md b/docs/docs/photos/features/referral.md similarity index 100% rename from docs/photos/features/referral.md rename to docs/docs/photos/features/referral.md diff --git a/docs/photos/features/trash.md b/docs/docs/photos/features/trash.md similarity index 100% rename from docs/photos/features/trash.md rename to docs/docs/photos/features/trash.md diff --git a/docs/photos/features/uncategorized.md b/docs/docs/photos/features/uncategorized.md similarity index 100% rename from docs/photos/features/uncategorized.md rename to docs/docs/photos/features/uncategorized.md diff --git a/docs/photos/features/watch-folder.md b/docs/docs/photos/features/watch-folder.md similarity index 100% rename from docs/photos/features/watch-folder.md rename to docs/docs/photos/features/watch-folder.md diff --git a/docs/photos/getting-started/index.md b/docs/docs/photos/getting-started/index.md similarity index 100% rename from docs/photos/getting-started/index.md rename to docs/docs/photos/getting-started/index.md diff --git a/docs/photos/index.md b/docs/docs/photos/index.md similarity index 100% rename from docs/photos/index.md rename to docs/docs/photos/index.md diff --git a/docs/photos/misc/contributors.md b/docs/docs/photos/misc/contributors.md similarity index 100% rename from docs/photos/misc/contributors.md rename to docs/docs/photos/misc/contributors.md diff --git a/docs/photos/troubleshooting/files-not-uploading.md b/docs/docs/photos/troubleshooting/files-not-uploading.md similarity index 100% rename from docs/photos/troubleshooting/files-not-uploading.md rename to docs/docs/photos/troubleshooting/files-not-uploading.md diff --git a/docs/photos/troubleshooting/report-bug.md b/docs/docs/photos/troubleshooting/report-bug.md similarity index 100% rename from docs/photos/troubleshooting/report-bug.md rename to docs/docs/photos/troubleshooting/report-bug.md diff --git a/docs/photos/troubleshooting/video-not-playing.md b/docs/docs/photos/troubleshooting/video-not-playing.md similarity index 100% rename from docs/photos/troubleshooting/video-not-playing.md rename to docs/docs/photos/troubleshooting/video-not-playing.md diff --git a/docs/public/assets/cast/tv-pairing-screen.webp b/docs/docs/public/assets/cast/tv-pairing-screen.webp similarity index 100% rename from docs/public/assets/cast/tv-pairing-screen.webp rename to docs/docs/public/assets/cast/tv-pairing-screen.webp diff --git a/docs/public/assets/cast/web-pairing-options.webp b/docs/docs/public/assets/cast/web-pairing-options.webp similarity index 100% rename from docs/public/assets/cast/web-pairing-options.webp rename to docs/docs/public/assets/cast/web-pairing-options.webp diff --git a/docs/public/assets/cast/web-play-album-on-tv.webp b/docs/docs/public/assets/cast/web-play-album-on-tv.webp similarity index 100% rename from docs/public/assets/cast/web-play-album-on-tv.webp rename to docs/docs/public/assets/cast/web-play-album-on-tv.webp diff --git a/docs/public/favicon.png b/docs/docs/public/favicon.png similarity index 100% rename from docs/public/favicon.png rename to docs/docs/public/favicon.png diff --git a/docs/public/logo.png b/docs/docs/public/logo.png similarity index 100% rename from docs/public/logo.png rename to docs/docs/public/logo.png diff --git a/package.json b/docs/package.json similarity index 100% rename from package.json rename to docs/package.json diff --git a/yarn.lock b/docs/yarn.lock similarity index 100% rename from yarn.lock rename to docs/yarn.lock