Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,9 @@ The extension uses Safari's Manifest V3 architecture with declarative net reques
- `manifest.json` - Extension configuration with declarativeNetRequest permissions (Manifest V3)
- `rules.json` - Redirect rules using regex patterns to transform YouTube URLs
- `background.js` - Service worker for managing rule enable/disable state
- `popup.html/css/js` - Safari toolbar popup UI for user control
- `SafariWebExtensionHandler.swift` - Empty placeholder class (legacy Safari App Extension APIs are not used)
- **No content scripts** - All redirects happen at network level via declarativeNetRequest

### URL Redirect Logic

Expand Down
149 changes: 0 additions & 149 deletions FreeYT Extension/Resources/content.js

This file was deleted.

2 changes: 1 addition & 1 deletion FreeYT Extension/SafariWebExtensionHandler.swift
Original file line number Diff line number Diff line change
Expand Up @@ -14,5 +14,5 @@
import Foundation

/// No-op placeholder to keep the target compiling. All extension logic lives in
/// manifest.json, rules.json, background.js, and content.js.
/// manifest.json, rules.json, background.js, popup.html/css/js.
@objc class SafariWebExtensionHandlerPlaceholder: NSObject {}
22 changes: 14 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ FreeYT intercepts YouTube links and redirects them to embed-only versions that d
- Toggle extension on/off via Safari toolbar popup
- Persistent state across browser sessions
- Dark/light mode support in popup UI
- Native iOS/Mac host app with modern UIKit interface
- Native iOS/Mac host app with modern SwiftUI interface (liquid glass design)
- No data collection, no tracking, no analytics

## Technical Architecture
Expand Down Expand Up @@ -95,7 +95,9 @@ FreeYT/
├── FreeYT.xcodeproj # Xcode project file
├── FreeYT/ # Host application
│ ├── AppDelegate.swift # App lifecycle management
│ ├── ViewController.swift # Main app screen (native UIKit)
│ ├── SceneDelegate.swift # Scene configuration
│ ├── LiquidGlassView.swift # Main app screen (modern SwiftUI)
│ ├── LiquidGlassHostingController.swift # UIHostingController wrapper
│ ├── Info.plist # App bundle configuration
│ ├── Assets.xcassets/ # Icons and images
│ └── LaunchScreen.storyboard # Splash screen
Expand Down Expand Up @@ -133,12 +135,13 @@ Safari toolbar popup interface that:
- Includes test buttons for verification
- Supports system dark/light mode

### ViewController.swift
Native iOS/Mac app UI that:
- Displays app branding and instructions
- Provides button to open Safari settings
### LiquidGlassView.swift
Modern SwiftUI app UI that:
- Displays app branding with liquid glass design
- Shows extension status and instructions
- Supports dark/light mode automatically
- Provides beautiful, polished user experience
- Auto-detects extension status on Mac Catalyst
- Shows enable instructions for users

## Bundle Identifiers

Expand Down Expand Up @@ -207,7 +210,10 @@ Edit the following files:
- `FreeYT Extension/Resources/popup.js` - Functionality

### Updating App UI
Edit `FreeYT/ViewController.swift` for host app interface changes.
Edit the following files for host app interface changes:
- `FreeYT/LiquidGlassView.swift` - SwiftUI view structure and layout
- `FreeYT/LiquidGlassHostingController.swift` - UIHostingController wrapper
- `FreeYT/SceneDelegate.swift` - Scene configuration

## Roadmap

Expand Down
Loading