feat: release passwordless hierarchical APT v1.2.5
This commit is contained in:
@@ -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"],
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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());
|
||||
|
||||
Reference in New Issue
Block a user