chore: sync all versions to 2.0.0 + fix sign script
Set Chrome, Firefox, and package.json all to version 2.0.0 (major bump reflecting encrypted storage, document scanning, org/team features, sync improvements). Sign script rewritten: - Tries current version first instead of always bumping - Only bumps on "version already exists" errors - Handles rate limiting by parsing throttle duration from error and waiting the exact time (not blindly retrying) - Only updates source files on successful signing (not before) - Reduced max attempts to 5 (with proper backoff, shouldn't need more) - Commits version bump only after successful sign https://claude.ai/code/session_01SWSwDfMVij53bCTNSCLMwn
This commit is contained in:
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "Silent Send",
|
"name": "Silent Send",
|
||||||
"version": "0.3.1",
|
"version": "2.0.0",
|
||||||
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
|
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
|
|||||||
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"manifest_version": 3,
|
"manifest_version": 3,
|
||||||
"name": "Silent Send",
|
"name": "Silent Send",
|
||||||
"version": "0.3.1",
|
"version": "2.0.0",
|
||||||
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
|
"description": "Intercepts personal info and substitutes it with user-defined replacements before sending to AI services.",
|
||||||
"permissions": [
|
"permissions": [
|
||||||
"storage",
|
"storage",
|
||||||
|
|||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "silent-send",
|
"name": "silent-send",
|
||||||
"version": "0.3.1",
|
"version": "2.0.0",
|
||||||
"private": true,
|
"private": true,
|
||||||
"license": "BSL-1.1",
|
"license": "BSL-1.1",
|
||||||
"description": "Browser extension that substitutes personal data before sending to AI services",
|
"description": "Browser extension that substitutes personal data before sending to AI services",
|
||||||
|
|||||||
+57
-33
@@ -1,7 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
#
|
#
|
||||||
# Sign the Firefox extension using Mozilla's API.
|
# Sign the Firefox extension using Mozilla's API.
|
||||||
# Auto-bumps the patch version to avoid "version already exists" conflicts.
|
# Tries the current version first. Only bumps if that version
|
||||||
|
# already exists at Mozilla. Handles rate limiting with backoff.
|
||||||
|
#
|
||||||
# Reads credentials from .env file.
|
# Reads credentials from .env file.
|
||||||
#
|
#
|
||||||
|
|
||||||
@@ -20,25 +22,12 @@ if [ ! -f "$ENV_FILE" ]; then
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# --- Auto-bump version — always unique, no metadata ---
|
# --- Read current version (don't bump yet — try current first) ---
|
||||||
# Reads current version, increments patch. If already signed,
|
|
||||||
# keeps incrementing until it works.
|
|
||||||
CURRENT_VERSION=$(grep -o '"version": "[^"]*"' "$MANIFEST" | head -1 | grep -o '[0-9.]*')
|
CURRENT_VERSION=$(grep -o '"version": "[^"]*"' "$MANIFEST" | head -1 | grep -o '[0-9.]*')
|
||||||
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
|
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
|
||||||
PATCH=$((PATCH + 1))
|
NEW_VERSION="$CURRENT_VERSION"
|
||||||
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
|
||||||
|
|
||||||
echo "Version: $CURRENT_VERSION → $NEW_VERSION"
|
echo "Current version: $CURRENT_VERSION"
|
||||||
|
|
||||||
# Update all version references (only top-level "version", not "manifest_version")
|
|
||||||
sed -i "s/^ \"version\": \"$CURRENT_VERSION\"/ \"version\": \"$NEW_VERSION\"/" "$MANIFEST"
|
|
||||||
sed -i "s/^ \"version\": \"$CURRENT_VERSION\"/ \"version\": \"$NEW_VERSION\"/" "$MANIFEST_CHROME"
|
|
||||||
sed -i "s/^ \"version\": \"$CURRENT_VERSION\"/ \"version\": \"$NEW_VERSION\"/" "$PACKAGE_JSON"
|
|
||||||
|
|
||||||
# Commit the version bump
|
|
||||||
cd "$SCRIPT_DIR"
|
|
||||||
git add manifest.json manifest.firefox.json package.json 2>/dev/null
|
|
||||||
git commit -m "chore: auto-bump version to $NEW_VERSION for Firefox signing" --allow-empty 2>/dev/null || true
|
|
||||||
|
|
||||||
# --- Parse .env ---
|
# --- Parse .env ---
|
||||||
API_KEY=""
|
API_KEY=""
|
||||||
@@ -88,38 +77,73 @@ echo ""
|
|||||||
echo "Building Firefox extension..."
|
echo "Building Firefox extension..."
|
||||||
"$SCRIPT_DIR/build.sh" firefox
|
"$SCRIPT_DIR/build.sh" firefox
|
||||||
|
|
||||||
# Sign — retry with incremented patch if version conflict
|
# --- Sign with retry ---
|
||||||
MAX_ATTEMPTS=10
|
MAX_ATTEMPTS=5
|
||||||
for attempt in $(seq 1 $MAX_ATTEMPTS); do
|
WAIT_TIME=10
|
||||||
echo "Signing v$NEW_VERSION with Mozilla (attempt $attempt)..."
|
|
||||||
|
|
||||||
if npx web-ext sign \
|
for attempt in $(seq 1 $MAX_ATTEMPTS); do
|
||||||
|
echo ""
|
||||||
|
echo "=== Attempt $attempt: signing v$NEW_VERSION ==="
|
||||||
|
|
||||||
|
# Capture output to check for specific errors
|
||||||
|
OUTPUT=$(npx web-ext sign \
|
||||||
--no-config-discovery \
|
--no-config-discovery \
|
||||||
--source-dir "$SCRIPT_DIR/dist/firefox" \
|
--source-dir "$SCRIPT_DIR/dist/firefox" \
|
||||||
--artifacts-dir "$SCRIPT_DIR/dist/firefox-signed" \
|
--artifacts-dir "$SCRIPT_DIR/dist/firefox-signed" \
|
||||||
--channel unlisted \
|
--channel unlisted \
|
||||||
--api-key "$API_KEY" \
|
--api-key "$API_KEY" \
|
||||||
--api-secret "$API_SECRET" 2>&1; then
|
--api-secret "$API_SECRET" 2>&1) && {
|
||||||
|
echo "$OUTPUT"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Done! v$NEW_VERSION signed."
|
echo "Success! v$NEW_VERSION signed."
|
||||||
echo "Install the .xpi file from dist/firefox-signed/"
|
echo "Install: dist/firefox-signed/"
|
||||||
echo "Drag it into Firefox or use File → Open File."
|
|
||||||
|
# Update source files to match the signed version
|
||||||
|
sed -i "s/^ \"version\": \"[^\"]*\"/ \"version\": \"$NEW_VERSION\"/" "$MANIFEST"
|
||||||
|
sed -i "s/^ \"version\": \"[^\"]*\"/ \"version\": \"$NEW_VERSION\"/" "$MANIFEST_CHROME"
|
||||||
|
sed -i "s/^ \"version\": \"[^\"]*\"/ \"version\": \"$NEW_VERSION\"/" "$PACKAGE_JSON"
|
||||||
|
|
||||||
|
cd "$SCRIPT_DIR"
|
||||||
|
git add manifest.json manifest.firefox.json package.json 2>/dev/null
|
||||||
|
git commit -m "chore: release v$NEW_VERSION (Firefox signed)" --allow-empty 2>/dev/null || true
|
||||||
|
|
||||||
exit 0
|
exit 0
|
||||||
|
}
|
||||||
|
|
||||||
|
echo "$OUTPUT"
|
||||||
|
|
||||||
|
# Check if rate limited
|
||||||
|
if echo "$OUTPUT" | grep -q "throttled"; then
|
||||||
|
# Extract wait time from error message
|
||||||
|
THROTTLE_SECS=$(echo "$OUTPUT" | grep -oP 'available in \K\d+' || echo "60")
|
||||||
|
echo ""
|
||||||
|
echo "Rate limited by Mozilla. Waiting ${THROTTLE_SECS}s..."
|
||||||
|
sleep "$THROTTLE_SECS"
|
||||||
|
# Don't bump version — retry the same version after cooldown
|
||||||
|
continue
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# If it failed due to version conflict, bump and rebuild
|
# Check if version already exists
|
||||||
echo "Version $NEW_VERSION already exists, trying next..."
|
if echo "$OUTPUT" | grep -qi "already exists\|version.*conflict\|could not be uploaded"; then
|
||||||
PATCH=$((PATCH + 1))
|
PATCH=$((PATCH + 1))
|
||||||
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
NEW_VERSION="$MAJOR.$MINOR.$PATCH"
|
||||||
|
echo ""
|
||||||
|
echo "Version conflict. Bumping to $NEW_VERSION..."
|
||||||
|
|
||||||
# Only replace the top-level "version" field, not "manifest_version"
|
# Update only the built manifest (not source — we'll update source on success)
|
||||||
sed -i "s/^ \"version\": \"[^\"]*\"/ \"version\": \"$NEW_VERSION\"/" "$SCRIPT_DIR/dist/firefox/manifest.json"
|
sed -i "s/^ \"version\": \"[^\"]*\"/ \"version\": \"$NEW_VERSION\"/" "$SCRIPT_DIR/dist/firefox/manifest.json"
|
||||||
|
|
||||||
# Wait before retrying to avoid Mozilla rate limiting
|
sleep "$WAIT_TIME"
|
||||||
echo "Waiting 8 seconds before retry..."
|
continue
|
||||||
sleep 8
|
fi
|
||||||
|
|
||||||
|
# Unknown error — wait and retry
|
||||||
|
echo ""
|
||||||
|
echo "Unknown error. Waiting ${WAIT_TIME}s before retry..."
|
||||||
|
sleep "$WAIT_TIME"
|
||||||
done
|
done
|
||||||
|
|
||||||
|
echo ""
|
||||||
echo "Error: Failed after $MAX_ATTEMPTS attempts."
|
echo "Error: Failed after $MAX_ATTEMPTS attempts."
|
||||||
|
echo "If rate limited, wait a few minutes and try again."
|
||||||
exit 1
|
exit 1
|
||||||
|
|||||||
@@ -589,7 +589,7 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<footer>
|
<footer>
|
||||||
<p>Silent Send v0.3.0</p>
|
<p>Silent Send v2.0.0</p>
|
||||||
</footer>
|
</footer>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user