Keeping track of companies that "care about your data 🥺"

Add vitepress version.

+63
.github/workflows/deploy.yml
···
+
# Sample workflow for building and deploying a VitePress site to GitHub Pages
+
#
+
name: Deploy VitePress site to Pages
+
+
on:
+
# Runs on pushes targeting the `main` branch. Change this to `master` if you're
+
# using the `master` branch as the default branch.
+
push:
+
branches: [main]
+
+
# Allows you to run this workflow manually from the Actions tab
+
workflow_dispatch:
+
+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
+
permissions:
+
contents: read
+
pages: write
+
id-token: write
+
+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
+
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
+
concurrency:
+
group: pages
+
cancel-in-progress: false
+
+
jobs:
+
# Build job
+
build:
+
runs-on: ubuntu-latest
+
steps:
+
- name: Checkout
+
uses: actions/checkout@v4
+
with:
+
fetch-depth: 0 # Not needed if lastUpdated is not enabled
+
# - uses: pnpm/action-setup@v3 # Uncomment this if you're using pnpm
+
- uses: oven-sh/setup-bun@v1 # Uncomment this if you're using Bun
+
- name: Setup Node
+
uses: actions/setup-node@v4
+
with:
+
node-version: 20
+
- name: Setup Pages
+
uses: actions/configure-pages@v4
+
- name: Install dependencies
+
run: bun install # or pnpm install / yarn install / bun install
+
- name: Build with VitePress
+
run: bun run docs:build # or pnpm docs:build / yarn docs:build / bun run docs:build
+
- name: Upload artifact
+
uses: actions/upload-pages-artifact@v3
+
with:
+
path: .vitepress/dist
+
+
# Deployment job
+
deploy:
+
environment:
+
name: github-pages
+
url: ${{ steps.deployment.outputs.page_url }}
+
needs: build
+
runs-on: ubuntu-latest
+
name: Deploy
+
steps:
+
- name: Deploy to GitHub Pages
+
id: deployment
+
uses: actions/deploy-pages@v4
+3
.gitignore
···
+
node_modules
+
.vitepress/dist/*
+
.vitepress/cache/*
+46
.vitepress/config.mts
···
+
import { defineConfig } from 'vitepress'
+
+
// https://vitepress.dev/reference/site-config
+
export default defineConfig({
+
base: '/bootloader-unlock-wall-of-shame/',
+
rewrites: {
+
'README.md': 'index.md',
+
'(.*)/README.md': '(.*)/index.md'
+
},
+
title: "Bootloader Unlock: Wall of Shame",
+
description: "Keeping track of companies that \"care about your data 🥺\"",
+
+
head: [
+
['link', { rel: 'icon', type: 'image/png', href: '/bootloader-unlock-wall-of-shame/favicon.png' }],
+
['link', { rel: 'shortcut icon', type: 'image/png', href: '/bootloader-unlock-wall-of-shame/favicon.png' }],
+
['meta', { name: "robots", content: "noai, noimageai" }],
+
['link', { rel: 'preconnect', href: 'https://fonts.googleapis.com' }],
+
['link', { rel: 'preconnect', href: 'https://fonts.gstatic.com', crossorigin: '' }],
+
['link', { href: 'https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&family=Ubuntu+Mono:ital,wght@0,400;0,700;1,400;1,700&display=swap', rel: 'stylesheet' }]
+
],
+
+
cleanUrls: true,
+
lastUpdated: true,
+
+
markdown: {
+
image: {
+
lazyLoading: true
+
}
+
},
+
+
themeConfig: {
+
logo: { src: '/favicon.png', width: 24, height: 24 },
+
+
socialLinks: [
+
{ icon: 'github', link: 'https://github.com/melontini/bootloader-unlock-wall-of-shame' }
+
],
+
+
footer: {
+
message: '<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Bootloader Unlock: Wall of Shame</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/melontini/bootloader-unlock-wall-of-shame" property="cc:attributionName" rel="cc:attributionURL">https://github.com/melontini/bootloader-unlock-wall-of-shame</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.'
+
},
+
+
search: {
+
provider: 'local'
+
},
+
}
+
})
+59
.vitepress/theme/index.ts
···
+
// https://vitepress.dev/guide/custom-theme
+
import giscusTalk from 'vitepress-plugin-comment-with-giscus';
+
import type { Theme, VitePressData } from 'vitepress'
+
import DefaultTheme from 'vitepress/theme'
+
import './style.css'
+
import { useData, useRoute } from 'vitepress';
+
import { toRefs } from "vue";
+
import { watch, nextTick, onMounted } from 'vue';
+
import { GiscusProps } from '@giscus/vue/dist/types'
+
+
export default {
+
...DefaultTheme,
+
enhanceApp(ctx) {
+
DefaultTheme.enhanceApp(ctx);
+
},
+
setup() {
+
// Get frontmatter and route
+
const data = useData();
+
const { frontmatter } = toRefs(data);
+
const route = useRoute();
+
+
var props: GiscusProps = {
+
repo: 'melontini/bootloader-unlock-wall-of-shame',
+
repoId: 'R_kgDOJts7Mg',
+
category: 'General',
+
categoryId: 'DIC_kwDOJts7Ms4CXj04',
+
mapping: 'pathname',
+
inputPosition: 'top',
+
reactionsEnabled: '1',
+
loading: 'lazy'
+
}
+
+
onMounted(() => {
+
fixLang(props, data);
+
})
+
watch(() => route.path, () => nextTick(() => {
+
fixLang(props, data);
+
}))
+
+
// Obtain configuration from: https://giscus.app/
+
giscusTalk(props, { frontmatter, route }, true);
+
}
+
} satisfies Theme
+
+
const fixLang = (props: GiscusProps, data: VitePressData) => {
+
var lang = data.lang.value
+
switch (lang) {
+
case "en-US":
+
lang = "en"
+
break;
+
case "zh-CN":
+
lang = "zh-CN"
+
break;
+
default:
+
lang = "en"
+
break;
+
}
+
props.lang = lang
+
}
+155
.vitepress/theme/style.css
···
+
/**
+
* Customize default theme styling by overriding CSS variables:
+
* https://github.com/vuejs/vitepress/blob/main/src/client/theme-default/styles/vars.css
+
*/
+
+
/**
+
* Colors
+
*
+
* Each colors have exact same color scale system with 3 levels of solid
+
* colors with different brightness, and 1 soft color.
+
*
+
* - `XXX-1`: The most solid color used mainly for colored text. It must
+
* satisfy the contrast ratio against when used on top of `XXX-soft`.
+
*
+
* - `XXX-2`: The color used mainly for hover state of the button.
+
*
+
* - `XXX-3`: The color for solid background, such as bg color of the button.
+
* It must satisfy the contrast ratio with pure white (#ffffff) text on
+
* top of it.
+
*
+
* - `XXX-soft`: The color used for subtle background such as custom container
+
* or badges. It must satisfy the contrast ratio when putting `XXX-1` colors
+
* on top of it.
+
*
+
* The soft color must be semi transparent alpha channel. This is crucial
+
* because it allows adding multiple "soft" colors on top of each other
+
* to create a accent, such as when having inline code block inside
+
* custom containers.
+
*
+
* - `default`: The color used purely for subtle indication without any
+
* special meanings attched to it such as bg color for menu hover state.
+
*
+
* - `brand`: Used for primary brand colors, such as link text, button with
+
* brand theme, etc.
+
*
+
* - `tip`: Used to indicate useful information. The default theme uses the
+
* brand color for this by default.
+
*
+
* - `warning`: Used to indicate warning to the users. Used in custom
+
* container, badges, etc.
+
*
+
* - `danger`: Used to show error, or dangerous message to the users. Used
+
* in custom container, badges, etc.
+
* -------------------------------------------------------------------------- */
+
+
:root {
+
--vp-c-default-1: var(--vp-c-gray-1);
+
--vp-c-default-2: var(--vp-c-gray-2);
+
--vp-c-default-3: var(--vp-c-gray-3);
+
--vp-c-default-soft: var(--vp-c-gray-soft);
+
+
--vp-c-brand-1: var(--vp-c-red-1);
+
--vp-c-brand-2: var(--vp-c-red-2);
+
--vp-c-brand-3: var(--vp-c-red-3);
+
--vp-c-brand-soft: var(--vp-c-red-soft);
+
+
--vp-c-tip-1: var(--vp-c-brand-1);
+
--vp-c-tip-2: var(--vp-c-brand-2);
+
--vp-c-tip-3: var(--vp-c-brand-3);
+
--vp-c-tip-soft: var(--vp-c-brand-soft);
+
+
--vp-c-warning-1: var(--vp-c-yellow-1);
+
--vp-c-warning-2: var(--vp-c-yellow-2);
+
--vp-c-warning-3: var(--vp-c-yellow-3);
+
--vp-c-warning-soft: var(--vp-c-yellow-soft);
+
+
--vp-c-danger-1: var(--vp-c-red-1);
+
--vp-c-danger-2: var(--vp-c-red-2);
+
--vp-c-danger-3: var(--vp-c-red-3);
+
--vp-c-danger-soft: var(--vp-c-red-soft);
+
+
--vp-font-family-base: "Rubik", sans-serif;
+
--vp-font-family-mono: "Ubuntu Mono", monospace;
+
}
+
+
.dark {
+
--vp-c-bg: #000000;
+
--vp-c-bg-alt: #0b0b0b;
+
--vp-c-bg-elv: #060606;
+
--vp-c-bg-soft: #111111;
+
}
+
+
.dark {
+
--vp-c-border: var(--vp-c-brand-3);
+
--vp-c-divider: var(--vp-c-brand-soft);
+
--vp-c-gutter: var(--vp-c-brand-soft);
+
}
+
+
/**
+
* Component: Button
+
* -------------------------------------------------------------------------- */
+
+
:root {
+
--vp-button-brand-border: transparent;
+
--vp-button-brand-text: var(--vp-c-white);
+
--vp-button-brand-bg: var(--vp-c-brand-3);
+
--vp-button-brand-hover-border: transparent;
+
--vp-button-brand-hover-text: var(--vp-c-white);
+
--vp-button-brand-hover-bg: var(--vp-c-brand-2);
+
--vp-button-brand-active-border: transparent;
+
--vp-button-brand-active-text: var(--vp-c-white);
+
--vp-button-brand-active-bg: var(--vp-c-brand-1);
+
}
+
+
/**
+
* Component: Home
+
* -------------------------------------------------------------------------- */
+
+
:root {
+
--vp-home-hero-name-color: transparent;
+
--vp-home-hero-name-background: -webkit-linear-gradient(
+
120deg,
+
#bd34fe 30%,
+
#41d1ff
+
);
+
+
--vp-home-hero-image-background-image: linear-gradient(
+
-45deg,
+
#bd34fe 50%,
+
#47caff 50%
+
);
+
--vp-home-hero-image-filter: blur(44px);
+
}
+
+
@media (min-width: 640px) {
+
:root {
+
--vp-home-hero-image-filter: blur(56px);
+
}
+
}
+
+
@media (min-width: 960px) {
+
:root {
+
--vp-home-hero-image-filter: blur(68px);
+
}
+
}
+
+
/**
+
* Component: Custom Block
+
* -------------------------------------------------------------------------- */
+
+
:root {
+
--vp-custom-block-tip-border: transparent;
+
--vp-custom-block-tip-text: var(--vp-c-text-1);
+
--vp-custom-block-tip-bg: var(--vp-c-brand-soft);
+
--vp-custom-block-tip-code-bg: var(--vp-c-brand-soft);
+
}
+
+
/**
+
* Component: Algolia
+
* -------------------------------------------------------------------------- */
+
+
.DocSearch {
+
--docsearch-primary-color: var(--vp-c-brand-1) !important;
+
}
+
+2 -1
README.md
···
> Reminder that no matter how nice a company is, <br/>
> you should not trust them unless their unlock process is 100% offline!
+
[[toc]]
+
## ⛔ Avoid at all costs!
### Huawei/Honor
···
***
-
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/"><img alt="Creative Commons License" style="border-width:0" src="https://i.creativecommons.org/l/by-nc-sa/4.0/88x31.png" /></a><br /><span xmlns:dct="http://purl.org/dc/terms/" property="dct:title">Bootloader Unlock: Wall of Shame</span> by <a xmlns:cc="http://creativecommons.org/ns#" href="https://github.com/melontini/bootloader-unlock-wall-of-shame" property="cc:attributionName" rel="cc:attributionURL">https://github.com/melontini/bootloader-unlock-wall-of-shame</a> is licensed under a <a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/4.0/">Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License</a>.
bu_wos_banner_s.webp

