mirror of
https://github.com/aliasvault/aliasvault.git
synced 2025-12-31 01:58:36 -05:00
Compare commits
5 Commits
release/0.
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
93fb1960d3 | ||
|
|
425b4d5152 | ||
|
|
c8cf64cbbc | ||
|
|
75df6900a3 | ||
|
|
413dc5fd0a |
44
.github/workflows/release.yml
vendored
44
.github/workflows/release.yml
vendored
@@ -27,7 +27,33 @@ on:
|
||||
type: boolean
|
||||
|
||||
jobs:
|
||||
# Guard job to prevent releases from main branch
|
||||
valid-release:
|
||||
if: github.event_name == 'release'
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 0
|
||||
|
||||
- name: Check tag target
|
||||
run: |
|
||||
BRANCHES=$(git branch -r --contains $GITHUB_SHA)
|
||||
|
||||
echo "Tag is contained in:"
|
||||
echo "$BRANCHES"
|
||||
|
||||
if ! echo "$BRANCHES" | grep -q "origin/release/"; then
|
||||
echo "❌ Releases must come from a release/* branch, please recreate the release from a release branch"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo "✅ Tag is on a release branch"
|
||||
|
||||
upload-install-script:
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success')
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
@@ -43,7 +69,8 @@ jobs:
|
||||
token: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-chrome-extension:
|
||||
if: github.event_name == 'release' || inputs.build_browser_extensions
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_browser_extensions)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -58,7 +85,8 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-firefox-extension:
|
||||
if: github.event_name == 'release' || inputs.build_browser_extensions
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_browser_extensions)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -73,7 +101,8 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-edge-extension:
|
||||
if: github.event_name == 'release' || inputs.build_browser_extensions
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_browser_extensions)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -88,7 +117,8 @@ jobs:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
build-android-release:
|
||||
if: github.event_name == 'release' || inputs.build_mobile_apps
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_mobile_apps)
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
@@ -107,7 +137,8 @@ jobs:
|
||||
ANDROID_KEY_PASSWORD: ${{ secrets.ANDROID_KEY_PASSWORD }}
|
||||
|
||||
build-and-push-docker-multi-container:
|
||||
if: github.event_name == 'release' || inputs.build_multi_container
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_multi_container)
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
@@ -372,7 +403,8 @@ jobs:
|
||||
annotations: ${{ steps.installcli-meta.outputs.annotations }}
|
||||
|
||||
build-and-push-docker-all-in-one:
|
||||
if: github.event_name == 'release' || inputs.build_all_in_one
|
||||
needs: [valid-release]
|
||||
if: always() && (github.event_name != 'release' || needs.valid-release.result == 'success') && (github.event_name == 'release' || inputs.build_all_in_one)
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
archiveVersion = 1;
|
||||
classes = {
|
||||
};
|
||||
objectVersion = 70;
|
||||
objectVersion = 60;
|
||||
objects = {
|
||||
|
||||
/* Begin PBXBuildFile section */
|
||||
@@ -212,7 +212,7 @@
|
||||
/* End PBXFileReference section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
||||
CEE9098F2DA548C7008D568F /* PBXFileSystemSynchronizedBuildFileExceptionSet */ = {
|
||||
CEE9098F2DA548C7008D568F /* Exceptions for "Autofill" folder in "Autofill" target */ = {
|
||||
isa = PBXFileSystemSynchronizedBuildFileExceptionSet;
|
||||
membershipExceptions = (
|
||||
Info.plist,
|
||||
@@ -222,13 +222,84 @@
|
||||
/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */
|
||||
|
||||
/* Begin PBXFileSystemSynchronizedRootGroup section */
|
||||
CE59C7602E4F47FD0024A246 /* VaultUITests */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultUITests; sourceTree = "<group>"; };
|
||||
CE77825E2EA1822400A75E6F /* VaultUtils */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultUtils; sourceTree = "<group>"; };
|
||||
CEE480882DBE86DC00F4A367 /* VaultStoreKit */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultStoreKit; sourceTree = "<group>"; };
|
||||
CEE480972DBE86DD00F4A367 /* VaultStoreKitTests */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultStoreKitTests; sourceTree = "<group>"; };
|
||||
CEE4816B2DBE8AC800F4A367 /* VaultUI */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultUI; sourceTree = "<group>"; };
|
||||
CEE482AB2DBE8EFE00F4A367 /* VaultModels */ = {isa = PBXFileSystemSynchronizedRootGroup; explicitFileTypes = {}; explicitFolders = (); path = VaultModels; sourceTree = "<group>"; };
|
||||
CEE909812DA548C7008D568F /* Autofill */ = {isa = PBXFileSystemSynchronizedRootGroup; exceptions = (CEE9098F2DA548C7008D568F /* PBXFileSystemSynchronizedBuildFileExceptionSet */, ); explicitFileTypes = {}; explicitFolders = (); path = Autofill; sourceTree = "<group>"; };
|
||||
CE59C7602E4F47FD0024A246 /* VaultUITests */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultUITests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CE77825E2EA1822400A75E6F /* VaultUtils */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultUtils;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CEE480882DBE86DC00F4A367 /* VaultStoreKit */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultStoreKit;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CEE480972DBE86DD00F4A367 /* VaultStoreKitTests */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultStoreKitTests;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CEE4816B2DBE8AC800F4A367 /* VaultUI */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultUI;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CEE482AB2DBE8EFE00F4A367 /* VaultModels */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = VaultModels;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
CEE909812DA548C7008D568F /* Autofill */ = {
|
||||
isa = PBXFileSystemSynchronizedRootGroup;
|
||||
exceptions = (
|
||||
CEE9098F2DA548C7008D568F /* Exceptions for "Autofill" folder in "Autofill" target */,
|
||||
);
|
||||
explicitFileTypes = {
|
||||
};
|
||||
explicitFolders = (
|
||||
);
|
||||
path = Autofill;
|
||||
sourceTree = "<group>";
|
||||
};
|
||||
/* End PBXFileSystemSynchronizedRootGroup section */
|
||||
|
||||
/* Begin PBXFrameworksBuildPhase section */
|
||||
@@ -1349,7 +1420,10 @@
|
||||
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
|
||||
MTL_ENABLE_DEBUG_INFO = YES;
|
||||
ONLY_ACTIVE_ARCH = YES;
|
||||
OTHER_LDFLAGS = "$(inherited) ";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) DEBUG";
|
||||
@@ -1403,7 +1477,10 @@
|
||||
);
|
||||
LIBRARY_SEARCH_PATHS = "$(SDKROOT)/usr/lib/swift\"$(inherited)\"";
|
||||
MTL_ENABLE_DEBUG_INFO = NO;
|
||||
OTHER_LDFLAGS = "$(inherited) ";
|
||||
OTHER_LDFLAGS = (
|
||||
"$(inherited)",
|
||||
" ",
|
||||
);
|
||||
REACT_NATIVE_PATH = "${PODS_ROOT}/../../node_modules/react-native";
|
||||
SDKROOT = iphoneos;
|
||||
USE_HERMES = true;
|
||||
|
||||
@@ -333,9 +333,9 @@ PODS:
|
||||
- FBLazyVector (0.79.6)
|
||||
- fmt (11.0.2)
|
||||
- glog (0.3.5)
|
||||
- hermes-engine (0.79.5):
|
||||
- hermes-engine/Pre-built (= 0.79.5)
|
||||
- hermes-engine/Pre-built (0.79.5)
|
||||
- hermes-engine (0.79.6):
|
||||
- hermes-engine/Pre-built (= 0.79.6)
|
||||
- hermes-engine/Pre-built (0.79.6)
|
||||
- Macaw (0.9.10):
|
||||
- SWXMLHash
|
||||
- OpenSSL-Universal (3.3.3001)
|
||||
@@ -2442,7 +2442,7 @@ PODS:
|
||||
- SQLite.swift (0.14.1):
|
||||
- SQLite.swift/standard (= 0.14.1)
|
||||
- SQLite.swift/standard (0.14.1)
|
||||
- SwiftLint (0.59.1)
|
||||
- SwiftLint (0.62.2)
|
||||
- SWXMLHash (7.0.2)
|
||||
- Yoga (0.0.0)
|
||||
|
||||
@@ -2795,8 +2795,8 @@ EXTERNAL SOURCES:
|
||||
:path: "../node_modules/react-native/ReactCommon/yoga"
|
||||
|
||||
SPEC CHECKSUMS:
|
||||
boost: 1dca942403ed9342f98334bf4c3621f011aa7946
|
||||
DoubleConversion: f16ae600a246532c4020132d54af21d0ddb2a385
|
||||
boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90
|
||||
DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb
|
||||
EXConstants: 98bcf0f22b820f9b28f9fee55ff2daededadd2f8
|
||||
EXJSONUtils: 1d3e4590438c3ee593684186007028a14b3686cd
|
||||
EXManifests: 691a779b04e4f2c96da46fb9bef4f86174fefcb5
|
||||
@@ -2826,9 +2826,9 @@ SPEC CHECKSUMS:
|
||||
EXUpdatesInterface: 7ff005b7af94ee63fa452ea7bb95d7a8ff40277a
|
||||
fast_float: 06eeec4fe712a76acc9376682e4808b05ce978b6
|
||||
FBLazyVector: 07309209b7b914451b8f822544a18e2a0a85afff
|
||||
fmt: 01b82d4ca6470831d1cc0852a1af644be019e8f6
|
||||
glog: 08b301085f15bcbb6ff8632a8ebaf239aae04e6a
|
||||
hermes-engine: f03b0e06d3882d71e67e45b073bb827da1a21aae
|
||||
fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd
|
||||
glog: 5683914934d5b6e4240e497e0f4a3b42d1854183
|
||||
hermes-engine: 44bb6fe76a6eb400d3a992e2d0b21946ae999fa9
|
||||
Macaw: 7af8ea57aa2cab35b4a52a45e6f85eea753ea9ae
|
||||
OpenSSL-Universal: 6082b0bf950e5636fe0d78def171184e2b3899c2
|
||||
RCT-Folly: e78785aa9ba2ed998ea4151e314036f6c49e6d82
|
||||
@@ -2908,7 +2908,7 @@ SPEC CHECKSUMS:
|
||||
SignalArgon2: 1c24183835ca861e6af06631c18b1671cdf35571
|
||||
SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748
|
||||
SQLite.swift: 2992550ebf3c5b268bf4352603e3df87d2a4ed72
|
||||
SwiftLint: 3d48e2fb2a3468fdaccf049e5e755df22fb40c2c
|
||||
SwiftLint: f84fc7d844e9cde0dc4f5013af608a269e317aba
|
||||
SWXMLHash: dd733a457e9c4fe93b1538654057aefae4acb382
|
||||
Yoga: dc7c21200195acacb62fa920c588e7c2106de45e
|
||||
|
||||
|
||||
61
docs/misc/dev/release/git-versioning-strategy.md
Normal file
61
docs/misc/dev/release/git-versioning-strategy.md
Normal file
@@ -0,0 +1,61 @@
|
||||
---
|
||||
layout: default
|
||||
title: Git versioning strategy
|
||||
parent: Release
|
||||
grand_parent: Development
|
||||
nav_order: 3
|
||||
---
|
||||
|
||||
# Git versioning strategy
|
||||
|
||||
This document describes the **official release workflow** for AliasVault.
|
||||
|
||||
## Branch Semantics
|
||||
|
||||
### `main`
|
||||
- Represents the **next version line**
|
||||
- Contains **only pre-release versions**
|
||||
- Example versions:
|
||||
- `0.26.0-alpha`
|
||||
- `0.26.0-beta`
|
||||
- Never tagged for stable releases
|
||||
|
||||
---
|
||||
|
||||
### `XXXX-*` (GitHub issue branches)
|
||||
- Branch from:
|
||||
- `main` for next-version development, or
|
||||
- a release tag for hotfixes
|
||||
- Contains **only code fixes**
|
||||
- No version changes
|
||||
- No release notes
|
||||
- May contain many commits
|
||||
|
||||
Landing rules:
|
||||
- If branched from `main`: merge or rebase back into `main`
|
||||
- If branched from a tag: **cherry-pick fixes into `main`**
|
||||
- May be merged into a `release/*` branch for packaging
|
||||
|
||||
---
|
||||
|
||||
### `release/*`
|
||||
- Used only to **package a stable release**
|
||||
- Contains:
|
||||
- fixes (cherry-picked back into main)
|
||||
- release notes (cherry-picked back into main)
|
||||
- version bump
|
||||
- Never merged into `main`
|
||||
- Deleted after tagging
|
||||
|
||||
---
|
||||
|
||||
## Versioning Rules
|
||||
|
||||
### Development versions
|
||||
- Live only on `main`
|
||||
- Always pre-release (`-alpha`, `-beta`, etc.)
|
||||
|
||||
### Stable versions
|
||||
- Live only on `release/*` branches
|
||||
- Always tagged
|
||||
- Never merged back into `main`
|
||||
2
fastlane/metadata/android/en-US/changelogs/2503900.txt
Normal file
2
fastlane/metadata/android/en-US/changelogs/2503900.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Android Passkey compatibility improvements
|
||||
- Add French and Spanish language options
|
||||
2
fastlane/metadata/android/nl-NL/changelogs/2503900.txt
Normal file
2
fastlane/metadata/android/nl-NL/changelogs/2503900.txt
Normal file
@@ -0,0 +1,2 @@
|
||||
- Android Passkey compatibiliteit verbeterd
|
||||
- Frans en Spaans toegevoegd als taalopties
|
||||
@@ -0,0 +1 @@
|
||||
- Add French and Spanish language options
|
||||
1
fastlane/metadata/ios/en-US/changelogs/2503900.txt
Normal file
1
fastlane/metadata/ios/en-US/changelogs/2503900.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Add French and Spanish language options
|
||||
1
fastlane/metadata/ios/nl-NL/changelogs/2503900.txt
Normal file
1
fastlane/metadata/ios/nl-NL/changelogs/2503900.txt
Normal file
@@ -0,0 +1 @@
|
||||
- Frans en Spaans toegevoegd als taalopties
|
||||
80
scripts/print-latest-changelogs.sh
Executable file
80
scripts/print-latest-changelogs.sh
Executable file
@@ -0,0 +1,80 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# Show the latest changelogs for all platforms (Android, iOS, Browser Extension)
|
||||
# Outputs formatted changelog content for easy copy-paste
|
||||
#
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
ROOT_DIR="$(dirname "$SCRIPT_DIR")"
|
||||
METADATA_DIR="$ROOT_DIR/fastlane/metadata"
|
||||
|
||||
# Function to get the latest changelog file from a directory
|
||||
get_latest_changelog() {
|
||||
local dir="$1"
|
||||
if [ -d "$dir" ]; then
|
||||
# Sort files by version number (handles both numeric and semver formats)
|
||||
ls -1 "$dir" 2>/dev/null | sort -V | tail -1
|
||||
fi
|
||||
}
|
||||
|
||||
# Function to print Android changelogs (XML format, no spaces between languages)
|
||||
print_android() {
|
||||
local changelog_dir="$METADATA_DIR/android/en-US/changelogs"
|
||||
local latest_file=$(get_latest_changelog "$changelog_dir")
|
||||
|
||||
echo "================================================================================"
|
||||
echo "ANDROID (latest: $latest_file)"
|
||||
echo "================================================================================"
|
||||
echo ""
|
||||
|
||||
# Print all locales in XML format without blank lines between them
|
||||
for locale_dir in "$METADATA_DIR/android"/*; do
|
||||
if [ -d "$locale_dir/changelogs" ]; then
|
||||
locale=$(basename "$locale_dir")
|
||||
local file="$locale_dir/changelogs/$latest_file"
|
||||
if [ -f "$file" ]; then
|
||||
echo "<$locale>"
|
||||
cat "$file"
|
||||
echo "</$locale>"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Function to print iOS/Browser Extension changelogs (each language separate)
|
||||
print_simple() {
|
||||
local platform="$1"
|
||||
local display_name="$2"
|
||||
local changelog_dir="$METADATA_DIR/$platform/en-US/changelogs"
|
||||
local latest_file=$(get_latest_changelog "$changelog_dir")
|
||||
|
||||
echo "================================================================================"
|
||||
echo "$display_name (latest: $latest_file)"
|
||||
echo "================================================================================"
|
||||
|
||||
# Print each locale separately
|
||||
for locale_dir in "$METADATA_DIR/$platform"/*; do
|
||||
if [ -d "$locale_dir/changelogs" ]; then
|
||||
locale=$(basename "$locale_dir")
|
||||
local file="$locale_dir/changelogs/$latest_file"
|
||||
if [ -f "$file" ]; then
|
||||
echo ""
|
||||
echo "--- $locale ---"
|
||||
cat "$file"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
echo ""
|
||||
}
|
||||
|
||||
echo ""
|
||||
echo "Latest Changelogs Summary"
|
||||
echo ""
|
||||
|
||||
print_android
|
||||
print_simple "ios" "iOS"
|
||||
print_simple "browser-extension" "BROWSER EXTENSION"
|
||||
|
||||
echo "================================================================================"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user