Compare commits
1 Commits
usearch_ag
...
update_doc
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6146350aae |
0
server/.gitattributes → .gitattributes
vendored
32
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -1,21 +1,22 @@
|
|||||||
name: Report a bug
|
name: Report a bug
|
||||||
description: For regressions only (things that were working earlier)
|
description: Let us know if something's not working the way you expected.
|
||||||
labels: []
|
labels: ["triage"]
|
||||||
body:
|
body:
|
||||||
- type: markdown
|
- type: markdown
|
||||||
attributes:
|
attributes:
|
||||||
value: |
|
value: >
|
||||||
Before opening a new issue, **please** ensure
|
Before opening a new issue, please ensure you are on the latest
|
||||||
1. You are on the latest version,
|
version (it might've already been fixed), and that you've searched
|
||||||
2. You've searched for existing issues,
|
for existing issues (please add you observations as a comment
|
||||||
3. It was working earlier (otherwise use [this](https://github.com/ente-io/ente/discussions/categories/enhancements))
|
there instead of creating a duplicate).
|
||||||
4. It is not about self hosting (otherwise use [this](https://github.com/ente-io/ente/discussions/categories/q-a))
|
|
||||||
- type: textarea
|
- type: textarea
|
||||||
attributes:
|
attributes:
|
||||||
label: Description
|
label: Description
|
||||||
description: >
|
description: >
|
||||||
Describe the bug and steps to reproduce the behaviour, and how it
|
Please describe the bug. If possible, also include the steps to
|
||||||
differs from the previously working behaviour.
|
reproduce the behaviour, and the expected behaviour (sometimes
|
||||||
|
bugs are just expectation mismatches, in which case this would be
|
||||||
|
a good fit for Discussions).
|
||||||
validations:
|
validations:
|
||||||
required: true
|
required: true
|
||||||
- type: input
|
- type: input
|
||||||
@@ -23,17 +24,6 @@ body:
|
|||||||
label: Version
|
label: Version
|
||||||
description: The version can be seen at the bottom of settings.
|
description: The version can be seen at the bottom of settings.
|
||||||
placeholder: e.g. v1.2.3
|
placeholder: e.g. v1.2.3
|
||||||
- type: input
|
|
||||||
attributes:
|
|
||||||
label: Last working version
|
|
||||||
description: >
|
|
||||||
The version where things were last known to be working. It is fine
|
|
||||||
if you don't remember the exact version (mention roughly then),
|
|
||||||
but **if there just isn't a last working version, then please file
|
|
||||||
it as an
|
|
||||||
[enhancement](https://github.com/ente-io/ente/discussions/categories/enhancements))**
|
|
||||||
(where the community upvotes can be used to help prioritize).
|
|
||||||
placeholder: e.g. v1.2.3
|
|
||||||
- type: dropdown
|
- type: dropdown
|
||||||
attributes:
|
attributes:
|
||||||
label: What product are you using?
|
label: What product are you using?
|
||||||
|
|||||||
2
.github/ISSUE_TEMPLATE/config.yml
vendored
@@ -1,5 +1,5 @@
|
|||||||
blank_issues_enabled: true
|
blank_issues_enabled: true
|
||||||
contact_links:
|
contact_links:
|
||||||
- name: Enhacements, feature requests, feedback and questions
|
- name: Feature requests and questions
|
||||||
url: https://github.com/ente-io/ente/discussions
|
url: https://github.com/ente-io/ente/discussions
|
||||||
about: Please use Discussions for everything apart from the above.
|
about: Please use Discussions for everything apart from the above.
|
||||||
|
|||||||
BIN
.github/assets/github-badge.png
vendored
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
.github/assets/obtainium-badge.png
vendored
|
Before Width: | Height: | Size: 18 KiB |
35
.github/workflows/auth-crowdin-push.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
name: "Push sources to Crowdin (auth)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
# Run workflow when auth's intl_en.arb is changed
|
|
||||||
- "auth/lib/l10n/arb/app_en.arb"
|
|
||||||
# Or the workflow itself is changed
|
|
||||||
- ".github/workflows/auth-crowdin.yml"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
push-sources-to-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin's action
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "auth/"
|
|
||||||
config: "auth/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: false
|
|
||||||
download_translations: false
|
|
||||||
project_id: 575169
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
40
.github/workflows/auth-crowdin-sync.yml
vendored
@@ -1,40 +0,0 @@
|
|||||||
name: "Sync Crowdin translations (auth)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# Run Mondays at ~6:30 AM IST
|
|
||||||
# See: [Note: Run workflow on specific days of the week]
|
|
||||||
- cron: "50 0 * * 1"
|
|
||||||
# Also allow manually running the workflow.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
synchronize-with-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin's action
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "auth/"
|
|
||||||
config: "auth/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: false
|
|
||||||
download_translations: true
|
|
||||||
localization_branch_name: translations/auth
|
|
||||||
create_pull_request: true
|
|
||||||
skip_untranslated_strings: true
|
|
||||||
pull_request_title: "[auth] New translations"
|
|
||||||
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-authenticator-app)"
|
|
||||||
pull_request_base_branch_name: "main"
|
|
||||||
project_id: 575169
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
42
.github/workflows/auth-crowdin.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: "Sync Crowdin translations (auth)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
# Run workflow when auth's intl_en.arb is changed
|
||||||
|
- "mobile/lib/l10n/arb/app_en.arb"
|
||||||
|
# Or the workflow itself is changed
|
||||||
|
- ".github/workflows/auth-crowdin.yml"
|
||||||
|
branches: [main]
|
||||||
|
schedule:
|
||||||
|
# See: [Note: Run every 24 hours]
|
||||||
|
- cron: "50 1 * * *"
|
||||||
|
# Also allow manually running the workflow
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
synchronize-with-crowdin:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Crowdin's action
|
||||||
|
uses: crowdin/github-action@v1
|
||||||
|
with:
|
||||||
|
base_path: "auth/"
|
||||||
|
config: "auth/crowdin.yml"
|
||||||
|
upload_sources: true
|
||||||
|
upload_translations: true
|
||||||
|
download_translations: true
|
||||||
|
localization_branch_name: crowdin-translations-auth
|
||||||
|
create_pull_request: true
|
||||||
|
skip_untranslated_strings: true
|
||||||
|
pull_request_title: "[auth] New translations"
|
||||||
|
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-authenticator-app)"
|
||||||
|
pull_request_base_branch_name: "main"
|
||||||
|
project_id: 575169
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
68
.github/workflows/auth-internal-release.yml
vendored
@@ -1,68 +0,0 @@
|
|||||||
name: "Internal release (auth mobile)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Allow manually running the action
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLUTTER_VERSION: "3.24.3"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: auth
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code and submodules
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: "stable"
|
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Setup keys
|
|
||||||
uses: timheuer/base64-to-file@v1
|
|
||||||
with:
|
|
||||||
fileName: "keystore/ente_auth_key.jks"
|
|
||||||
encodedString: ${{ secrets.SIGNING_KEY }}
|
|
||||||
|
|
||||||
- name: Build PlayStore AAB
|
|
||||||
run: |
|
|
||||||
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
|
|
||||||
env:
|
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
|
||||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
|
||||||
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD }}
|
|
||||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
|
|
||||||
|
|
||||||
- name: Upload AAB to PlayStore
|
|
||||||
uses: r0adkll/upload-google-play@v1
|
|
||||||
with:
|
|
||||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
|
||||||
packageName: io.ente.auth
|
|
||||||
releaseFiles: auth/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
|
||||||
track: internal
|
|
||||||
|
|
||||||
- name: Notify Discord
|
|
||||||
uses: sarisia/actions-status-discord@v1
|
|
||||||
with:
|
|
||||||
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
|
|
||||||
nodetail: true
|
|
||||||
title: "🏆 Internal release available for Auth"
|
|
||||||
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.auth)"
|
|
||||||
color: 0x800080
|
|
||||||
37
.github/workflows/auth-lint.yml
vendored
@@ -1,17 +1,15 @@
|
|||||||
name: "Lint (auth)"
|
name: "Lint (auth)"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Run on every pull request (open or push to it) that changes auth/
|
# Run on every push to a branch other than main that changes auth/
|
||||||
pull_request:
|
push:
|
||||||
|
branches-ignore: [main]
|
||||||
paths:
|
paths:
|
||||||
- "auth/**"
|
- "auth/**"
|
||||||
- ".github/workflows/auth-lint.yml"
|
- ".github/workflows/auth-lint.yml"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.24.3"
|
FLUTTER_VERSION: "3.16.9"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
@@ -25,30 +23,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Verify custom icons are lowercase including optional understores, and end with .svg
|
|
||||||
run: |
|
|
||||||
find assets/custom-icons -type f -name "*.svg" | while read -r file; do
|
|
||||||
if [[ "$(basename "$file")" != "$(basename "$file" | tr '[:upper:]' '[:lower:]' | tr ' ' '_')" ]]; then
|
|
||||||
echo "File name is not lowercase: $file"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Verify all icons are less than 20KB
|
|
||||||
run: |
|
|
||||||
find assets/custom-icons -type f -name "*.svg" | while read -r file; do
|
|
||||||
if [[ "$file" == "assets/custom-icons/icons/bbs_nga.svg" ]]; then
|
|
||||||
continue
|
|
||||||
fi
|
|
||||||
if [[ "$(stat --printf="%s" "$file")" -gt 20480 ]]; then
|
|
||||||
echo "File size is greater than 20KB: $file ($file_size bytes)"
|
|
||||||
exit 1
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
- name: Verify custom icon JSON
|
|
||||||
run: cat assets/custom-icons/_data/custom-icons.json | jq empty
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
@@ -59,3 +33,6 @@ jobs:
|
|||||||
- run: flutter pub get
|
- run: flutter pub get
|
||||||
|
|
||||||
- run: flutter analyze --no-fatal-infos
|
- run: flutter analyze --no-fatal-infos
|
||||||
|
|
||||||
|
- name: Verify custom icon JSON
|
||||||
|
run: cat assets/custom-icons/_data/custom-icons.json | jq empty
|
||||||
|
|||||||
102
.github/workflows/auth-release.yml
vendored
@@ -17,8 +17,8 @@ name: "Release (auth)"
|
|||||||
# We use a suffix like `-test` to indicate that these are test tags, and that
|
# We use a suffix like `-test` to indicate that these are test tags, and that
|
||||||
# they belong to a pre-release.
|
# they belong to a pre-release.
|
||||||
#
|
#
|
||||||
# If you need to do multiple tests, add a .x at the end of the tag. e.g.
|
# If you need to do multiple tests, add a +x at the end of the tag. e.g.
|
||||||
# `auth-v1.2.3-test.1`.
|
# `auth-v1.2.3-test+1`.
|
||||||
#
|
#
|
||||||
# Once the testing is done, also delete the tag(s) please.
|
# Once the testing is done, also delete the tag(s) please.
|
||||||
|
|
||||||
@@ -29,14 +29,11 @@ on:
|
|||||||
- "auth-v*"
|
- "auth-v*"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.24.3"
|
FLUTTER_VERSION: "3.13.4"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build-linux-latest:
|
build-ubuntu:
|
||||||
runs-on: ubuntu-22.04
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -48,11 +45,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
@@ -71,7 +63,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build independent APK
|
- name: Build independent APK
|
||||||
run: |
|
run: |
|
||||||
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
|
flutter build apk --release --flavor independent --dart-define=app.flavor=independent
|
||||||
mv build/app/outputs/flutter-apk/app-independent-release.apk artifacts/ente-${{ github.ref_name }}.apk
|
mv build/app/outputs/flutter-apk/app-independent-release.apk artifacts/ente-${{ github.ref_name }}.apk
|
||||||
env:
|
env:
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
||||||
@@ -80,10 +72,8 @@ jobs:
|
|||||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
|
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD }}
|
||||||
|
|
||||||
- name: Build PlayStore AAB
|
- name: Build PlayStore AAB
|
||||||
# disable this step if release tag contains nightly or beta
|
|
||||||
if: startsWith(github.ref, 'refs/tags/auth-v') && !contains(github.ref, 'nightly') && !contains(github.ref, 'beta')
|
|
||||||
run: |
|
run: |
|
||||||
flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore --dart-define=cronetHttpNoPlay=true
|
flutter build appbundle --release --flavor playstore --dart-define=app.flavor=playstore
|
||||||
env:
|
env:
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_auth_key.jks"
|
||||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS }}
|
||||||
@@ -93,8 +83,7 @@ jobs:
|
|||||||
- name: Install dependencies for desktop build
|
- name: Install dependencies for desktop build
|
||||||
run: |
|
run: |
|
||||||
sudo apt-get update -y
|
sudo apt-get update -y
|
||||||
sudo apt-get install -y libsecret-1-dev libsodium-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm patchelf libsqlite3-dev locate libayatana-appindicator3-dev libffi-dev libtiff5 xz-utils libarchive-tools libcurl4-openssl-dev
|
sudo apt-get install -y libsecret-1-dev libsodium-dev libwebkit2gtk-4.0-dev libfuse2 ninja-build libgtk-3-dev dpkg-dev pkg-config rpm libsqlite3-dev locate
|
||||||
sudo updatedb --localpaths='/usr/lib/x86_64-linux-gnu'
|
|
||||||
|
|
||||||
- name: Install appimagetool
|
- name: Install appimagetool
|
||||||
run: |
|
run: |
|
||||||
@@ -103,23 +92,22 @@ jobs:
|
|||||||
mv appimagetool /usr/local/bin/
|
mv appimagetool /usr/local/bin/
|
||||||
|
|
||||||
- name: Build desktop app
|
- name: Build desktop app
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
flutter config --enable-linux-desktop
|
flutter config --enable-linux-desktop
|
||||||
dart pub global activate --source git https://github.com/ente-io/flutter_distributor_fork --git-ref develop --git-path packages/flutter_distributor
|
dart pub global activate flutter_distributor
|
||||||
# RPM
|
|
||||||
flutter_distributor package --platform=linux --targets=rpm --skip-clean
|
|
||||||
mv dist/**/*-*-linux.rpm artifacts/ente-${{ github.ref_name }}-x86_64.rpm
|
|
||||||
# APPIMAGE
|
|
||||||
flutter_distributor package --platform=linux --targets=appimage --skip-clean
|
|
||||||
mv dist/**/*-*-linux.AppImage artifacts/ente-${{ github.ref_name }}-x86_64.AppImage
|
|
||||||
# DEB
|
|
||||||
flutter_distributor package --platform=linux --targets=deb --skip-clean
|
flutter_distributor package --platform=linux --targets=deb --skip-clean
|
||||||
|
flutter_distributor package --platform=linux --targets=rpm --skip-clean
|
||||||
|
flutter_distributor package --platform=linux --targets=appimage --skip-clean
|
||||||
mv dist/**/*-*-linux.deb artifacts/ente-${{ github.ref_name }}-x86_64.deb
|
mv dist/**/*-*-linux.deb artifacts/ente-${{ github.ref_name }}-x86_64.deb
|
||||||
|
mv dist/**/*-*-linux.rpm artifacts/ente-${{ github.ref_name }}-x86_64.rpm
|
||||||
|
mv dist/**/*-*-linux.AppImage artifacts/ente-${{ github.ref_name }}-x86_64.AppImage
|
||||||
|
env:
|
||||||
|
LIBSODIUM_USE_PKGCONFIG: 1
|
||||||
|
|
||||||
- name: Generate checksums
|
- name: Generate checksums
|
||||||
run: |
|
run: sha256sum artifacts/ente-* > artifacts/sha256sum
|
||||||
sha256sum artifacts/ente-auth-*.apk >> artifacts/sha256sum-apk
|
|
||||||
sha256sum artifacts/ente-auth-*.deb artifacts/ente-auth-*.rpm artifacts/ente-auth-*.AppImage >> artifacts/sha256sum-linux
|
|
||||||
|
|
||||||
- name: Create a draft GitHub release
|
- name: Create a draft GitHub release
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
@@ -130,8 +118,6 @@ jobs:
|
|||||||
updateOnlyUnreleased: true
|
updateOnlyUnreleased: true
|
||||||
|
|
||||||
- name: Upload AAB to PlayStore
|
- name: Upload AAB to PlayStore
|
||||||
# disable this step if release tag contains nightly or beta
|
|
||||||
if: startsWith(github.ref, 'refs/tags/auth-v') && !contains(github.ref, 'nightly') && !contains(github.ref, 'beta')
|
|
||||||
uses: r0adkll/upload-google-play@v1
|
uses: r0adkll/upload-google-play@v1
|
||||||
with:
|
with:
|
||||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
||||||
@@ -141,7 +127,6 @@ jobs:
|
|||||||
|
|
||||||
build-windows:
|
build-windows:
|
||||||
runs-on: windows-latest
|
runs-on: windows-latest
|
||||||
environment: "auth-win-build"
|
|
||||||
|
|
||||||
defaults:
|
defaults:
|
||||||
run:
|
run:
|
||||||
@@ -164,39 +149,35 @@ jobs:
|
|||||||
run: mkdir artifacts
|
run: mkdir artifacts
|
||||||
|
|
||||||
- name: Build Windows installer
|
- name: Build Windows installer
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
flutter config --enable-windows-desktop
|
flutter config --enable-windows-desktop
|
||||||
# dart pub global activate flutter_distributor
|
dart pub global activate flutter_distributor
|
||||||
dart pub global activate --source git https://github.com/ente-io/flutter_distributor_fork --git-ref develop --git-path packages/flutter_distributor
|
|
||||||
make innoinstall
|
make innoinstall
|
||||||
flutter_distributor package --platform=windows --targets=exe --skip-clean
|
flutter_distributor package --platform=windows --targets=exe --skip-clean
|
||||||
mv dist/**/*-windows-setup.exe artifacts/ente-${{ github.ref_name }}-installer.exe
|
mv dist/**/ente_auth-*-windows-setup.exe artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||||
|
|
||||||
- name: Retain Windows EXE and DLLs
|
- name: Retain Windows EXE and DLLs
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: cp -r build/windows/x64/runner/Release ente-${{ github.ref_name }}-windows
|
run: cp -r build/windows/x64/runner/Release ente-${{ github.ref_name }}-windows
|
||||||
|
|
||||||
- name: Sign files with Trusted Signing
|
- name: Code sign Windows installer and EXE
|
||||||
uses: azure/trusted-signing-action@v0
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
|
uses: dlemstra/code-sign-action@v1
|
||||||
with:
|
with:
|
||||||
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
certificate: "${{ secrets.WINDOWS_CERTIFICATE }}"
|
||||||
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
password: "${{ secrets.WINDOWS_CERTIFICATE_PASSWORD }}"
|
||||||
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
|
files: |
|
||||||
endpoint: ${{ secrets.AZURE_ENDPOINT }}
|
auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
||||||
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
|
auth/ente-${{ github.ref_name }}-windows/auth.exe
|
||||||
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
|
|
||||||
files: |
|
|
||||||
${{ github.workspace }}/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
|
||||||
${{ github.workspace }}/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
|
||||||
file-digest: SHA256
|
|
||||||
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
|
||||||
timestamp-digest: SHA256
|
|
||||||
|
|
||||||
|
|
||||||
- name: Zip Windows EXE and DLLs
|
- name: Zip Windows EXE and DLLs
|
||||||
run: tar.exe -a -c -f artifacts/ente-${{ github.ref_name }}-windows.zip ente-${{ github.ref_name }}-windows
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
- name: Generate checksums
|
run: tar.exe -a -c -f auth/artifacts/ente-${{ github.ref_name }}-windows.zip auth/ente-${{ github.ref_name }}-windows
|
||||||
run: sha256sum artifacts/ente-* > artifacts/sha256sum-windows
|
|
||||||
|
|
||||||
- name: Create a draft GitHub release
|
- name: Create a draft GitHub release
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
@@ -267,19 +248,25 @@ jobs:
|
|||||||
run: mkdir artifacts
|
run: mkdir artifacts
|
||||||
|
|
||||||
- name: Build macOS DMG
|
- name: Build macOS DMG
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
flutter config --enable-macos-desktop
|
flutter config --enable-macos-desktop
|
||||||
dart pub global activate flutter_distributor
|
dart pub global activate flutter_distributor
|
||||||
flutter_distributor package --platform=macos --targets=dmg --skip-clean
|
flutter_distributor package --platform=macos --targets=dmg --skip-clean
|
||||||
mv dist/**/*-macos.dmg artifacts/ente-${{ github.ref_name }}.dmg
|
mv dist/**/ente_auth-*-macos.dmg artifacts/ente-${{ github.ref_name }}.dmg
|
||||||
|
|
||||||
- name: Code sign DMG
|
- name: Code sign DMG
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
CERT_NAME=$(security find-identity -v -p codesigning | grep "Developer ID Application" | awk -F'"' '{print $2}' | grep -m1 "")
|
CERT_NAME=$(security find-identity -v -p codesigning | grep "Developer ID Application" | awk -F'"' '{print $2}' | grep -m1 "")
|
||||||
codesign --force --timestamp --sign "$CERT_NAME" --options runtime artifacts/ente-${{ github.ref_name }}.dmg
|
codesign --force --timestamp --sign "$CERT_NAME" --options runtime artifacts/ente-${{ github.ref_name }}.dmg
|
||||||
codesign --verify --verbose=4 artifacts/ente-${{ github.ref_name }}.dmg
|
codesign --verify --verbose=4 artifacts/ente-${{ github.ref_name }}.dmg
|
||||||
|
|
||||||
- name: Notarize and staple DMG
|
- name: Notarize and staple DMG
|
||||||
|
# Temporarily disable desktop builds
|
||||||
|
if: false
|
||||||
run: |
|
run: |
|
||||||
xcrun notarytool submit artifacts/ente-${{ github.ref_name }}.dmg \
|
xcrun notarytool submit artifacts/ente-${{ github.ref_name }}.dmg \
|
||||||
--wait \
|
--wait \
|
||||||
@@ -292,9 +279,6 @@ jobs:
|
|||||||
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
|
APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
|
||||||
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
|
||||||
|
|
||||||
- name: Generate checksums
|
|
||||||
run: shasum -a 256 artifacts/ente-* > artifacts/sha256sum-macos
|
|
||||||
|
|
||||||
- name: Create a draft GitHub release
|
- name: Create a draft GitHub release
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
with:
|
with:
|
||||||
|
|||||||
70
.github/workflows/auth-win-sign.yml
vendored
@@ -1,70 +0,0 @@
|
|||||||
name: "Windows build & Sign (auth)"
|
|
||||||
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Allow manually running the action
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLUTTER_VERSION: "3.24.3"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-windows:
|
|
||||||
runs-on: windows-latest
|
|
||||||
environment: "auth-win-build"
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: auth
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code and submodules
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: "stable"
|
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Create artifacts directory
|
|
||||||
run: mkdir artifacts
|
|
||||||
|
|
||||||
- name: Build Windows installer
|
|
||||||
run: |
|
|
||||||
flutter config --enable-windows-desktop
|
|
||||||
# dart pub global activate flutter_distributor
|
|
||||||
dart pub global activate --source git https://github.com/ente-io/flutter_distributor_fork --git-ref develop --git-path packages/flutter_distributor
|
|
||||||
make innoinstall
|
|
||||||
flutter_distributor package --platform=windows --targets=exe --skip-clean
|
|
||||||
mv dist/**/*-windows-setup.exe artifacts/ente-${{ github.ref_name }}-installer.exe
|
|
||||||
|
|
||||||
- name: Retain Windows EXE and DLLs
|
|
||||||
run: cp -r build/windows/x64/runner/Release ente-${{ github.ref_name }}-windows
|
|
||||||
|
|
||||||
- name: Sign files with Trusted Signing
|
|
||||||
uses: azure/trusted-signing-action@v0
|
|
||||||
with:
|
|
||||||
azure-tenant-id: ${{ secrets.AZURE_TENANT_ID }}
|
|
||||||
azure-client-id: ${{ secrets.AZURE_CLIENT_ID }}
|
|
||||||
azure-client-secret: ${{ secrets.AZURE_CLIENT_SECRET }}
|
|
||||||
endpoint: ${{ secrets.AZURE_ENDPOINT }}
|
|
||||||
trusted-signing-account-name: ${{ secrets.AZURE_CODE_SIGNING_NAME }}
|
|
||||||
certificate-profile-name: ${{ secrets.AZURE_CERT_PROFILE_NAME }}
|
|
||||||
files: |
|
|
||||||
${{ github.workspace }}/auth/artifacts/ente-${{ github.ref_name }}-installer.exe
|
|
||||||
${{ github.workspace }}/auth/ente-${{ github.ref_name }}-windows/auth.exe
|
|
||||||
file-digest: SHA256
|
|
||||||
timestamp-rfc3161: http://timestamp.acs.microsoft.com
|
|
||||||
timestamp-digest: SHA256
|
|
||||||
|
|
||||||
- name: Zip Windows EXE and DLLs
|
|
||||||
run: tar.exe -a -c -f artifacts/ente-${{ github.ref_name }}-windows.zip ente-${{ github.ref_name }}-windows
|
|
||||||
|
|
||||||
- name: Generate checksums
|
|
||||||
run: sha256sum artifacts/ente-* > artifacts/sha256sum-windows
|
|
||||||
6
.github/workflows/cli-release.yml
vendored
@@ -12,10 +12,6 @@ on:
|
|||||||
tags:
|
tags:
|
||||||
- "cli-v*"
|
- "cli-v*"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
draft-release:
|
draft-release:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -49,7 +45,7 @@ jobs:
|
|||||||
goarch: ${{ matrix.goarch }}
|
goarch: ${{ matrix.goarch }}
|
||||||
asset_name: ente-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}
|
asset_name: ente-${{ github.ref_name }}-${{ matrix.goos }}-${{ matrix.goarch }}
|
||||||
release_name: ${{ github.ref_name }}
|
release_name: ${{ github.ref_name }}
|
||||||
goversion: "1.23"
|
goversion: "1.20"
|
||||||
project_path: "./cli"
|
project_path: "./cli"
|
||||||
pre_command: export CGO_ENABLED=0
|
pre_command: export CGO_ENABLED=0
|
||||||
build_flags: "-trimpath"
|
build_flags: "-trimpath"
|
||||||
|
|||||||
53
.github/workflows/codeql.yml
vendored
@@ -1,53 +0,0 @@
|
|||||||
# The only reason we're making a custom CodeQL configuration is because the
|
|
||||||
# default setup does not have an option to run daily / weekly instead of per
|
|
||||||
# push, which is too slow.
|
|
||||||
#
|
|
||||||
# In the future, it might become faster. Then just delete this file, and revert
|
|
||||||
# to the default configuration.
|
|
||||||
#
|
|
||||||
# References:
|
|
||||||
# https://docs.github.com/en/code-security/code-scanning/creating-an-advanced-setup-for-code-scanning/
|
|
||||||
|
|
||||||
name: "CodeQL"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Allow running manually
|
|
||||||
schedule:
|
|
||||||
- cron: "22 1 * * 1"
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
analyze:
|
|
||||||
name: Analyze (${{ matrix.language }})
|
|
||||||
runs-on: 'ubuntu-latest'
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
# Required for all workflows.
|
|
||||||
security-events: write
|
|
||||||
# Required to fetch internal or private CodeQL packs.
|
|
||||||
packages: read
|
|
||||||
|
|
||||||
strategy:
|
|
||||||
fail-fast: false
|
|
||||||
matrix:
|
|
||||||
include:
|
|
||||||
- language: actions
|
|
||||||
build-mode: none
|
|
||||||
- language: go
|
|
||||||
build-mode: autobuild
|
|
||||||
- language: javascript-typescript
|
|
||||||
build-mode: none
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Initialize CodeQL
|
|
||||||
uses: github/codeql-action/init@v3
|
|
||||||
with:
|
|
||||||
languages: ${{ matrix.language }}
|
|
||||||
build-mode: ${{ matrix.build-mode }}
|
|
||||||
|
|
||||||
- name: Perform CodeQL Analysis
|
|
||||||
uses: github/codeql-action/analyze@v3
|
|
||||||
with:
|
|
||||||
category: "/language:${{matrix.language}}"
|
|
||||||
27
.github/workflows/copycat-db-release.yml
vendored
@@ -1,27 +0,0 @@
|
|||||||
name: "Release (copycat-db)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Run manually
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v4
|
|
||||||
name: Check out code
|
|
||||||
|
|
||||||
- uses: mr-smithers-excellent/docker-build-push@v6
|
|
||||||
name: Build & Push
|
|
||||||
with:
|
|
||||||
dockerfile: infra/copycat-db/Dockerfile
|
|
||||||
directory: infra/copycat-db
|
|
||||||
image: ente/copycat-db
|
|
||||||
registry: rg.fr-par.scw.cloud
|
|
||||||
enableBuildKit: true
|
|
||||||
buildArgs: GIT_COMMIT=${GITHUB_SHA}
|
|
||||||
tags: ${GITHUB_SHA}, latest
|
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
|
||||||
password: ${{ secrets.DOCKER_PASSWORD }}
|
|
||||||
32
.github/workflows/desktop-lint.yml
vendored
@@ -1,32 +0,0 @@
|
|||||||
name: "Lint (desktop)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run on every pull request (open or push to it) that changes desktop/
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "desktop/**"
|
|
||||||
- ".github/workflows/desktop-lint.yml"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: desktop
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "desktop/yarn.lock"
|
|
||||||
|
|
||||||
- run: yarn install
|
|
||||||
|
|
||||||
- run: yarn lint
|
|
||||||
12
.github/workflows/docs-deploy.yml
vendored
@@ -10,9 +10,6 @@ on:
|
|||||||
# Also allow manually running the workflow
|
# Also allow manually running the workflow
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
deploy:
|
deploy:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -28,7 +25,7 @@ jobs:
|
|||||||
- name: Setup node and enable yarn caching
|
- name: Setup node and enable yarn caching
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 20
|
||||||
cache: "yarn"
|
cache: "yarn"
|
||||||
cache-dependency-path: "docs/yarn.lock"
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
@@ -40,8 +37,11 @@ jobs:
|
|||||||
run: yarn build
|
run: yarn build
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
uses: cloudflare/wrangler-action@v3
|
uses: cloudflare/pages-action@1
|
||||||
with:
|
with:
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=help docs/docs/.vitepress/dist
|
projectName: ente
|
||||||
|
branch: help
|
||||||
|
directory: docs/docs/.vitepress/dist
|
||||||
|
wranglerVersion: "3"
|
||||||
|
|||||||
32
.github/workflows/docs-lint.yml
vendored
@@ -1,32 +0,0 @@
|
|||||||
name: "Lint (docs)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run on every pull request (open or push to it) that changes docs/
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "docs/**"
|
|
||||||
- ".github/workflows/docs-lint.yml"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: docs
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "web/yarn.lock"
|
|
||||||
|
|
||||||
- run: yarn install
|
|
||||||
|
|
||||||
- run: yarn pretty:check
|
|
||||||
10
.github/workflows/docs-verify-build.yml
vendored
@@ -4,15 +4,13 @@ name: "Verify build (docs)"
|
|||||||
# succeeding before we merge the PR into main.
|
# succeeding before we merge the PR into main.
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Run on every pull request (open or push to it) that changes docs/
|
# Run on every push to a branch other than main that changes docs/
|
||||||
pull_request:
|
push:
|
||||||
|
branches-ignore: [main]
|
||||||
paths:
|
paths:
|
||||||
- "docs/**"
|
- "docs/**"
|
||||||
- ".github/workflows/docs-verify-build.yml"
|
- ".github/workflows/docs-verify-build.yml"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
verify-build:
|
verify-build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -28,7 +26,7 @@ jobs:
|
|||||||
- name: Setup node and enable yarn caching
|
- name: Setup node and enable yarn caching
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 20
|
||||||
cache: "yarn"
|
cache: "yarn"
|
||||||
cache-dependency-path: "docs/yarn.lock"
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
|||||||
46
.github/workflows/infra-deploy-staff.yml
vendored
@@ -1,46 +0,0 @@
|
|||||||
name: "Deploy (staff)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run on every push to main that changes infra/staff/
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
- "infra/staff/**"
|
|
||||||
- ".github/workflows/infra-deploy-staff.yml"
|
|
||||||
# Also allow manually running the workflow
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
lint:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: infra/staff
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "infra/staff/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Build
|
|
||||||
run: yarn build
|
|
||||||
|
|
||||||
- name: Publish
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/staff infra/staff/dist
|
|
||||||
36
.github/workflows/infra-lint-staff.yml
vendored
@@ -1,36 +0,0 @@
|
|||||||
name: "Lint (staff)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run on every pull request (open or push to it) that changes infra/staff/
|
|
||||||
pull_request:
|
|
||||||
paths:
|
|
||||||
- "infra/staff/**"
|
|
||||||
- ".github/workflows/infra-deploy-staff.yml"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: infra/staff
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "infra/staff/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Lint
|
|
||||||
run: yarn lint
|
|
||||||
35
.github/workflows/mobile-crowdin-push.yml
vendored
@@ -1,35 +0,0 @@
|
|||||||
name: "Push sources to Crowdin (mobile)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
# Run workflow when mobiles's intl_en.arb is changed
|
|
||||||
- "mobile/lib/l10n/intl_en.arb"
|
|
||||||
# Or the workflow itself is changed
|
|
||||||
- ".github/workflows/mobile-crowdin.yml"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
push-sources-to-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin's action
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "mobile/"
|
|
||||||
config: "mobile/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: false
|
|
||||||
download_translations: false
|
|
||||||
project_id: 574741
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
39
.github/workflows/mobile-crowdin-sync.yml
vendored
@@ -1,39 +0,0 @@
|
|||||||
name: "Sync Crowdin translations (mobile)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# Run Mondays at ~6:30 AM IST
|
|
||||||
# See: [Note: Run workflow on specific days of the week]
|
|
||||||
- cron: "40 0 * * 1"
|
|
||||||
# Also allow manually running the workflow.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
synchronize-with-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin's action
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "mobile/"
|
|
||||||
config: "mobile/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: false
|
|
||||||
download_translations: true
|
|
||||||
localization_branch_name: translations/mobile
|
|
||||||
create_pull_request: true
|
|
||||||
pull_request_title: "[mobile] New translations"
|
|
||||||
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-photos-app)"
|
|
||||||
pull_request_base_branch_name: "main"
|
|
||||||
project_id: 574741
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
42
.github/workflows/mobile-crowdin.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: "Sync Crowdin translations (mobile)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
# Run workflow when mobiles's intl_en.arb is changed
|
||||||
|
- "mobile/lib/l10n/intl_en.arb"
|
||||||
|
# Or the workflow itself is changed
|
||||||
|
- ".github/workflows/mobile-crowdin.yml"
|
||||||
|
branches: [main]
|
||||||
|
schedule:
|
||||||
|
# See: [Note: Run every 24 hours]
|
||||||
|
- cron: "40 1 * * *"
|
||||||
|
# Also allow manually running the workflow
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
synchronize-with-crowdin:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Crowdin's action
|
||||||
|
uses: crowdin/github-action@v1
|
||||||
|
with:
|
||||||
|
base_path: "mobile/"
|
||||||
|
config: "mobile/crowdin.yml"
|
||||||
|
upload_sources: true
|
||||||
|
upload_translations: true
|
||||||
|
download_translations: true
|
||||||
|
localization_branch_name: crowdin-translations-mobile
|
||||||
|
create_pull_request: true
|
||||||
|
skip_untranslated_strings: true
|
||||||
|
pull_request_title: "[mobile] New translations"
|
||||||
|
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-photos-app)"
|
||||||
|
pull_request_base_branch_name: "main"
|
||||||
|
project_id: 574741
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
@@ -1,77 +0,0 @@
|
|||||||
name: "Internal release (photos)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Allow manually running the action
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLUTTER_VERSION: "3.24.3"
|
|
||||||
RUST_VERSION: "1.85.1"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: mobile
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code and submodules
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: "stable"
|
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Install Rust ${{ env.RUST_VERSION }}
|
|
||||||
uses: dtolnay/rust-toolchain@master
|
|
||||||
with:
|
|
||||||
toolchain: ${{ env.RUST_VERSION }}
|
|
||||||
|
|
||||||
- name: Install Flutter Rust Bridge
|
|
||||||
run: cargo install flutter_rust_bridge_codegen
|
|
||||||
|
|
||||||
- name: Setup keys
|
|
||||||
uses: timheuer/base64-to-file@v1
|
|
||||||
with:
|
|
||||||
fileName: "keystore/ente_photos_key.jks"
|
|
||||||
encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }}
|
|
||||||
|
|
||||||
- name: Build PlayStore AAB
|
|
||||||
run: |
|
|
||||||
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
|
|
||||||
env:
|
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
|
||||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS_PHOTOS }}
|
|
||||||
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }}
|
|
||||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
|
|
||||||
|
|
||||||
- name: Upload AAB to PlayStore
|
|
||||||
uses: r0adkll/upload-google-play@v1
|
|
||||||
with:
|
|
||||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
|
||||||
packageName: io.ente.photos
|
|
||||||
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
|
||||||
track: internal
|
|
||||||
|
|
||||||
- name: Notify Discord
|
|
||||||
uses: sarisia/actions-status-discord@v1
|
|
||||||
with:
|
|
||||||
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
|
|
||||||
nodetail: true
|
|
||||||
title: "🏆 Internal release available for Photos"
|
|
||||||
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos)"
|
|
||||||
color: 0x00ff00
|
|
||||||
68
.github/workflows/mobile-internal-release.yml
vendored
@@ -1,68 +0,0 @@
|
|||||||
name: "Internal release (photos)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch: # Allow manually running the action
|
|
||||||
|
|
||||||
env:
|
|
||||||
FLUTTER_VERSION: "3.24.3"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: mobile
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code and submodules
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
submodules: recursive
|
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
|
||||||
uses: subosito/flutter-action@v2
|
|
||||||
with:
|
|
||||||
channel: "stable"
|
|
||||||
flutter-version: ${{ env.FLUTTER_VERSION }}
|
|
||||||
cache: true
|
|
||||||
|
|
||||||
- name: Setup keys
|
|
||||||
uses: timheuer/base64-to-file@v1
|
|
||||||
with:
|
|
||||||
fileName: "keystore/ente_photos_key.jks"
|
|
||||||
encodedString: ${{ secrets.SIGNING_KEY_PHOTOS }}
|
|
||||||
|
|
||||||
- name: Build PlayStore AAB
|
|
||||||
run: |
|
|
||||||
flutter build appbundle --dart-define=cronetHttpNoPlay=true --release --flavor playstore
|
|
||||||
env:
|
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
|
||||||
SIGNING_KEY_ALIAS: ${{ secrets.SIGNING_KEY_ALIAS_PHOTOS }}
|
|
||||||
SIGNING_KEY_PASSWORD: ${{ secrets.SIGNING_KEY_PASSWORD_PHOTOS }}
|
|
||||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
|
|
||||||
|
|
||||||
- name: Upload AAB to PlayStore
|
|
||||||
uses: r0adkll/upload-google-play@v1
|
|
||||||
with:
|
|
||||||
serviceAccountJsonPlainText: ${{ secrets.SERVICE_ACCOUNT_JSON }}
|
|
||||||
packageName: io.ente.photos
|
|
||||||
releaseFiles: mobile/build/app/outputs/bundle/playstoreRelease/app-playstore-release.aab
|
|
||||||
track: internal
|
|
||||||
|
|
||||||
- name: Notify Discord
|
|
||||||
uses: sarisia/actions-status-discord@v1
|
|
||||||
with:
|
|
||||||
webhook: ${{ secrets.DISCORD_INTERNAL_RELEASE_WEBHOOK }}
|
|
||||||
nodetail: true
|
|
||||||
title: "🏆 Internal release Photos (Branch: ${{ github.ref_name }})"
|
|
||||||
description: "[Download](https://play.google.com/store/apps/details?id=io.ente.photos)"
|
|
||||||
color: 0x00ff00
|
|
||||||
10
.github/workflows/mobile-lint.yml
vendored
@@ -1,17 +1,15 @@
|
|||||||
name: "Lint (mobile)"
|
name: "Lint (mobile)"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Run on every pull request (open or push to it) that changes mobile/
|
# Run on every push to a branch other than main that changes mobile/
|
||||||
pull_request:
|
push:
|
||||||
|
branches-ignore: [main]
|
||||||
paths:
|
paths:
|
||||||
- "mobile/**"
|
- "mobile/**"
|
||||||
- ".github/workflows/mobile-lint.yml"
|
- ".github/workflows/mobile-lint.yml"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.24.3"
|
FLUTTER_VERSION: "3.13.4"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
|
|||||||
14
.github/workflows/mobile-release.yml
vendored
@@ -9,10 +9,7 @@ on:
|
|||||||
- "photos-v*"
|
- "photos-v*"
|
||||||
|
|
||||||
env:
|
env:
|
||||||
FLUTTER_VERSION: "3.24.3"
|
FLUTTER_VERSION: "3.13.4"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
@@ -28,11 +25,6 @@ jobs:
|
|||||||
with:
|
with:
|
||||||
submodules: recursive
|
submodules: recursive
|
||||||
|
|
||||||
- name: Setup JDK 17
|
|
||||||
uses: actions/setup-java@v1
|
|
||||||
with:
|
|
||||||
java-version: 17
|
|
||||||
|
|
||||||
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
- name: Install Flutter ${{ env.FLUTTER_VERSION }}
|
||||||
uses: subosito/flutter-action@v2
|
uses: subosito/flutter-action@v2
|
||||||
with:
|
with:
|
||||||
@@ -48,7 +40,7 @@ jobs:
|
|||||||
|
|
||||||
- name: Build independent APK
|
- name: Build independent APK
|
||||||
run: |
|
run: |
|
||||||
flutter build apk --dart-define=cronetHttpNoPlay=true --release --flavor independent
|
flutter build apk --release --flavor independent
|
||||||
mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk
|
mv build/app/outputs/flutter-apk/app-independent-release.apk build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk
|
||||||
env:
|
env:
|
||||||
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
SIGNING_KEY_PATH: "/home/runner/work/_temp/keystore/ente_photos_key.jks"
|
||||||
@@ -57,7 +49,7 @@ jobs:
|
|||||||
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
|
SIGNING_STORE_PASSWORD: ${{ secrets.SIGNING_STORE_PASSWORD_PHOTOS }}
|
||||||
|
|
||||||
- name: Checksum
|
- name: Checksum
|
||||||
run: sha256sum build/app/outputs/flutter-apk/ente-${{ github.ref_name }}.apk > build/app/outputs/flutter-apk/sha256sum
|
run: sha256sum build/app/outputs/flutter-apk/ente.apk > build/app/outputs/flutter-apk/sha256sum
|
||||||
|
|
||||||
- name: Create a draft GitHub release
|
- name: Create a draft GitHub release
|
||||||
uses: ncipollo/release-action@v1
|
uses: ncipollo/release-action@v1
|
||||||
|
|||||||
11
.github/workflows/server-lint.yml
vendored
@@ -1,15 +1,13 @@
|
|||||||
name: "Lint (server)"
|
name: "Lint (server)"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Run on every pull request (open or push to it) that changes server/
|
# Run on every push to a branch other than main that changes server/
|
||||||
pull_request:
|
push:
|
||||||
|
branches-ignore: [main]
|
||||||
paths:
|
paths:
|
||||||
- "server/**"
|
- "server/**"
|
||||||
- ".github/workflows/server-lint.yml"
|
- ".github/workflows/server-lint.yml"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -23,8 +21,7 @@ jobs:
|
|||||||
- name: Setup go
|
- name: Setup go
|
||||||
uses: actions/setup-go@v5
|
uses: actions/setup-go@v5
|
||||||
with:
|
with:
|
||||||
go-version-file: server/go.mod
|
go-version-file: "server/go.mod"
|
||||||
cache-dependency-path: server/go.sum
|
|
||||||
cache: true
|
cache: true
|
||||||
|
|
||||||
- name: Install dependencies
|
- name: Install dependencies
|
||||||
|
|||||||
45
.github/workflows/server-publish-ghcr.yml
vendored
@@ -1,45 +0,0 @@
|
|||||||
name: "Publish ghcr (server)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run automatically on 15th of every month, at 05:00 UTC.
|
|
||||||
schedule:
|
|
||||||
- cron: '0 5 15 * *'
|
|
||||||
# Run manually if needed to publish out of schedule.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write # for pushing the `ghcr/server` branch
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Determine commit from prod museum
|
|
||||||
run: |
|
|
||||||
echo "museum_commit=$(curl -s https://api.ente.io/ping | jq -r .id)" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{ env.museum_commit }}
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
uses: mr-smithers-excellent/docker-build-push@v6
|
|
||||||
with:
|
|
||||||
dockerfile: server/Dockerfile
|
|
||||||
directory: server
|
|
||||||
# Resultant package name will be ghcr.io/ente-io/server
|
|
||||||
image: server
|
|
||||||
registry: ghcr.io
|
|
||||||
enableBuildKit: true
|
|
||||||
multiPlatform: true
|
|
||||||
platform: linux/amd64,linux/arm64
|
|
||||||
buildArgs: GIT_COMMIT=${{ env.museum_commit }}
|
|
||||||
tags: ${{ env.museum_commit }}, latest
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Update branch ghcr/server to point to source commit
|
|
||||||
run: |
|
|
||||||
git push -f origin HEAD:refs/heads/ghcr/server
|
|
||||||
11
.github/workflows/server-release.yml
vendored
@@ -3,18 +3,15 @@ name: "Release (server)"
|
|||||||
on:
|
on:
|
||||||
workflow_dispatch: # Run manually
|
workflow_dispatch: # Run manually
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
build:
|
build:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout code
|
- uses: actions/checkout@v4
|
||||||
uses: actions/checkout@v4
|
name: Check out code
|
||||||
|
|
||||||
- name: Build and push
|
- uses: mr-smithers-excellent/docker-build-push@v6
|
||||||
uses: mr-smithers-excellent/docker-build-push@v6
|
name: Build & Push
|
||||||
with:
|
with:
|
||||||
dockerfile: server/Dockerfile
|
dockerfile: server/Dockerfile
|
||||||
directory: server
|
directory: server
|
||||||
|
|||||||
38
.github/workflows/web-crowdin-push-both.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
name: "Push Crowdin translations (web)"
|
|
||||||
|
|
||||||
# This is a variant of web-crowdin-sync.yml that uploads the translated strings in
|
|
||||||
# addition to the source strings.
|
|
||||||
#
|
|
||||||
# This allows us to change the strings in our source code for an automated
|
|
||||||
# refactoring (e.g. renaming a key), and then run this workflow to update the
|
|
||||||
# data in Crowdin taking our source code as the source of truth.
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Trigger manually, or using
|
|
||||||
# `gh workflow run web-crowdin-push-both.yml --ref <my-branch>`
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
push-both-to-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin push
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "web/"
|
|
||||||
config: "web/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: true
|
|
||||||
download_translations: false
|
|
||||||
project_id: 569613
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
59
.github/workflows/web-crowdin-sync.yml
vendored
@@ -1,59 +0,0 @@
|
|||||||
name: "Sync Crowdin translations (web)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches: [main]
|
|
||||||
paths:
|
|
||||||
# Run workflow when web's en-US/translation.json is changed
|
|
||||||
- "web/packages/base/locales/en-US/translation.json"
|
|
||||||
# Or the workflow itself is changed
|
|
||||||
- ".github/workflows/web-crowdin.yml"
|
|
||||||
schedule:
|
|
||||||
# Run Mondays at ~6:00 AM IST
|
|
||||||
#
|
|
||||||
# [Note: Run workflow on specific days of the week]
|
|
||||||
#
|
|
||||||
# The last (5th) component of the cron syntax denotes the day of the
|
|
||||||
# week, with 0 == SUN and 6 == SAT. So, for example, to run on every TUE
|
|
||||||
# and FRI, this can be set to `2,5`.
|
|
||||||
#
|
|
||||||
# See also: [Note: Run workflow every 24 hours]
|
|
||||||
- cron: "20 0 * * 1"
|
|
||||||
# Also allow manually running the workflow.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
# "In order to push translations and create pull requests, the Crowdin GitHub
|
|
||||||
# action requires the `GITHUB_TOKEN` to have write permission on the `contents`
|
|
||||||
# and `pull-requests`.
|
|
||||||
#
|
|
||||||
# - https://github.com/crowdin/github-action?tab=readme-ov-file#permissions
|
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
pull-requests: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
synchronize-with-crowdin:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Crowdin's action
|
|
||||||
uses: crowdin/github-action@v2
|
|
||||||
with:
|
|
||||||
base_path: "web/"
|
|
||||||
config: "web/crowdin.yml"
|
|
||||||
upload_sources: true
|
|
||||||
upload_translations: false
|
|
||||||
download_translations: true
|
|
||||||
localization_branch_name: translations/web
|
|
||||||
create_pull_request: true
|
|
||||||
skip_untranslated_strings: true
|
|
||||||
pull_request_title: "[web] New translations"
|
|
||||||
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-photos-web)"
|
|
||||||
pull_request_base_branch_name: "main"
|
|
||||||
project_id: 569613
|
|
||||||
env:
|
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
|
||||||
42
.github/workflows/web-crowdin.yml
vendored
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
name: "Sync Crowdin translations (web)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
paths:
|
||||||
|
# Run workflow when web's en-US/translation.json is changed
|
||||||
|
- "web/apps/photos/public/locales/en-US/translation.json"
|
||||||
|
# Or the workflow itself is changed
|
||||||
|
- ".github/workflows/web-crowdin.yml"
|
||||||
|
branches: [main]
|
||||||
|
schedule:
|
||||||
|
# See: [Note: Run every 24 hours]
|
||||||
|
- cron: "20 1 * * *"
|
||||||
|
# Also allow manually running the workflow
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
synchronize-with-crowdin:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Crowdin's action
|
||||||
|
uses: crowdin/github-action@v1
|
||||||
|
with:
|
||||||
|
base_path: "web/"
|
||||||
|
config: "web/crowdin.yml"
|
||||||
|
upload_sources: true
|
||||||
|
upload_translations: true
|
||||||
|
download_translations: true
|
||||||
|
localization_branch_name: crowdin-translations-web
|
||||||
|
create_pull_request: true
|
||||||
|
skip_untranslated_strings: true
|
||||||
|
pull_request_title: "[web] New translations"
|
||||||
|
pull_request_body: "New translations from [Crowdin](https://crowdin.com/project/ente-photos-web)"
|
||||||
|
pull_request_base_branch_name: "main"
|
||||||
|
project_id: 569613
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
CROWDIN_PERSONAL_TOKEN: ${{ secrets.CROWDIN_PERSONAL_TOKEN }}
|
||||||
43
.github/workflows/web-deploy-accounts.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: "Deploy (accounts)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# Run workflow on pushes to the deploy/accounts
|
||||||
|
branches: [deploy/accounts]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build accounts
|
||||||
|
run: yarn build:accounts
|
||||||
|
|
||||||
|
- name: Publish accounts
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: deploy/accounts
|
||||||
|
directory: web/apps/accounts/out
|
||||||
|
wranglerVersion: "3"
|
||||||
43
.github/workflows/web-deploy-auth.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: "Deploy (auth)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# Run workflow on pushes to the deploy/auth
|
||||||
|
branches: [deploy/auth]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build auth
|
||||||
|
run: yarn build:auth
|
||||||
|
|
||||||
|
- name: Publish auth
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: deploy/auth
|
||||||
|
directory: web/apps/auth/out
|
||||||
|
wranglerVersion: "3"
|
||||||
43
.github/workflows/web-deploy-cast.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: "Deploy (cast)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# Run workflow on pushes to the deploy/cast
|
||||||
|
branches: [deploy/cast]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build cast
|
||||||
|
run: yarn build:cast
|
||||||
|
|
||||||
|
- name: Publish cast
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: deploy/cast
|
||||||
|
directory: web/apps/cast/out
|
||||||
|
wranglerVersion: "3"
|
||||||
62
.github/workflows/web-deploy-one.yml
vendored
@@ -1,62 +0,0 @@
|
|||||||
name: "Deploy one (web)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
app:
|
|
||||||
description: "App to build and deploy"
|
|
||||||
type: choice
|
|
||||||
required: true
|
|
||||||
default: "photos"
|
|
||||||
options:
|
|
||||||
- "accounts"
|
|
||||||
- "auth"
|
|
||||||
- "cast"
|
|
||||||
- "payments"
|
|
||||||
- "photos"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: web
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "web/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Build ${{ inputs.app }}
|
|
||||||
run: yarn build:${{ inputs.app }}
|
|
||||||
|
|
||||||
- name: Publish ${{ inputs.app }} to preview
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
# [Note: Wrangler commit-dirty]
|
|
||||||
#
|
|
||||||
# Without the --commit-dirty flag, running the wrangler-action
|
|
||||||
# always prints a warning when used:
|
|
||||||
#
|
|
||||||
# Warning: Your working directory is a git repo and has uncommitted changes
|
|
||||||
# To silence this warning, pass in --commit-dirty=true
|
|
||||||
#
|
|
||||||
# There is no clear documentation of if passing this is
|
|
||||||
# harmless, but all indications and in-practice tests seem to
|
|
||||||
# indicate so.
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/${{ inputs.app }} web/apps/${{ inputs.app }}/out
|
|
||||||
43
.github/workflows/web-deploy-photos.yml
vendored
Normal file
@@ -0,0 +1,43 @@
|
|||||||
|
name: "Deploy (photos)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
# Run workflow on pushes to the deploy/photos
|
||||||
|
branches: [deploy/photos]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build photos
|
||||||
|
run: yarn build:photos
|
||||||
|
|
||||||
|
- name: Publish photos
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: deploy/photos
|
||||||
|
directory: web/apps/photos/out
|
||||||
|
wranglerVersion: "3"
|
||||||
51
.github/workflows/web-deploy-preview.yml
vendored
@@ -1,51 +0,0 @@
|
|||||||
name: "Deploy preview (web)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
workflow_dispatch:
|
|
||||||
inputs:
|
|
||||||
app:
|
|
||||||
description: "App to build and deploy"
|
|
||||||
type: choice
|
|
||||||
required: true
|
|
||||||
default: "photos"
|
|
||||||
options:
|
|
||||||
- "accounts"
|
|
||||||
- "auth"
|
|
||||||
- "cast"
|
|
||||||
- "payments"
|
|
||||||
- "photos"
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: web
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "web/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Build ${{ inputs.app }}
|
|
||||||
run: yarn build:${{ inputs.app }}
|
|
||||||
|
|
||||||
- name: Publish ${{ inputs.app }} to preview
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=preview web/apps/${{ inputs.app }}/out
|
|
||||||
101
.github/workflows/web-deploy-staging.yml
vendored
@@ -1,101 +0,0 @@
|
|||||||
name: "Deploy staging (web)"
|
|
||||||
|
|
||||||
# Builds the "staging/web" branch if it exists, "main" otherwise.
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# Run everyday at ~3:00 PM IST
|
|
||||||
#
|
|
||||||
# See: [Note: Run workflow every 24 hours]
|
|
||||||
- cron: "25 9 * * *"
|
|
||||||
# Also allow manually running the workflow
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: web
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Determine branch to build
|
|
||||||
id: select-branch
|
|
||||||
working-directory: ${{ github.workspace }}
|
|
||||||
run: |
|
|
||||||
if git ls-remote --exit-code --heads https://github.com/ente-io/ente refs/heads/staging/web; then
|
|
||||||
echo "branch=staging/web" >> $GITHUB_OUTPUT
|
|
||||||
else
|
|
||||||
echo "branch=main" >> $GITHUB_OUTPUT
|
|
||||||
fi
|
|
||||||
|
|
||||||
- name: Checkout ${{ steps.select-branch.outputs.branch }}
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
with:
|
|
||||||
ref: ${{ steps.select-branch.outputs.branch }}
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "web/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Build photos
|
|
||||||
run: yarn build:photos
|
|
||||||
env:
|
|
||||||
NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT: https://albums.ente.sh
|
|
||||||
|
|
||||||
- name: Publish photos
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=n-photos web/apps/photos/out
|
|
||||||
|
|
||||||
- name: Build accounts
|
|
||||||
run: yarn build:accounts
|
|
||||||
|
|
||||||
- name: Publish accounts
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=n-accounts web/apps/accounts/out
|
|
||||||
|
|
||||||
- name: Build auth
|
|
||||||
run: yarn build:auth
|
|
||||||
|
|
||||||
- name: Publish auth
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=n-auth web/apps/auth/out
|
|
||||||
|
|
||||||
- name: Build cast
|
|
||||||
run: yarn build:cast
|
|
||||||
|
|
||||||
- name: Publish cast
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=n-cast web/apps/cast/out
|
|
||||||
|
|
||||||
- name: Build payments
|
|
||||||
run: yarn build:payments
|
|
||||||
|
|
||||||
- name: Publish payments
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=n-payments web/apps/payments/dist
|
|
||||||
95
.github/workflows/web-deploy.yml
vendored
@@ -1,95 +0,0 @@
|
|||||||
name: "Deploy (web)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
schedule:
|
|
||||||
# [Note: Run workflow every 24 hours]
|
|
||||||
#
|
|
||||||
# Run every weekday at ~8:00 AM IST.
|
|
||||||
#
|
|
||||||
# First field is minute, second is hour of the day. Last is day of week,
|
|
||||||
# 0 being Sunday.
|
|
||||||
#
|
|
||||||
# Add a few minutes of offset to avoid scheduling on exact hourly
|
|
||||||
# boundaries (recommended by GitHub to avoid congestion).
|
|
||||||
#
|
|
||||||
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
|
|
||||||
# https://crontab.guru/
|
|
||||||
#
|
|
||||||
- cron: "25 2 * * 1-5"
|
|
||||||
# Also allow manually running the workflow
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
deploy:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
defaults:
|
|
||||||
run:
|
|
||||||
working-directory: web
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Setup node and enable yarn caching
|
|
||||||
uses: actions/setup-node@v4
|
|
||||||
with:
|
|
||||||
node-version: 22
|
|
||||||
cache: "yarn"
|
|
||||||
cache-dependency-path: "web/yarn.lock"
|
|
||||||
|
|
||||||
- name: Install dependencies
|
|
||||||
run: yarn install
|
|
||||||
|
|
||||||
- name: Build photos
|
|
||||||
run: yarn build:photos
|
|
||||||
|
|
||||||
- name: Publish photos
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/photos web/apps/photos/out
|
|
||||||
|
|
||||||
- name: Build accounts
|
|
||||||
run: yarn build:accounts
|
|
||||||
|
|
||||||
- name: Publish accounts
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/accounts web/apps/accounts/out
|
|
||||||
|
|
||||||
- name: Build auth
|
|
||||||
run: yarn build:auth
|
|
||||||
|
|
||||||
- name: Publish auth
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/auth web/apps/auth/out
|
|
||||||
|
|
||||||
- name: Build cast
|
|
||||||
run: yarn build:cast
|
|
||||||
|
|
||||||
- name: Publish cast
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/cast web/apps/cast/out
|
|
||||||
|
|
||||||
- name: Build payments
|
|
||||||
run: yarn build:payments
|
|
||||||
|
|
||||||
- name: Publish payments
|
|
||||||
uses: cloudflare/wrangler-action@v3
|
|
||||||
with:
|
|
||||||
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
|
||||||
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
|
||||||
command: pages deploy --project-name=ente --commit-dirty=true --branch=deploy/payments web/apps/payments/dist
|
|
||||||
15
.github/workflows/web-lint.yml
vendored
@@ -1,20 +1,13 @@
|
|||||||
name: "Lint (web)"
|
name: "Lint (web)"
|
||||||
|
|
||||||
on:
|
on:
|
||||||
# Run on every pull request (open or push to it) that changes web/
|
# Run on every push to a branch other than main that changes web/
|
||||||
pull_request:
|
push:
|
||||||
|
branches-ignore: [main]
|
||||||
paths:
|
paths:
|
||||||
- "web/**"
|
- "web/**"
|
||||||
- ".github/workflows/web-lint.yml"
|
- ".github/workflows/web-lint.yml"
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
# Cancel in-progress lint runs when a new commit is pushed.
|
|
||||||
concurrency:
|
|
||||||
group: ${{ github.workflow }}-${{ github.ref }}
|
|
||||||
cancel-in-progress: true
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
@@ -28,7 +21,7 @@ jobs:
|
|||||||
- name: Setup node and enable yarn caching
|
- name: Setup node and enable yarn caching
|
||||||
uses: actions/setup-node@v4
|
uses: actions/setup-node@v4
|
||||||
with:
|
with:
|
||||||
node-version: 22
|
node-version: 20
|
||||||
cache: "yarn"
|
cache: "yarn"
|
||||||
cache-dependency-path: "web/yarn.lock"
|
cache-dependency-path: "web/yarn.lock"
|
||||||
|
|
||||||
|
|||||||
94
.github/workflows/web-nightly.yml
vendored
Normal file
@@ -0,0 +1,94 @@
|
|||||||
|
name: "Nightly (web)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
schedule:
|
||||||
|
# [Note: Run every 24 hours]
|
||||||
|
#
|
||||||
|
# Run every 24 hours - First field is minute, second is hour of the day
|
||||||
|
# This runs 23:15 UTC everyday - 1 and 15 are just arbitrary offset to
|
||||||
|
# avoid scheduling it on the exact hour, as suggested by GitHub.
|
||||||
|
#
|
||||||
|
# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#schedule
|
||||||
|
# https://crontab.guru/
|
||||||
|
#
|
||||||
|
- cron: "15 23 * * *"
|
||||||
|
# Also allow manually running the workflow
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build accounts
|
||||||
|
run: yarn build:accounts
|
||||||
|
|
||||||
|
- name: Publish accounts
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: n-accounts
|
||||||
|
directory: web/apps/accounts/out
|
||||||
|
wranglerVersion: "3"
|
||||||
|
|
||||||
|
- name: Build auth
|
||||||
|
run: yarn build:auth
|
||||||
|
|
||||||
|
- name: Publish auth
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: n-auth
|
||||||
|
directory: web/apps/auth/out
|
||||||
|
wranglerVersion: "3"
|
||||||
|
|
||||||
|
- name: Build cast
|
||||||
|
run: yarn build:cast
|
||||||
|
|
||||||
|
- name: Publish cast
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: n-cast
|
||||||
|
directory: web/apps/cast/out
|
||||||
|
wranglerVersion: "3"
|
||||||
|
|
||||||
|
- name: Build photos
|
||||||
|
run: yarn build:photos
|
||||||
|
env:
|
||||||
|
NEXT_PUBLIC_ENTE_ALBUMS_ENDPOINT: https://albums.ente.sh
|
||||||
|
|
||||||
|
- name: Publish photos
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: n-photos
|
||||||
|
directory: web/apps/photos/out
|
||||||
|
wranglerVersion: "3"
|
||||||
52
.github/workflows/web-preview.yml
vendored
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
name: "Preview (web)"
|
||||||
|
|
||||||
|
on:
|
||||||
|
workflow_dispatch:
|
||||||
|
inputs:
|
||||||
|
app:
|
||||||
|
description: "App to build and deploy"
|
||||||
|
type: choice
|
||||||
|
required: true
|
||||||
|
default: "photos"
|
||||||
|
options:
|
||||||
|
- "accounts"
|
||||||
|
- "auth"
|
||||||
|
- "cast"
|
||||||
|
- "photos"
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
deploy:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
defaults:
|
||||||
|
run:
|
||||||
|
working-directory: web
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: recursive
|
||||||
|
|
||||||
|
- name: Setup node and enable yarn caching
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: 20
|
||||||
|
cache: "yarn"
|
||||||
|
cache-dependency-path: "docs/yarn.lock"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: yarn install
|
||||||
|
|
||||||
|
- name: Build ${{ inputs.app }}
|
||||||
|
run: yarn build:${{ inputs.app }}
|
||||||
|
|
||||||
|
- name: Publish ${{ inputs.app }} to preview
|
||||||
|
uses: cloudflare/pages-action@1
|
||||||
|
with:
|
||||||
|
accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }}
|
||||||
|
apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }}
|
||||||
|
projectName: ente
|
||||||
|
branch: preview
|
||||||
|
directory: web/apps/${{ inputs.app }}/out
|
||||||
|
wranglerVersion: "3"
|
||||||
38
.github/workflows/web-publish-ghcr.yml
vendored
@@ -1,38 +0,0 @@
|
|||||||
name: "Publish ghcr (web)"
|
|
||||||
|
|
||||||
on:
|
|
||||||
# Run automatically every Wednesday, at 07:00 UTC.
|
|
||||||
schedule:
|
|
||||||
- cron: '0 7 * * 3'
|
|
||||||
# Run manually if needed to publish out of schedule.
|
|
||||||
workflow_dispatch:
|
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: write # for pushing the `ghcr/web` branch
|
|
||||||
packages: write
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
publish:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Checkout code
|
|
||||||
uses: actions/checkout@v4
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
uses: mr-smithers-excellent/docker-build-push@v6
|
|
||||||
with:
|
|
||||||
dockerfile: web/Dockerfile
|
|
||||||
directory: web
|
|
||||||
# Resultant package name will be ghcr.io/ente-io/web
|
|
||||||
image: web
|
|
||||||
registry: ghcr.io
|
|
||||||
enableBuildKit: true
|
|
||||||
multiPlatform: true
|
|
||||||
platform: linux/amd64,linux/arm64
|
|
||||||
tags: ${{ github.sha }}, latest
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Update branch ghcr/web to point to source commit
|
|
||||||
run: |
|
|
||||||
git push -f origin HEAD:refs/heads/ghcr/web
|
|
||||||
3
.gitignore
vendored
@@ -1,6 +1,5 @@
|
|||||||
# Let folks use their custom editor settings
|
# Let folks use their custom .vscode settings
|
||||||
.vscode
|
.vscode
|
||||||
.idea
|
|
||||||
|
|
||||||
# macOS
|
# macOS
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
|||||||
18
.gitmodules
vendored
@@ -9,3 +9,21 @@
|
|||||||
[submodule "auth/assets/simple-icons"]
|
[submodule "auth/assets/simple-icons"]
|
||||||
path = auth/assets/simple-icons
|
path = auth/assets/simple-icons
|
||||||
url = https://github.com/simple-icons/simple-icons.git
|
url = https://github.com/simple-icons/simple-icons.git
|
||||||
|
[submodule "mobile/thirdparty/flutter"]
|
||||||
|
path = mobile/thirdparty/flutter
|
||||||
|
url = https://github.com/flutter/flutter.git
|
||||||
|
branch = stable
|
||||||
|
[submodule "mobile/plugins/clip_ggml"]
|
||||||
|
path = mobile/plugins/clip_ggml
|
||||||
|
url = https://github.com/ente-io/clip-ggml.git
|
||||||
|
[submodule "mobile/thirdparty/isar"]
|
||||||
|
path = mobile/thirdparty/isar
|
||||||
|
url = https://github.com/isar/isar
|
||||||
|
[submodule "web/apps/photos/thirdparty/ffmpeg-wasm"]
|
||||||
|
path = web/apps/photos/thirdparty/ffmpeg-wasm
|
||||||
|
url = https://github.com/abhinavkgrd/ffmpeg.wasm.git
|
||||||
|
branch = master
|
||||||
|
[submodule "web/apps/photos/thirdparty/photoswipe"]
|
||||||
|
path = web/apps/photos/thirdparty/photoswipe
|
||||||
|
url = https://github.com/ente-io/PhotoSwipe.git
|
||||||
|
branch = single-thread
|
||||||
|
|||||||
@@ -12,10 +12,9 @@ There are many ways to contribute, and most of them don't require writing code.
|
|||||||
|
|
||||||
## Spread the word
|
## Spread the word
|
||||||
|
|
||||||
This is perhaps the most impactful contribution you can make. [Spread the
|
This is perhaps the most impactful contribution you can make. Spread the word.
|
||||||
word](https://help.ente.io/photos/features/referral-program/). Online on your
|
Online on your favorite social media channels. Offline to your friends and
|
||||||
favorite social media channels. Offline to your friends and family who are
|
family who are looking for a privacy-friendly alternative to big tech.
|
||||||
looking for a privacy-friendly alternative to big tech.
|
|
||||||
|
|
||||||
## Engage with the community
|
## Engage with the community
|
||||||
|
|
||||||
@@ -23,7 +22,7 @@ Just hang around, enjoy the vibe. Answer someone's query on our
|
|||||||
[Discord](https://discord.gg/z2YVKkycX3), or pile on in the sporadic #off-topic
|
[Discord](https://discord.gg/z2YVKkycX3), or pile on in the sporadic #off-topic
|
||||||
rants there. Chuckle (or wince!) at our [Twitter](https://twitter.com/enteio)
|
rants there. Chuckle (or wince!) at our [Twitter](https://twitter.com/enteio)
|
||||||
memes. Suggest a new feature in our [Github
|
memes. Suggest a new feature in our [Github
|
||||||
Discussions](https://github.com/ente-io/ente/discussions/new?category=enhancements),
|
Discussions](https://github.com/ente-io/ente/discussions/new?category=feature-requests),
|
||||||
or upvote the existing ones that you feel we should focus on first. Provide your
|
or upvote the existing ones that you feel we should focus on first. Provide your
|
||||||
opinion on existing threads.
|
opinion on existing threads.
|
||||||
|
|
||||||
@@ -60,30 +59,21 @@ See [docs/](docs/README.md) for how to edit these documents.
|
|||||||
|
|
||||||
## Code contributions
|
## Code contributions
|
||||||
|
|
||||||
Code is a small aspect of community, and the ways mentioned above are more
|
If you'd like to contribute code, it is best to start small.
|
||||||
important in helping us. But if you'd _really_ like to contribute code, it is
|
|
||||||
best to start small. Consider some well-scoped changes, say like adding more
|
|
||||||
[custom icons to auth](auth/docs/adding-icons.md).
|
|
||||||
|
|
||||||
Each of the individual product/platform specific directories in this repository
|
Each of the individual product/platform specific directories in this repository
|
||||||
have instructions on setting up a dev environment.
|
have instructions on setting up a dev environment and making changes. The issues
|
||||||
|
and discussions (feature requests) labelled "good first issues" should be good
|
||||||
|
starting points. Once you have a bearing, you can head on to issues or
|
||||||
|
discussions labelled "help wanted".
|
||||||
|
|
||||||
For anything beyond trivial bug fixes, please use
|
If you're planning on adding a new feature or making any other substantial
|
||||||
[discussions](https://github.com/ente-io/ente/discussions) instead of performing
|
change, please [discuss it with
|
||||||
code changes directly.
|
us](https://github.com/ente-io/ente/discussions). Discussing your idea with us
|
||||||
|
first ensures that everyone is on the same page before you start working on your
|
||||||
|
change.
|
||||||
|
|
||||||
> [!TIP]
|
## Star
|
||||||
>
|
|
||||||
> Please remember that code is a important, but small, part of the overall big
|
|
||||||
> picture that makes a product a joy to use. Something that's easy in code is
|
|
||||||
> not necessarily the right choice for the product as a whole. So we'll repeat -
|
|
||||||
> there are other ways to contribute than code that we'd request you to
|
|
||||||
> consider.
|
|
||||||
|
|
||||||
## Leave a review or star
|
|
||||||
|
|
||||||
If you haven't already done so, consider [starring this
|
If you haven't already done so, consider [starring this
|
||||||
repository](https://github.com/ente-io/ente/stargazers) or leaving a review on
|
repository](https://github.com/ente-io/ente/stargazers).
|
||||||
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
|
|
||||||
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
|
|
||||||
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).
|
|
||||||
|
|||||||
44
README.md
@@ -30,24 +30,23 @@ Learn more at [ente.io](https://ente.io).
|
|||||||
|
|
||||||

|

|
||||||
|
|
||||||
Our flagship product. 3x data replication. Face detection. Semantic search.
|
Our flagship product. 3x data replication. On device machine learning. Cross
|
||||||
Private sharing. Collaborative albums. Family plans. Easy import, easier export.
|
platform. Private sharing. Collaborative albums. Family plans. Easy import,
|
||||||
Background uploads. The list goes on. And of course, all of this, while being
|
easier export. Background uploads. The list goes on. And of course, all of this,
|
||||||
fully end-to-end encrypted across platforms.
|
while being fully end-to-end encrypted.
|
||||||
|
|
||||||
Ente Photos is a paid service, but we offer 10GB of free storage.
|
Ente Photos is a paid service, but we offer a free trial. You can also clone
|
||||||
You can also clone this repository and choose to self-host.
|
this repository and choose to self host.
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
|
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id1542026904)
|
||||||
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
|
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.photos)
|
||||||
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
|
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.photos.fdroid/)
|
||||||
[<img height="40" src=".github/assets/obtainium-badge.png">](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.photos.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Photos%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-photos*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
|
[<img height="42" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
|
||||||
[<img height="40" src=".github/assets/desktop-badge.png">](https://ente.io/download/desktop)
|
[<img height="42" src=".github/assets/web-badge.svg">](https://web.ente.io)
|
||||||
[<img height="40" src=".github/assets/web-badge.svg">](https://web.ente.io)
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -61,19 +60,18 @@ Our labour of love. Two years ago, while building Ente Photos, we realized that
|
|||||||
there was no open source end-to-end encrypted authenticator app. We already had
|
there was no open source end-to-end encrypted authenticator app. We already had
|
||||||
the building blocks, so we built one.
|
the building blocks, so we built one.
|
||||||
|
|
||||||
Ente Auth is free, and will remain free forever. If you like the service and
|
Ente Auth is currently free. If in the future we convert this to a paid service,
|
||||||
want to give back, please check out Ente Photos or spread the word.
|
existing users will be grandfathered in.
|
||||||
|
|
||||||
<br />
|
<br />
|
||||||
|
|
||||||
<div align="center">
|
<div align="center">
|
||||||
|
|
||||||
[<img height="40" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
|
[<img height="42" src=".github/assets/app-store-badge.svg">](https://apps.apple.com/app/id6444121398)
|
||||||
[<img height="40" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
|
[<img height="42" src=".github/assets/play-store-badge.png">](https://play.google.com/store/apps/details?id=io.ente.auth)
|
||||||
[<img height="40" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
|
[<img height="42" src=".github/assets/f-droid-badge.png">](https://f-droid.org/packages/io.ente.auth/)
|
||||||
[<img height="40" src=".github/assets/obtainium-badge.png">](https://apps.obtainium.imranr.dev/redirect?r=obtainium://app/%7B%22id%22%3A%22io.ente.auth.independent%22%2C%22url%22%3A%22https%3A%2F%2Fgithub.com%2Fente-io%2Fente%22%2C%22author%22%3A%22ente-io%22%2C%22name%22%3A%22Ente%20Auth%22%2C%22preferredApkIndex%22%3A0%2C%22additionalSettings%22%3A%22%7B%5C%22includePrereleases%5C%22%3Afalse%2C%5C%22fallbackToOlderReleases%5C%22%3Atrue%2C%5C%22filterReleaseTitlesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22filterReleaseNotesByRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22verifyLatestTag%5C%22%3Afalse%2C%5C%22dontSortReleasesList%5C%22%3Atrue%2C%5C%22useLatestAssetDateAsReleaseDate%5C%22%3Afalse%2C%5C%22releaseTitleAsVersion%5C%22%3Afalse%2C%5C%22trackOnly%5C%22%3Afalse%2C%5C%22versionExtractionRegEx%5C%22%3A%5C%22%5C%22%2C%5C%22matchGroupToUse%5C%22%3A%5C%22%5C%22%2C%5C%22versionDetection%5C%22%3Atrue%2C%5C%22releaseDateAsVersion%5C%22%3Afalse%2C%5C%22useVersionCodeAsOSVersion%5C%22%3Afalse%2C%5C%22apkFilterRegEx%5C%22%3A%5C%22ente-auth*%5C%22%2C%5C%22invertAPKFilter%5C%22%3Afalse%2C%5C%22autoApkFilterByArch%5C%22%3Atrue%2C%5C%22appName%5C%22%3A%5C%22%5C%22%2C%5C%22shizukuPretendToBeGooglePlay%5C%22%3Afalse%2C%5C%22allowInsecure%5C%22%3Afalse%2C%5C%22exemptFromBackgroundUpdates%5C%22%3Afalse%2C%5C%22skipUpdateNotifications%5C%22%3Afalse%2C%5C%22about%5C%22%3A%5C%22%5C%22%7D%22%2C%22overrideSource%22%3Anull%7D)
|
[<img height="42" src=".github/assets/github-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
|
||||||
[<img height="40" src=".github/assets/desktop-badge.png">](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
|
[<img height="42" src=".github/assets/web-badge.svg">](https://auth.ente.io)
|
||||||
[<img height="40" src=".github/assets/web-badge.svg">](https://auth.ente.io)
|
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -95,13 +93,13 @@ please see our [support guide](SUPPORT.md).
|
|||||||
<img src=".github/assets/ente-ducky.png" width=200 alt="Ente's Mascot, Ducky,
|
<img src=".github/assets/ente-ducky.png" width=200 alt="Ente's Mascot, Ducky,
|
||||||
inviting people to Ente's source code repository" />
|
inviting people to Ente's source code repository" />
|
||||||
|
|
||||||
Please visit the [community section](https://ente.io/about#community) for all the ways to
|
Please visit our [community page](https://ente.io/community) for all the ways to
|
||||||
connect with our community.
|
connect with the community.
|
||||||
|
|
||||||
[](https://discord.gg/z2YVKkycX3)
|
[](https://discord.gg/z2YVKkycX3)
|
||||||
[](https://ente.io/blog/rss.xml)
|
[](https://ente.io/blog/rss.xml)
|
||||||
|
|
||||||
[](https://twitter.com/enteio) [](https://fosstodon.org/@ente)
|
[](https://twitter.com/enteio) [](https://mstdn.social/@ente)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
71
SECURITY.md
@@ -1,54 +1,51 @@
|
|||||||
# Security Policy
|
|
||||||
|
|
||||||
Ente believes that working with security researchers across the globe is crucial
|
Ente believes that working with security researchers across the globe is crucial
|
||||||
to keeping our users safe. If you believe you've found a security issue in our
|
to keeping our users safe. If you believe you've found a security issue in our
|
||||||
product or service, we encourage you to notify us by email at security@ente.io
|
product or service, we encourage you to notify us, by email (security@ente.io)
|
||||||
or by
|
or by [filling this
|
||||||
[filling out this form](https://github.com/ente-io/ente/security/advisories/new).
|
form](https://github.com/ente-io/ente/security/advisories/new) We welcome
|
||||||
We welcome working with you to resolve the issue promptly. Thanks in advance!
|
working with you to resolve the issue promptly. Thanks in advance!
|
||||||
|
|
||||||
## Disclosure Policy
|
## Disclosure Policy
|
||||||
|
|
||||||
- Let us know as soon as possible upon discovery of a potential security
|
- Let us know as soon as possible upon discovery of a potential security issue,
|
||||||
issue, and we'll make every effort to quickly resolve the issue.
|
and we'll make every effort to quickly resolve the issue.
|
||||||
- Provide us with a reasonable amount of time to resolve the issue before any
|
- Provide us a reasonable amount of time to resolve the issue before any
|
||||||
disclosure to the public or a third party. We may publicly disclose the
|
disclosure to the public or a third-party. We may publicly disclose the issue
|
||||||
issue before resolving it if appropriate.
|
before resolving it, if appropriate.
|
||||||
- Make a good faith effort to avoid privacy violations, destruction of data,
|
- Make a good faith effort to avoid privacy violations, destruction of data, and
|
||||||
and interruption or degradation of our service. Only interact with accounts
|
interruption or degradation of our service. Only interact with accounts you
|
||||||
you own or with the explicit permission of the account holder.
|
own or with explicit permission of the account holder.
|
||||||
- If you would like to encrypt your report, please use the PGP key with long
|
- If you would like to encrypt your report, please use the PGP key with long ID
|
||||||
ID `E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public
|
`E273695C0403F34F74171932DF6DDDE98EBD2394` (available in the public keyserver
|
||||||
keyserver pool).
|
pool).
|
||||||
|
|
||||||
## In-scope
|
## In-scope
|
||||||
|
|
||||||
- Security issues in any current release of Ente's services. Product downloads
|
- Security issues in any current release of Ente's services. Product downloads
|
||||||
are available at [https://ente.io](https://ente.io). Source code is
|
are available at https://ente.io. Source code is available at
|
||||||
available at [https://github.com/ente-io](https://github.com/ente-io).
|
https://github.com/ente-io.
|
||||||
|
|
||||||
## Exclusions
|
## Exclusions
|
||||||
|
|
||||||
The following bug classes are out of scope:
|
The following bug classes are out-of scope:
|
||||||
|
|
||||||
- Bugs that are already reported on any of
|
- Bugs that are already reported on any of [Ente's issue
|
||||||
[Ente's issue trackers](https://github.com/ente-io) or that we already know
|
trackers](https://github.com/ente-io), or that we already know of (Note that
|
||||||
of (note that some of our issue tracking is private).
|
some of our issue tracking is private)
|
||||||
- Issues in an upstream software dependency (e.g., Flutter, Next.js, etc.)
|
- Issues in an upstream software dependency (ex: Flutter, Next.js etc) which are
|
||||||
that are already reported to the upstream maintainer.
|
already reported to the upstream maintainer
|
||||||
- Attacks requiring physical access to a user's device.
|
- Attacks requiring physical access to a user's device
|
||||||
- Self-XSS.
|
- Self-XSS
|
||||||
- Issues related to software or protocols not under Ente's control.
|
- Issues related to software or protocols not under ente's control
|
||||||
- Vulnerabilities in outdated versions of Ente.
|
- Vulnerabilities in outdated versions of ente
|
||||||
- Missing security best practices that do not directly lead to a
|
- Missing security best practices that do not directly lead to a vulnerability
|
||||||
vulnerability.
|
- Issues that do not have any impact on the general public
|
||||||
- Issues that do not have any impact on the general public.
|
|
||||||
|
|
||||||
While researching, we'd like to ask you to refrain from:
|
While researching, we'd like to ask you to refrain from:
|
||||||
|
|
||||||
- Denial of service
|
- Denial of service
|
||||||
- Spamming
|
- Spamming
|
||||||
- Social engineering (including phishing) of Ente staff or contractors
|
- Social engineering (including phishing) of Ente staff or contractors
|
||||||
- Any physical attempts against Ente property or data centers
|
- Any physical attempts against Ente property or data centers
|
||||||
|
|
||||||
Thank you for helping keep Ente and our users safe!
|
Thank you for helping keep Ente and our users safe!
|
||||||
|
|||||||
@@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
"flutter": "3.24.3"
|
|
||||||
}
|
|
||||||
13
auth/.gitignore
vendored
@@ -9,20 +9,12 @@
|
|||||||
.history
|
.history
|
||||||
.svn/
|
.svn/
|
||||||
|
|
||||||
# Editors
|
|
||||||
.vscode/
|
|
||||||
|
|
||||||
# IntelliJ related
|
# IntelliJ related
|
||||||
*.iml
|
*.iml
|
||||||
*.ipr
|
*.ipr
|
||||||
*.iws
|
*.iws
|
||||||
.idea/
|
.idea/
|
||||||
|
|
||||||
# The .vscode folder contains launch configuration and tasks you configure in
|
|
||||||
# VS Code which you may wish to be included in version control, so this line
|
|
||||||
# is commented out by default.
|
|
||||||
#.vscode/
|
|
||||||
|
|
||||||
# Flutter/Dart/Pub related
|
# Flutter/Dart/Pub related
|
||||||
**/doc/api/
|
**/doc/api/
|
||||||
.dart_tool/
|
.dart_tool/
|
||||||
@@ -32,7 +24,6 @@
|
|||||||
.pub-cache/
|
.pub-cache/
|
||||||
.pub/
|
.pub/
|
||||||
/build/
|
/build/
|
||||||
macos/build/
|
|
||||||
|
|
||||||
# Web related
|
# Web related
|
||||||
lib/generated_plugin_registrant.dart
|
lib/generated_plugin_registrant.dart
|
||||||
@@ -41,7 +32,3 @@ lib/generated_plugin_registrant.dart
|
|||||||
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
|
||||||
|
|
||||||
android/key.properties
|
android/key.properties
|
||||||
dist/
|
|
||||||
|
|
||||||
# FVM Version Cache
|
|
||||||
.fvm/
|
|
||||||
@@ -1,11 +1,11 @@
|
|||||||
# This file tracks properties of this Flutter project.
|
# This file tracks properties of this Flutter project.
|
||||||
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
# Used by Flutter tool to assess capabilities and perform upgrades etc.
|
||||||
#
|
#
|
||||||
# This file should be version controlled and should not be manually edited.
|
# This file should be version controlled.
|
||||||
|
|
||||||
version:
|
version:
|
||||||
revision: "ba393198430278b6595976de84fe170f553cc728"
|
revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
channel: "[user-branch]"
|
channel: unknown
|
||||||
|
|
||||||
project_type: app
|
project_type: app
|
||||||
|
|
||||||
@@ -13,26 +13,17 @@ project_type: app
|
|||||||
migration:
|
migration:
|
||||||
platforms:
|
platforms:
|
||||||
- platform: root
|
- platform: root
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
create_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
base_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
- platform: android
|
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
- platform: ios
|
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
- platform: linux
|
- platform: linux
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
create_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
base_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
- platform: macos
|
- platform: macos
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
create_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
base_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
- platform: web
|
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
|
||||||
- platform: windows
|
- platform: windows
|
||||||
create_revision: ba393198430278b6595976de84fe170f553cc728
|
create_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
base_revision: ba393198430278b6595976de84fe170f553cc728
|
base_revision: ee4e09cce01d6f2d7f4baebd247fde02e5008851
|
||||||
|
|
||||||
# User provided section
|
# User provided section
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,7 @@ multi-device sync.
|
|||||||
### Android
|
### Android
|
||||||
|
|
||||||
This repository's [GitHub
|
This repository's [GitHub
|
||||||
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
|
releases](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v2)
|
||||||
contains APKs, built straight from source. These builds keep themselves updated,
|
contains APKs, built straight from source. These builds keep themselves updated,
|
||||||
without relying on third party stores.
|
without relying on third party stores.
|
||||||
|
|
||||||
@@ -31,16 +31,14 @@ You can alternatively install the build from PlayStore or F-Droid.
|
|||||||
<img height="59" src="../.github/assets/app-store-badge.svg">
|
<img height="59" src="../.github/assets/app-store-badge.svg">
|
||||||
</a>
|
</a>
|
||||||
|
|
||||||
### Desktop
|
|
||||||
|
|
||||||
You can [**download**](https://github.com/ente-io/ente/releases?q=tag%3Aauth-v4)
|
|
||||||
a native desktop app from this repository's GitHub releases. The desktop app
|
|
||||||
works on Windows, Linux and macOS.
|
|
||||||
|
|
||||||
### Web
|
### Web
|
||||||
|
|
||||||
You can view your 2FA codes at [auth.ente.io](https://auth.ente.io). For adding
|
You can view your 2FA codes at [auth.ente.io](https://auth.ente.io). For adding
|
||||||
or managing your secrets, please use our mobile or desktop app.
|
or managing your secrets, please use our mobile app.
|
||||||
|
|
||||||
|
### Desktop
|
||||||
|
|
||||||
|
A native desktop app is coming soon!
|
||||||
|
|
||||||
## 🧑💻 Build from source
|
## 🧑💻 Build from source
|
||||||
|
|
||||||
@@ -95,20 +93,13 @@ more, see [docs/adding-icons](docs/adding-icons.md).
|
|||||||
|
|
||||||
## 💚 Contribute
|
## 💚 Contribute
|
||||||
|
|
||||||
The best way to support this project is by checking out [Ente
|
|
||||||
Photos](../mobile/README.md) or spreading the word.
|
|
||||||
|
|
||||||
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
|
For more ways to contribute, see [../CONTRIBUTING.md](../CONTRIBUTING.md).
|
||||||
|
|
||||||
## Certificate Fingerprints
|
You can also support us by giving this project a ⭐ star on GitHub or by leaving
|
||||||
|
a review on
|
||||||
- **SHA1**: 57:E8:C6:59:C3:AA:C9:38:B0:10:70:5E:90:85:BC:20:67:E6:8F:4B
|
[PlayStore](https://play.google.com/store/apps/details?id=io.ente.auth),
|
||||||
- **SHA256**: BA:8B:F0:32:98:62:70:05:ED:DF:F6:B1:D6:0B:3B:FA:A1:4E:E8:BD:C7:61:4F:FB:3B:B1:1C:58:8D:9E:3A:D7
|
[AppStore](https://apps.apple.com/us/app/ente-authenticator/id6444121398) or
|
||||||
|
[AlternativeTo](https://alternativeto.net/software/ente-authenticator/).
|
||||||
To verify these fingerprints, use the following command:
|
|
||||||
```bash
|
|
||||||
apksigner verify --print-certs <path_to_apk>
|
|
||||||
```
|
|
||||||
|
|
||||||
## ⭐️ About
|
## ⭐️ About
|
||||||
|
|
||||||
|
|||||||
2
auth/android/.gitignore
vendored
@@ -5,8 +5,6 @@ gradle-wrapper.jar
|
|||||||
/gradlew.bat
|
/gradlew.bat
|
||||||
/local.properties
|
/local.properties
|
||||||
GeneratedPluginRegistrant.java
|
GeneratedPluginRegistrant.java
|
||||||
/app/.cxx/
|
|
||||||
/.kotlin/
|
|
||||||
|
|
||||||
# Remember to never publicly share your keystore.
|
# Remember to never publicly share your keystore.
|
||||||
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
# See https://flutter.dev/docs/deployment/android#reference-the-keystore-from-the-app
|
||||||
|
|||||||
@@ -1,9 +1,3 @@
|
|||||||
plugins {
|
|
||||||
id "com.android.application"
|
|
||||||
id "kotlin-android"
|
|
||||||
id "dev.flutter.flutter-gradle-plugin"
|
|
||||||
}
|
|
||||||
|
|
||||||
def localProperties = new Properties()
|
def localProperties = new Properties()
|
||||||
def localPropertiesFile = rootProject.file('local.properties')
|
def localPropertiesFile = rootProject.file('local.properties')
|
||||||
if (localPropertiesFile.exists()) {
|
if (localPropertiesFile.exists()) {
|
||||||
@@ -12,6 +6,11 @@ if (localPropertiesFile.exists()) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
def flutterRoot = localProperties.getProperty('flutter.sdk')
|
||||||
|
if (flutterRoot == null) {
|
||||||
|
throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
|
||||||
|
}
|
||||||
|
|
||||||
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
|
||||||
if (flutterVersionCode == null) {
|
if (flutterVersionCode == null) {
|
||||||
flutterVersionCode = '1'
|
flutterVersionCode = '1'
|
||||||
@@ -22,6 +21,10 @@ if (flutterVersionName == null) {
|
|||||||
flutterVersionName = '1.0'
|
flutterVersionName = '1.0'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
apply plugin: 'com.android.application'
|
||||||
|
apply plugin: 'kotlin-android'
|
||||||
|
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
|
||||||
|
|
||||||
def keystoreProperties = new Properties()
|
def keystoreProperties = new Properties()
|
||||||
def keystorePropertiesFile = rootProject.file('key.properties')
|
def keystorePropertiesFile = rootProject.file('key.properties')
|
||||||
if (keystorePropertiesFile.exists()) {
|
if (keystorePropertiesFile.exists()) {
|
||||||
@@ -29,18 +32,7 @@ if (keystorePropertiesFile.exists()) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
android {
|
android {
|
||||||
namespace "io.ente.auth"
|
compileSdkVersion 33
|
||||||
compileSdk 34
|
|
||||||
ndkVersion flutter.ndkVersion
|
|
||||||
|
|
||||||
compileOptions {
|
|
||||||
sourceCompatibility JavaVersion.VERSION_1_8
|
|
||||||
targetCompatibility JavaVersion.VERSION_1_8
|
|
||||||
}
|
|
||||||
|
|
||||||
kotlinOptions {
|
|
||||||
jvmTarget = '1.8'
|
|
||||||
}
|
|
||||||
|
|
||||||
sourceSets {
|
sourceSets {
|
||||||
main.java.srcDirs += 'src/main/kotlin'
|
main.java.srcDirs += 'src/main/kotlin'
|
||||||
@@ -54,10 +46,8 @@ android {
|
|||||||
|
|
||||||
defaultConfig {
|
defaultConfig {
|
||||||
applicationId "io.ente.auth"
|
applicationId "io.ente.auth"
|
||||||
// You can update the following values to match your application needs.
|
minSdkVersion 20
|
||||||
// For more information, see: https://docs.flutter.dev/deployment/android#reviewing-the-gradle-build-configuration.
|
targetSdkVersion 33
|
||||||
minSdkVersion 21
|
|
||||||
targetSdkVersion 34
|
|
||||||
versionCode flutterVersionCode.toInteger()
|
versionCode flutterVersionCode.toInteger()
|
||||||
versionName flutterVersionName
|
versionName flutterVersionName
|
||||||
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
|
||||||
@@ -66,11 +56,11 @@ android {
|
|||||||
|
|
||||||
signingConfigs {
|
signingConfigs {
|
||||||
release {
|
release {
|
||||||
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : System.getenv("SIGNING_KEY_PATH") ? file(System.getenv("SIGNING_KEY_PATH")) : null
|
storeFile keystoreProperties['storeFile'] ? file(keystoreProperties['storeFile']) : System.getenv("SIGNING_KEY_PATH") ? file(System.getenv("SIGNING_KEY_PATH")) : null
|
||||||
keyAlias keystoreProperties['keyAlias'] ? keystoreProperties['keyAlias'] : System.getenv("SIGNING_KEY_ALIAS")
|
keyAlias keystoreProperties['keyAlias'] ? keystoreProperties['keyAlias'] : System.getenv("SIGNING_KEY_ALIAS")
|
||||||
keyPassword keystoreProperties['keyPassword'] ? keystoreProperties['keyPassword'] : System.getenv("SIGNING_KEY_PASSWORD")
|
keyPassword keystoreProperties['keyPassword'] ? keystoreProperties['keyPassword'] : System.getenv("SIGNING_KEY_PASSWORD")
|
||||||
storePassword keystoreProperties['storePassword'] ? keystoreProperties['storePassword'] : System.getenv("SIGNING_STORE_PASSWORD")
|
storePassword keystoreProperties['storePassword'] ? keystoreProperties['storePassword'] : System.getenv("SIGNING_STORE_PASSWORD")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
flavorDimensions "default"
|
flavorDimensions "default"
|
||||||
@@ -115,4 +105,12 @@ flutter {
|
|||||||
source '../..'
|
source '../..'
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {}
|
dependencies {
|
||||||
|
implementation 'io.sentry:sentry-android:2.0.0'
|
||||||
|
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
|
||||||
|
implementation 'com.android.support:multidex:1.0.3'
|
||||||
|
implementation 'com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava'
|
||||||
|
testImplementation 'junit:junit:4.12'
|
||||||
|
androidTestImplementation 'androidx.test:runner:1.1.1'
|
||||||
|
androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
|
||||||
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
<!-- The INTERNET permission is required for development. Specifically,
|
package="io.ente.auth">
|
||||||
the Flutter tool needs it to communicate with the running application
|
<!-- Flutter needs it to communicate with the running application
|
||||||
to allow setting breakpoints, to provide hot reload, etc.
|
to allow setting breakpoints, to provide hot reload, etc.
|
||||||
-->
|
-->
|
||||||
<uses-permission android:name="android.permission.INTERNET"/>
|
<uses-permission android:name="android.permission.INTERNET"/>
|
||||||
|
|||||||
@@ -1,7 +1,8 @@
|
|||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools">
|
xmlns:tools="http://schemas.android.com/tools"
|
||||||
|
package="io.ente.auth">
|
||||||
<application android:name="${applicationName}"
|
<application android:name="${applicationName}"
|
||||||
android:label="Ente Auth"
|
android:label="auth"
|
||||||
android:icon="@mipmap/launcher_icon"
|
android:icon="@mipmap/launcher_icon"
|
||||||
android:usesCleartextTraffic="true"
|
android:usesCleartextTraffic="true"
|
||||||
android:requestLegacyExternalStorage="true"
|
android:requestLegacyExternalStorage="true"
|
||||||
@@ -46,7 +47,6 @@
|
|||||||
<!-- Don't delete the meta-data below.
|
<!-- Don't delete the meta-data below.
|
||||||
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
|
||||||
<meta-data android:name="flutterEmbedding" android:value="2"/>
|
<meta-data android:name="flutterEmbedding" android:value="2"/>
|
||||||
<meta-data android:name="flutter_deeplinking_enabled" android:value="false" />
|
|
||||||
|
|
||||||
<meta-data android:name="io.sentry.dsn"
|
<meta-data android:name="io.sentry.dsn"
|
||||||
android:value="https://ed4ddd6309b847ba8849935e26e9b648@sentry.ente.io/9"/>
|
android:value="https://ed4ddd6309b847ba8849935e26e9b648@sentry.ente.io/9"/>
|
||||||
|
|||||||
@@ -1,34 +0,0 @@
|
|||||||
Ente Auth helps you generate and store 2 step verification (2FA) tokens on your mobile devices.
|
|
||||||
|
|
||||||
|
|
||||||
FEATURES
|
|
||||||
|
|
||||||
- Secure Backups
|
|
||||||
Auth provides end-to-end encrypted cloud backups so that you don't have to worry about losing your tokens. We use the same protocols Ente Photos uses to encrypt and preserve your data.
|
|
||||||
|
|
||||||
- Multi Device Synchronization
|
|
||||||
Auth will automatically sync the 2FA tokens you add to your account, across all your devices. Every new device you sign into will have access to these tokens.
|
|
||||||
|
|
||||||
- Web access
|
|
||||||
You can access your 2FA code from any web browser by visiting https://auth.ente.io .
|
|
||||||
|
|
||||||
- Offline Mode
|
|
||||||
Auth generates 2FA tokens offline, so your network connectivity will not get in the way of your workflow.
|
|
||||||
|
|
||||||
- Import and Export Tokens
|
|
||||||
You can add tokens to Auth by one of the following methods:
|
|
||||||
1. Scanning a QR code
|
|
||||||
2. Manually entering (copy-pasting) a 2FA secret
|
|
||||||
3. Bulk importing from a file that contains a list of codes in the following format:
|
|
||||||
|
|
||||||
otpauth://totp/provider.com:you@email.com?secret=YOUR_SECRET
|
|
||||||
|
|
||||||
The codes maybe separated by new lines or commas.
|
|
||||||
|
|
||||||
You can also export the codes you have added to Auth, to an **unencrypted** text file, that adheres to the above format.
|
|
||||||
|
|
||||||
|
|
||||||
SUPPORT
|
|
||||||
|
|
||||||
If you need help, please visit @ https://github.com/ente-io/ente/discussions/new?category=q-a, and someone will get in touch with you.
|
|
||||||
If you have feature requests, please create an issue @ https://github.com/ente-io/ente
|
|
||||||
|
Before Width: | Height: | Size: 5.0 KiB |
|
Before Width: | Height: | Size: 123 KiB |
|
Before Width: | Height: | Size: 106 KiB |
|
Before Width: | Height: | Size: 65 KiB |
|
Before Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 58 KiB |
@@ -1 +0,0 @@
|
|||||||
Auth is a FOSS authenticator app that provides end-to-end encrypted backups for your 2FA secrets.
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
Ente Auth
|
|
||||||
|
Before Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 9.2 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 2.8 KiB |
|
Before Width: | Height: | Size: 126 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 134 KiB |
BIN
auth/android/app/src/main/res/drawable-night-hdpi/splash.png
Normal file
|
After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 52 KiB |
BIN
auth/android/app/src/main/res/drawable-night-mdpi/splash.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 70 B |
|
Before Width: | Height: | Size: 253 KiB |
BIN
auth/android/app/src/main/res/drawable-night-xhdpi/splash.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 635 KiB |
BIN
auth/android/app/src/main/res/drawable-night-xxhdpi/splash.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 1.1 MiB |
BIN
auth/android/app/src/main/res/drawable-night-xxxhdpi/splash.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 70 B |
|
Before Width: | Height: | Size: 69 B After Width: | Height: | Size: 68 B |
|
Before Width: | Height: | Size: 253 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 3.9 KiB |
|
Before Width: | Height: | Size: 237 KiB After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 635 KiB |
|
Before Width: | Height: | Size: 51 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 6.2 KiB |