General improvements (#151)

* Updated folder synchronization logic and redesigned the file type filter dialog.

* Fixed CFI generation and navigation stability in the EPUB reader.

* Improved CFI scrolling and position calculation in the EPUB reader by implementing text node traversal using `TreeWalker`. This ensures accurate positioning and scrolling when a CFI offset spans multiple fragmented text nodes.

* fix fb2 multiline titles, retain footnotes, and prevent stream leaks

- Fix FB2 titles with multiple paragraphs by inserting breaks/spaces
- Prevent resource leaks by properly closing InputStreams in all importers
- Retain "notes" and "comments" sections in FB2 instead of skipping them
- Add support for FB2 poem, stanza, cite, and link tags

* Implement persistence for zoom and pan states when pan lock is enabled in the PDF reader.

* Added `FileTypeBadge` to home and library screens

* Bump version to 1.0.41(42)
This commit is contained in:
Aryan 2026-04-05 10:36:44 +05:30 committed by GitHub
parent 65e0570d0e
commit 26692d2c05
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
14 changed files with 747 additions and 664 deletions

View file

@ -630,21 +630,15 @@ fun RecentFileCard(
.fallback(placeholder).crossfade(true).build(),
contentDescription = item.displayName,
contentScale = ContentScale.Crop,
modifier = Modifier
.height(160.dp)
.fillMaxWidth(),
modifier = Modifier.height(160.dp).fillMaxWidth(),
)
if (item.sourceFolderUri != null) {
Box(
modifier = Modifier
.align(Alignment.TopEnd)
.padding(8.dp)
.background(
modifier = Modifier.align(Alignment.TopEnd).padding(8.dp).background(
color = MaterialTheme.colorScheme.secondaryContainer,
shape = CircleShape
)
.padding(4.dp)
).padding(4.dp)
) {
Icon(
imageVector = Icons.Default.Folder,
@ -658,14 +652,10 @@ fun RecentFileCard(
val isOpdsStream = item.uriString?.startsWith("opds-pse://") == true
if (isOpdsStream) {
Box(
modifier = Modifier
.align(Alignment.TopEnd)
.padding(8.dp)
.background(
modifier = Modifier.align(Alignment.TopEnd).padding(8.dp).background(
color = MaterialTheme.colorScheme.tertiaryContainer,
shape = CircleShape
)
.padding(4.dp)
).padding(4.dp)
) {
Icon(
imageVector = Icons.Default.Cloud,
@ -678,14 +668,10 @@ fun RecentFileCard(
if (isPinned) {
Box(
modifier = Modifier
.align(Alignment.TopStart)
.padding(8.dp)
.background(
modifier = Modifier.align(Alignment.TopStart).padding(8.dp).background(
color = MaterialTheme.colorScheme.primaryContainer,
shape = CircleShape
)
.padding(4.dp)
).padding(4.dp)
) {
Icon(
imageVector = Icons.Default.PushPin,
@ -715,6 +701,11 @@ fun RecentFileCard(
}
}
}
Box(
modifier = Modifier.align(Alignment.BottomEnd).padding(8.dp)
) {
FileTypeBadge(type = item.type, overlay = true)
}
}
Column(