feat: release passwordless hierarchical APT v1.2.5
APT build checks / build-checks (push) Successful in 37s
APT build checks / build-checks (pull_request) Successful in 37s

This commit is contained in:
2026-08-22 16:20:12 +00:00
parent c08d2ad381
commit ace4568f81
27 changed files with 209 additions and 145 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{
"manifest_version": 3,
"name": "Alta Proxy Tool Bridge",
"version": "1.2.0",
"version": "1.2.5",
"description": "Send Alta session cookies to a paired Alta Proxy Tool desktop app.",
"key": "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAt4EZdkSgOsyiy5DRe0JkX+BpK94FpMjBU59NVIqDPO8QBDwvqNDWT/UjqHK/0aqSxzed5KibX6MdAvc495+u1sCybFdjDdXyBewEvg+PDqGiJketlZKC9dcR1RXHuPgAoM3NaNbMb3TqYcS9J4iGq0UwadxubkQrEcPiuyR6oriOkop8q9/5DWGb15wOGmiCuVmlXfUjNJIvNBm9P/ZHtgFBYDI2PuSSI5GI4j04VFpEyfNlFCrpi8GQ7bYZzezigZWXRjhhNwkx39bNHlkAWYa8XGZseCpKKvi0EaeCoBPjoYSAt161SM1dqX+/UC61/sLOU/SpDB1SYGTm5DC+7wIDAQAB",
"permissions": ["cookies", "activeTab", "clipboardWrite", "storage"],
-6
View File
@@ -75,9 +75,3 @@ button:disabled { cursor: not-allowed; opacity: 0.45; }
padding-top: 14px;
border-top: 1px solid #3c3c3c;
}
.privacy-note {
margin-top: 24px;
color: #aaa;
font-size: 12px;
}
+2 -2
View File
@@ -10,7 +10,7 @@
<body>
<main class="options-card">
<h1>Pair with Alta Proxy Tool</h1>
<p>In the desktop app, create a one-time pairing secret. Paste it below on this computer. Treat it like a password.</p>
<p>Create a one-time pairing secret in APT, then paste it below.</p>
<form id="pairingForm">
<label for="pairingSecret">One-time pairing secret</label>
<input id="pairingSecret" name="pairingSecret" type="password" inputmode="text" autocomplete="off" spellcheck="false" required>
@@ -22,7 +22,7 @@
<p id="currentState">Checking...</p>
<button id="forgetBtn" type="button" class="danger-btn" disabled>Forget pairing</button>
</section>
<p class="privacy-note">The secret is stored only in Chrome extension local storage. It is never displayed again or copied automatically.</p>
</main>
<script src="options.js"></script>
</body>
-8
View File
@@ -88,14 +88,6 @@ h1 {
opacity: 0.45;
}
.copy-warning {
margin: 10px 0 0;
padding: 8px 10px;
border-left: 3px solid #f0a33a;
background: rgba(240, 163, 58, 0.08);
color: #d7c29f;
font-size: 12px;
}
.status-msg {
display: none;
-1
View File
@@ -17,7 +17,6 @@
<button id="sendBtn" class="primary-btn" type="button" disabled>Send to APT</button>
<button id="copyBtn" class="secondary-btn" type="button" disabled>Copy VA Token</button>
</div>
<p id="copyWarning" class="copy-warning">Copying exposes the full bearer token. Clipboard history or sync may retain it. A confirmation is required.</p>
<div id="statusMsg" class="status-msg" role="status" aria-live="polite"></div>
</main>
<script src="popup.js"></script>
+2 -6
View File
@@ -45,7 +45,6 @@ function createPopupController({
const pairingInfo = documentApi.getElementById('pairingInfo');
const sendBtn = documentApi.getElementById('sendBtn');
const copyBtn = documentApi.getElementById('copyBtn');
const copyWarning = documentApi.getElementById('copyWarning');
const statusMsg = documentApi.getElementById('statusMsg');
const openOptionsBtn = documentApi.getElementById('openOptionsBtn');
@@ -159,9 +158,7 @@ function createPopupController({
async function copyToken() {
if (!detectedOrigin || !pairingSecret || busy) return;
const confirmed = confirmCopy(
'Copy the full VA bearer token? Clipboard history or sync may retain it. Continue only if you will paste it into a trusted destination.'
);
const confirmed = confirmCopy('Copy VA token?');
if (!confirmed) {
showStatus('Copy cancelled. The VA token was not read.', 'info');
return;
@@ -172,7 +169,7 @@ function createPopupController({
try {
cookieValue = await getVaCookieValue();
await navigatorApi.clipboard.writeText(cookieValue);
showStatus('VA token copied. Clear your clipboard after use.', 'success');
showStatus('VA token copied.', 'success');
} catch (error) {
showCookieError(error, true);
} finally {
@@ -182,7 +179,6 @@ function createPopupController({
}
async function init() {
copyWarning.textContent = 'Copying exposes the full bearer token. Clipboard history or sync may retain it. A confirmation is required.';
sendBtn.addEventListener('click', sendToApt);
copyBtn.addEventListener('click', copyToken);
openOptionsBtn.addEventListener('click', () => chromeApi.runtime.openOptionsPage());