This is a binary file and will not be displayed.

bu_wos_gh.jpg

This is a binary file and will not be displayed.

bun.lockb

This is a binary file and will not be displayed.

+11
package.json
···
+
{
+
"dependencies": {
+
"vitepress": "^1.0.2",
+
"vitepress-plugin-comment-with-giscus": "^1.1.12"
+
},
+
"scripts": {
+
"docs:dev": "vitepress dev",
+
"docs:build": "vitepress build",
+
"docs:preview": "vitepress preview"
+
}
+
}
+88
public/ai.txt
···
+
# Spawning AI
+
# Prevent datasets from using the following file types
+
+
User-Agent: *
+
Disallow: *.txt
+
Disallow: *.pdf
+
Disallow: *.doc
+
Disallow: *.docx
+
Disallow: *.odt
+
Disallow: *.rtf
+
Disallow: *.tex
+
Disallow: *.wks
+
Disallow: *.wpd
+
Disallow: *.wps
+
Disallow: *.html
+
Disallow: *.bmp
+
Disallow: *.gif
+
Disallow: *.ico
+
Disallow: *.jpeg
+
Disallow: *.jpg
+
Disallow: *.png
+
Disallow: *.svg
+
Disallow: *.tif
+
Disallow: *.tiff
+
Disallow: *.webp
+
Disallow: *.aac
+
Disallow: *.aiff
+
Disallow: *.amr
+
Disallow: *.flac
+
Disallow: *.m4a
+
Disallow: *.mp3
+
Disallow: *.oga
+
Disallow: *.opus
+
Disallow: *.wav
+
Disallow: *.wma
+
Disallow: *.mp4
+
Disallow: *.webm
+
Disallow: *.ogg
+
Disallow: *.avi
+
Disallow: *.mov
+
Disallow: *.wmv
+
Disallow: *.flv
+
Disallow: *.mkv
+
Disallow: *.py
+
Disallow: *.js
+
Disallow: *.java
+
Disallow: *.c
+
Disallow: *.cpp
+
Disallow: *.cs
+
Disallow: *.h
+
Disallow: *.css
+
Disallow: *.php
+
Disallow: *.swift
+
Disallow: *.go
+
Disallow: *.rb
+
Disallow: *.pl
+
Disallow: *.sh
+
Disallow: *.sql
+
Disallow: /
+
Disallow: *
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@( @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ &@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% @@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@( @@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ %@@@@@/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ %@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@( %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
+
# @@@@@@@@@@@/@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@, @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@ *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ %@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ %@@@@& @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@ .@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@* @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
+
# @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ spawning.ai
public/favicon.png

This is a binary file and will not be displayed.

+20
public/robots.txt
···
+
User-agent: CCBot
+
Disallow: /
+
+
User-agent: ChatGPT-User
+
Disallow: /
+
+
User-agent: GPTBot
+
Disallow: /
+
+
User-agent: Google-Extended
+
Disallow: /
+
+
User-agent: Omgilibot
+
Disallow: /
+
+
User-agent: Omgili
+
Disallow: /
+
+
User-agent: FacebookBot
+
Disallow: /