Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,17 @@

All notable changes to Library Manager will be documented in this file.

## [0.9.0-beta.129] - 2026-02-18

### Changed

- **Issue #159: Feedback widget moved to nav bar** - Replaced floating bottom-right feedback button
with a bug icon (`bi-bug`) in the top navigation bar. Eliminates confusing overlap with the
dashboard Quick Actions button. Consistent placement and behavior across all pages. Feedback
modal and error auto-reporting remain unchanged.

---

## [0.9.0-beta.128] - 2026-02-16

### Added
Expand Down
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

**Smart Audiobook Library Organizer with Multi-Source Metadata & AI Verification**

[![Version](https://img.shields.io/badge/version-0.9.0--beta.128-blue.svg)](CHANGELOG.md)
[![Version](https://img.shields.io/badge/version-0.9.0--beta.129-blue.svg)](CHANGELOG.md)
[![Docker](https://img.shields.io/badge/docker-ghcr.io-blue.svg)](https://ghcr.io/deucebucket/library-manager)
[![License](https://img.shields.io/badge/license-AGPL--3.0-blue.svg)](LICENSE)

Expand All @@ -16,6 +16,10 @@

## Recent Changes (stable)

> **beta.129** - **UI: Feedback Widget Moved to Nav Bar** (Issue #159)
> - **Bug icon in nav bar** - Feedback/bug report button moved from floating bottom-right circle to a consistent bug icon in the top navigation bar
> - **No more overlapping buttons** - Eliminates confusing dual floating buttons on the dashboard page

> **beta.125** - **Bug Fixes: Badge Counts, Author Matching, Pipeline Filters** (Issues #150, #152)
> - **Badge count fix** - Dashboard and library page queue counts now match actual processable items
> - **Author initial matching** - "C Alanson" now correctly matches "Craig Alanson", "JRR Tolkien" matches "J R R Tolkien"
Expand Down
2 changes: 1 addition & 1 deletion app.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
- Multi-provider AI (Gemini, OpenRouter, Ollama)
"""

APP_VERSION = "0.9.0-beta.128"
APP_VERSION = "0.9.0-beta.129"
GITHUB_REPO = "deucebucket/library-manager" # Your GitHub repo

# Versioning Guide:
Expand Down Expand Up @@ -730,7 +730,7 @@
try:
with open(ERROR_REPORTS_PATH, 'r') as f:
reports = json.load(f)
except:

Check failure on line 733 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (E722)

app.py:733:13: E722 Do not use bare `except`
reports = []

# Add new report (keep last 100 reports to avoid file bloat)
Expand All @@ -754,7 +754,7 @@
try:
with open(ERROR_REPORTS_PATH, 'r') as f:
return json.load(f)
except:

Check failure on line 757 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (E722)

app.py:757:9: E722 Do not use bare `except`
return []
return []

Expand Down Expand Up @@ -1709,7 +1709,7 @@
continue
result = call_gemini(prompt, merged_config)
if result:
logger.info(f"[PROVIDER CHAIN] Success with gemini")

Check failure on line 1712 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:1712:33: F541 f-string without any placeholders
return result

elif provider == 'openrouter':
Expand All @@ -1718,13 +1718,13 @@
continue
result = call_openrouter(prompt, merged_config)
if result:
logger.info(f"[PROVIDER CHAIN] Success with openrouter")

Check failure on line 1721 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:1721:33: F541 f-string without any placeholders
return result

elif provider == 'ollama':
result = call_ollama(prompt, merged_config)
if result:
logger.info(f"[PROVIDER CHAIN] Success with ollama")

Check failure on line 1727 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:1727:33: F541 f-string without any placeholders
return result

else:
Expand Down Expand Up @@ -1826,7 +1826,7 @@
return result
elif result and result.get('transcript'):
# Got transcript but no match - still useful, return for potential AI fallback
logger.info(f"[AUDIO CHAIN] BookDB returned transcript only")

Check failure on line 1829 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:1829:37: F541 f-string without any placeholders
return result
elif result is None and attempt < max_retries - 1:
# Connection might be down, wait and retry
Expand Down Expand Up @@ -2158,11 +2158,11 @@
device = "cuda"
# int8 works on all CUDA devices including GTX 1080 (compute 6.1)
# float16 only works on newer GPUs (compute 7.0+)
logger.info(f"[WHISPER] Using CUDA GPU acceleration (10x faster)")

Check failure on line 2161 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:2161:29: F541 f-string without any placeholders
else:
logger.info(f"[WHISPER] Using CPU (no CUDA GPU detected)")

Check failure on line 2163 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:2163:29: F541 f-string without any placeholders
except ImportError:
logger.info(f"[WHISPER] Using CPU (ctranslate2 not available)")

Check failure on line 2165 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (F541)

app.py:2165:25: F541 f-string without any placeholders

_whisper_model = WhisperModel(model_name, device=device, compute_type=compute_type)
_whisper_model_name = model_name
Expand Down Expand Up @@ -2369,7 +2369,7 @@
if sample_path and os.path.exists(sample_path):
try:
os.unlink(sample_path)
except:

Check failure on line 2372 in app.py

View workflow job for this annotation

GitHub Actions / lint

ruff (E722)

app.py:2372:13: E722 Do not use bare `except`
pass

return result
Expand Down
17 changes: 3 additions & 14 deletions templates/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,9 @@
</li>
</ul>
<div class="d-flex align-items-center">
<a href="#" class="nav-link me-2 p-1" onclick="showFeedbackModal(); return false;" title="{{ _('Report Bug') }}">
<i class="bi bi-bug" style="font-size: 1.1rem;"></i>
</a>
<span id="update-badge" class="badge bg-success me-2" style="display: none; cursor: pointer;" onclick="showUpdateModal()">
<i class="bi bi-arrow-up-circle"></i> {{ _('Update Available') }}
</span>
Expand Down Expand Up @@ -892,20 +895,6 @@ <h5 class="modal-title"><i class="bi bi-arrow-up-circle text-success"></i> Updat
</div>
</div>

<!-- Feedback Button -->
<button id="feedback-btn" onclick="showFeedbackModal()" title="{{ _('Send Feedback') }}"
style="position: fixed; bottom: 24px; right: 24px; z-index: 1040;
width: 48px; height: 48px; border-radius: 50%; border: none;
background: var(--theme-accent-primary); color: #fff;
box-shadow: 0 4px 16px rgba(0,0,0,0.4); cursor: pointer;
display: flex; align-items: center; justify-content: center;
font-size: 1.3rem; transition: transform 0.2s, box-shadow 0.2s;">
<i class="bi bi-chat-dots"></i>
</button>
<style>
#feedback-btn:hover { transform: scale(1.1); box-shadow: 0 6px 24px rgba(0,0,0,0.5); }
</style>

<!-- Feedback Modal -->
<div class="modal fade" id="feedbackModal" tabindex="-1">
<div class="modal-dialog">
Expand Down