Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
839d9a3
Add Inbox Capture template and ML Kit handwriting recognition
jshph Mar 9, 2026
2facb6c
Add on-exit sync: recognize inbox handwriting and write to Obsidian v…
jshph Mar 9, 2026
07748bc
Add inbox capture UI: tag selection, vault scanning, settings, and ex…
jshph Mar 9, 2026
3a8f26b
Simplify UI to atomic capture workflow: collapsible tags, fix dead zo…
jshph Mar 9, 2026
658bc74
Improve handwriting recognition: line segmentation, WritingArea, and …
jshph Mar 9, 2026
c7c21d9
Fix RecognitionContext: preContext is required, not optional
jshph Mar 9, 2026
3573fce
Add release signing docs and gitignore keystore files
jshph Mar 9, 2026
9044c8b
Make tag suggestions reactive and add release build notes
jshph Mar 9, 2026
9153d4f
Fix fountain pen default, pressure curve, and stroke rendering consis…
jshph Mar 9, 2026
3fc9f08
Capture real pen timestamps for handwriting recognition
jshph Mar 9, 2026
eb061a2
Fix accidental toolbar button hits on capture pages
jshph Mar 9, 2026
3941b50
Navigate back instantly on save, sync in background
jshph Mar 9, 2026
ba45869
Replace ML Kit with Onyx HWR (MyScript) for handwriting recognition
jshph Mar 9, 2026
e20d0a5
Replace custom stroke rendering with Jetpack Ink API
jshph Mar 9, 2026
e8de639
Replace bottom toolbar with left-edge sidebar, add annotation box system
jshph Mar 9, 2026
706f9c8
Fix sidebar touch, annotation rendering, eraser, and HWR integration
jshph Mar 9, 2026
2f1e367
Render annotation overlays as [[ ]] brackets and # glyphs, fix HWR sy…
jshph Mar 10, 2026
df58035
Rewrite README for Obsidian-specific fork
jshph Mar 10, 2026
5d6956d
Add decorative header and knowledge curation shoutouts to README
jshph Mar 10, 2026
b3ffefd
Add annotation undo/redo, fix glyph clipping, improve HWR sync fallba…
jshph Mar 10, 2026
51010bd
Release v0.1.12
jshph Mar 10, 2026
8bdbb36
Fix printVersionName CI task polluted by signing config output
jshph Mar 10, 2026
79c13ed
Fix invisible strokes caused by Ink API rejecting duplicate point tim…
Mar 15, 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
77 changes: 21 additions & 56 deletions .github/workflows/preview.yml
Original file line number Diff line number Diff line change
@@ -1,78 +1,43 @@
name: Build and Release Preview
name: Build Preview

on:
push:
branches: ["dev"]
branches: ['main']
paths:
- 'app/**'
workflow_dispatch:

env:
MAVEN_OPTS: >-
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: set up JDK 18
uses: actions/setup-java@v3
with:
java-version: "18"
distribution: "temurin"
# cache: gradle
- uses: actions/checkout@v4

- uses: gradle/gradle-build-action@v2
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
gradle-version: 8.5
java-version: '17'
distribution: 'temurin'

- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@v1.1
with:
fileDir: "./secrets"
fileName: "my.keystore"
encodedString: ${{ secrets.KEYSTORE_FILE }}
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Remove `google-services.json`
run: rm ${{ github.workspace }}/app/google-services.json
- name: Build debug APK
run: ./gradlew -PIS_NEXT=true assembleDebug

- name: Decode and Replace `google-services.json`
env:
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CONFIG }}
- name: Rename APK
run: |
echo $FIREBASE_CONFIG | base64 --decode > ${{ github.workspace }}/app/google-services.json
wc -l ${{ github.workspace }}/app/google-services.json
mv app/build/outputs/apk/debug/app-debug.apk \
app/build/outputs/apk/debug/notable-next.apk

- name: Execute Gradle build
run: |
export STORE_FILE="../${{ steps.decode_keystore.outputs.filePath }}"
export STORE_PASSWORD="${{ secrets.KEYSTORE_PASSWORD }}"
export KEY_ALIAS="${{ secrets.KEY_ALIAS }}"
export KEY_PASSWORD="${{ secrets.KEY_PASSWORD }}"
export SHIPBOOK_APP_ID="${{ secrets.SHIPBOOK_APP_ID }}"
export SHIPBOOK_APP_KEY="${{ secrets.SHIPBOOK_APP_KEY }}"

./gradlew \
-PIS_NEXT=true \
assembleDebug

# - name: Cache Gradle packages
# uses: actions/cache@v1
# with:
# path: ~/.gradle/caches
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
# restore-keys: ${{ runner.os }}-gradle

- run: mv ${{ github.workspace }}/app/build/outputs/apk/debug/app-debug.apk ${{ github.workspace }}/app/build/outputs/apk/debug/notable-next.apk

