GithubHelp home page GithubHelp logo

pool-of-tears / myne Goto Github PK

View Code? Open in Web Editor NEW
906.0 7.0 54.0 11.74 MB

An android app to download & read ebooks from Project Gutenberg, built with Jetpack Compose.

License: Apache License 2.0

Kotlin 100.00%
android android-app books gutenberg-ebooks kotlin-android mvvm-architecture kotlin-coroutines ebook-downloader jetpack-android jetpack-compose

myne's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

myne's Issues

Myne 1.4.0 Crashes immediately - 2 different fones

Myne 1.4.0 Crashes almost immediately

Activity swirl for a second or 3 .. then crash
Tried tapping on different bottom buttons Home ___ Library ___,
no difference.

2 different fones:

Sams s5 andriod 6.0.1

MotoEdge2022 andriod 12

Add inbuilt epub reader.

Add a basic yet functional inbuilt ebook reader while also having option to open epub files with other apps.

Use launced effect to make API calls with viewmodels

Currently we are calling methods to load API data directly in composeables, it can may cause duplicate API requests whenever screen recomposes due to any changes in mutable states the screen is observing, this can be solved by making API calls inside scope of LaunchedEffect with a fixed key eg: true, which will not change on recompositions and avoid duplicate API calls.

Optimize Library Screen

When there are lots of item in book library fetching and validating epub files can take quite sometime and blocks the main thread, which can cause choppy animations and make UI feel laggy. This can be fixed by moving file validation code inside viewmodel's coroutine scope and adding a kind of progress bar in library screen while it's validating ebook files.

[Bug]: Fix some crashes in few cases when network is unavailable

Steps to reproduce

  1. when opening book from library when it's not opened before and device is disconnected from the internet.
  2. when changing book catalogue language while devjce is disconnected from the network.

Expected behaviour

Shouldn't crash and open book normally in 1st scenario, whereas should show network error screen instead of crash on 2nd case.

Actual behaviour

Crashes in both cases as of now.

Device name

Redmi Note 9 Pro

Android version

Android 13

Myne version

1.8.0

Device logs

Current date: 2023-04-01 07:48:33 
Device: Xiaomi Redmi Note 10 Lite 
OS version: Android 13 (SDK 33) 
 
Stack trace:  
java.lang.NullPointerException: Attempt to invoke virtual method 'java.util.List com.starry.myne.api.models.BookSet.getBooks()' on a null object reference
	at com.starry.myne.ui.screens.home.viewmodels.HomeViewModel$g.k(SourceFile:8)
	at com.starry.myne.ui.screens.home.viewmodels.HomeViewModel$g.S(SourceFile:24)
	at b8.e.a(SourceFile:164)
	at b8.e$a.k(Unknown Source:11)
	at j9.a.t(Unknown Source:8)
	at hc.k0.run(Unknown Source:100)
	at android.os.Handler.handleCallback(Handler.java:942)
	at android.os.Handler.dispatchMessage(Handler.java:99)
	at android.os.Looper.loopOnce(Looper.java:201)
	at android.os.Looper.loop(Looper.java:288)
	at android.app.ActivityThread.main(ActivityThread.java:7913)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:942)

Additional information

N/A

[crash report] crash while trying to open ebook from kvaesitso launcher

Build version: 2.4.0
Current date: 2023-08-15 22:30:01
Device: OnePlus GM1911
OS version: Android 13 (SDK 33)

Stack trace:
java.io.FileNotFoundException: /external_files/Books/meditations emperor-of rome marcus aurelius hays.epub: open failed: ENOENT (No such file or directory)
at libcore.io.IoBridge.open(IoBridge.java:574)
at java.io.FileInputStream.(FileInputStream.java:160)
at java.io.FileInputStream.(FileInputStream.java:115)
at z7.d$b.k(Unknown Source:7)
at z7.d$b.r0(Unknown Source:12)
at ac.x.v(Unknown Source:4)
at a4.a.q0(Unknown Source:71)
at z7.d.a(Unknown Source:67)
at q8.f.k(Unknown Source:39)
at m9.a.q(Unknown Source:8)
at lc.k0.run(Unknown Source:100)
at kotlinx.coroutines.internal.f.run(Unknown Source:11)
at kotlinx.coroutines.scheduling.j.run(Unknown Source:2)
at kotlinx.coroutines.scheduling.a$a.run(Unknown Source:78)
Suppressed: b5.e: [s1{Cancelling}@4a088b5, Dispatchers.IO]
Caused by: android.system.ErrnoException: open failed: ENOENT (No such file or directory)
at libcore.io.Linux.open(Native Method)
at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
at libcore.io.BlockGuardOs.open(BlockGuardOs.java:274)
at libcore.io.ForwardingOs.open(ForwardingOs.java:563)
at android.app.ActivityThread$AndroidOs.open(ActivityThread.java:7808)
at libcore.io.IoBridge.open(IoBridge.java:560)
... 13 more

