bump to version 20261009
Build and publish extension / Build extension packages (push) Successful in 50s
Build and publish extension / Publish stores and attach release assets (push) Skipped

This commit is contained in:
wt committed 2026-10-09 16:41:56 +07:00
1 parent e88fb193df
commit 07a0f2c1e3
5 files changed
+330 -228

No files matched your search

+1 -1
View File
@@ -9,7 +9,7 @@ on:
workflow_dispatch: workflow_dispatch:
inputs: inputs:
version: version:
description: "Version to validate (for example 1.0.1)" description: "Version to validate (for example 20261009)"
required: true required: true
type: string type: string
+1 -1
View File
@@ -124,4 +124,4 @@ python -m json.tool manifest.json >/dev/null
## Project version ## Project version
Current version: **1.0.1** Current version: **20261009**
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"manifest_version": 3, "manifest_version": 3,
"name": "Proxy Switcher Fork By WT", "name": "Proxy Switcher Fork By WT",
"version": "1.0.1", "version": "20261009",
"description": "Selectively apply proxy servers to specific domains.", "description": "Selectively apply proxy servers to specific domains.",
"minimum_chrome_version": "99", "minimum_chrome_version": "99",
"icons": { "icons": {
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"manifest_version": 2, "manifest_version": 2,
"name": "Proxy Switcher Fork By WT", "name": "Proxy Switcher Fork By WT",
"version": "1.0.1", "version": "20261009",
"description": "Selectively apply proxy servers to specific domains. All settings are stored locally and no data is collected or transmitted externally.", "description": "Selectively apply proxy servers to specific domains. All settings are stored locally and no data is collected or transmitted externally.",
"icons": { "icons": {
"16": "icons/proxy-switcher-16.png", "16": "icons/proxy-switcher-16.png",
+326 -224
View File
@@ -1,249 +1,351 @@
<!DOCTYPE html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="UTF-8"> <meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Proxy Switcher - Options</title> <title>Proxy Switcher - Options</title>
<link rel="stylesheet" href="options.css"> <link rel="stylesheet" href="options.css" />
</head> </head>
<body> <body>
<!-- Modal Overlay --> <!-- Modal Overlay -->
<div id="modal-overlay" class="modal-overlay hidden"></div> <div id="modal-overlay" class="modal-overlay hidden"></div>
<div class="container"> <div class="container">
<header> <header>
<h1><img src="icons/proxy-switcher-64.png" alt="Proxy Switcher"> Proxy Switcher</h1> <h1>
<p class="subtitle">Manage domain-specific proxy settings</p> <img
</header> src="icons/proxy-switcher-64.png"
alt="Proxy Switcher"
/>
Proxy Switcher
</h1>
<p class="subtitle">Manage domain-specific proxy settings</p>
</header>
<main> <main>
<section class="profiles-section"> <section class="profiles-section">
<div class="section-header"> <div class="section-header">
<h2>Proxy Profiles</h2> <h2>Proxy Profiles</h2>
<button id="add-profile" class="btn btn-primary"> <button id="add-profile" class="btn btn-primary">
<span class="icon">+</span> Add Profile <span class="icon">+</span> Add Profile
</button> </button>
</div>
<div id="profiles-list" class="profiles-list">
<!-- Dynamically populated -->
</div>
</section>
<section class="domains-section">
<div class="section-header">
<h2>Configured Domains</h2>
<button id="add-domain" class="btn btn-primary">
<span class="icon">+</span> Add Domain
</button>
</div>
<div class="search-controls">
<div class="search-group">
<input type="text" id="domain-search" placeholder="Search domains...">
<select id="tag-filter">
<option value="">All tags</option>
<!-- Tags will be added dynamically -->
</select>
</div>
</div>
<div id="domains-list" class="domains-list">
<!-- Dynamically populated -->
</div>
</section>
<section id="domain-form-section" class="domain-form-section hidden">
<h2 id="form-title">Add Domain</h2>
<form id="domain-form" class="domain-form">
<div class="form-group">
<label for="domain-input">Domain *</label>
<input type="text" id="domain-input"
placeholder="example.com"
pattern="^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$"
required>
<small class="form-hint">Enter domain without protocol (e.g., example.com)</small>
</div> </div>
<div class="form-group"> <div id="profiles-list" class="profiles-list">
<label for="proxy-type">Proxy Type *</label> <!-- Dynamically populated -->
<select id="proxy-type" required> </div>
<option value="http">HTTP</option> </section>
<option value="socks">SOCKS5</option>
</select> <section class="domains-section">
<div class="section-header">
<h2>Configured Domains</h2>
<button id="add-domain" class="btn btn-primary">
<span class="icon">+</span> Add Domain
</button>
</div> </div>
<div class="form-group"> <div class="search-controls">
<label for="profile-select">Use Profile (optional)</label> <div class="search-group">
<select id="profile-select"> <input
<option value="">-- Select Profile --</option> type="text"
<!-- Profiles will be added dynamically --> id="domain-search"
</select> placeholder="Search domains..."
<small class="form-hint">Selecting a profile will fill the fields below</small> />
</div> <select id="tag-filter">
<option value="">All tags</option>
<div class="form-row"> <!-- Tags will be added dynamically -->
<div class="form-group"> </select>
<label for="proxy-host">Host *</label>
<input type="text" id="proxy-host"
placeholder="proxy.example.com"
required>
</div>
<div class="form-group">
<label for="proxy-port">Port *</label>
<input type="number" id="proxy-port"
min="1" max="65535"
placeholder="8080"
required>
</div> </div>
</div> </div>
<div class="form-row"> <div id="domains-list" class="domains-list">
<!-- Dynamically populated -->
</div>
</section>
<section
id="domain-form-section"
class="domain-form-section hidden"
>
<h2 id="form-title">Add Domain</h2>
<form id="domain-form" class="domain-form">
<div class="form-group"> <div class="form-group">
<label for="proxy-username">Username (optional)</label> <label for="domain-input">Domain *</label>
<input type="text" id="proxy-username" <input
placeholder="username"> type="text"
id="domain-input"
placeholder="example.com"
pattern="^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$"
required
/>
<small class="form-hint"
>Enter domain without protocol (e.g.,
example.com)</small
>
</div> </div>
<div class="form-group"> <div class="form-group">
<label for="proxy-password">Password (optional)</label> <label for="proxy-type">Proxy Type *</label>
<div class="password-input"> <select id="proxy-type" required>
<input type="password" id="proxy-password" <option value="http">HTTP</option>
placeholder="••••••••"> <option value="socks">SOCKS5</option>
<button type="button" class="toggle-password" </select>
data-target="proxy-password"> </div>
👁
</button> <div class="form-group">
<label for="profile-select"
>Use Profile (optional)</label
>
<select id="profile-select">
<option value="">-- Select Profile --</option>
<!-- Profiles will be added dynamically -->
</select>
<small class="form-hint"
>Selecting a profile will fill the fields
below</small
>
</div>
<div class="form-row">
<div class="form-group">
<label for="proxy-host">Host *</label>
<input
type="text"
id="proxy-host"
placeholder="proxy.example.com"
required
/>
</div>
<div class="form-group">
<label for="proxy-port">Port *</label>
<input
type="number"
id="proxy-port"
min="1"
max="65535"
placeholder="8080"
required
/>
</div> </div>
</div> </div>
</div>
<div class="form-group"> <div class="form-row">
<label for="domain-tags">Tags (optional)</label> <div class="form-group">
<input type="text" id="domain-tags" <label for="proxy-username"
placeholder="work, personal, blocked"> >Username (optional)</label
<small class="form-hint">Comma-separated tags for organization</small> >
</div> <input
type="text"
<div class="form-group checkbox-group"> id="proxy-username"
<label class="checkbox-label"> placeholder="username"
<input type="checkbox" id="proxy-enabled" checked> />
<span>Enable proxy for this domain</span> </div>
</label> <div class="form-group">
</div> <label for="proxy-password"
>Password (optional)</label
<div class="form-actions"> >
<button type="button" id="cancel-form" class="btn btn-secondary"> <div class="password-input">
Cancel <input
</button> type="password"
<button type="submit" id="save-domain" class="btn btn-primary"> id="proxy-password"
Save Domain placeholder="••••••••"
</button> />
</div> <button
</form> type="button"
</section> class="toggle-password"
data-target="proxy-password"
<section id="profile-form-section" class="profile-form-section hidden"> >
<h2 id="profile-form-title">Add Profile</h2> 👁
</button>
<form id="profile-form" class="profile-form"> </div>
<div class="form-group">
<label for="profile-name-input">Profile Name *</label>
<input type="text" id="profile-name-input"
placeholder="My Proxy Profile"
required>
<small class="form-hint">Enter a unique name for this profile</small>
</div>
<div class="form-group">
<label for="profile-proxy-type">Proxy Type *</label>
<select id="profile-proxy-type" required>
<option value="http">HTTP</option>
<option value="socks">SOCKS5</option>
</select>
</div>
<div class="form-row">
<div class="form-group">
<label for="profile-proxy-host">Host *</label>
<input type="text" id="profile-proxy-host"
placeholder="proxy.example.com"
required>
</div>
<div class="form-group">
<label for="profile-proxy-port">Port *</label>
<input type="number" id="profile-proxy-port"
min="1" max="65535"
placeholder="8080"
required>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="profile-proxy-username">Username (optional)</label>
<input type="text" id="profile-proxy-username"
placeholder="username">
</div>
<div class="form-group">
<label for="profile-proxy-password">Password (optional)</label>
<div class="password-input">
<input type="password" id="profile-proxy-password"
placeholder="••••••••">
<button type="button" class="toggle-password"
data-target="profile-proxy-password">
👁
</button>
</div> </div>
</div> </div>
</div>
<div class="form-actions"> <div class="form-group">
<button type="button" id="cancel-profile-form" class="btn btn-secondary"> <label for="domain-tags">Tags (optional)</label>
Cancel <input
type="text"
id="domain-tags"
placeholder="work, personal, blocked"
/>
<small class="form-hint"
>Comma-separated tags for organization</small
>
</div>
<div class="form-group checkbox-group">
<label class="checkbox-label">
<input
type="checkbox"
id="proxy-enabled"
checked
/>
<span>Enable proxy for this domain</span>
</label>
</div>
<div class="form-actions">
<button
type="button"
id="cancel-form"
class="btn btn-secondary"
>
Cancel
</button>
<button
type="submit"
id="save-domain"
class="btn btn-primary"
>
Save Domain
</button>
</div>
</form>
</section>
<section
id="profile-form-section"
class="profile-form-section hidden"
>
<h2 id="profile-form-title">Add Profile</h2>
<form id="profile-form" class="profile-form">
<div class="form-group">
<label for="profile-name-input"
>Profile Name *</label
>
<input
type="text"
id="profile-name-input"
placeholder="My Proxy Profile"
required
/>
<small class="form-hint"
>Enter a unique name for this profile</small
>
</div>
<div class="form-group">
<label for="profile-proxy-type">Proxy Type *</label>
<select id="profile-proxy-type" required>
<option value="http">HTTP</option>
<option value="socks">SOCKS5</option>
</select>
</div>
<div class="form-row">
<div class="form-group">
<label for="profile-proxy-host">Host *</label>
<input
type="text"
id="profile-proxy-host"
placeholder="proxy.example.com"
required
/>
</div>
<div class="form-group">
<label for="profile-proxy-port">Port *</label>
<input
type="number"
id="profile-proxy-port"
min="1"
max="65535"
placeholder="8080"
required
/>
</div>
</div>
<div class="form-row">
<div class="form-group">
<label for="profile-proxy-username"
>Username (optional)</label
>
<input
type="text"
id="profile-proxy-username"
placeholder="username"
/>
</div>
<div class="form-group">
<label for="profile-proxy-password"
>Password (optional)</label
>
<div class="password-input">
<input
type="password"
id="profile-proxy-password"
placeholder="••••••••"
/>
<button
type="button"
class="toggle-password"
data-target="profile-proxy-password"
>
👁
</button>
</div>
</div>
</div>
<div class="form-actions">
<button
type="button"
id="cancel-profile-form"
class="btn btn-secondary"
>
Cancel
</button>
<button
type="submit"
id="save-profile"
class="btn btn-primary"
>
Save Profile
</button>
</div>
</form>
</section>
<section class="advanced-settings-section">
<h2>Advanced Settings</h2>
<div class="form-group settings-row">
<label for="theme-select">Theme</label>
<select id="theme-select">
<option value="system">System</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
<small class="form-hint"
>Choose light, dark, or follow your device
theme.</small
>
</div>
</section>
<section class="management-section">
<h2>Management</h2>
<div class="management-buttons">
<button id="clear-domains" class="btn btn-danger">
Clear All Domains
</button> </button>
<button type="submit" id="save-profile" class="btn btn-primary"> <button id="clear-profiles" class="btn btn-danger">
Save Profile Clear All Profiles
</button>
<button id="clear-all" class="btn btn-danger">
Clear Everything
</button> </button>
</div> </div>
</form> </section>
</section> </main>
<section class="advanced-settings-section">
<h2>Advanced Settings</h2>
<div class="form-group settings-row">
<label for="theme-select">Theme</label>
<select id="theme-select">
<option value="system">System</option>
<option value="light">Light</option>
<option value="dark">Dark</option>
</select>
<small class="form-hint">Choose light, dark, or follow your device theme.</small>
</div>
</section>
<section class="management-section">
<h2>Management</h2>
<div class="management-buttons">
<button id="clear-domains" class="btn btn-danger">
Clear All Domains
</button>
<button id="clear-profiles" class="btn btn-danger">
Clear All Profiles
</button>
<button id="clear-all" class="btn btn-danger">
Clear Everything
</button>
</div>
</section>
</main>
<footer> <footer>
<div class="footer-content"> <div class="footer-content">
<p>Proxy Switcher v1.0.1</p> <p>Proxy Switcher v20261009</p>
</div> </div>
</footer> </footer>
</div> </div>
<script src="browser-api.js"></script> <script src="browser-api.js"></script>
<script src="options.js"></script> <script src="options.js"></script>
</body> </body>
</html> </html>