Skip to content
Closed

cdz #22

Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
80228ad
chore: Improve General Plugin DX (#1604)
ilonachan Oct 18, 2025
0dd9f2b
feat: Reimplement Local Backup Based on Self-Hosted Backup (#1603)
ilonachan Oct 18, 2025
64c027c
chore: Temporarily Disable Type Check
rajarsheechatterjee Oct 18, 2025
dcceea0
fix: Update Only the Selected Category During Category Update (#1594)
yammyy Oct 18, 2025
b216d37
chore: Update CI Workflows
rajarsheechatterjee Oct 18, 2025
8fcfd22
chore: Update CI Workflows
rajarsheechatterjee Oct 18, 2025
389fee8
chore: Update CI Workflows
rajarsheechatterjee Oct 18, 2025
a81b32a
chore: Update README
rajarsheechatterjee Oct 18, 2025
37969da
fix: Prevent Crash When App Is Closed During Onboarding (Closes #1517)
rajarsheechatterjee Oct 21, 2025
baabc07
fix: Search Functionality on History Screen (Closes #1418)
rajarsheechatterjee Oct 21, 2025
45174af
fix: Include Imported Entries in “Downloaded Only” Mode (Closes #1261)
rajarsheechatterjee Oct 21, 2025
4b1ff0e
fix: Skip Updating Imported Entries During Library Update (Closes #1404)
rajarsheechatterjee Oct 21, 2025
5a6f324
feat: Add Sort by Unread Chapters (Closes #1524)
rajarsheechatterjee Oct 21, 2025
ee7d96d
feat: Add System Theme Support, Yin & Yang Theme, and Adaptive Plugin…
rajarsheechatterjee Oct 21, 2025
1200b7f
fix: Make Advanced Section Scrollable (Closes #1513)
rajarsheechatterjee Oct 21, 2025
c06d6f9
feat: Add MangaUpdates Tracker (#1613)
rajarsheechatterjee Oct 22, 2025
d0e14d5
feat: Implement Multi-Tracker Support (Closes #1381)
rajarsheechatterjee Oct 22, 2025
f8d4f50
feat: Add Pinned Plugins and Refactor Plugin List Components
rajarsheechatterjee Oct 22, 2025
cc217e2
feat: Add Scroll-to-Top Functionality in Chapter List (Closes #1470)
rajarsheechatterjee Oct 22, 2025
4e1a67e
fix: Refactor and Fix EPUB Export (Closes #1611)
rajarsheechatterjee Oct 22, 2025
5b44156
feat: Add Toasts for Creating and Restoring Backups
rajarsheechatterjee Oct 22, 2025
8bdc86c
feat: Check for New Release Once Per Day
rajarsheechatterjee Oct 22, 2025
90160f7
fix: Miscellaneous Issues
rajarsheechatterjee Oct 22, 2025
259dd6a
feat: Fetch All Chapters for EPUB Export and Add Range Selection
rajarsheechatterjee Oct 22, 2025
3785ddd
feat: Add Drag and Drop Support in Categories Screen
rajarsheechatterjee Oct 22, 2025
10b90de
feat: Replace FlashList with LegendList (Closes #1589)
rajarsheechatterjee Oct 22, 2025
fba8974
fix: Pass `imageRequestInit` at Missing Places
Rider21 Oct 22, 2025
f1c825f
feat: Implement Structured Database Migration System (#1621)
rajarsheechatterjee Oct 23, 2025
a800c98
feat: Revamp Reader Settings UI (#1612)
rajarsheechatterjee Oct 23, 2025
4236037
chore: Switch to PNPM and Rename Scripts
rajarsheechatterjee Oct 23, 2025
969572b
chore: Remove Unnecessary PNPM Setup Option
rajarsheechatterjee Oct 23, 2025
4de059d
chore: Add Missing Gradle Plugin
rajarsheechatterjee Oct 23, 2025
8f0c39a
chore: Update Kotlin Version to 2.1.20
rajarsheechatterjee Oct 23, 2025
c9eb42f
chore: Upgrade React Native to 0.81
rajarsheechatterjee Oct 23, 2025
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
Binary file added .github/readme-images/icon_new.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
99 changes: 44 additions & 55 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,34 +3,59 @@ on:
push:
branches:
- master
workflow_dispatch:

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

jobs:
build-android:
name: Build App
runs-on: ubuntu-latest
timeout-minutes: 60
steps:
- name: Clone Repository (Latest)
- name: Checkout Repository
uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: actions/setup-node@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Cache npm & node modules
- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Get pnpm Store Directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- name: Setup pnpm Cache
uses: actions/cache@v4
with:
path: |
~/.npm
node_modules
key: ${{ runner.os }}-cache-npm-${{ hashFiles('**/package-lock.json') }}
path: ${{ env.STORE_PATH }}
key: ${{ runner.os }}-pnpm-store-${{ hashFiles('**/pnpm-lock.yaml') }}
restore-keys: |
${{ runner.os }}-cache-npm-
${{ runner.os }}-pnpm-store-

- name: Setup Java
uses: actions/setup-java@v4
with:
distribution: 'zulu'
java-version: '17'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
with:
cache-read-only: false

- name: Install Dependencies
run: |
npm install
run: pnpm install --frozen-lockfile

- name: Create .env
- name: Create Environment File
run: |
cat > .env << EOF
MYANIMELIST_CLIENT_ID=${{ vars.MYANIMELIST_CLIENT_ID }}
Expand All @@ -40,66 +65,30 @@ jobs:
BUILD_TYPE=Github Action
EOF

- name: Cache Gradle Wrapper
uses: actions/cache@v4
with:
path: ~/.gradle/wrapper
key: ${{ runner.os }}-gradle-wrapper-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}

- name: Cache Gradle Dependencies
uses: actions/cache@v4
with:
path: ~/.gradle/caches
key: ${{ runner.os }}-gradle-caches-${{ hashFiles('gradle/wrapper/gradle-wrapper.properties') }}
restore-keys: |
${{ runner.os }}-gradle-caches-

- name: Cache build intermediates
uses: actions/cache@v4
with:
path: |
android/app/build/generated
android/app/build/intermediates
android/app/build/tmp
android/.gradle
key: ${{ runner.os }}-build-${{ hashFiles('package-lock.json') }}

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

- name: Build Android Release
run: |
cd android && ./gradlew assembleRelease --no-daemon
mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/LNReader.apk

- name: Set Env
- name: Set Environment Variables
run: |
set -x
echo "COMMIT_COUNT=$(git rev-list --count HEAD)" >> $GITHUB_ENV
echo "COMMIT_ID=$(git rev-parse --short HEAD)" >> $GITHUB_ENV

- name: Upload Artifact
env:
COMMIT_COUNT: ${{ env.COMMIT_COUNT }}
uses: actions/upload-artifact@v4
with:
name: LNReader-r${{ env.COMMIT_COUNT }}
path: android/app/build/outputs/apk/release/LNReader.apk

- name: Build Custom APK
- name: Build Android Release
env:
COMMIT_COUNT: ${{ env.COMMIT_COUNT }}
COMMIT_ID: ${{ env.COMMIT_ID }}
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 --no-daemon -PcustomAppId=com.rajarsheechatterjee.LNReader.commit_${{ env.COMMIT_ID }}
mv app/build/outputs/apk/release/app-release.apk app/build/outputs/apk/release/LNReader-r${{ env.COMMIT_COUNT }}\(${{ env.COMMIT_ID }}\)-customID.apk
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

- name: Upload Custom APK
- name: Upload Release Artifact
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 }})-customID
path: android/app/build/outputs/apk/release/LNReader-r${{ env.COMMIT_COUNT }}(${{ env.COMMIT_ID }})-customID.apk
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
36 changes: 31 additions & 5 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,16 +7,42 @@ on:
branches:
- master

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

jobs:
build:
name: ESLint
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install modules
run: npm install

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Get pnpm Store Directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- 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: Install Dependencies
run: pnpm install --frozen-lockfile

- name: Run ESLint
run: npm run lint
run: pnpm run lint
49 changes: 36 additions & 13 deletions .github/workflows/types.yml
Original file line number Diff line number Diff line change
@@ -1,22 +1,45 @@
name: Typescript
# Temporarily Disabled
name: Type Check
on:
push:
branches:
- master
pull_request:
branches:
- master
workflow_dispatch:
# push:
# branches:
# - master
# pull_request:
# branches:
# - master

jobs:
build:
name: Types Checking
name: Type Checking
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
- name: Checkout Repository
uses: actions/checkout@v4

- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
- name: Install modules
run: npm install

- name: Setup pnpm
uses: pnpm/action-setup@v4

- name: Get pnpm Store Directory
shell: bash
run: |
echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV

- 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: Install Dependencies
run: pnpm install --frozen-lockfile

- name: Check Types
run: npm run type-check
run: pnpm run type-check
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -82,5 +82,9 @@ web-build/
src/sources/en/generators/
*.lockb
*.lock
!pnpm-lock.yaml
.tool-versions
flake.lock

# pnpm
.pnpm-store
27 changes: 22 additions & 5 deletions App.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,18 @@ import { enableFreeze } from 'react-native-screens';

enableFreeze(true);

import React from 'react';
import React, { useEffect } from 'react';
import { StatusBar, StyleSheet } from 'react-native';
import { GestureHandlerRootView } from 'react-native-gesture-handler';
import LottieSplashScreen from 'react-native-lottie-splash-screen';
import { SafeAreaProvider } from 'react-native-safe-area-context';
import { Provider as PaperProvider } from 'react-native-paper';
import * as Notifications from 'expo-notifications';

import { createTables } from '@database/db';
import AppErrorBoundary from '@components/AppErrorBoundary/AppErrorBoundary';
import AppErrorBoundary, {
ErrorFallback,
} from '@components/AppErrorBoundary/AppErrorBoundary';
import { useDatabaseInitialization } from '@hooks';

import Main from './src/navigators/Main';
import { BottomSheetModalProvider } from '@gorhom/bottom-sheet';
Expand All @@ -27,10 +29,25 @@ Notifications.setNotificationHandler({
};
},
});
createTables();
LottieSplashScreen.hide();

const App = () => {
const { isDbReady, dbError, retryInitialization } =
useDatabaseInitialization();

useEffect(() => {
if (isDbReady || dbError) {
LottieSplashScreen.hide();
}
}, [isDbReady, dbError]);

if (dbError) {
return <ErrorFallback error={dbError} resetError={retryInitialization} />;
}

if (!isDbReady) {
return null;
}

return (
<GestureHandlerRootView style={styles.flex}>
<AppErrorBoundary>
Expand Down
Loading