When I try to open an ebook from the launcher, myne crashes instantly.

Option to change the default storage location of the downloaded files

As title suggest, It would be nice if it can be implemented or atleast change the default storage location to somewhere in Home directory(or whatever it's called in android) rather than in Download or Documents.
I request this because I sync them to another system with syncthing & don't want directories that don't use regularly to be in there, since the books can be read from inside Myne & we can always copy the files if we need them somewhere else.

Permission denied while creating a new PR

Hi,

I make the Spanish translations for the app but when I tried to push the changes, my push was rejected

remote: Permission to Pool-Of-Tears/Myne.git denied to Dolanpls.
fatal: unable to access 'https://github.com/Pool-Of-Tears/Myne.git/': The requested URL returned error: 403

I'm in a new branch called 'spanish-translation' so I'm not trying to push into 'main' directly

[Bug]: When I want to read a book I got error

Steps to reproduce

  1. when click on book (Home, Search)
  2. Go to new page (waiting page)
  3. vanish waiting page
  4. did not shown the book page and I have a restart app error like the picture
drawing

Expected behaviour

show the book screen for reading

Actual behaviour

I sow this

for every books I take this error
drawing

Device name

Xiaomi M2010J19CI

Android version

Android 12

Myne version

2.6.0

Device logs

Build version: 2.6.0 
Current date: 2023-11-06 18:54:23 
Device: Xiaomi M2010J19CI 
OS version: Android 12 (SDK 31) 
 
Stack trace:  
org.json.JSONException: Value <!DOCTYPE of type java.lang.String cannot be converted to JSONObject
 at org.json.JSON.typeMismatch(JSON.java:112)
 at org.json.JSONObject.<init>(JSONObject.java:172)
 at org.json.JSONObject.<init>(JSONObject.java:185)
 at q7.j.f(Unknown Source:7)
 at q7.d.a(Unknown Source:23)
 at kc.g.run(Unknown Source:42)
 at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
 at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:644)
 at java.lang.Thread.run(Thread.java:1012)

Additional information

No response

[Bug]: Crash on Importing of epub docs on Android

Steps to reproduce

  • Go to location of downloaded .epub file, in this case it was internal storage>downloads>MyneEbooks
  • open .epub file

Expected behaviour

Epub file will open and can be read

Actual behaviour

App crashes immediately

Device name

Samsung Galaxy 23

Android version

Android 14

Myne version

2.8.0

Device logs

Build version: 2.8.0
Current date: 2024-01-26 14:01:32
Device: Samsung SM-S916U
OS version: Android 14 (SDK 34)

Stack trace:
java.lang.Exception: .opf metadata title tag missing
at s7.h.l(Unknown Source:862)
at g9.a.s(Unknown Source:8)
at ec.f0.run(Unknown Source:112)
at lc.a.run(Unknown Source:91)
Suppressed: jc.f: [p1{Cancelling}@8343a91, Dispatchers.IO]

Additional information

The .epub file was lifted from https://archive.org/details/RMCG0002

[Feature Request] Show book thematics on book page

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

Book thematics are shown on the scrollable book list but aren't on the book page. I thought maybe i could see the whole list of thematics it fell into but i couldn't.

Describe the solution you'd like

Show the categories/thematics on the book page.

How will you/everyone benefit from this feature?

Seeing some information on the book list and not on the book page is misleading, so people won't be mislead.

Additional context

At first i thought these categories might be explorable, might be available filters for my search. Couldn't find if they were, but ran into this issue nonetheless!

