[PR #28] [MERGED] Safari compatibility #118

Closed
opened 2026-03-04 00:03:58 +03:00 by kerem · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/YouG-o/YouTube-No-Translation/pull/28
Author: @Seva41
Created: 5/25/2025
Status: Merged
Merged: 5/26/2025
Merged by: @YouG-o

Base: mainHead: main


📝 Commits (5)

  • 3851d37 Feat: Basic port for Safari on macOS
  • dff7781 Fix: Missing resources from build
  • 9533aba Removed user-specific files and updated manifest for Safari
  • 4b1f228 Merge pull request #1 from Seva41/safari-extension
  • 38e4574 Fix: Changed header to AGPL v3.0 license on Swift code

📊 Changes

58 files changed (+7169 additions, -0 deletions)

View changed files

📝 .gitignore (+8 -0)
manifest.safari.json (+57 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Info.plist (+13 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/Github-Dark.svg (+4 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/icon.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/ko-fi.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/before-after.jpg (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/chrome.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/firefox.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/icon.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/Github-Dark.svg (+4 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/icon.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/ko-fi.png (+0 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/background/background.js (+47 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/browser-polyfill.js (+1225 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/content.js (+2169 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/audioScript.js (+169 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/channelNameScript.js (+84 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/descriptionScript.js (+66 -0)
safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/mainTitleScript.js (+87 -0)

...and 38 more files

📄 Description

Hey there! Loved your project, so i took a try to port it to Safari on macOS, since i use that browser and there is no alternative yet on the AppStore.

This pull request introduces a Safari web extension for "YouTube No Translation," enabling compatibility with Safari while maintaining functionality for other browsers. The changes include the addition of necessary configuration files, platform-specific resources, and implementation of the extension's core logic. The port was made using the safari-web-extension-converter utility from Xcode 16.3.

Core Functionality and Resources:

  • Implemented SafariWebExtensionHandler.swift to handle native messages between the browser and the extension (safari-extension/YouTube No Translation/YouTube No Translation Extension/SafariWebExtensionHandler.swift).
  • Added Main.html for the extension's settings page, including dynamic messages about the extension's state (safari-extension/YouTube No Translation/YouTube No Translation/Resources/Base.lproj/Main.html).

Visual and Asset Updates:

  • Added AppIcon.appiconset and other visual assets for macOS, including icons of various sizes (safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/AppIcon.appiconset/Contents.json).
  • Included AccentColor.colorset and LargeIcon.imageset for UI customization (safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/AccentColor.colorset/Contents.json, safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/LargeIcon.imageset/Contents.json). [1] [2]

These changes ensure the extension is fully functional and visually integrated with Safari while preserving its cross-browser compatibility.

Build and Distribution

In order to build for Safari (macOS), the Xcode project (YouTube No Translation.xcodeproj) should be opened on a macOS device and built from there, attaching the extension to Safari locally. A simple app opens automatically, then in Safari>Settings>Extensions should appear YouTube No Translation ready to enable. If it's not there, verify the check on Safari>Settings>Developer>Allow unsigned extensions.

The extension was tested on Safari 18.5, using macOS Sequoia 15.5 and worked perfectly.

To build and distribute the extension via the macOS AppStore, an Apple Developer Account (USD$100/year) is required.

iOS/iPadOS Support

Using this same port method, the extension should be also compatible with Safari on iOS and iPadOS. However, this requires to remove Persistent Background Pages as is not supported on these platforms. That change is NOT included in this PR.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/YouG-o/YouTube-No-Translation/pull/28 **Author:** [@Seva41](https://github.com/Seva41) **Created:** 5/25/2025 **Status:** ✅ Merged **Merged:** 5/26/2025 **Merged by:** [@YouG-o](https://github.com/YouG-o) **Base:** `main` ← **Head:** `main` --- ### 📝 Commits (5) - [`3851d37`](https://github.com/YouG-o/YouTube-No-Translation/commit/3851d370cef2bd737a1a306a3dff12a222b9be78) Feat: Basic port for Safari on macOS - [`dff7781`](https://github.com/YouG-o/YouTube-No-Translation/commit/dff7781d3934a45ae919ccc65e8b452a243eac73) Fix: Missing resources from build - [`9533aba`](https://github.com/YouG-o/YouTube-No-Translation/commit/9533aba9d6a48f3270e0e6703eb6cc84d0b915f6) Removed user-specific files and updated manifest for Safari - [`4b1f228`](https://github.com/YouG-o/YouTube-No-Translation/commit/4b1f2284118496eb53cbb8fac8894028d11d231e) Merge pull request #1 from Seva41/safari-extension - [`38e4574`](https://github.com/YouG-o/YouTube-No-Translation/commit/38e457472806531577ea2c24d93973e0d7576028) Fix: Changed header to AGPL v3.0 license on Swift code ### 📊 Changes **58 files changed** (+7169 additions, -0 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+8 -0) ➕ `manifest.safari.json` (+57 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Info.plist` (+13 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/Github-Dark.svg` (+4 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/icon.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/icons/ko-fi.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/before-after.jpg` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/chrome.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/firefox.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/assets/images/icon.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/Github-Dark.svg` (+4 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/icon.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/assets/icons/ko-fi.png` (+0 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/background/background.js` (+47 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/browser-polyfill.js` (+1225 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/content.js` (+2169 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/audioScript.js` (+169 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/channelNameScript.js` (+84 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/descriptionScript.js` (+66 -0) ➕ `safari-extension/YouTube No Translation/YouTube No Translation Extension/Resources/dist/content/scripts/mainTitleScript.js` (+87 -0) _...and 38 more files_ </details> ### 📄 Description Hey there! Loved your project, so i took a try to port it to Safari on macOS, since i use that browser and there is no alternative yet on the AppStore. This pull request introduces a Safari web extension for "YouTube No Translation," enabling compatibility with Safari while maintaining functionality for other browsers. The changes include the addition of necessary configuration files, platform-specific resources, and implementation of the extension's core logic. The port was made using the `safari-web-extension-converter` utility from Xcode 16.3. ### Core Functionality and Resources: * Implemented `SafariWebExtensionHandler.swift` to handle native messages between the browser and the extension (`safari-extension/YouTube No Translation/YouTube No Translation Extension/SafariWebExtensionHandler.swift`). * Added `Main.html` for the extension's settings page, including dynamic messages about the extension's state (`safari-extension/YouTube No Translation/YouTube No Translation/Resources/Base.lproj/Main.html`). ### Visual and Asset Updates: * Added `AppIcon.appiconset` and other visual assets for macOS, including icons of various sizes (`safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/AppIcon.appiconset/Contents.json`). * Included `AccentColor.colorset` and `LargeIcon.imageset` for UI customization (`safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/AccentColor.colorset/Contents.json`, `safari-extension/YouTube No Translation/YouTube No Translation/Assets.xcassets/LargeIcon.imageset/Contents.json`). [[1]](diffhunk://#diff-12585fb414018513fb4c1411264cc2a818081679093c67945bf368d0821defd7R1-R11) [[2]](diffhunk://#diff-d05191c40646a6317bee82b7ab51923cd296985c83a7784cf54ac46ea7210ed0R1-R20) These changes ensure the extension is fully functional and visually integrated with Safari while preserving its cross-browser compatibility. ## Build and Distribution In order to build for Safari (macOS), the Xcode project (`YouTube No Translation.xcodeproj`) should be opened on a macOS device and built from there, attaching the extension to Safari locally. A simple app opens automatically, then in `Safari>Settings>Extensions` should appear **YouTube No Translation** ready to enable. If it's not there, verify the check on `Safari>Settings>Developer>Allow unsigned extensions`. The extension was tested on Safari 18.5, using macOS Sequoia 15.5 and worked perfectly. To build and distribute the extension via the macOS AppStore, an Apple Developer Account (USD$100/year) is required. ## iOS/iPadOS Support Using this same port method, the extension should be also compatible with Safari on iOS and iPadOS. However, this requires to remove _Persistent Background Pages_ as is not supported on these platforms. That change is **NOT** included in this PR. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
kerem 2026-03-04 00:03:58 +03:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
starred/YouTube-No-Translation#118
No description provided.