Rajarshee Chatterjee
ae8d055689
perf: Limit Chapter Neighbor Queries To One Row
Lint / ESLint (push) Has been cancelled
Tests / Jest (push) Has been cancelled
Type Check / TypeScript (push) Has been cancelled
2026-09-26 20:43:28 +05:30
trietng
1607f80a0a
feat: Add Volume Button Navigation and Slide Animation Settings for Paged Reading ( #2058 )
...
* feat: volume navigation and disable animation settings for paged reading
* fix: transition style removal
* fix: pageReader incorrect initialization
* fix: remove unneeded check
* chore: update Vietnamese translations for paged reading settings
2026-09-26 20:40:43 +05:30
github-actions[bot]
a0c20e209c
chore: Release v2.1.4
v2.1.4
2026-09-26 07:14:58 +00:00
Rajarshee Chatterjee
648477931b
feat: Add Version and Build Information to Error Fallback
2026-09-26 11:05:34 +05:30
Palloxin
e42e8f66f2
fix: Improve Code Editor Newline Regex ( #2021 )
...
* Code Editor, New Lines regex improvement
* Update SimpleCodeEditor.tsx
2026-09-25 11:15:13 +05:30
Palloxin
de5358727a
fix: Restore Broken Preview to Previous State ( #2004 )
...
* Fix broken preview
* Optimized base64 image (reduced)
* fix image base64
2026-09-25 11:06:24 +05:30
Rajarshee Chatterjee
706459783f
feat: Add Optional Continue Reading Buttons To Library
2026-09-23 18:55:51 +05:30
Patrick Loser
1ca9a679cf
perf: Optimize Background Task Memory Usage and Lifecycle Management ( #2059 )
...
* fix: bound background task memory usage
* Fix background task cancellation and updates
* Update TaskActionReceiver.kt
2026-09-23 18:41:50 +05:30
Rajarshee Chatterjee
920f88aee4
fix: Resolve Jest CI Failures
2026-09-23 12:08:49 +05:30
Rajarshee Chatterjee
cef3ae5bdf
feat: Polish Statistics Screen Layout
2026-09-23 11:53:50 +05:30
Rajarshee Chatterjee
39c788e576
feat: Improve Genre Taxonomy Screen UX
2026-09-23 11:26:21 +05:30
Rajarshee Chatterjee
d40713ac99
feat: Improve Custom Code UX
2026-09-23 10:41:38 +05:30
Rajarshee Chatterjee
f53bed7190
chore: Update Translations ( #1981 )
...
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* fix: Restore Overwritten Locale Translations
* New translations strings.json (Romanian)
[ci skip]
[ci skip]
* New translations strings.json (French)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Afrikaans)
[ci skip]
[ci skip]
* New translations strings.json (Arabic)
[ci skip]
[ci skip]
* New translations strings.json (Catalan)
[ci skip]
[ci skip]
* New translations strings.json (Czech)
[ci skip]
[ci skip]
* New translations strings.json (Korean)
[ci skip]
[ci skip]
* New translations strings.json (Indonesian)
[ci skip]
[ci skip]
* New translations strings.json (Danish)
[ci skip]
[ci skip]
* New translations strings.json (German)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Finnish)
[ci skip]
[ci skip]
* New translations strings.json (Hebrew)
[ci skip]
[ci skip]
* New translations strings.json (Hungarian)
[ci skip]
[ci skip]
* New translations strings.json (Italian)
[ci skip]
[ci skip]
* New translations strings.json (Japanese)
[ci skip]
[ci skip]
* New translations strings.json (Dutch)
[ci skip]
[ci skip]
* New translations strings.json (Norwegian)
[ci skip]
[ci skip]
* New translations strings.json (Polish)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* New translations strings.json (Albanian)
[ci skip]
[ci skip]
* New translations strings.json (Serbian (Cyrillic))
[ci skip]
[ci skip]
* New translations strings.json (Swedish)
[ci skip]
[ci skip]
* New translations strings.json (Turkish)
[ci skip]
[ci skip]
* New translations strings.json (Ukrainian)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Simplified)
[ci skip]
[ci skip]
* New translations strings.json (Chinese Traditional)
[ci skip]
[ci skip]
* New translations strings.json (Vietnamese)
[ci skip]
[ci skip]
* New translations strings.json (Portuguese, Brazilian)
[ci skip]
[ci skip]
* New translations strings.json (Hindi)
[ci skip]
[ci skip]
* New translations strings.json (Assamese)
[ci skip]
[ci skip]
* New translations strings.json (Odia)
[ci skip]
[ci skip]
* New translations strings.json (Spanish)
[ci skip]
[ci skip]
* New translations strings.json (Greek)
[ci skip]
[ci skip]
* New translations strings.json (Russian)
[ci skip]
[ci skip]
* fix: Restore Overwritten Locale Translations
2026-09-22 10:06:03 +05:30
Rajarshee Chatterjee
0b9c415681
fix: Prevent Chapter Drawer Blank Flash On Open ( Closes #2038 ) ( #2048 )
...
Opening the reader's chapter drawer flashed an empty panel before the
chapter list appeared, most visibly on slower devices.
Three things combined to cause it:
- The panel carried `backgroundColor: 'transparent'`, which overrode the
opaque default `react-native-drawer-layout` applies to its own
`styles.drawer`. Since `drawerStyle` is applied last in the panel's
style array, the panel had no background at all, so the reader showed
through it for every frame before the content painted. It now carries
the drawer's own `theme.surface`, matching what the content already
paints, so the panel is opaque from the first frame.
- The chapter list was mounted by the same handler that opened the
drawer, so the slide-in animation (UI thread) ran while the list was
still mounting and measuring (JS thread). The list is now mounted once
the chapter has loaded and interactions have settled, before the
drawer is first opened. A closed panel stays laid out -- it is only
translated off-screen -- so the list measures and renders its first
rows out of sight instead of during the animation.
- When the list mounted after the chapters arrived, it was scrolled to
the current chapter with an animation even though `initialScrollIndex`
had already placed it there, adding a second visible jump. That scroll
is now skipped on the initial mount and kept for later chapter
changes.
Claude-Session: https://claude.ai/code/session_01Et1ihq4SBUhfvxgWJisHTe
Co-authored-by: Claude <noreply@anthropic.com >
2026-09-22 09:15:02 +05:30
Rajarshee Chatterjee
38003c59e0
fix: Stop Bottom Nav Icons Trembling On Tab Press ( Closes #2041 ) ( #2047 )
...
The focused tab indicator animated `width` directly, which triggered layout every frame — Yoga's per-node pixel rounding then shifted the icon and label inconsistently as the width swept through fractional values, causing a visible tremble. Fixed by giving the icon a fixed-size box and animating the indicator via `scaleX` on an absolutely positioned sibling instead, since transforms don't trigger layout.
2026-09-22 08:23:58 +05:30
Rajarshee Chatterjee
f1119d8c30
feat: Add Always Ask Category Selection ( Closes #537 )
2026-09-16 10:14:29 +05:30
Rajarshee Chatterjee
a5e2b4d4f0
feat: Add Crash Log Collection And Sharing ( Closes #11 )
2026-09-15 14:16:51 +05:30
Rajarshee Chatterjee
a12cba030d
fix: Skip Dash-Only TTS Dividers
2026-09-15 13:38:39 +05:30
Rajarshee Chatterjee
56d1140aad
chore: Require Issue Templates
2026-09-14 08:44:15 +05:30
Rajarshee Chatterjee
0379141304
feat: Add Individual Task Cancellation ( Closes #1985 )
2026-09-11 18:41:51 +05:30
Rajarshee Chatterjee
b6e9f7157d
chore: Rename Feature Request Label
2026-09-08 07:03:28 +05:30
Rajarshee Chatterjee
edb3df719f
fix: Repair Invalid Default Category Names ( Closes #2031 )
2026-09-07 22:25:31 +05:30
Rajarshee Chatterjee
9bde3df74d
fix: Prevent Novel Screen Empty State Flash ( Closes #2034 )
2026-09-07 21:13:47 +05:30
Rajarshee Chatterjee
2426e6fe3e
chore: Lowercase Issue Template Labels
2026-09-07 20:49:59 +05:30
Rajarshee Chatterjee
93209abebd
fix: Make Backup Restore Non-Destructive ( Closes #2026 )
2026-09-07 20:43:20 +05:30
Claude
158786ccd5
fix: Prevent Crash in parseChapterNumber When Chapter or Novel Name Is Missing
...
Guards against undefined/null chapterName and novelName so
parseChapterNumber no longer throws "Cannot read property
'toLowerCase' of undefined" when rendering the Updates screen.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_011WW3AHpNPxoRVsbAMVRX6T
2026-09-02 19:15:46 +00:00
Patrick Loser
77be5624f2
feat: Add URL Novel Search and Intent-Based Novel Opening ( #1987 )
...
* Add native share intent handling module
* Handle shared URLs via intent handler
* i18n: add global search and novel error strings
Generated with omp (AI coding agent)
* novel store: track bootstrap failures as user-facing errors
Bootstrap failures no longer surface raw plugin/DB errors; missing novels map to a custom not-found message. Generated with omp (AI coding agent)
* novel screen: render error view when bootstrap fails
Shows a custom error with a back action instead of a blank screen, and hides the appbar actions in the error state. Generated with omp (AI coding agent)
* global search: never auto-navigate or search URL text
URLs are handled by the screen's explicit submit flow; navigation and search stay out of the hook. Generated with omp (AI coding agent)
* global search: add animated open-novel FAB with clipboard offer
Submit or FAB tap opens a matching URL's novel; unmatched URLs toast. The FAB floats above the keyboard via keyboard-controller and slides in from the right. Generated with omp (AI coding agent)
* fix review issues
* fix rebase issue
2026-09-01 18:59:32 +05:30
Rajarshee Chatterjee
4b580c90ef
fix: Prevent TTS From Speaking Surrounding Quotes ( Closes #2008 )
2026-08-29 11:41:59 +05:30
github-actions[bot]
cb1a5d9e82
chore: Release v2.1.3
v2.1.3
2026-08-22 06:13:17 +00:00
Mohammad
7e20f7dccb
feat: Increase Maximum Reader Text Size from 20 to 50 ( #1998 )
...
Increased maximum text size limit in Reader component, and settings page
2026-08-22 08:55:41 +05:30
Rajarshee Chatterjee
0fab0143b1
fix: Prevent Large EPUB Stalls And Optimize Imports
...
Closes #1932
Closes #2005
2026-08-22 08:41:48 +05:30
Rajarshee Chatterjee
5a0717d2c7
fix: Prevent Duplicate TTS Text From Nested Formatting ( Closes #1994 )
2026-08-18 11:50:06 +05:30
Patrick Loser
09652f9962
fix: Refetch Library After Category Update ( #1988 )
...
Add tests covering NovelScreenButtonGroup category assignment
flows to ensure the library is refreshed and the novel state
is updated when needed.
2026-08-18 09:28:07 +05:30
Rajarshee Chatterjee
eef58f212f
fix: Support Namespace-Prefixed EPUB Imports
2026-08-17 21:16:29 +05:30
Rajarshee Chatterjee
523aa90c19
fix: Include Novel Covers In Library Backups ( Closes #1983 )
2026-08-16 12:48:54 +05:30
Ahjie521
eb310f7821
feat: Add Empty Chapter Refresh in Reader ( #1978 )
...
* feat(reader): swipe down to re-fetch a chapter, never cache empty responses
- pull down at the top of a chapter to re-fetch it, recovering from
transient empty responses without leaving the reader
- empty responses are evicted from the chapter cache so a refresh
re-fetches instead of replaying the empty message
- add a refresh button to the reader's bottom bar and a 'Refresh
chapter' link on the empty-chapter message
- register the typescript-eslint plugin and ignore assets/ in the
eslint flat config so lint-staged can lint core.js
* feat(reader): move refresh option to appbar menu
2026-08-16 07:36:41 +05:30
Patrick Loser
af2a224781
fix: Novel Screen Scroll Lag, Source Pagination Stalls, and Skeleton Overlap ( #1971 )
...
* fix
* Update pnpm-lock.yaml
* fix tests
2026-08-16 07:34:17 +05:30
Rajarshee Chatterjee
990cd4f2eb
fix: Upgrade WorkManager for Repeated Library Updates ( Closes #1972 )
2026-08-11 15:58:51 +05:30
Rajarshee Chatterjee
3ac611f633
fix: Normalize EPUB SVG Images in Nitro Module ( Closes #1622 )
2026-08-11 14:51:50 +05:30
Rajarshee Chatterjee
909504a721
feat: Add Repository Enable And Disable Controls ( Closes #1628 )
2026-08-11 13:50:25 +05:30
Rajarshee Chatterjee
63349de1bb
fix: Select All Chapters Across Lazy-Loaded Batches ( Closes #1960 )
2026-08-11 11:58:18 +05:30
Rajarshee Chatterjee
c6679b7f41
fix: Draw Content Behind Android Navigation Bar ( Closes #1260 )
2026-08-11 11:53:03 +05:30
Ahjie521
15560b67b1
fix: Pass Plugin imageRequestInit Headers to Novel Detail Cover ( #1977 )
...
The novel detail header rendered its cover with a bare { uri } source,
so plugins whose cover CDN requires request headers (e.g. RanobeLib's
cover.cdnlibs.org, which 403s without a Referer) showed no cover on the
novel detail screen even though covers worked in browse/library lists.
Mirror the LibraryListView pattern: fetch getPlugin(novel.pluginId)?
.imageRequestInit and attach its headers to the cover source.
2026-08-11 08:26:12 +05:30
Alvan Noah
7883b28cd9
fix: Stop TTS During Incoming and Outgoing Phone Calls ( #1976 )
...
fix: TTS continues playing during incoming and outgoing phone calls
Implement audio focus handling for TTS playback on Android, including support for request and abandonment during playback and transient interruptions.
Closes #1975
2026-08-11 08:01:55 +05:30
Patrick Loser
64707409bb
feat: Create Dedicated Custom Code Settings Page V2 ( #1902 )
...
* init
* text modification without webview rerender
* Fix SettingsReaderScreen
* remove unneeded
* solve ts issue
* add tests
* Add KeyboardProvider
* Update SimpleCodeEditor.tsx
* fix ts error
* add types package
* reworked SimpleCodeEditor
* Preserve highlightmode
* Update SimpleCodeEditor.tsx
* performance improvement
* simplified
* fix tsc
* fix alignment issues
* load current snippet into example view
* Merge branch 'master' into custom-code-clean
* fix type + lint
* Resolve can't read property id of undefined error
---------
Co-authored-by: Rajarshee Chatterjee <rajarshee.adm@gmail.com >
2026-08-11 07:09:52 +05:30
Rajarshee Chatterjee
7f1f76408b
docs: Add AGENTS.md with Agent Setup, Commands, and Conventions ( #1974 )
2026-08-10 09:17:43 +05:30
Rajarshee Chatterjee
51560195ba
fix: Soften Skeleton Loading Colors ( Closes #1964 )
2026-08-10 08:25:10 +05:30
Rajarshee Chatterjee
084dcccabc
fix: Match Chapter Drawer Read Color ( Closes #1973 )
...
[skip ci]
2026-08-10 08:17:22 +05:30
Rajarshee Chatterjee
3ad6e372fd
fix: Correct Translation Strings Across Locales
2026-08-10 08:16:32 +05:30
Ali
179feb56ee
fix: Include All Chapters Beyond the 1000-Row UI Limit ( #1938 )
...
* chapter backup and restore fix
* Update .gitignore
Co-authored-by: Rajarshee Chatterjee <rajarshee.adm@gmail.com >
* test: update backup mocks for getAllNovelChaptersForBackup
---------
Co-authored-by: Rajarshee Chatterjee <rajarshee.adm@gmail.com >
2026-08-09 16:28:12 +05:30