What for is usesCleartextTraffic needed?

I've just noticed your app has the android:usesCleartextTraffic flag set – which is only needed if you have to access sites without SSL/https. As Gutenberg supports HTTPS, I wonder what for the flag needs to be declared. Can you please shed some light? Thanks in advance!

For people who are facing crash when launching the app on latest release (v1.1.1)

Problem

This is happening because apparently the gutendex API the app uses seems to be down, see garethbjohnson/gutendex#28

Solution

  • You can either wait for gutendex API to come back online
  • Or you could use this APK which is a development build of upcoming release where I've switched to my own instance of gutendex API hosted on my personal server.

Myne-v1.2.0-alpha.apk

I'll keep this issue open until next release or until gutendex API comes back online.

[Feature Request] Add different sources for books

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

Gutenberg has a lack of selection

Describe the solution you'd like

Add ability to use custom sources for books

How will you/everyone benefit from this feature?

This will greatly increase the scope of the application

Additional context

No response

Improve google books mapping

Try to improve mapping between google books API and Gutenberg further by manually investigating some book titles and adjusting parameters accordingly.

External book

If it is possible, add opportunity to open epub, fb2, or other formats. All these formats contain metadata to display names, authors, and book covers.

NPE when downloding "Tractatus Logico-Philosophicus"

When i try to download "Tractatus Logico-Philosophicus" I get a null pointer exception.

Device Android-10
Manufacturer LG

App 1.4.0 (2023-03-11) downloaded from izzy repository

Also reproducable with current sourcecode (as of 2023-03-15) build from https://github.com/Pool-Of-Tears/Myne/

reason: in BookDownloader.kt:51         val uri = Uri.parse(book.formats.applicationepubzip)
applicationepubzip is null

Book(id=5740, title=Tractatus Logico-Philosophicus, authors=[Author(name=Wittgenstein, Ludwig, birthYear=1889, deathYear=1951)], translators=[Translator(name=Ogden, C. K. (Charles Kay), birthYear=1889, deathYear=1957)], subjects=[Language and languages -- Philosophy, Logic, Symbolic and mathematical], bookshelves=[DE Sachbuch, Mathematics, Philosophy], languages=[de, en], copyright=false, mediaType=Text, formats=Formats(textplain=null, applicationxMobipocketEbook=null, texthtml=null, applicationoctetStream=https://www.gutenberg.org/files/5740/5740-page-images/f0001.png, textplainCharsetusAscii=null, applicationepubzip=null, imagejpeg=https://www.gutenberg.org/cache/epub/5740/pg5740.cover.medium.jpg, applicationrdfxml=https://www.gutenberg.org/ebooks/5740.rdf, texthtmlCharsetiso88591=null, texthtmlCharsetutf8=null, textplainCharsetutf8=null, textplainCharsetiso88591=null), downloadCount=4386)


Logcat

2023-03-15 13:03:40.331 13563-13563 MainActivity::Storage   com.starry.myne.dev                  D  Permission is granted
2023-03-15 13:03:40.366 13563-13563 AndroidRuntime          com.starry.myne.dev                  E  FATAL EXCEPTION: main
Process: com.starry.myne.dev, PID: 13563
java.lang.NullPointerException: uriString
	at android.net.Uri$StringUri.(Uri.java:496)
	at android.net.Uri$StringUri.(Uri.java:486)
	at android.net.Uri.parse(Uri.java:458)
	at com.starry.myne.others.BookDownloader.downloadBook(BookDownloader.kt:51)
	at com.starry.myne.ui.screens.home.viewmodels.BookDetailViewModel.downloadBook(BookDetailViewModel.kt:82)
	at com.starry.myne.ui.screens.home.composables.BookDetailScreenKt$BookDetailScreen$2$1$4$3.invoke(BookDetailScreen.kt:336)
	at com.starry.myne.ui.screens.home.composables.BookDetailScreenKt$BookDetailScreen$2$1$4$3.invoke(BookDetailScreen.kt:300)
	at com.starry.myne.ui.screens.home.composables.BookDetailScreenKt$MiddleBar$1$3$1.invoke(BookDetailScreen.kt:522)
	at com.starry.myne.ui.screens.home.composables.BookDetailScreenKt$MiddleBar$1$3$1.invoke(BookDetailScreen.kt:522)
	at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke-k-4lQ0M(Clickable.kt:167)
	at androidx.compose.foundation.ClickableKt$clickable$4$gesture$1$1$2.invoke(Clickable.kt:156)
	at androidx.compose.foundation.gestures.TapGestureDetectorKt$detectTapAndPress$2$1.invokeSuspend(TapGestureDetector.kt:255)
	at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
	at kotlinx.coroutines.DispatchedTaskKt.resume(DispatchedTask.kt:178)
	at kotlinx.coroutines.DispatchedTaskKt.dispatch(DispatchedTask.kt:166)
	at kotlinx.coroutines.CancellableContinuationImpl.dispatchResume(CancellableContinuationImpl.kt:397)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl(CancellableContinuationImpl.kt:431)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeImpl$default(CancellableContinuationImpl.kt:420)
	at kotlinx.coroutines.CancellableContinuationImpl.resumeWith(CancellableContinuationImpl.kt:328)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter$PointerEventHandlerCoroutine.offerPointerEvent(SuspendingPointerInputFilter.kt:566)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.dispatchPointerEvent(SuspendingPointerInputFilter.kt:456)
	at androidx.compose.ui.input.pointer.SuspendingPointerInputFilter.onPointerEvent-H0pRuoY(SuspendingPointerInputFilter.kt:469)
	at androidx.compose.ui.node.BackwardsCompatNode.onPointerEvent-H0pRuoY(BackwardsCompatNode.kt:374)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:314)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.Node.dispatchMainEventPass(HitPathTracker.kt:301)
	at androidx.compose.ui.input.pointer.NodeParent.dispatchMainEventPass(HitPathTracker.kt:183)
	at androidx.compose.ui.input.pointer.HitPathTracker.dispatchChanges(HitPathTracker.kt:102)
	at androidx.compose.ui.input.pointer.PointerInputEventProcessor.process-BIzXfog(PointerInputEventProcessor.kt:98)
	at androidx.compose.ui.platform.AndroidComposeView.sendMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1357)
	at androidx.compose.ui.platform.AndroidComposeView.handleMotionEvent-8iAsVTc(AndroidComposeView.android.kt:1303)
	at androidx.compose.ui.platform.AndroidComposeView.dispatchTouchEvent(AndroidComposeView.android.kt:1242)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
