762 Commits

Author SHA1 Message Date
06e58233b1 Progressive UI Refinements for Mobile and Desktop Layouts 2025-07-19 15:43:49 -06:00
fe2d307d2a Use 100dvh to fix layout issue in mobile devices 2025-07-19 14:37:45 -06:00
de005398df Adds Upload Status Label and Instructions for Book Uploads 2025-07-19 11:54:32 -06:00
28521bd757 Improve metadata editor layout 2025-07-19 11:28:32 -06:00
a6bc466083 Icon Changes
Changes all the logo assets to use #818CF8 as the primary color.
2025-07-19 11:06:35 -06:00
177528e640 Implement Bookdrop: Watch folder for file drops and auto-process uploads 2025-07-19 11:05:59 -06:00
5064706b8f Add option to update read status from book card menu 2025-07-14 12:01:28 -06:00
084509a974 Fix correct color rendering issue in Firefox light mode 2025-07-14 11:34:05 -06:00
6b75ea7d95 Restore “Page Count” field in book edit form 2025-07-14 10:56:16 -06:00
451d0b6e50 Implement accent-insensitive search in global and library-specific search 2025-07-14 10:44:03 -06:00
c0e993c37a Add support for updating read status of multiple books at once 2025-07-14 10:31:32 -06:00
77d68108ab Add support for bulk reading progress reset 2025-07-14 09:19:22 -06:00
ec7846abf6 Fix: enable nested scrolling in filter accordion panel 2025-07-13 23:33:53 -06:00
116f0c950e Implement interactive metadata review for batch updates, with progress tracking and a unified notification system 2025-07-13 23:32:08 -06:00
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
15970ad1b1 Accordion filter panels missing scroll for overflowing content 2025-07-10 09:44:06 -06:00
480eb92f7d Fix read status filter showing only “Unknown” with no results 2025-07-10 09:43:36 -06:00
538854b397 Enhanced metadata viewer, editor, picker and searcher 2025-07-09 22:46:56 -06:00
ceac960943 Add ability to reset reading progress for a book 2025-07-08 17:33:19 -06:00
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
4899a6ccd3 Add CONTRIBUTING.md with project setup and contribution guidelines 2025-07-08 16:27:14 -06:00
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
d0edf800c7 Improve UI compatibility for mobile devices 2025-07-07 14:52:11 -06:00
c8b994ed82 Remove lock icon from the book card 2025-07-06 18:09:56 -06:00
897a3c2fb6 Improve Aesthetics of Login and Admin Setup Views 2025-07-04 19:09:05 -06:00
8edf589f3d Fix 'Lock wait timeout exceeded exception' during library re-scan 2025-07-04 17:19:45 -06:00
841e359b92 Support File Move Operations with Watcher Refactor for Accurate Tracking 2025-07-04 11:19:23 -06:00
1c9c09628a Display first book in series when collapsed 2025-07-02 23:13:54 -06:00
7562ae65fd Fix missing app version in latest Docker image tag 2025-07-02 15:59:47 -06:00
0fd5c12fd0 Fix font size not applying on initial load in EPUB viewer 2025-06-30 18:33:02 -06:00
d5c217d306 Revert 2025-06-30 18:04:17 -06:00
ee7b0fecc4 Update booklore section to use PUID/PGID environment variables and user mapping 2025-06-30 17:56:04 -06:00
b155f567a4 Deleting books now cleans up empty directories left behind 2025-06-30 17:31:34 -06:00
46db40247c Always show the login page, regardless of OIDC status 2025-06-30 10:02:15 -06:00
9b1eb42381 Update OIDC documentation 2025-06-29 16:19:51 -06:00
5f72c9a01f Updating naming to BookLore and some formatting 2025-06-29 16:10:48 -06:00
6e48419dc7 Updating docs to be compat with booklore 2025-06-29 16:10:48 -06:00
f7db157689 Resolve broken Pocket ID auth and occasional Authentik failures 2025-06-29 16:10:05 -06:00
98bd69164b Update discord invite link 2025-06-28 21:52:04 -06:00
3f286ef575 Implement click-to-filter for series and publisher from book metadata 2025-06-28 19:04:11 -06:00
bba3309310 Sync favicon color with primary theme 2025-06-28 18:19:10 -06:00
66e3c68b81 Resolve data consistency and selection issues in PrimeNG p-table 2025-06-28 16:54:51 -06:00
e8cd58cd42 Allow metadata fields to be explicitly cleared 2025-06-28 14:12:48 -06:00
df233d8f95 Clean up subscriptions in BookMetadataCenterComponent to prevent memory leaks 2025-06-27 22:37:57 -06:00
3d71a21add Fix subscription leak 2025-06-27 20:45:30 -06:00
b76c0023ba fix: clear selected books after assigning to a shelf 2025-06-27 16:46:24 -06:00
9b589748ac Carify max upload size note to indicate restart is required 2025-06-27 15:11:31 -06:00
86dfc515a7 Support writing metadata directly into PDF files 2025-06-27 14:48:49 -06:00
c34ab84200 Add configuration to launch Metadata Center as a dialog or full-page route 2025-06-26 23:24:02 -06:00
a50936962d no message 2025-06-26 16:20:56 -06:00