Commit Graph

327 Commits

Author SHA1 Message Date
astrodad
b4e95a3cc1 Feature/update date finished integration (#895)
* Fixed issue with not updating the book finished date when updating read status
* Added ability to set a date finished after setting the book status to Read.

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-08-12 14:42:51 -06:00
aditya.chandel
c3b2940f36 Enhanced book "Finished On" functionality 2025-08-11 22:23:07 -06:00
astrodad
53aae8bb42 Feature/update date finished date (#873)
* Fixed issue with not updating the book finished date when updating read status
* Added ability to set a date finished after setting the book status to Read.

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-08-11 21:33:47 -06:00
aditya.chandel
dd7453fae1 Implement file moving based on library naming rules, falling back to app defaults 2025-08-11 16:59:42 -06:00
aditya.chandel
978bd05b1e Add per-library customizable file naming patterns 2025-08-10 11:27:28 -06:00
aditya.chandel
b1508493cf Implement live progress tracking for bulk metadata refresh (remaining books, status, cancel support) 2025-08-10 00:28:20 -06:00
aditya.chandel
2c078716bf Fix memory leak in bulk metadata refresh process 2025-08-09 18:30:29 -06:00
aditya.chandel
f794babdb4 Improve support component 2025-08-09 09:40:55 -06:00
aditya.chandel
e9cbc36768 Update Frontend and Backend Dependencies - August 2025 2025-08-09 01:04:18 -06:00
aditya.chandel
fb5a70c7e7 Allow book upload GUI to upload into Bookdrop 2025-08-09 00:50:50 -06:00
astrodad
a2a0ec9e7c Fixed issue with not updating the book finished date when updating read status
Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-08-08 20:00:49 -06:00
aditya.chandel
850ecb0b0c Improve version checking 2025-08-08 19:54:58 -06:00
Aditya Chandel
9ae1c6e2dc Add koreader sync support for book progress tracking 2025-08-08 09:38:20 -06:00
Aditya Chandel
ac798d05b5 Enhance Comicvine metadata parsing and error handling (#835) 2025-08-06 14:23:51 -06:00
aditya.chandel
504c777eec Fix comicvine 2025-08-06 11:47:03 -06:00
Louis-André Labadie
7d006355c7 Feat: ForwardAuth user creation follows OIDC library attribution preferences (#805)
* ForwardAuth user provisioning: Assign default permissions when available

* Add forward auth mention in README + details in a separate doc

Add Forward Auth docs

* Fix: PermissionDeleteBooks → PermissionDeleteBook

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-08-06 11:30:46 -06:00
Rprasad2400
46f86deb24 Feature: Add Comicvine to metadata providers. (#804)
* added comcivine
* updated comicvine schema
* added comic vine support
* changed SQL changes
* fixed init provider bug
* updated changes for Flyway migration.

---------

Co-authored-by: Aditya Chandel <8075870+adityachandelgit@users.noreply.github.com>
2025-08-06 11:29:12 -06:00
aditya.chandel
225824b6f5 Enhance icon picker UI and usability 2025-08-05 17:53:41 -06:00
aditya.chandel
1edc5f21f4 fix: refresh magic shelves after moving book to muggle shelf to reflect read status 2025-08-05 14:24:04 -06:00
aditya.chandel
f69110c164 feat(bookdrop): add full pagination support with select-all and metadata caching
- Implemented backend pagination for Bookdrop file review
- Updated finalizeImport logic to support select-all with excluded IDs
- Handled partial metadata submission from frontend
- Refactored chunk processing and logging for clarity
- Enhanced frontend Bookdrop UI with paginated selection, metadata sync, and virtual scroll compatibility
- Improved UX for bulk finalize and discard actions
2025-08-05 12:34:44 -06:00
astrodad
21f23ca6a2 Feature: Add support for recording when a book is finished, so that users can create Magic Shelves based on this information. (#803)
* Added migration for new field in user_book_progress table
* Added ability to set date finished when book status changes to read, and reset date finished when book status changes to another value
* Added ability to use date published in a Magic Shelf
2025-08-04 21:12:19 -06:00
Alberto Paro
95bc88feea fix: limit author name to 255 characters as in table (#801) 2025-08-04 20:43:43 -06:00
aditya.chandel
63518b7eb8 Implement magic shelves with dynamic rule-based filters 2025-07-28 07:59:00 -06:00
Alexander Puzynia
a5003cb2aa style(services): remove unused usings
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-23 14:11:27 -06:00
Alexander Puzynia
c1796769dc style(services): remove unused usings
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-23 14:11:27 -06:00
Alexander Puzynia
0cfec8bcd8 style(services): remove unused usings
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2025-07-23 14:11:27 -06:00
Alexander Puzynia
f4207cf9b3 refactor(services): update BookFileProcessor to use BookFileType for processor retrieval 2025-07-23 14:11:27 -06:00
Alexander Puzynia
3f23e4a3eb refactor(services): add LibraryFileProcessorRegistry to get processor based on scan mode 2025-07-23 14:11:27 -06:00
Alexander Puzynia
d6c3c8e4c6 test(service): add unit tests for FileAsBookProcessor to validate library file processing 2025-07-23 14:11:27 -06:00
Alexander Puzynia
31e4ae2972 refactor(service): integrate BookFileProcessorRegistry for handling multiple book file formats 2025-07-23 14:11:27 -06:00
Alexander Puzynia
3d17159c59 refactor(services): add common BookFileProcessorRegistry for all current and future book file processors 2025-07-23 14:11:27 -06:00
Alexander Puzynia
b7a17e1405 refactor(service): use full path instead of just name to sync book files 2025-07-23 14:11:27 -06:00
Alexander Puzynia
c9e05b1c28 refactor(library): extract processLibraryFiles into separate FileAsBookProcessor class 2025-07-23 14:11:27 -06:00
Alexander Puzynia
f084bb1da6 refactor(library): remove checked IOException 2025-07-23 14:11:27 -06:00
Alexander Puzynia
395fcca80d refactor(api/services): don't scan library files twice on rescan 2025-07-23 14:11:27 -06:00
Alexander Puzynia
2e7bad742b File processing minor refactoring (#751)
* refactor(service): remove finishAndReturnBook to avoid hash calculation twice
* refactor(service): remove forceProcess argument cause it always passed as false
* refactor(services): merge FileProcessor into BookFileProcessor
2025-07-23 12:15:13 -06:00
aditya.chandel
a15eb8684f Fix incorrect file path resolution when using {currentFilename} in naming pattern 2025-07-21 23:09:42 -06:00
aditya.chandel
4fe00e3bce Fix scheduled library rescan failing due to missing authentication 2025-07-21 18:42:27 -06:00
rahairston
a8ba708477 Adding minor code to Fix file permissions on Upload (#752)
Adding permission changes to temp file to allow proper upload
2025-07-21 09:25:22 -06:00
aditya.chandel
177528e640 Implement Bookdrop: Watch folder for file drops and auto-process uploads 2025-07-19 11:05:59 -06:00
aditya.chandel
c0e993c37a Add support for updating read status of multiple books at once 2025-07-14 10:31:32 -06:00
aditya.chandel
77d68108ab Add support for bulk reading progress reset 2025-07-14 09:19:22 -06:00
aditya.chandel
116f0c950e Implement interactive metadata review for batch updates, with progress tracking and a unified notification system 2025-07-13 23:32:08 -06:00
Juror2372
6576f3351a Update EmailService.java
# Enhanced Email Service: SSL Support and Extended Timeouts

## Problem Statement

The current `EmailService` has two significant limitations:

1. **Hardcoded short timeouts (15 seconds)** that cause failures with slow SMTP servers, particularly cPanel and shared hosting providers
2. **Missing SSL support** for port 465 connections - only STARTTLS is supported

This results in timeout errors when using SMTP servers that require longer response times or SSL connections.

## Changes Made

### 1. Extended Timeouts
- **Increased default timeouts from 15 seconds to 60 seconds**
- Added configurable timeouts via system properties
- Added write timeout configuration (previously missing)

**Before:**
```java
mailProps.put("mail.smtp.connectiontimeout", 15000);  // 15 seconds
mailProps.put("mail.smtp.timeout", 15000);            // 15 seconds
```

**After:**
```java
mailProps.put("mail.smtp.connectiontimeout", 60000);  // 60 seconds
mailProps.put("mail.smtp.timeout", 60000);            // 60 seconds  
mailProps.put("mail.smtp.writetimeout", 60000);       // 60 seconds (new)
```

### 2. Full SSL Support
- **Added SSL configuration for port 465**
- **Auto-detection based on port and `ssl_enable` field**
- **Enhanced security with modern TLS protocols**

**New SSL Configuration:**
```java
mailProps.put("mail.transport.protocol", "smtps");
mailProps.put("mail.smtp.ssl.enable", "true");
mailProps.put("mail.smtp.ssl.trust", emailProvider.getHost());
mailProps.put("mail.smtp.ssl.protocols", "TLSv1.2,TLSv1.3");
```

### 3. Improved Connection Type Detection
- **Automatic detection** of SSL, STARTTLS, or plain connections
- **Support for `ssl_enable` database field**
- **Port-based auto-configuration** (465=SSL, 587=STARTTLS)

### 4. Enhanced Debugging and Logging
- **Configurable debug mode** via system properties
- **Detailed connection type logging**
- **Better error context** for troubleshooting

## Database Schema Compatibility

This enhancement works with the existing database schema and is **fully backward compatible**. It also supports the enhanced schema with `ssl_enable` and `connection_type` fields:

```sql
ALTER TABLE email_provider 
ADD COLUMN ssl_enable BOOLEAN NOT NULL DEFAULT FALSE,
ADD COLUMN connection_type VARCHAR(20) NOT NULL DEFAULT 'STARTTLS';
```

## Configuration Examples

### SSL (Port 465)
```
Host: smtp.gmail.com
Port: 465
ssl_enable: true
start_tls: false
```

### STARTTLS (Port 587) 
```
Host: smtp.gmail.com
Port: 587
ssl_enable: false
start_tls: true
```

### Auto-Detection
- **Port 465** → Automatically configured as SSL
- **Port 587 + start_tls=true** → Automatically configured as STARTTLS
- **ssl_enable=true** → Forces SSL regardless of port

## System Property Overrides

Timeouts can be customized via system properties:
```bash
-Dmail.smtp.connectiontimeout=30000
-Dmail.smtp.timeout=30000  
-Dmail.smtp.writetimeout=30000
-Dmail.debug=true
```

## Benefits

1. **Broader SMTP Server Compatibility** - Works with cPanel, Exchange, and slow SMTP servers
2. **Enhanced Security** - Full SSL support with modern TLS protocols
3. **Better Reliability** - Extended timeouts prevent premature failures
4. **Improved Debugging** - Better logging and configurable debug mode
5. **Backward Compatibility** - No breaking changes to existing configurations

## Testing

This enhancement has been tested with:
-  cPanel SMTP servers (both SSL and STARTTLS)
-  Gmail SMTP (ports 465 and 587)
-  Corporate Exchange servers
-  Various shared hosting providers

## Impact

- **Fixes timeout issues** with slow SMTP servers
- **Enables SSL email providers** that were previously unsupported  
- **Maintains full backward compatibility**
- **No database migration required** (but supports enhanced schema)

---

**This fix resolves timeout issues reported by users with cPanel and other slow SMTP providers while adding comprehensive SSL support for enhanced security.**
2025-07-13 00:39:51 -06:00
aditya.chandel
480eb92f7d Fix read status filter showing only “Unknown” with no results 2025-07-10 09:43:36 -06:00
aditya.chandel
ceac960943 Add ability to reset reading progress for a book 2025-07-08 17:33:19 -06:00
aditya.chandel
5afe0a1b0a feat: move read status tracking to per-user progress entity
- Removed global `readStatus` field from `BookEntity`
- Added `read_status` column to `UserBookProgressEntity` for per-user tracking
- Added Flyway migration to introduce `read_status` column to `user_book_progress`
2025-07-08 17:06:45 -06:00
aditya.chandel
2c72790334 Feature: add table column visibility configuration
- Introduced a multi-select dropdown for customizing visible columns in the book browser table
- Implemented per-user persistence using UserService settings
- Saved preferences include visibility and column order
- Ensured all available columns are listed even when hidden
2025-07-08 15:20:32 -06:00
aditya.chandel
8edf589f3d Fix 'Lock wait timeout exceeded exception' during library re-scan 2025-07-04 17:19:45 -06:00
aditya.chandel
841e359b92 Support File Move Operations with Watcher Refactor for Accurate Tracking 2025-07-04 11:19:23 -06:00