2023-03-15 13:03:40.370 13563-13563 AndroidRuntime          com.starry.myne.dev                  E  	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
	at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:3142)
	at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2834)
	at com.android.internal.policy.DecorView.superDispatchTouchEvent(DecorView.java:495)
	at com.android.internal.policy.PhoneWindow.superDispatchTouchEvent(PhoneWindow.java:1868)
	at android.app.Activity.dispatchTouchEvent(Activity.java:4022)
	at androidx.appcompat.view.WindowCallbackWrapper.dispatchTouchEvent(WindowCallbackWrapper.java:70)
	at com.android.internal.policy.DecorView.dispatchTouchEvent(DecorView.java:453)
	at android.view.View.dispatchPointerEvent(View.java:14261)
	at android.view.ViewRootImpl$ViewPostImeInputStage.processPointerEvent(ViewRootImpl.java:5919)
	at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:5722)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5169)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5222)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5188)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5196)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5169)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5222)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5188)
	at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5344)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5196)
	at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5401)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5169)
	at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5222)
	at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5188)
	at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5196)
	at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5169)
	at android.view.ViewRootImpl.deliverInputEvent(ViewRootImpl.java:8018)
	at android.view.ViewRootImpl.doProcessInputEvents(ViewRootImpl.java:7985)
	at android.view.ViewRootImpl.enqueueInputEvent(ViewRootImpl.java:7946)
	at android.view.ViewRootImpl$WindowInputEventReceiver.onInputEvent(ViewRootImpl.java:8172)
	at android.view.InputEventReceiver.dispatchInputEvent(InputEventReceiver.java:189)
	at android.os.MessageQueue.nativePollOnce(Native Method)
	at android.os.MessageQueue.next(MessageQueue.java:336)
	at android.os.Looper.loop(Looper.java:174)
	at android.app.ActivityThread.main(ActivityThread.java:7615)
	at java.lang.reflect.Method.invoke(Native Method)
	at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:964)
	Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: [androidx.compose.ui.platform.MotionDurationScaleImpl@1411474, androidx.compose.runtime.BroadcastFrameClock@2a93d9d, StandaloneCoroutine{Cancelling}@7434212, AndroidUiDispatcher@1b0cde3]

