Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
148 commits
Select commit Hold shift + click to select a range
306f5b2
fix: install the right version of hermes compiler
CD-Z Apr 6, 2026
3de93c5
feat: migrate from rn community cli to rock (#1812)
CD-Z Apr 13, 2026
01596c0
fix: Apply active filters to chapter count display (Closes #1793) (#1…
Definisi Apr 13, 2026
2a919ec
chore: gitignore tsconfig.tsbuildinfo build cache (#1829)
tinywind May 3, 2026
b680a07
fix(browse): use gesture-handler Pressable in PluginListItem (#1828)
tinywind May 3, 2026
eafa545
Use novel refactor (#1838)
CD-Z May 6, 2026
8f47e8f
Theme switcher refactor (#1839)
CD-Z May 7, 2026
2cd5a97
fix: await database operations inside transactions (#1845)
VictorPersona May 10, 2026
25c93af
fix(reader): restore saved chapter progress from db if available (#1850)
Jaky-gh May 24, 2026
60f42ed
chore(build): patch @rock-js/plugin-metro for Windows compatibility (…
tinywind May 24, 2026
34be7a1
fix(native-file): prevent fatal crash when unlinking missing files (#…
tinywind May 24, 2026
57b9d41
fix(service): Correct Notification Throttle Logic in ServiceManager.s…
alirafiqmalik Jul 1, 2026
e8c5550
perf: Optimize Regex for Removing Extra Paragraph Spacing (#1872)
Palloxin Jul 1, 2026
54fedc2
fix(tts): Remove Leading and Trailing Quotes from Normalized Text (#1…
vikas-movva Jul 1, 2026
bbb2645
chore: Clean Reader Preview Content (#1867)
Palloxin Jul 1, 2026
5d996f1
feat(downloads): Make Chapter Download Cooldown Configurable (#1834)
tinywind Jul 1, 2026
93bc5e5
fix: Handle Missing MAL List Entries and Null Progress (Closes #1875)
rajarsheechatterjee Jul 1, 2026
52d5c99
fix: Order EPUB Chapters Across Paginated Pages (Closes #1762)
rajarsheechatterjee Jul 1, 2026
7abee71
test: Generate Debug Environment Variables In Testing Workflow
rajarsheechatterjee Jul 13, 2026
788f6ce
fix: Prevent Table Overflow and Clean Up CSS (#1876) (#1876)
Palloxin Jul 13, 2026
98a2a1d
feat: Implement Scanlator Filtering (#1864)
luigidotmoe Jul 15, 2026
4404494
fix(database): Repair Migration History For Scanlator Column
rajarsheechatterjee Jul 19, 2026
71da09e
feat(reader): Add Current Chapter Search (#1877)
Shisii Jul 19, 2026
02b6b98
fix: Prevent WebView Reset When Reader Settings Change (#1884)
Ecasept Jul 19, 2026
3e1e211
feat: Add Address Bar in WebView (#1870)
luigidotmoe Jul 19, 2026
e4cf64a
refactor: Migrate Background Tasks to Native Android Scheduling (#1889)
rajarsheechatterjee Jul 22, 2026
c3c891c
refactor: Migrate to Expo Managed Workflow (#1885)
CD-Z Jul 22, 2026
89c43c1
feat: Implement Time Tracking and Statistics (#1886)
Ecasept Jul 22, 2026
8c38f49
chore: Update AppState Test Setup And `pnpm` Configuration
rajarsheechatterjee Jul 22, 2026
9babe16
refactor: Remove React Native Background Actions Manifest Customization
rajarsheechatterjee Jul 22, 2026
d2385b8
Update build.yml
CD-Z Jul 22, 2026
4a4208e
feat: Add Time-Tracking Toggle and Inactivity Timeout (#1890)
Ecasept Jul 23, 2026
44c8e54
feat: Add Dynamic Material Theme Colors (Closes #1863)
rajarsheechatterjee Jul 23, 2026
ae34d7b
feat: Add Dynamic Preview APK Metadata
rajarsheechatterjee Jul 23, 2026
7f48a8b
refactor: Improve Plugins Screen UX and Code
rajarsheechatterjee Jul 23, 2026
a5a6e83
chore: Update `@legendapp/list` to 3.3.3
rajarsheechatterjee Jul 23, 2026
dfd620a
feat: Standardize Dialogs with Material 3 Patterns
rajarsheechatterjee Jul 23, 2026
a16ec87
perf: Optimize Novel Covers, Lists, and Chapter Groups
rajarsheechatterjee Jul 24, 2026
a421177
fix: Improve Category Badge Layout And Drag Reordering
rajarsheechatterjee Jul 24, 2026
4cb1890
feat: Add Nitro EPUB Exporter
rajarsheechatterjee Jul 24, 2026
269606e
fix: Resolve Nitro EPUB Import Alias
rajarsheechatterjee Jul 24, 2026
22a1efd
perf: Optimize React Native Skeleton Loading Components
rajarsheechatterjee Jul 24, 2026
1322065
feat: Add Variant-Specific Android App Icons
rajarsheechatterjee Jul 24, 2026
65e8610
refactor: Replace Bottom Navigation Shift With Fade
rajarsheechatterjee Jul 24, 2026
0a2a6c9
feat: Add Variant-Specific Android Splash Screens
rajarsheechatterjee Jul 24, 2026
916374b
refactor: Reorganize Repository Structure
rajarsheechatterjee Jul 24, 2026
14061d2
docs: Fix Title Case Headings, GitHub Capitalization, and E.g. Format…
amir-rezaei Jul 24, 2026
afc2027
fix: Restore Android Build Types For CI
rajarsheechatterjee Jul 24, 2026
9805da6
refactor: Optimize Novel Screen Performance And Architecture
rajarsheechatterjee Jul 24, 2026
17c891e
refactor: Standardize Bottom Sheet UX and Styling
rajarsheechatterjee Jul 24, 2026
d44ce74
docs: Fix Trailing Period, Organization Expansion, and Comma in `CONT…
amir-rezaei Jul 24, 2026
3d34658
feat: Add Material 3 Top Tab Indicators
rajarsheechatterjee Jul 24, 2026
e9f6bda
fix: Modernize Menu Styling And Outside-Tap Dismissal
rajarsheechatterjee Jul 24, 2026
0c85461
feat: Add MD3 Slider Component.
rajarsheechatterjee Jul 24, 2026
eb8dc6d
docs: Fix "Withoud" Typo in `CONTRIBUTING-NIX.md` (#1894)
amir-rezaei Jul 24, 2026
b96351e
docs: Fix Contraction and Missing Article in `TESTING.md` (#1895)
amir-rezaei Jul 24, 2026
74808f0
feat: Replace Legacy Media Controls with Nitro-Powered Playback (#1896)
rajarsheechatterjee Jul 24, 2026
58db035
fix: Restore Metro Reader Asset Middleware
rajarsheechatterjee Jul 25, 2026
4de8247
fix: Resolve Require Cycles And LegendList Render Updates
rajarsheechatterjee Jul 25, 2026
4dcf213
fix: Restore Reader Changes Reverted During Expo Migration
rajarsheechatterjee Jul 25, 2026
3d102a5
perf(reader): Cut Chapter Open Latency and Reading-Time Re-Renders (#…
rajarsheechatterjee Jul 25, 2026
5e62c36
feat: Add Library Settings And Category-Based Global Updates
rajarsheechatterjee Jul 25, 2026
732628c
feat: Add Date Format And Relative Timestamp Settings.
rajarsheechatterjee Jul 25, 2026
098782d
refactor: Simplify Settings Layout And Theme Selection
rajarsheechatterjee Jul 25, 2026
7af0911
feat: Add High-Resolution Android Flavor Assets
rajarsheechatterjee Jul 25, 2026
d02291c
feat: Remember Last Used Library Category
rajarsheechatterjee Jul 25, 2026
8ac628b
fix: Improve History Removal Flow.
rajarsheechatterjee Jul 25, 2026
7998454
feat: Add Parallel Library Updates Across Sources
rajarsheechatterjee Jul 25, 2026
6d2a9f8
fix: Prevent Slider Flicker After Release
rajarsheechatterjee Jul 25, 2026
c30441b
feat: Add Smart Library Update Filters
rajarsheechatterjee Jul 25, 2026
67d2c7c
feat: Add Collapsible TTS Controls And Stable Notification Progress
rajarsheechatterjee Jul 25, 2026
c9358b3
feat: Update Android Branding Assets
rajarsheechatterjee Jul 25, 2026
93fe04c
feat: Polish Reader Controls And Navigation
rajarsheechatterjee Jul 25, 2026
eac6ad5
feat: Improve Novel App Bar And EPUB Export UX
rajarsheechatterjee Jul 25, 2026
89cddf9
fix: Expand Discover Row Ripple
rajarsheechatterjee Jul 25, 2026
164f5d2
feat: Add Automatic Library Update Scheduling
rajarsheechatterjee Jul 25, 2026
4d98247
feat: Add Android DNS Over HTTPS Support
rajarsheechatterjee Jul 25, 2026
99c31d5
fix: Use MD3 Outline Variant For Tab Borders
rajarsheechatterjee Jul 26, 2026
6a7e90c
fix: Align Advanced Reader Tabs And Localize Actions
rajarsheechatterjee Jul 26, 2026
5cf7e15
feat: Add Reader Setting Descriptions
rajarsheechatterjee Jul 26, 2026
9b356ff
fix: Preserve Client IDs And Improve Environment Generation
rajarsheechatterjee Jul 26, 2026
f1dd4b7
feat: Improve Empty Chapter Reporting
rajarsheechatterjee Jul 26, 2026
138fdff
fix: Prevent Duplicate WebView Bottom Insets
rajarsheechatterjee Jul 26, 2026
6548e9a
fix: Improve Paged Reader Layout and Performance
rajarsheechatterjee Jul 26, 2026
cbe7d70
fix: Restore Collapsed TTS Button Interaction
rajarsheechatterjee Jul 26, 2026
97be48d
feat: Add Migration Review Options
rajarsheechatterjee Jul 26, 2026
e62868b
feat: Automate Draft Android Releases
rajarsheechatterjee Jul 26, 2026
ff12759
ci: Run Preview Builds Daily When Missing
rajarsheechatterjee Jul 26, 2026
52914b9
fix: Migrate Volume Button Events to Expo Listener API
rajarsheechatterjee Jul 26, 2026
8f53550
fix: Restore Tracker Search Requests
rajarsheechatterjee Jul 26, 2026
bd71611
feat: Improve Chapter Drawer And WebView App Bar
rajarsheechatterjee Jul 26, 2026
10b6042
feat: Add EPUB Export Progress Notifications
rajarsheechatterjee Jul 26, 2026
345d084
feat: Add Chapter Numbers To EPUB Titles (Closes #1405)
rajarsheechatterjee Jul 26, 2026
72bfcad
fix: Resolve Type and Lint Issues
CD-Z Jul 26, 2026
8b0a8dc
chore: Update Husky Pre-Commit and Pre-Push Hooks
CD-Z Jul 26, 2026
9d106a3
feat: Add Semantic Version Bump Selection
rajarsheechatterjee Jul 26, 2026
b53c91f
chore: Separate Jest And Type Check Workflows
rajarsheechatterjee Jul 26, 2026
7ddd934
fix: Handle Missing Tracker Client IDs
rajarsheechatterjee Jul 26, 2026
3d32ddd
fix: Improve Release Selection And APK Verification
rajarsheechatterjee Jul 26, 2026
87f602a
chore: Release v2.1.0
github-actions[bot] Jul 26, 2026
9783c4d
fix: Normalize Repository Back Navigation (#1905)
CD-Z Jul 26, 2026
6cd86d1
chore: Update Translations (#1906)
rajarsheechatterjee Jul 27, 2026
5eb5a55
fix: Repair Skipped Novel Counter Migrations
rajarsheechatterjee Jul 27, 2026
6d26438
test: Update Expected Database Migrations
rajarsheechatterjee Jul 27, 2026
936fd22
feat: Add Discord Notifications For Nightly Builds
rajarsheechatterjee Jul 27, 2026
72ef618
fix: Preserve Existing Data During Novel Counter Migration
rajarsheechatterjee Jul 27, 2026
31cb4b9
fix: Align Bottom Navigation With Material 3 Specs
rajarsheechatterjee Jul 27, 2026
ba25d5b
feat: Add Rozenite DevTools Integration (#1912)
CD-Z Jul 27, 2026
11117c1
feat: Add GitHub-Style Embed For Nightly Notifications
rajarsheechatterjee Jul 27, 2026
bd527a0
feat: Improve Backup Selection, Notifications, And Plugin Restore
rajarsheechatterjee Jul 27, 2026
89d715c
docs: Replace Beta Badge With Build Preview Status
rajarsheechatterjee Jul 27, 2026
648d210
feat: Add Parallel Task Queues With Per-Plugin Download Limits
rajarsheechatterjee Jul 27, 2026
ac1b2f5
feat: Add Durable Completion Notifications
rajarsheechatterjee Jul 27, 2026
594b078
fix: Harden Database Migration Recovery
rajarsheechatterjee Jul 28, 2026
f53546c
chore: Release v2.1.1
github-actions[bot] Jul 28, 2026
f71c9c8
fix: Ignore Discord Notifications Outside the Main Repository (#1923)
CD-Z Jul 28, 2026
0c35428
fix: Synchronize Library Updates And Optimize Import Refreshes
rajarsheechatterjee Jul 28, 2026
ee3a4f2
fix: Preserve Default Category After Reordering (Closes #1922)
rajarsheechatterjee Jul 28, 2026
ca24671
fix: Support Fork-Safe Preview Builds
rajarsheechatterjee Jul 28, 2026
5f45e4c
fix: Recover Interrupted Chapter Migrations
rajarsheechatterjee Jul 28, 2026
0ed7d87
fix: Prevent White Reader Drawer Seam
rajarsheechatterjee Jul 29, 2026
9612bf6
chore: Update Translations (#1928)
rajarsheechatterjee Jul 29, 2026
eb12bdf
fix: Prevent Novel Genre Rendering Crashes
rajarsheechatterjee Jul 29, 2026
ecc5b84
chore: Release v2.1.2
github-actions[bot] Jul 29, 2026
b7639ab
feat: Upload JavaScript Source Maps (#1924)
CD-Z Jul 29, 2026
bfb12b0
feat: Add Configurable Automatic Backup Scheduling
rajarsheechatterjee Jul 29, 2026
4dc933e
fix: Remove White Flash During Screen Transitions (Closes #1926) (#1927)
rajarsheechatterjee Jul 29, 2026
e75f4fb
feat: Add More Novel Statuses and Icons (#1931)
K1ngfish3r Jul 29, 2026
7610631
fix: Restore Midnight Dusk Chip Contrast (Closes #1939)
rajarsheechatterjee Jul 31, 2026
96fb52d
feat: Enhance Stats With Genre Taxonomy and Charts (#1919)
CD-Z Aug 1, 2026
c0877a9
feat: Add Ignorable App Update Notifications
rajarsheechatterjee Aug 1, 2026
c3260e8
fix: Resolve Chapter Download Queue and Removal Issues (Closes #1937)
rajarsheechatterjee Aug 1, 2026
b9d1abc
fix: Refresh Library Download Counts After Deletion
rajarsheechatterjee Aug 3, 2026
1388532
fix: Add Novels To Library When Setting Categories (Closes #1945)
rajarsheechatterjee Aug 3, 2026
91358ad
fix: Support All EPUB Image Formats (Closes #1946)
rajarsheechatterjee Aug 4, 2026
c3b75eb
fix: Migrate Plugin Bundles to Reliable Internal Storage
rajarsheechatterjee Aug 4, 2026
1eb8c58
fix: Prevent Library From Remaining in Loading State
rajarsheechatterjee Aug 4, 2026
23f9b18
fix: Refresh Updates Screen on Focus (Closes #1956)
rajarsheechatterjee Aug 4, 2026
e4246de
fix: Replace EPUB Exports Atomically With NativeFile (Closes #1954)
rajarsheechatterjee Aug 4, 2026
c3482a8
fix: Resolve Nitro EPUB Jest Alias
rajarsheechatterjee Aug 4, 2026
8a12529
fix: Prevent Update Clearing From Freezing App (Closes #1955)
rajarsheechatterjee Aug 4, 2026
675f19e
fix: Make Update Chapters Reactive and Remove Display Limit (Closes #…
rajarsheechatterjee Aug 4, 2026
197d867
fix: Resolve EPUB Cover Document Imports (Closes #1948)
rajarsheechatterjee Aug 4, 2026
57eca11
fix: Pass Library Status Through Novel Navigation
rajarsheechatterjee Aug 4, 2026
a727c22
fix: Optimize Novel Counter Migration
rajarsheechatterjee Aug 5, 2026
f69e5d6
chore: Update Translations (#1934)
rajarsheechatterjee Aug 5, 2026
3bf0251
fix: Restore Indonesian Translations
rajarsheechatterjee Aug 5, 2026
e0c89cd
fix: Neutralize Skeleton Loading Colors
rajarsheechatterjee Aug 5, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
3 changes: 0 additions & 3 deletions .eslintignore

This file was deleted.

30 changes: 0 additions & 30 deletions .eslintrc.js

This file was deleted.

4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/report_issue.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ body:
label: LNReader version
description: You can find your LNReader version in **More → About**.
placeholder: |
Example: "2.0.3"
Example: "2.1.2"
validations:
required: true

Expand Down Expand Up @@ -88,7 +88,7 @@ body:
required: true
- label: If this is an issue with a plugin, I should be opening an issue in the [plugins repository](https://github.com/lnreader/lnreader-plugins/issues/new/choose).
required: true
- label: I have updated the app to version **[2.0.3](https://github.com/lnreader/lnreader/releases/latest)**.
- label: I have updated the app to version **[2.1.2](https://github.com/lnreader/lnreader/releases/latest)**.
required: true
- label: I will fill out all of the requested information in this form.
required: true
2 changes: 1 addition & 1 deletion .github/ISSUE_TEMPLATE/request_feature.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ body:
required: true
- label: If this is an issue with a source, I should be opening an issue in the [sources repository](https://github.com/lnreader/lnreader-sources/issues/new/choose).
required: true
- label: I have updated the app to version **[2.0.3](https://github.com/lnreader/lnreader/releases/latest)**.
- label: I have updated the app to version **[2.1.2](https://github.com/lnreader/lnreader/releases/latest)**.
required: true
- label: I will fill out all of the requested information in this form.
required: true
240 changes: 177 additions & 63 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
@@ -1,94 +1,208 @@
name: Build
name: Build Preview

on:
push:
branches:
- master
schedule:
- cron: '30 0 * * *'
workflow_dispatch:

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions:
actions: read
contents: read

env:
CI: 'true'
EXPO_NO_TELEMETRY: '1'
NODE_ENV: 'production'

jobs:
check-preview:
name: Check Preview
runs-on: ubuntu-24.04
outputs:
should-build: ${{ steps.preview.outputs.should-build }}

steps:
- name: Check For Existing Preview
id: preview
uses: actions/github-script@v8
with:
script: |
if (context.eventName === 'workflow_dispatch') {
core.notice('Manual dispatch requested; building a new preview.')
core.setOutput('should-build', 'true')
return
}

const shortSha = context.sha.slice(0, 8)
const artifactName = `LNReader-${shortSha}`
const { data: { artifacts } } = await github.rest.actions.listArtifactsForRepo(
{
owner: context.repo.owner,
repo: context.repo.repo,
name: artifactName,
per_page: 100,
},
)
const previewExists = artifacts.some(
artifact =>
!artifact.expired &&
artifact.workflow_run?.head_sha === context.sha,
)

core.notice(
previewExists
? `A preview artifact already exists for ${shortSha}.`
: `No preview artifact exists for ${shortSha}; starting a build.`,
)
core.setOutput('should-build', String(!previewExists))

build-android:
name: Build App
runs-on: ubuntu-latest
name: APK
needs: check-preview
if: needs.check-preview.outputs.should-build == 'true'
runs-on: ubuntu-24.04
timeout-minutes: 60

steps:
- name: Checkout Repository
uses: actions/checkout@v4
uses: actions/checkout@v7
with:
fetch-depth: 0
persist-credentials: false

- name: Set Up pnpm
uses: pnpm/action-setup@v6

- name: Setup Node.js
uses: actions/setup-node@v4
- name: Set Up Node.js
uses: actions/setup-node@v7
with:
node-version: '20'
node-version: '22'
cache: pnpm
cache-dependency-path: pnpm-lock.yaml

- name: Setup pnpm
uses: pnpm/action-setup@v4
- name: Set Up Java
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: '17'

- name: Get pnpm Store Directory
shell: bash
- name: Install Dependencies
run: pnpm install --frozen-lockfile --prefer-offline

- name: Configure Release Environment
env:
MYANIMELIST_CLIENT_ID: ${{ vars.MYANIMELIST_CLIENT_ID }}
ANILIST_CLIENT_ID: ${{ vars.ANILIST_CLIENT_ID }}
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV
pnpm generate:env:release \
--build-type "GitHub Action" \
--node-env "production"

- name: Setup pnpm Cache
uses: actions/cache@v4
with:
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-pnpm-store-
- name: Generate Native Android Project
run: |
pnpm exec expo prebuild \
--platform android \
--clean \
--no-install \
--non-interactive

- name: Setup Java
uses: actions/setup-java@v4
- name: Configure Gradle
uses: gradle/actions/setup-gradle@v6
with:
distribution: 'zulu'
java-version: '17'
cache-provider: enhanced
cache-read-only: >-
${{ github.ref_name != github.event.repository.default_branch }}
cache-cleanup: on-success
add-job-summary: always

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false
- name: Generate Preview Metadata
run: |
short_sha="${GITHUB_SHA::8}"
base_version_name="$(node --print "require('./app.json').expo.version")"
base_version_code="$(node --print "require('./app.json').expo.android.versionCode")"

- name: Install Dependencies
run: pnpm install --frozen-lockfile
echo "PRERELEASE_VERSION_CODE=$((base_version_code + GITHUB_RUN_NUMBER))" >> "$GITHUB_ENV"
echo "PRERELEASE_VERSION_NAME=${base_version_name}-pre.r${GITHUB_RUN_NUMBER}.${short_sha}" >> "$GITHUB_ENV"
echo "PRERELEASE_ARTIFACT_NAME=LNReader-${short_sha}" >> "$GITHUB_ENV"
echo "PRERELEASE_APK_NAME=LNReader-r${GITHUB_RUN_NUMBER}-${short_sha}.apk" >> "$GITHUB_ENV"

- name: Create Environment File
run: |
cat > .env << EOF
MYANIMELIST_CLIENT_ID=${{ vars.MYANIMELIST_CLIENT_ID }}
ANILIST_CLIENT_ID=${{ vars.ANILIST_CLIENT_ID }}
GIT_HASH=$(git rev-parse --short HEAD)
RELEASE_DATE=$(date --utc +'%d/%m/%y %I:%M %p %Z')
BUILD_TYPE=Github Action
EOF

- name: Make Gradlew Executable
run: cd android && chmod +x ./gradlew

- name: Set Environment Variables
- name: Build Preview APK
working-directory: android
run: |
set -x
echo "COMMIT_COUNT=$(git rev-list --count HEAD)" >> $GITHUB_ENV
echo "COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV
mkdir -p app/build/intermediates/sourcemaps/react/preRelease

- name: Build Android Release
./gradlew :app:assemblePreRelease \
--build-cache \
--parallel \
-PpreReleaseVersionCode="$PRERELEASE_VERSION_CODE" \
-PpreReleaseVersionName="$PRERELEASE_VERSION_NAME" \
--stacktrace

mv \
app/build/outputs/apk/preRelease/app-preRelease.apk \
"app/build/outputs/apk/preRelease/$PRERELEASE_APK_NAME"

- name: Upload Preview Sourcemap
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRERELEASE_ARTIFACT_NAME }}-sourcemap
path: android/app/build/generated/sourcemaps/react/preRelease/index.android.bundle.map
if-no-files-found: error
retention-days: 14
compression-level: 0
- name: Upload Preview APK
id: upload-nightly
uses: actions/upload-artifact@v4
with:
name: ${{ env.PRERELEASE_ARTIFACT_NAME }}
path: android/app/build/outputs/apk/preRelease/${{ env.PRERELEASE_APK_NAME }}
if-no-files-found: error
retention-days: 14
compression-level: 0

- name: Check Discord Notification
id: discord
env:
COMMIT_COUNT: ${{ env.COMMIT_COUNT }}
COMMIT_ID: ${{ env.COMMIT_ID }}
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_NIGHTLY_WEBHOOK }}
run: |
sed -i 's/lnreader/lnreader-r${{ env.COMMIT_COUNT }}(${{ env.COMMIT_ID }})/g' android/app/src/main/res/values/strings.xml
cd android && ./gradlew assembleRelease -PcustomAppId=com.rajarsheechatterjee.LNReader.commit_${{ env.COMMIT_ID }} --build-cache
mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/LNReader-r${{ env.COMMIT_COUNT }}-${{ env.COMMIT_ID }}.apk
if [ -n "$DISCORD_WEBHOOK_URL" ]; then
echo "configured=true" >> "$GITHUB_OUTPUT"
else
echo "configured=false" >> "$GITHUB_OUTPUT"
fi

- name: Upload Release Artifact
- name: Notify Discord
if: steps.discord.outputs.configured == 'true'
env:
COMMIT_COUNT: ${{ env.COMMIT_COUNT }}
COMMIT_ID: ${{ env.COMMIT_ID }}
uses: actions/upload-artifact@v4
with:
name: LNReader-r${{ env.COMMIT_COUNT }}-${{ env.COMMIT_ID }}
path: android/app/build/outputs/apk/release/LNReader-r${{ env.COMMIT_COUNT }}-${{ env.COMMIT_ID }}.apk
retention-days: 30
DISCORD_WEBHOOK_URL: ${{ secrets.DISCORD_NIGHTLY_WEBHOOK }}
ARTIFACT_URL: ${{ steps.upload-nightly.outputs.artifact-url }}
run: |
short_sha="${GITHUB_SHA::8}"
message="[${GITHUB_REPOSITORY}] New nightly build published: \`${short_sha}\`"

payload=$(jq -n \
--arg title "$message" \
--arg url "$ARTIFACT_URL" \
'{
username: "GitHub",
avatar_url: "https://github.com/github.png",
embeds: [{
author: {
name: "github-actions[bot]",
icon_url: "https://github.com/github.png"
},
title: $title,
url: $url,
color: 3092790
}]
}')

curl --fail-with-body \
--request POST \
--header "Content-Type: application/json" \
--data "$payload" \
"$DISCORD_WEBHOOK_URL"
5 changes: 4 additions & 1 deletion .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ jobs:
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
node-version: '24'

- name: Setup pnpm
uses: pnpm/action-setup@v4
Expand All @@ -44,5 +44,8 @@ jobs:
- name: Install Dependencies
run: pnpm install --frozen-lockfile

- name: Generate Environment Variables
run: pnpm generate:env:debug

- name: Run ESLint
run: pnpm run lint
Loading