Skip to content

Commit 3123771

Browse files
Initial Commits
0 parents  commit 3123771

File tree

16 files changed

+6352
-0
lines changed

16 files changed

+6352
-0
lines changed

.github/workflows/build.yml

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
name: Build Test
2+
3+
on:
4+
push:
5+
branches:
6+
- main
7+
- develop
8+
paths-ignore:
9+
- '**.md'
10+
- '.gitignore'
11+
pull_request:
12+
branches:
13+
- main
14+
15+
jobs:
16+
build-test:
17+
strategy:
18+
matrix:
19+
os: [windows-latest, ubuntu-latest, macos-latest]
20+
fail-fast: false
21+
22+
runs-on: ${{ matrix.os }}
23+
24+
steps:
25+
- name: Checkout code
26+
uses: actions/checkout@v4
27+
28+
- name: Setup Node.js
29+
uses: actions/setup-node@v4
30+
with:
31+
node-version: '20'
32+
cache: 'npm'
33+
34+
- name: Install dependencies
35+
run: npm ci
36+
37+
- name: Lint check
38+
run: npm run lint --if-present
39+
40+
- name: Build app
41+
run: |
42+
if [ "$RUNNER_OS" == "Windows" ]; then
43+
npm run build:win
44+
elif [ "$RUNNER_OS" == "macOS" ]; then
45+
npm run build:mac
46+
else
47+
npm run build:linux
48+
fi
49+
shell: bash
50+
env:
51+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
52+
53+
- name: Verify build output
54+
run: |
55+
if [ -d "dist" ]; then
56+
echo "Build successful! Contents:"
57+
ls -la dist/
58+
else
59+
echo "Build failed - no dist folder"
60+
exit 1
61+
fi
62+
shell: bash

.github/workflows/release.yml

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
name: Build and Release
2+
3+
on:
4+
push:
5+
tags:
6+
- 'v*'
7+
workflow_dispatch:
8+
inputs:
9+
version:
10+
description: 'Version to release (e.g., 1.0.0)'
11+
required: true
12+
default: '1.0.0'
13+
14+
permissions:
15+
contents: write
16+
17+
jobs:
18+
build:
19+
strategy:
20+
matrix:
21+
include:
22+
- os: windows-latest
23+
platform: win
24+
artifact: '*.exe'
25+
- os: ubuntu-latest
26+
platform: linux
27+
artifact: '*.AppImage'
28+
- os: macos-latest
29+
platform: mac
30+
artifact: '*.dmg'
31+
32+
runs-on: ${{ matrix.os }}
33+
34+
steps:
35+
- name: Checkout code
36+
uses: actions/checkout@v4
37+
38+
- name: Setup Node.js
39+
uses: actions/setup-node@v4
40+
with:
41+
node-version: '20'
42+
cache: 'npm'
43+
44+
- name: Install dependencies
45+
run: npm ci
46+
47+
- name: Build for ${{ matrix.platform }}
48+
run: npm run build:${{ matrix.platform }}
49+
env:
50+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
51+
52+
- name: Upload artifacts
53+
uses: actions/upload-artifact@v4
54+
with:
55+
name: release-${{ matrix.platform }}
56+
path: |
57+
dist/*.exe
58+
dist/*.dmg
59+
dist/*.AppImage
60+
dist/*.zip
61+
dist/*.yml
62+
if-no-files-found: warn
63+
64+
release:
65+
needs: build
66+
runs-on: ubuntu-latest
67+
68+
steps:
69+
- name: Checkout code
70+
uses: actions/checkout@v4
71+
72+
- name: Download all artifacts
73+
uses: actions/download-artifact@v4
74+
with:
75+
path: artifacts
76+
merge-multiple: true
77+
78+
- name: Get version
79+
id: version
80+
run: |
81+
if [ "${{ github.event_name }}" == "workflow_dispatch" ]; then
82+
echo "version=${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
83+
echo "tag=v${{ github.event.inputs.version }}" >> $GITHUB_OUTPUT
84+
else
85+
echo "version=${GITHUB_REF#refs/tags/v}" >> $GITHUB_OUTPUT
86+
echo "tag=${GITHUB_REF#refs/tags/}" >> $GITHUB_OUTPUT
87+
fi
88+
89+
- name: List artifacts
90+
run: |
91+
echo "Artifacts to release:"
92+
find artifacts -type f -name "*" | head -50
93+
94+
- name: Create Release
95+
uses: softprops/action-gh-release@v1
96+
with:
97+
tag_name: ${{ steps.version.outputs.tag }}
98+
name: WlfRyt YouTube Studio v${{ steps.version.outputs.version }}
99+
body: |
100+
## WlfRyt YouTube Studio v${{ steps.version.outputs.version }}
101+
102+
A standalone desktop application for YouTube Studio with persistent login and hardened security.
103+
104+
### Downloads
105+
106+
| Platform | File |
107+
|----------|------|
108+
| Windows | `WlfRyt-YouTube-Studio-Setup-${{ steps.version.outputs.version }}.exe` |
109+
| macOS | `WlfRyt-YouTube-Studio-${{ steps.version.outputs.version }}.dmg` |
110+
| Linux | `WlfRyt-YouTube-Studio-${{ steps.version.outputs.version }}.AppImage` |
111+
112+
### Features
113+
- 🔐 Persistent login with encrypted session storage
114+
- 🛡️ Hardened security (sandbox, context isolation)
115+
- 💻 Native desktop experience
116+
- 🔒 Machine-specific encryption keys
117+
118+
### Installation
119+
120+
**Windows:** Download and run the `.exe` installer
121+
122+
**macOS:** Download the `.dmg`, open it, and drag to Applications
123+
124+
**Linux:** Download the `.AppImage`, make it executable (`chmod +x`), and run
125+
126+
---
127+
128+
> ⚠️ This is an unofficial application. YouTube and YouTube Studio are trademarks of Google LLC.
129+
draft: false
130+
prerelease: false
131+
files: |
132+
artifacts/**/*.exe
133+
artifacts/**/*.dmg
134+
artifacts/**/*.AppImage
135+
artifacts/**/*.zip
136+
env:
137+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.gitignore

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
node_modules/
2+
dist/
3+
*.log
4+
.DS_Store
5+
Thumbs.db
6+
*.pem
7+
*.p12
8+
*.key
9+
.env
10+
.env.local