[Bug]: Accessibility labels for bottom tab navigation are missing

Steps to reproduce

  1. Turn on the TalkBack service in Android accessibility settings.
  2. Open Myne
  3. Highlight any of the items in the bottom navigation bar to let TalkBack read their label.

Expected behaviour

TalkBack should read a useful label for each item, e.g. categories, downloads and settings.

Actual behaviour

The screen reader only recognizes a label for the start item. The other items in the navigation are spoken as "unknown" or some nonsense text, in case that automatic icon descriptions are enabled in TalkBack's settings.

Device name

Google Pixel 6

Android version

Android 14

Myne version

2.9.0

Device logs

No response

Additional information

No response

Additional sources

Standard Ebooks provides project gutenberg books with standardized formatting, various editorial tweaks, and rich metadata. They also provide OPDS feeds to browse their collection. Apparently, this is locked behind a Patreon donation, but Foliate sources from SE so I assume they make an exception for FOSS projects.

Link: https://standardebooks.org/

[Bug] Long book names on book page are cut

Steps to reproduce

  1. find a book with a long name
  2. open its book page
  3. see how its title is not rendered in full

Expected behaviour

The title of a book shold always be rendered in full.

Actual behaviour

Well, it isnt'.
Some names are even too long for landscape mode:
Screenshot_20231001-165354
Screenshot_20231001-165235

Device name

No response

Android version

Android 11

Myne version

1.5.0

Device logs

No response

Additional information

No response

App crashes when loading book list after update to 1.1.0

After update to 1.1.0, when opening the home page or a category page the loading spinner appears for a while then the app crashes. If I switch to the main category page, library page, or settings page quick enough the crash does not occur.

Android 13/One UI 5

TTS

Through the system TTS engine, read the book aloud

[Bug]: "Material You" button flashes

Steps to reproduce

  1. have ane Android 11 device
  2. tap the "Material You" button in the options
  3. see bug

Expected behaviour

The message (i believe it's called a toast box or something ?) should stay long enough on the screen for the user to read it.

Actual behaviour

A message appears for a flash second while the button is seemingly activated, but disapears as soon as the button appears to revert back to its inactivated state.

Device name

No response

Android version

Android 11

Myne version

1.5.0

Device logs

No response

Additional information

It might be because the message is automatically hidden when the app "reverts" back the buton and UI to its previous state, although it didn't change the UI to begin with.

Multiple downloads

Hello,

Long time i was looking for an app like this one, so thank you !

Do you plan to add possibility to download multiple ebooks by author and language ?

[Feature Request] Bionic Reading

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

Some ppl can't focus while reading, this feature helps some to focus.

What is Bionic Reading?

Describe the solution you'd like

A Setting to Enable/Disable Bionic Reading

How will you/everyone benefit from this feature?

Bionic Reading is a nice to have feature.
Millions of people have also been reacting to bionic reading on social media, and many people with dyslexia and ADHD have said bionic reading helps them focus.

Additional context

No response

[UX enhancement] language sort is hidden when search bar is open

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

I coudn't find the language button for a while when familarizing myself with UI

Version 2.8.1 from f droid

The search bar stays open beetween changing states home <-> categories and doesn't reveal the language sort

Describe the solution you'd like

Language button isn't hidden when searching

Other worse solutions:

Change language on start up and change in the settings

Collapse search bar on screen transitions

How will you/everyone benefit from this feature?

It will be less confusing on first experience

Additional context

  1. Love the look and the design. 2) Love the name

[Bug]: Internal reader randomly scrolling to the beginning of the book

Steps to reproduce

Sometimes, it feels quite random, the internal reader scrolls to the beginning of the book. Maybe I'm doing something accidently with touch movements, but I wasn't able to reliably reproduce the behavior. It happened twice to me in two days.
This in combination of the lack of a progress indicator makes the internal reader almost unusable for me.

