mirror of
https://github.com/uthvah/vaultguard.git
synced 2026-07-22 06:44:51 +00:00
changes, bugs, todo (#7)
* bump license year, update manifest, remove zxcvbn.js from repo (use cdn for now) * change name from locksidian to vaultguard * change css names from locksidian to vaultguard * add zxcvbn from package (1/?) * add dev script, write code in index.js, build in main.js
This commit is contained in:
parent
7d4dbd8ba1
commit
1e9ecdccaf
10 changed files with 5219 additions and 1412 deletions
2
LICENSE
2
LICENSE
|
|
@ -1,6 +1,6 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Verity
|
||||
Copyright (c) 2026 Verity
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
|
|
|||
20
README.md
20
README.md
|
|
@ -1,6 +1,6 @@
|
|||
# Locksidian
|
||||
# VaultGuard
|
||||
<p align="center">
|
||||
<img alt="Locksidian lockscreen" src="https://github.com/user-attachments/assets/24ad6462-21e5-4b94-b4b5-2c3e9be2df16" />
|
||||
<img alt="VaultGuard lockscreen" src="https://github.com/user-attachments/assets/24ad6462-21e5-4b94-b4b5-2c3e9be2df16" />
|
||||
</p>
|
||||
|
||||
<p align="center">
|
||||
|
|
@ -9,7 +9,7 @@
|
|||
</p>
|
||||
|
||||
|
||||
Locksidian is a secure, beautiful, and highly customizable lockscreen plugin for Obsidian. It protects your vault from unauthorized access with industry-standard encryption, while offering personalization features to match your unique workflow and style.
|
||||
VaultGuard is a secure, beautiful, and highly customizable lockscreen plugin for Obsidian. It protects your vault from unauthorized access with industry-standard encryption, while offering personalization features to match your unique workflow and style.
|
||||
|
||||
This plugin is built with a security-first mindset, ensuring your sensitive notes remain private. It has been hardened for stability and performance, providing a seamless and reliable user experience.
|
||||
|
||||
|
|
@ -35,25 +35,25 @@ This plugin is built with a security-first mindset, ensuring your sensitive note
|
|||
## From the Community Plugins Store (Not approved yet)
|
||||
1. Open Settings in Obsidian.
|
||||
2. Go to Community Plugins and make sure "Restricted mode" is off.
|
||||
3. Click Browse and search for "Locksidian".
|
||||
3. Click Browse and search for "VaultGuard".
|
||||
4. Click Install, and then click Enable.
|
||||
5. Open the Locksidian settings to set your master password!
|
||||
5. Open the VaultGuard settings to set your master password!
|
||||
|
||||
## Manual Installation
|
||||
1. Download the latest main.js, manifest.json, and styles.css from the releases page.
|
||||
2. Download the latest zxcvbn.js and bg.mp4 from the main page.
|
||||
3. Navigate to your Obsidian vault's plugin folder: <YourVault>/.obsidian/plugins/.
|
||||
4. Create a new folder named locksidian.
|
||||
4. Create a new folder named VaultGuard.
|
||||
5. Place the five downloaded files inside this new folder.
|
||||
6. In Obsidian, go to Settings -> Community Plugins and enable "Locksidian".
|
||||
6. In Obsidian, go to Settings -> Community Plugins and enable "VaultGuard".
|
||||
|
||||
## Getting Started
|
||||
- Set Your Password: After installing, go to the Locksidian settings tab. You will be prompted to create your master password.
|
||||
- Set Your Password: After installing, go to the VaultGuard settings tab. You will be prompted to create your master password.
|
||||
- Lock Your Vault:
|
||||
- Click the Lock icon in the left ribbon.
|
||||
- Use the command palette (Ctrl/Cmd + P) and run "Locksidian: Lock Vault".
|
||||
- Use the command palette (Ctrl/Cmd + P) and run "VaultGuard: Lock Vault".
|
||||
- Wait for the auto-lock timer to expire (if enabled).
|
||||
- Customize: Head back to the Locksidian settings at any time (while unlocked) to change your password, configure the auto-lock timer, and customize your lockscreen.
|
||||
- Customize: Head back to the VaultGuard settings at any time (while unlocked) to change your password, configure the auto-lock timer, and customize your lockscreen.
|
||||
|
||||
|
||||
## ⚠️ CRITICAL: Read Before Enabling Note Encryption
|
||||
|
|
|
|||
25
esbuild.config.mjs
Normal file
25
esbuild.config.mjs
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
import esbuild from "esbuild";
|
||||
import process from "process";
|
||||
|
||||
const prod = process.argv[2] === "production";
|
||||
|
||||
const ctx = await esbuild.context({
|
||||
entryPoints: ["index.js"],
|
||||
bundle: true,
|
||||
external: ["obsidian"],
|
||||
format: "cjs",
|
||||
target: "es2018",
|
||||
logLevel: "info",
|
||||
sourcemap: prod ? false : "inline",
|
||||
treeShaking: true,
|
||||
outfile: "main.js",
|
||||
minify: prod,
|
||||
});
|
||||
|
||||
if (prod) {
|
||||
await ctx.rebuild();
|
||||
ctx.dispose();
|
||||
} else {
|
||||
await ctx.watch();
|
||||
console.log("watching...");
|
||||
}
|
||||
4589
main.js
4589
main.js
File diff suppressed because one or more lines are too long
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"id": "locksidian",
|
||||
"name": "Locksidian",
|
||||
"id": "vaultguard",
|
||||
"name": "VaultGuard",
|
||||
"version": "2.2.0",
|
||||
"minAppVersion": "0.12.0",
|
||||
"description": "A secure, beautiful, and minimalist lockscreen.",
|
||||
|
|
|
|||
499
package-lock.json
generated
Normal file
499
package-lock.json
generated
Normal file
|
|
@ -0,0 +1,499 @@
|
|||
{
|
||||
"name": "vaultguard",
|
||||
"version": "1.0.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "vaultguard",
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@zxcvbn-ts/core": "^3.0.4",
|
||||
"@zxcvbn-ts/language-en": "^3.0.2",
|
||||
"esbuild": "^0.27.4"
|
||||
},
|
||||
"devDependencies": {}
|
||||
},
|
||||
"node_modules/@esbuild/aix-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-cQPwL2mp2nSmHHJlCyoXgHGhbEPMrEEU5xhkcy3Hs/O7nGZqEpZ2sUtLaL9MORLtDfRvVl2/3PAuEkYZH0Ty8Q==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"aix"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-X9bUgvxiC8CHAGKYufLIHGXPJWnr0OCdR0anD2e21vdvgCI8lIfqFbnoeOz7lBjdrAGUhqLZLcQo6MLhTO2DKQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-gdLscB7v75wRfu7QSm/zg6Rx29VLdy9eTr2t44sfTW7CxwAtQghZ4ZnqHk3/ogz7xao0QAgrkradbBzcqFPasw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-PzPFnBNVF292sfpfhiyiXCGSn9HZg5BcAz+ivBuSsl6Rk4ga1oEXAamhOXRFyMcjwr2DVtm40G65N3GLeH1Lvw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"android"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-b7xaGIwdJlht8ZFCvMkpDN6uiSmnxxK56N2GDTMYPr2/gzvfdQN8rTfBsvVKmIVY/X7EM+/hJKEIbbHs9oA4tQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-sR+OiKLwd15nmCdqpXMnuJ9W2kpy0KigzqScqHI3Hqwr7IXxBp3Yva+yJwoqh7rE8V77tdoheRYataNKL4QrPw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"darwin"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-jnfpKe+p79tCnm4GVav68A7tUFeKQwQyLgESwEAUzyxk/TJr4QdGog9sqWNcUbr/bZt/O/HXouspuQDd9JxFSw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-2kb4ceA/CpfUrIcTUl1wrP/9ad9Atrp5J94Lq69w7UwOMolPIGrfLSvAKJp0RTvkPPyn6CIWrNy13kyLikZRZQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"freebsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.4.tgz",
|
||||
"integrity": "sha512-aBYgcIxX/wd5n2ys0yESGeYMGF+pv6g0DhZr3G1ZG4jMfruU9Tl1i2Z+Wnj9/KjGz1lTLCcorqE2viePZqj4Eg==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-7nQOttdzVGth1iz57kxg9uCz57dxQLHWxopL6mYuYthohPKEK0vU0C3O21CcBK6KDlkYVcnDXY099HcCDXd9dA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-oPtixtAIzgvzYcKBQM/qZ3R+9TEUd1aNJQu0HhGyqtx6oS7qTpvjheIWBbes4+qu1bNlo2V4cbkISr8q6gRBFA==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.4.tgz",
|
||||
"integrity": "sha512-8mL/vh8qeCoRcFH2nM8wm5uJP+ZcVYGGayMavi8GmRJjuI3g1v6Z7Ni0JJKAJW+m0EtUuARb6Lmp4hMjzCBWzA==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.4.tgz",
|
||||
"integrity": "sha512-1RdrWFFiiLIW7LQq9Q2NES+HiD4NyT8Itj9AUeCl0IVCA459WnPhREKgwrpaIfTOe+/2rdntisegiPWn/r/aAw==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.4.tgz",
|
||||
"integrity": "sha512-tLCwNG47l3sd9lpfyx9LAGEGItCUeRCWeAx6x2Jmbav65nAwoPXfewtAdtbtit/pJFLUWOhpv0FpS6GQAmPrHA==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.4.tgz",
|
||||
"integrity": "sha512-BnASypppbUWyqjd1KIpU4AUBiIhVr6YlHx/cnPgqEkNoVOhHg+YiSVxM1RLfiy4t9cAulbRGTNCKOcqHrEQLIw==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.4.tgz",
|
||||
"integrity": "sha512-+eUqgb/Z7vxVLezG8bVB9SfBie89gMueS+I0xYh2tJdw3vqA/0ImZJ2ROeWwVJN59ihBeZ7Tu92dF/5dy5FttA==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-S5qOXrKV8BQEzJPVxAwnryi2+Iq5pB40gTEIT69BQONqR7JH1EPIcQ/Uiv9mCnn05jff9umq/5nqzxlqTOg9NA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"linux"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-xHT8X4sb0GS8qTqiwzHqpY00C95DPAq7nAwX35Ie/s+LO9830hrMd3oX0ZMKLvy7vsonee73x0lmcdOVXFzd6Q==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-RugOvOdXfdyi5Tyv40kgQnI0byv66BFgAqjdgtAKqHoZTbTF2QqfQrFwa7cHEORJf6X2ht+l9ABLMP0dnKYsgg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"netbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-2MyL3IAaTX+1/qP0O1SwskwcwCoOI4kV2IBX1xYnDDqthmq5ArrW94qSIKCAuRraMgPOmG0RDTA74mzYNQA9ow==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-u8fg/jQ5aQDfsnIV6+KwLOf1CmJnfu1ShpwqdwC0uA7ZPwFws55Ngc12vBdeUdnuWoQYx/SOQLGDcdlfXhYmXQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openbsd"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openharmony-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-JkTZrl6VbyO8lDQO3yv26nNr2RM2yZzNrNHEsj9bm6dOwwu9OYN28CjzZkH57bh4w0I2F7IodpQvUAEd1mbWXg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"openharmony"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-/gOzgaewZJfeJTlsWhvUEmUG4tWEY2Spp5M20INYRg2ZKl9QPO3QEEgPeRtLjEWSW8FilRNacPOg8R1uaYkA6g==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"sunos"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.4.tgz",
|
||||
"integrity": "sha512-Z9SExBg2y32smoDQdf1HRwHRt6vAHLXcxD2uGgO/v2jK7Y718Ix4ndsbNMU/+1Qiem9OiOdaqitioZwxivhXYg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.4.tgz",
|
||||
"integrity": "sha512-DAyGLS0Jz5G5iixEbMHi5KdiApqHBWMGzTtMiJ72ZOLhbu/bzxgAe8Ue8CTS3n3HbIUHQz/L51yMdGMeoxXNJw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.4.tgz",
|
||||
"integrity": "sha512-+knoa0BDoeXgkNvvV1vvbZX4+hizelrkwmGJBdT17t8FNPwG2lKemmuMZlmaNQ3ws3DKKCxpb4zRZEIp3UxFCg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
"license": "MIT",
|
||||
"optional": true,
|
||||
"os": [
|
||||
"win32"
|
||||
],
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
}
|
||||
},
|
||||
"node_modules/@zxcvbn-ts/core": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/@zxcvbn-ts/core/-/core-3.0.4.tgz",
|
||||
"integrity": "sha512-aQeiT0F09FuJaAqNrxynlAwZ2mW/1MdXakKWNmGM1Qp/VaY6CnB/GfnMS2T8gB2231Esp1/maCWd8vTG4OuShw==",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"fastest-levenshtein": "1.0.16"
|
||||
}
|
||||
},
|
||||
"node_modules/@zxcvbn-ts/language-en": {
|
||||
"version": "3.0.2",
|
||||
"resolved": "https://registry.npmjs.org/@zxcvbn-ts/language-en/-/language-en-3.0.2.tgz",
|
||||
"integrity": "sha512-Zp+zL+I6Un2Bj0tRXNs6VUBq3Djt+hwTwUz4dkt2qgsQz47U0/XthZ4ULrT/RxjwJRl5LwiaKOOZeOtmixHnjg==",
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.27.4",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.4.tgz",
|
||||
"integrity": "sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==",
|
||||
"hasInstallScript": true,
|
||||
"license": "MIT",
|
||||
"bin": {
|
||||
"esbuild": "bin/esbuild"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/aix-ppc64": "0.27.4",
|
||||
"@esbuild/android-arm": "0.27.4",
|
||||
"@esbuild/android-arm64": "0.27.4",
|
||||
"@esbuild/android-x64": "0.27.4",
|
||||
"@esbuild/darwin-arm64": "0.27.4",
|
||||
"@esbuild/darwin-x64": "0.27.4",
|
||||
"@esbuild/freebsd-arm64": "0.27.4",
|
||||
"@esbuild/freebsd-x64": "0.27.4",
|
||||
"@esbuild/linux-arm": "0.27.4",
|
||||
"@esbuild/linux-arm64": "0.27.4",
|
||||
"@esbuild/linux-ia32": "0.27.4",
|
||||
"@esbuild/linux-loong64": "0.27.4",
|
||||
"@esbuild/linux-mips64el": "0.27.4",
|
||||
"@esbuild/linux-ppc64": "0.27.4",
|
||||
"@esbuild/linux-riscv64": "0.27.4",
|
||||
"@esbuild/linux-s390x": "0.27.4",
|
||||
"@esbuild/linux-x64": "0.27.4",
|
||||
"@esbuild/netbsd-arm64": "0.27.4",
|
||||
"@esbuild/netbsd-x64": "0.27.4",
|
||||
"@esbuild/openbsd-arm64": "0.27.4",
|
||||
"@esbuild/openbsd-x64": "0.27.4",
|
||||
"@esbuild/openharmony-arm64": "0.27.4",
|
||||
"@esbuild/sunos-x64": "0.27.4",
|
||||
"@esbuild/win32-arm64": "0.27.4",
|
||||
"@esbuild/win32-ia32": "0.27.4",
|
||||
"@esbuild/win32-x64": "0.27.4"
|
||||
}
|
||||
},
|
||||
"node_modules/fastest-levenshtein": {
|
||||
"version": "1.0.16",
|
||||
"resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz",
|
||||
"integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==",
|
||||
"license": "MIT",
|
||||
"engines": {
|
||||
"node": ">= 4.9.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
15
package.json
Normal file
15
package.json
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
{
|
||||
"name": "vaultguard",
|
||||
"version": "1.0.0",
|
||||
"description": "<p align=\"center\">\r <img alt=\"VaultGuard lockscreen\" src=\"https://github.com/user-attachments/assets/24ad6462-21e5-4b94-b4b5-2c3e9be2df16\" />\r </p>",
|
||||
"main": "main.js",
|
||||
"scripts": {
|
||||
"dev": "node esbuild.config.mjs",
|
||||
"build": "node esbuild.config.mjs production"
|
||||
},
|
||||
"dependencies": {
|
||||
"@zxcvbn-ts/core": "^3.0.4",
|
||||
"@zxcvbn-ts/language-en": "^3.0.2",
|
||||
"esbuild": "^0.27.4"
|
||||
}
|
||||
}
|
||||
108
styles.css
108
styles.css
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Locksidian: Stylesheet
|
||||
* vaultguard: Stylesheet
|
||||
* Refactored with bug fixes and improved layout
|
||||
*/
|
||||
|
||||
|
|
@ -7,7 +7,7 @@
|
|||
MAIN LOCKSCREEN & CORE STYLES
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-screen {
|
||||
.vaultguard-screen {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -22,17 +22,17 @@
|
|||
overflow: hidden;
|
||||
}
|
||||
|
||||
.locksidian-screen-loading {
|
||||
.vaultguard-screen-loading {
|
||||
/* No animations while loading */
|
||||
animation: none !important;
|
||||
}
|
||||
|
||||
.locksidian-screen-loading * {
|
||||
.vaultguard-screen-loading * {
|
||||
animation: none !important;
|
||||
opacity: 1 !important;
|
||||
}
|
||||
|
||||
.locksidian-screen.is-leaving {
|
||||
.vaultguard-screen.is-leaving {
|
||||
animation: fadeOutScreen 0.4s ease-out forwards;
|
||||
}
|
||||
|
||||
|
|
@ -45,7 +45,7 @@
|
|||
TITLEBAR (for window dragging)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-titlebar {
|
||||
.vaultguard-titlebar {
|
||||
flex-shrink: 0;
|
||||
height: 30px;
|
||||
width: 100%;
|
||||
|
|
@ -58,7 +58,7 @@
|
|||
MAIN CONTENT AREA
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-main-content {
|
||||
.vaultguard-main-content {
|
||||
flex-grow: 1;
|
||||
position: relative;
|
||||
display: flex;
|
||||
|
|
@ -79,7 +79,7 @@
|
|||
BACKGROUND MEDIA (video, image, or color)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-background-media {
|
||||
.vaultguard-background-media {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -95,7 +95,7 @@
|
|||
OVERLAY (blur and darkening effect)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-overlay {
|
||||
.vaultguard-overlay {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
|
|
@ -113,7 +113,7 @@
|
|||
CONTENT CONTAINER (username + password input)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-content {
|
||||
.vaultguard-content {
|
||||
position: relative;
|
||||
z-index: 10;
|
||||
display: flex;
|
||||
|
|
@ -121,7 +121,7 @@
|
|||
align-items: center;
|
||||
animation: slideUpIn 0.7s 0.2s cubic-bezier(0.25, 1, 0.5, 1) forwards,
|
||||
fadeInContent 0.7s 0.2s ease-in-out forwards;
|
||||
transform: translateY(20px) scale(var(--locksidian-ui-scale, 1));
|
||||
transform: translateY(20px) scale(var(--vaultguard-ui-scale, 1));
|
||||
transition: transform 0.3s ease;
|
||||
opacity: 0;
|
||||
/* Allow interaction with children */
|
||||
|
|
@ -132,7 +132,7 @@
|
|||
|
||||
@keyframes slideUpIn {
|
||||
to {
|
||||
transform: translateY(0) scale(var(--locksidian-ui-scale, 1));
|
||||
transform: translateY(0) scale(var(--vaultguard-ui-scale, 1));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -140,13 +140,13 @@
|
|||
USERNAME DISPLAY
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-username {
|
||||
.vaultguard-username {
|
||||
font-size: 38px;
|
||||
margin-bottom: 25px;
|
||||
text-shadow: 0px 2px 12px rgba(0, 0, 0, 0.5);
|
||||
font-family: var(--locksidian-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
|
||||
font-weight: var(--locksidian-font-weight, 500);
|
||||
font-style: var(--locksidian-font-style, normal);
|
||||
font-family: var(--vaultguard-font-family, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif);
|
||||
font-weight: var(--vaultguard-font-weight, 500);
|
||||
font-style: var(--vaultguard-font-style, normal);
|
||||
/* Prevent selection */
|
||||
user-select: none;
|
||||
-webkit-user-select: none;
|
||||
|
|
@ -159,20 +159,20 @@
|
|||
PASSWORD INPUT WRAPPER & INPUT (CORRECTED FOR GLASSMORPHISM)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-password-wrapper {
|
||||
.vaultguard-password-wrapper {
|
||||
position: relative;
|
||||
width: var(--locksidian-input-width, 340px);
|
||||
width: var(--vaultguard-input-width, 340px);
|
||||
max-width: 90vw;
|
||||
transition: width 0.3s ease;
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.locksidian-password-wrapper.is-error {
|
||||
.vaultguard-password-wrapper.is-error {
|
||||
animation: shake 0.4s linear;
|
||||
}
|
||||
|
||||
/* This is the corrected rule for the input bar */
|
||||
.locksidian-screen .locksidian-input {
|
||||
.vaultguard-screen .vaultguard-input {
|
||||
width: 100%;
|
||||
|
||||
/* [THE FIX] Dark, translucent background for the glass effect */
|
||||
|
|
@ -202,24 +202,24 @@
|
|||
text-shadow: 0 1px 3px rgba(0,0,0,0.4);
|
||||
}
|
||||
|
||||
.locksidian-input::placeholder {
|
||||
.vaultguard-input::placeholder {
|
||||
color: rgba(255, 255, 255, 0.4);
|
||||
letter-spacing: 0.1em;
|
||||
text-shadow: none;
|
||||
}
|
||||
|
||||
/* Ensure the focus state also maintains the glass effect */
|
||||
.locksidian-screen .locksidian-input:focus {
|
||||
.vaultguard-screen .vaultguard-input:focus {
|
||||
border-color: rgba(255, 255, 255, 0.4);
|
||||
box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2),
|
||||
0 0 0 2px rgba(255, 255, 255, 0.1) inset;
|
||||
}
|
||||
|
||||
.locksidian-input.is-error {
|
||||
.vaultguard-input.is-error {
|
||||
border-color: #e74c3c !important;
|
||||
}
|
||||
|
||||
.locksidian-input.is-success {
|
||||
.vaultguard-input.is-success {
|
||||
border-color: #2ecc71 !important;
|
||||
}
|
||||
|
||||
|
|
@ -233,21 +233,21 @@
|
|||
PROGRESS MODAL (for encryption/decryption)
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-progress-modal .modal-content {
|
||||
.vaultguard-progress-modal .modal-content {
|
||||
padding: 20px 30px;
|
||||
}
|
||||
|
||||
.locksidian-progress-modal h2 {
|
||||
.vaultguard-progress-modal h2 {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.locksidian-progress-modal .progress-status {
|
||||
.vaultguard-progress-modal .progress-status {
|
||||
font-size: 14px;
|
||||
margin-bottom: 10px;
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.locksidian-progress-modal .progress-bar-wrapper {
|
||||
.vaultguard-progress-modal .progress-bar-wrapper {
|
||||
width: 100%;
|
||||
height: 10px;
|
||||
background-color: var(--background-modifier-border);
|
||||
|
|
@ -256,14 +256,14 @@
|
|||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.locksidian-progress-modal .progress-bar {
|
||||
.vaultguard-progress-modal .progress-bar {
|
||||
height: 100%;
|
||||
background-color: var(--interactive-accent);
|
||||
transition: width 0.3s ease;
|
||||
border-radius: 5px;
|
||||
}
|
||||
|
||||
.locksidian-progress-modal .progress-details {
|
||||
.vaultguard-progress-modal .progress-details {
|
||||
font-size: 12px;
|
||||
min-height: 1.5em;
|
||||
color: var(--text-muted);
|
||||
|
|
@ -326,14 +326,14 @@
|
|||
SETTINGS PANEL - BACKGROUND THUMBNAIL GRID
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-thumbnail-grid {
|
||||
.vaultguard-thumbnail-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
|
||||
gap: 15px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item {
|
||||
.vaultguard-thumbnail-item {
|
||||
position: relative;
|
||||
aspect-ratio: 16 / 9;
|
||||
border-radius: 8px;
|
||||
|
|
@ -344,25 +344,25 @@
|
|||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item:hover {
|
||||
.vaultguard-thumbnail-item:hover {
|
||||
transform: scale(1.03);
|
||||
box-shadow: 0 0 15px rgba(var(--accent-h), var(--accent-s), var(--accent-l), 0.3);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item.is-active {
|
||||
.vaultguard-thumbnail-item.is-active {
|
||||
border-color: var(--interactive-accent);
|
||||
box-shadow: 0 0 15px rgba(var(--accent-h), var(--accent-s), var(--accent-l), 0.5);
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item .thumbnail-image {
|
||||
.vaultguard-thumbnail-item .thumbnail-image {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
object-fit: cover;
|
||||
background-color: var(--background-secondary);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item .thumbnail-icon {
|
||||
.vaultguard-thumbnail-item .thumbnail-icon {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
display: flex;
|
||||
|
|
@ -372,23 +372,23 @@
|
|||
background-color: var(--background-secondary-alt);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item .thumbnail-icon svg {
|
||||
.vaultguard-thumbnail-item .thumbnail-icon svg {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item.add-new-btn {
|
||||
.vaultguard-thumbnail-item.add-new-btn {
|
||||
border-style: dashed;
|
||||
border-color: var(--text-faint);
|
||||
color: var(--text-muted);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item.add-new-btn:hover {
|
||||
.vaultguard-thumbnail-item.add-new-btn:hover {
|
||||
border-color: var(--interactive-accent-hover);
|
||||
color: var(--interactive-accent-hover);
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item .delete-btn {
|
||||
.vaultguard-thumbnail-item .delete-btn {
|
||||
position: absolute;
|
||||
top: 6px;
|
||||
right: 6px;
|
||||
|
|
@ -408,12 +408,12 @@
|
|||
transition: all 0.2s ease;
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item:hover .delete-btn {
|
||||
.vaultguard-thumbnail-item:hover .delete-btn {
|
||||
display: flex;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-item .delete-btn:hover {
|
||||
.vaultguard-thumbnail-item .delete-btn:hover {
|
||||
background-color: #e74c3c;
|
||||
color: white;
|
||||
transform: scale(1.1);
|
||||
|
|
@ -424,17 +424,17 @@
|
|||
============================================================================ */
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.locksidian-username {
|
||||
.vaultguard-username {
|
||||
font-size: 32px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.locksidian-input {
|
||||
.vaultguard-input {
|
||||
font-size: 16px;
|
||||
padding: 14px 25px;
|
||||
}
|
||||
|
||||
.locksidian-thumbnail-grid {
|
||||
.vaultguard-thumbnail-grid {
|
||||
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
|
||||
gap: 10px;
|
||||
}
|
||||
|
|
@ -444,36 +444,36 @@
|
|||
ACCESSIBILITY IMPROVEMENTS
|
||||
============================================================================ */
|
||||
|
||||
.locksidian-input:focus-visible {
|
||||
.vaultguard-input:focus-visible {
|
||||
outline: 2px solid var(--interactive-accent);
|
||||
outline-offset: 2px;
|
||||
}
|
||||
|
||||
/* High contrast mode support */
|
||||
@media (prefers-contrast: high) {
|
||||
.locksidian-overlay {
|
||||
.vaultguard-overlay {
|
||||
background-color: rgba(0, 0, 0, 0.7);
|
||||
}
|
||||
|
||||
.locksidian-input {
|
||||
.vaultguard-input {
|
||||
border-width: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
/* Reduced motion support */
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
.locksidian-screen,
|
||||
.locksidian-main-content,
|
||||
.locksidian-content,
|
||||
.locksidian-input,
|
||||
.locksidian-thumbnail-item {
|
||||
.vaultguard-screen,
|
||||
.vaultguard-main-content,
|
||||
.vaultguard-content,
|
||||
.vaultguard-input,
|
||||
.vaultguard-thumbnail-item {
|
||||
animation: none !important;
|
||||
transition: none !important;
|
||||
opacity: 1 !important;
|
||||
transform: none !important;
|
||||
}
|
||||
|
||||
.locksidian-screen.is-leaving {
|
||||
.vaultguard-screen.is-leaving {
|
||||
opacity: 0 !important;
|
||||
}
|
||||
}
|
||||
28
zxcvbn.js
28
zxcvbn.js
File diff suppressed because one or more lines are too long
Loading…
Reference in a new issue