README.md

Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
# WlfRyt YouTube Studio
2+
3+
A standalone desktop application for YouTube Studio with persistent login and hardened security.
4+
5+
## Features
6+
7+
- **Persistent Login**: Your Google/YouTube login session is saved securely, so you don't need to log in every time
8+
- **Hardened Security**:
9+
- Context isolation and sandbox mode enabled
10+
- Node integration disabled in renderer
11+
- Encrypted local storage for preferences
12+
- Machine-specific encryption keys
13+
- Strict Content Security Policy
14+
- Only allows navigation to YouTube/Google domains
15+
- **Native Desktop Experience**: Runs as a standalone app with system menu, keyboard shortcuts, and window state persistence
16+
- **Single Instance**: Prevents multiple instances from running
17+
18+
## Security Features
19+
20+
1. **Sandboxed Renderer Process**: The web content runs in a sandboxed environment with no direct access to Node.js APIs
21+
2. **Context Isolation**: The preload script is isolated from the web page context
22+
3. **Encrypted Storage**: Local preferences are encrypted with a machine-specific key
23+
4. **Domain Whitelisting**: Only YouTube and Google domains are allowed for navigation
24+
5. **Secure Session**: Cookies are stored in an encrypted partition
25+
6. **No External Script Execution**: Prevents running potentially malicious code
26+
27+
## Installation
28+
29+
### Prerequisites
30+
- Node.js 18 or higher
31+
- npm or yarn
32+
33+
### Setup
34+
35+
1. Clone the repository:
36+
```bash
37+
git clone https://github.com/WlfRyt/WlfRyt-Youtube-Studio.git
38+
cd WlfRyt-Youtube-Studio
39+
```
40+
41+
2. Install dependencies:
42+
```bash
43+
npm install
44+
```
45+
46+
3. Run the app:
47+
```bash
48+
npm start
49+
```
50+
51+
### Building for Distribution
52+
53+
Build for Windows:
54+
```bash
55+
npm run build:win
56+
```
57+
58+
Build for macOS:
59+
```bash
60+
npm run build:mac
61+
```
62+
63+
Build for Linux:
64+
```bash
65+
npm run build:linux
66+
```
67+
68+
The built application will be in the `dist` folder.
69+
70+
## Usage
71+
72+
1. Launch the application
73+
2. Sign in with your Google account when prompted
74+
3. Your login session will be saved for future use
75+
4. Use the menu or keyboard shortcuts for navigation:
76+
- `Ctrl+H` - Go to YouTube Studio home
77+
- `Alt+Left` - Go back
78+
- `Alt+Right` - Go forward
79+
- `F5` - Refresh
80+
81+
## Clearing Login Data
82+
83+
If you need to log out or clear your session data:
84+
1. Go to **File** > **Clear Session Data**
85+
2. Confirm the action
86+
3. You'll be logged out and can sign in with a different account
87+
88+
## Keyboard Shortcuts
89+
90+
| Shortcut | Action |
91+
|----------|--------|
92+
| Ctrl+H | Go to YouTube Studio Home |
93+
| Alt+Left | Navigate Back |
94+
| Alt+Right | Navigate Forward |
95+
| F5 | Refresh |
96+
| Ctrl+Plus | Zoom In |
97+
| Ctrl+Minus | Zoom Out |
98+
| Ctrl+0 | Reset Zoom |
99+
| F11 | Toggle Fullscreen |
100+
101+
## Technical Details
102+
103+
- Built with Electron 28
104+
- Uses persistent partition for cookie storage
105+
- Implements electron-store for encrypted local storage
106+
- Machine-specific encryption prevents data theft
107+
108+
## License
109+
110+
MIT License
111+
112+
## Disclaimer
113+
114+
This is an unofficial application. YouTube and YouTube Studio are trademarks of Google LLC.
1.86 MB
Loading

assets/icon.svg

Lines changed: 17 additions & 0 deletions
Loading

0 commit comments

Comments
 (0)