12 Commits

Author SHA1 Message Date
ObjectAscended c57ed620c7 Merge pull request #8 from ShyVortex/main
Add support for macOS
2026-06-19 01:27:45 -07:00
Angelo Trotta 4ffaca5fcc Cleanup .DS_Store 2026-06-19 09:34:04 +02:00
Angelo Trotta 27a4a172cb refactor macos support into single file 2026-06-19 09:29:51 +02:00
Angelo Trotta 386611bc3a Cleanup .vscode folder 2026-06-18 18:26:07 +02:00
Angelo Trotta 46a5966ed3 Add support for macOS 2026-06-18 18:15:57 +02:00
ObjectAscended ba5de278ee Add Brave-Origin to versions and reformat README 2026-06-04 21:09:49 -07:00
ObjectAscended fd1b4762cf Remove 'Beta' from Brave Origin in README 2026-05-16 21:07:30 -07:00
ObjectAscended 7af4e47141 Merge pull request #3 from cybe42/feature/dual-support
Add support for both Beta and Nightly
2026-05-16 21:05:13 -07:00
ObjectAscended 888690ac12 Potential fix for pull request finding
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
2026-05-16 21:04:55 -07:00
cybe42 1921dc190e Add support for both Beta and Nightly
Skips missing versions to avoid crashes and alerts the user if neither is installed.
2026-05-17 04:39:48 +01:00
ObjectAscended 4342ac463f Switch target from Brave Origin Nightly to Beta 2026-05-11 02:58:56 -07:00
ObjectAscended 06a1e50b1e Update README.md 2026-04-16 21:59:36 -07:00
4 changed files with 126 additions and 24 deletions
+3
View File
@@ -0,0 +1,3 @@
dist/
.vscode/
.DS_Store
+59 -9
View File
@@ -1,29 +1,79 @@
# Brave Origin Windows Unlocker
# Brave Origin Unlocker
A TypeScript utility for unlocking Brave Origin Nightly features on Windows by modifying the local application state.
A TypeScript utility for unlocking Brave Origin features on Windows and macOS by modifying the local application state.
## Overview
This tool modifies the Brave Origin Nightly browser's local state configuration to unlock premium features. It works by updating the `Local State` JSON file used by Brave to store user preferences and license validation status.
This tool modifies the Brave Origin browser's local state configuration to unlock premium features. It works by updating the `Local State` JSON file used by Brave to store user preferences and license validation status.
## Features
- ✅ Unlocks Brave Origin Nightly features
- ✅ Unlocks Brave Origin features
- ✅ Modifies purchase validation state
- ✅ Updates SKU credentials
- ✅ Windows-compatible local data path handling
- ✅ Windows and macOS auto-detection & compatibility
- ✅ Easy execution and cross-compilation via Deno tasks
## Requirements
- **Deno** - Modern JavaScript/TypeScript runtime
- **Windows OS** - Designed for Windows file paths
- **Brave Origin Nightly** - The browser being modified
- **File Write Permissions** - Access to `%LOCALAPPDATA%` directory
- **Windows OS or macOS** - Supported operating systems
- **Brave Origin** - The browser being modified
- **File Write Permissions** - Access to browser configurations
## Installation
1. Install [Deno](https://deno.land/) if you haven't already
1. Install [Deno](https://deno.land/) if you haven't already.
2. Clone this repository:
```bash
git clone https://github.com/ObjectAscended/brave-origin-windows-unlocker.git
cd brave-origin-windows-unlocker
```
## How to Run 🚀
The script automatically detects whether you are running on Windows or macOS. You can run the unlocker directly with:
```bash
deno task unlock
```
---
## How to Compile / Cross-Compile 📦
You can build standalone binaries for different operating systems and architectures using the pre-configured compilation tasks:
### Compile for Windows (x64)
```bash
deno task compile-win
```
### Compile for macOS Apple Silicon (ARM64)
```bash
deno task compile-mac-arm
```
### Compile for macOS Intel (x64)
```bash
deno task compile-mac-x64
```
These tasks will output the built binaries into the `dist/` directory.
---
## Pre-Bundled Deno Binaries 🎉
In our latest releases, we offer **pre-bundled Deno binaries** that make running the unlocker easier than ever! 🚀 You can download them from our [latest release page](https://github.com/ObjectAscended/brave-origin-windows-unlocker/releases/latest). These binaries ensure a smooth setup and save you time.
## Why Run the Unlocker Natively? 🤔
Running the unlocker natively is typically a better choice than running a browser inside virtual/emulated environments. Here's why:
1. **Performance**: The native experience generally offers better performance than emulated environments. ⚡
2. **Simplicity**: You avoid complex setups and configurations, making it more straightforward for users of all levels. 🛠️
3. **Compatibility**: Some features and functionalities might only work seamlessly in a native environment, ensuring you get the most out of your tools. 🔗
4. **User Experience**: Enjoy a more intuitive interface and fewer problems managing dependencies. 😊
Enjoy using our tool! 🎈
+8
View File
@@ -0,0 +1,8 @@
{
"tasks": {
"unlock": "deno run --allow-env --allow-read --allow-write unlock.ts",
"compile-win": "deno compile --allow-env --allow-read --allow-write --target x86_64-pc-windows-msvc --output dist/unlock-win.exe unlock.ts",
"compile-mac-arm": "deno compile --allow-env --allow-read --allow-write --target aarch64-apple-darwin --output dist/unlock-mac-arm unlock.ts",
"compile-mac-x64": "deno compile --allow-env --allow-read --allow-write --target x86_64-apple-darwin --output dist/unlock-mac-x64 unlock.ts"
}
}
+56 -15
View File
@@ -1,22 +1,63 @@
const localAppData = Deno.env.get("LOCALAPPDATA");
const os = Deno.build.os;
const localStatePath =
`${localAppData}\\BraveSoftware\\Brave-Origin-Nightly\\User Data\\Local State`;
let localStatePathPattern: (version: string) => string;
const localState = JSON.parse(await Deno.readTextFile(localStatePath));
if (os === "windows") {
const localAppData = Deno.env.get("LOCALAPPDATA");
if (!localAppData) {
console.error("Error: LOCALAPPDATA environment variable not found.");
Deno.exit(1);
}
localStatePathPattern = (version) =>
`${localAppData}\\BraveSoftware\\${version}\\User Data\\Local State`;
} else if (os === "darwin") {
const homeDir = Deno.env.get("HOME");
if (!homeDir) {
console.error("Error: HOME environment variable not found.");
Deno.exit(1);
}
localStatePathPattern = (version) =>
`${homeDir}/Library/Application Support/BraveSoftware/${version}/Local State`;
} else {
console.error(`Error: Unsupported operating system: ${os}`);
Deno.exit(1);
}
localState.brave.origin = { purchase_validated: true };
const versions = ["Brave-Origin", "Brave-Origin-Beta", "Brave-Origin-Nightly"];
let foundAny = false;
localState.skus = {
state: {
"67": JSON.stringify({
credentials: {
items: { "6": "7" },
for (const version of versions) {
const localStatePath = localStatePathPattern(version);
try {
const localState = JSON.parse(await Deno.readTextFile(localStatePath));
localState.brave = localState.brave || {};
localState.brave.origin = { purchase_validated: true };
localState.skus = {
state: {
"67": JSON.stringify({
credentials: {
items: { "6": "7" },
},
}),
},
}),
},
};
};
await Deno.writeTextFile(localStatePath, JSON.stringify(localState));
await Deno.writeTextFile(localStatePath, JSON.stringify(localState));
console.log("Brave Origin Nightly unlocked successfully!");
console.log(version.replace(/-/g, " ") + " unlocked successfully!");
foundAny = true;
} catch (error) {
if (error instanceof Deno.errors.NotFound) {
continue;
}
throw error;
}
}
if (!foundAny) {
console.log("Brave Origin not found.");
}