Expected behaviour

Only scroll to the beginning of the book in well defined cases and don't let such an action be easily triggered on accident.

Actual behaviour

It scrolls to the beginning of the book unexpectedly.

Device name

OnePlus 7T

Android version

LineageOS 21

Myne version

3.0.0

Device logs

No response

Additional information

No response

[Feature Request] LibriVox Integration

This is very nice client for accessing books available in public domain. Adding support for Public Domain Audiobooks could really improve the app further.

Add some indicator of progress for the book such as scroll bar, percentage completed, pages read etc.

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

The internal reader of the app doesn't give any indication of how far we have progressed within the book.

Describe the solution you'd like

One of the following:

  • percentage of the book that we have read so far
  • number of pages that we have read / total no. of pages

How will you/everyone benefit from this feature?

It will let me and everyone else know how far they have progressed within the book and how much of the book is still left to be read.

Additional context

The internal reader of the app looks really nice so I would prefer to use it instead lf just switching to some external reader.

[Feature Request] Remember downloaded/seen ebooks

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

I was searching for tales myths and legends and dovnloaded a good bunch of books. Unfortunately i couldn't remember which ones i did download…

Describe the solution you'd like

The app could remember which ebook pages have been seen, or even downloaded.
This could be seen both on the ebook list and ebook page with an eye icon 👁️ for a page seen, and a dowload icon 📥✅ for downloaded ones.

Further down the line, it could even become a sorting filter to hide seen/downloaded ebooks.

How will you/everyone benefit from this feature?

This will help anyone willing to read new books to sort out the ones they have already seen before.

Additional context

No response

[Feature Request] Font Family

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

i think the default reading font is terrible, at least it's hard to read for me.

Describe the solution you'd like

more Font Family like Inter, OpenDylexia, Arial and Device Fonts.

How will you/everyone benefit from this feature?

Customizabilty, some can just use the font that works the best for them. / Better Readabilty.

Additional context

No response

[Feature Request] Search by thematics

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

As i understand it, the search engine only allows searching by author and title, but i wanted to search about thematics.
For example i want books about astrology, but if i search for astrology, there is only wne book that pops up, which contains Astrology in its name, whereas if i search for stars or constellation i can see many books with Astrology labeled as one of the thematics fwr these books.

Describe the solution you'd like

Being able to search by thematics.

How will you/everyone benefit from this feature?

More search option will allow us to discover even more books and fulfill more precise needs.

Additional context

No response

allow sorting by language

hi! the app is beautiful, yet im missing books with other languages

maybe i just cant find it, but i cant sort by language or generally read any books that are not in english

gutenberg.org i.e. does have russian books but theyre not in myne

would be cool if this was a feature, thanks!

[Feature Request] Add sepia theme for eye comfort

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

Reading digital content often causes eye strain, especially during low-light conditions. The app lacks a sepia theme option, which is known to reduce eye strain while maintaining readability.

Describe the solution you'd like

Requesting a sepia theme for the app. Sepia tones offer a soothing reading experience, imitating aged paper and providing a comfortable contrast between text and background.

How will you/everyone benefit from this feature?

Users who read extensively, especially at night, will benefit from reduced eye strain. The sepia theme offers a visually appealing and comfortable reading experience, aligning with current trends for eye-friendly interfaces.

Additional context

Research supports sepia themes for minimizing blue light's negative effects on sleep patterns. Adding this feature could enhance user satisfaction, attract more users, and increase app usage.

[Feature Request] Keep language selection

Checklist

  • This issue contains only one feature request. I will open one issue for every feature I want to request.
  • I checked, but didn't find any duplicates (open OR closed) of this issue in the repo.
  • This feature is merely an UI/UX update.
  • This feature is not going to conflict with many of the existing features/options.

Is your feature request related to a problem? Please describe.

Language selection is not kept while the app is relaunched

Describe the solution you'd like

I would like that language selection could be maintained between different sessions

How will you/everyone benefit from this feature?

We would not have to change the selection everytime we use the app

Additional context

Thanks for job already done !

(And sorry for my English)

Unit Testing

Add some unit tests for backend stuffs like API class, paginator, epub parser etc.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.