Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
40 commits
Select commit Hold shift + click to select a range
41b6f3e
contextual push notifications. not complete
snake-eaterr Jan 30, 2026
3dfc75e
notif full terminator assess
shocknet-justin Jan 30, 2026
c3f11b7
full push notifications
snake-eaterr Feb 4, 2026
575dfdd
fix mistake in bridgeListener predicate
snake-eaterr Feb 5, 2026
4efeda5
sw fix
snake-eaterr Feb 5, 2026
3771dcd
revert
snake-eaterr Feb 5, 2026
d323e36
safari fixes
snake-eaterr Feb 5, 2026
75f5346
Revert "safari fixes"
snake-eaterr Feb 5, 2026
2d4d238
focus then postMessage
snake-eaterr Feb 5, 2026
a1ed462
prevent default
snake-eaterr Feb 5, 2026
df2d014
test
snake-eaterr Feb 5, 2026
4db27e7
remove testHelper
snake-eaterr Feb 5, 2026
aeedf5f
test
snake-eaterr Feb 6, 2026
8b3a620
web uses indexedDb instead of relying on service worker postMessage a…
snake-eaterr Feb 6, 2026
266f612
Revert "web uses indexedDb instead of relying on service worker postM…
snake-eaterr Feb 6, 2026
1cea189
test
snake-eaterr Feb 6, 2026
1c48e92
back
snake-eaterr Feb 6, 2026
d0e21cc
log native register
snake-eaterr Feb 6, 2026
0ad8415
fix
snake-eaterr Feb 6, 2026
6e5e6d6
AppDelegate.swift notifications set up
snake-eaterr Feb 6, 2026
c2917c6
test home safe area fix
snake-eaterr Feb 6, 2026
53d15b1
firebase in ios
snake-eaterr Feb 7, 2026
9c5c7b2
revert
snake-eaterr Feb 7, 2026
5fb831c
send page footer test
snake-eaterr Feb 7, 2026
d20b36b
capacitor config
snake-eaterr Feb 7, 2026
22f6299
dry
snake-eaterr Feb 8, 2026
9815339
alert stringified pushNotificationActionPerformed data
snake-eaterr Feb 8, 2026
c637287
remove alert
snake-eaterr Feb 8, 2026
c3f9305
cleaned logs
snake-eaterr Feb 17, 2026
c0a5e5d
gitignore clean
snake-eaterr Feb 19, 2026
f867727
ios changes for push-notifications
p-stam001 Feb 19, 2026
bf17f03
action writes google-services.json off of secret GOOGLE_SERVICES_JSON…
snake-eaterr Feb 19, 2026
6651bf8
run action
snake-eaterr Feb 19, 2026
e5afc0c
bundle build
snake-eaterr Feb 21, 2026
cd475b5
bundle action triggers on main push
snake-eaterr Feb 21, 2026
3c8a2a0
single action
snake-eaterr Feb 22, 2026
bd76648
remove http pub client stuff
snake-eaterr Feb 22, 2026
ec96962
upload apk artifact always
snake-eaterr Feb 22, 2026
06c9793
removed dead code
snake-eaterr Feb 26, 2026
9093c43
assert correct shape when reading back push from session storage
snake-eaterr Feb 26, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 31 additions & 3 deletions .github/workflows/android-build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -97,9 +97,18 @@ jobs:
- name: Make gradlew executable
run: chmod +x ./android/gradlew

- name: Build ionic, sync, build gradle
- name: Write google-services.json for push notifications
run: |
npm run android:release
echo "${{ secrets.GOOGLE_SERVICES_JSON_B64 }}" | base64 --decode > android/app/google-services.json

- name: Build ionic, sync, build gradle (APK always; AAB on release)
run: |
if [[ ${{ github.event_name }} == 'release' ]]; then
npm run android:release:apk:bundle
else
npm run android:release:apk
fi


- name: Check merged manifest
run: |
Expand Down Expand Up @@ -129,6 +138,25 @@ jobs:
$ANDROID_SDK_ROOT/build-tools/34.0.0/apksigner verify android/app/build/outputs/apk/release/${{ env.VITE_APP_NAME }}-${{ env.VERSION }}.apk
shell: bash

- name: Sign AAB with jarsigner
if: github.event_name == 'release'
run: |
UNSIGNED_AAB="android/app/build/outputs/bundle/release/app-release.aab"
SIGNED_AAB="android/app/build/outputs/bundle/release/${{ env.VITE_APP_NAME }}-${{ env.VERSION }}.aab"
cp "$UNSIGNED_AAB" "$SIGNED_AAB"
jarsigner -sigalg SHA256withRSA -digestalg SHA-256 \
-keystore my-release-key.keystore \
-storepass "${{ secrets.ANDROID_KEYSTORE_PASSWORD }}" \
-keypass "${{ secrets.ANDROID_KEY_PASSWORD }}" \
"$SIGNED_AAB" "${{ secrets.ANDROID_KEY_ALIAS }}"
shell: bash

- name: Verify AAB signature
if: github.event_name == 'release'
run: |
jarsigner -verify -verbose -certs android/app/build/outputs/bundle/release/${{ env.VITE_APP_NAME }}-${{ env.VERSION }}.aab
shell: bash

- name: Upload APK to GitHub Release
if: github.event_name == 'release'
uses: actions/upload-release-asset@v1
Expand All @@ -141,7 +169,6 @@ jobs:
asset_content_type: application/vnd.android.package-archive

- name: Upload APK as artifact
if: github.event_name == 'push'
uses: actions/upload-artifact@v4
with:
name: app-release-dev
Expand Down Expand Up @@ -187,3 +214,4 @@ jobs:
echo "ANDROID_SDK_ROOT: $ANDROID_SDK_ROOT"
echo "ANDROID_HOME: $ANDROID_HOME"
ls -R $ANDROID_SDK_ROOT || ls -R $ANDROID_HOME

39 changes: 17 additions & 22 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,12 @@
/node_modules
/.pnp
.pnp.js
package-lock.json
yarn.lock

# testing
/coverage

# production
/build
/dist

# misc
.specstory
Expand All @@ -19,38 +18,34 @@ yarn.lock
.env.development.local
.env.test.local
.env.production.local
/.nx
/.nx/cache
/.vscode/*
!/.vscode/extensions.json
.idea
dist/index.html
dist/*

.env
.env.development
.env.production
shocknet.keystore
android_key.base64
bundle-report.html


npm-debug.log*
yarn-debug.log*
yarn-error.log*


# Optional eslint cache
.eslintcache
.env
.env.development
.env.production

# build
android/app/src/main/AndroidManifest.xml
ios/App/App/Info.plist
ios/App/App/App.entitlements
shocknet.keystore
android/capacitor.settings.gradle
android/app/capacitor.build.gradle
android/app/release/output-metadata.json
android/app/src/main/AndroidManifest.xml
ios/App/App/Info.plist
ios/App/App/App.entitlements
bundle-report.html


# actions tests
act
event.json
run.log
android_key.base64

/dist


Loading
Loading