- name: Release
uses: softprops/action-gh-release@v1
- name: Update preview release
uses: softprops/action-gh-release@v2
with:
files: ${{ github.workspace }}/app/build/outputs/apk/debug/notable-next.apk
files: app/build/outputs/apk/debug/notable-next.apk
tag_name: next
name: next
prerelease: true
body: "Preview version built from branch: ${{ github.ref_name }}"
token: ${{ secrets.TOKEN }}
body: "Preview build from ${{ github.sha }}"
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
102 changes: 35 additions & 67 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
@@ -1,91 +1,59 @@
name: Build and Release Version
name: Build and Release

on:
push:
tags:
- 'v*'
workflow_dispatch:

env:
MAVEN_OPTS: >-
-Dmaven.wagon.httpconnectionManager.ttlSeconds=120

jobs:
build:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v3
- name: set up JDK 18
uses: actions/setup-java@v3
with:
java-version: "18"
distribution: "temurin"
# cache: gradle
- uses: actions/checkout@v4

- uses: gradle/gradle-build-action@v2
- name: Set up JDK 17
uses: actions/setup-java@v4
with:
gradle-version: 8.5
java-version: '17'
distribution: 'temurin'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4

- name: Decode Keystore
id: decode_keystore
uses: timheuer/base64-to-file@v1.1
uses: timheuer/base64-to-file@v1.2
with:
fileDir: "./secrets"
fileName: "my.keystore"
fileDir: './secrets'
fileName: 'notable-release.jks'
encodedString: ${{ secrets.KEYSTORE_FILE }}

- name: Decode and Replace `google-services.json`
env:
FIREBASE_CONFIG: ${{ secrets.FIREBASE_CONFIG }}
run: |
echo $FIREBASE_CONFIG | base64 --decode > ${{ github.workspace }}/app/google-services.json

- name: Execute Gradle build
env:
STORE_FILE: ${{ github.workspace }}/secrets/my.keystore
STORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
SHIPBOOK_APP_ID: ${{ secrets.SHIPBOOK_APP_ID }}
SHIPBOOK_APP_KEY: ${{ secrets.SHIPBOOK_APP_KEY }}
run: |
./gradlew assembleRelease \
-PSTORE_FILE="$STORE_FILE" \
-PSTORE_PASSWORD="$STORE_PASSWORD" \
-PKEY_ALIAS="$KEY_ALIAS" \
-PKEY_PASSWORD="$KEY_PASSWORD"



# - name: Cache Gradle packages
# uses: actions/cache@v1
# with:
# path: ~/.gradle/caches
# key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
# restore-keys: ${{ runner.os }}-gradle

- name: Verify APK Files
run: find ${{ github.workspace }}/app/build/outputs/apk/ -name "*.apk"

- name: Retrieve Version
- name: Build signed release APK
env:
STORE_FILE: ${{ github.workspace }}/secrets/my.keystore
STORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.RELEASE_KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.RELEASE_KEY_PASSWORD }}
SHIPBOOK_APP_ID: ${{ secrets.SHIPBOOK_APP_ID }}
SHIPBOOK_APP_KEY: ${{ secrets.SHIPBOOK_APP_KEY }}
STORE_FILE: ${{ github.workspace }}/secrets/notable-release.jks
STORE_PASSWORD: ${{ secrets.STORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
run: ./gradlew assembleRelease

- name: Get version name
id: version
run: |
./gradlew -q printVersionName
VERSION_NAME=$(./gradlew -q printVersionName)
echo "VERSION_NAME=$VERSION_NAME" >> $GITHUB_ENV
id: android_version

echo "VERSION_NAME=$VERSION_NAME" >> "$GITHUB_OUTPUT"

- name: Rename APK
run: mv ${{ github.workspace }}/app/build/outputs/apk/release/app-release.apk ${{ github.workspace }}/app/build/outputs/apk/release/notable-${{ env.VERSION_NAME }}.apk
run: |
mv app/build/outputs/apk/release/app-release.apk \
app/build/outputs/apk/release/notable-${{ steps.version.outputs.VERSION_NAME }}.apk

- name: Release
uses: softprops/action-gh-release@v1
- name: Create GitHub Release
uses: softprops/action-gh-release@v2
with:
files: ${{ github.workspace }}/app/build/outputs/apk/release/notable-${{ env.VERSION_NAME }}.apk
tag_name: v${{env.VERSION_NAME}}
token: ${{ secrets.TOKEN }}
files: app/build/outputs/apk/release/notable-${{ steps.version.outputs.VERSION_NAME }}.apk
tag_name: ${{ github.ref_name }}
generate_release_notes: true
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,4 @@
.externalNativeBuild
.cxx
local.properties
*.jks
Loading