Bibliotheca is a GTK4-based desktop ebook library manager written in C++17. This plan documents existing issues to fix and new features to implement.
Current Version: 0.1.0 Technology Stack: GTK4/gtkmm-4, SQLite3, OpenSSL, libzip, tinyxml2, poppler-glib
Files: src/BookDetails.cpp, src/BookDetails.hpp
Status: COMPLETED
Implemented:
on_remove_tag_clicked(tag_name) handlerm_db.remove_tag_from_book() and update UIrefresh_tags() to reload from DB (efficient, no full list reload)Remaining (moved to Phase 2):
Files: src/BookDetails.cpp, src/BookDetails.hpp, src/BibliothecaWindow.cpp
Status: COMPLETED
Implemented:
m_book_idm_book_list.findById()signalBookRemoved() when displayed book is deletedclear() method and proper destructor with signal disconnectionrefresh_display() method for safe re-rendering from current dataFiles: src/DatabaseManager.cpp, src/DatabaseManager.hpp
Status: Review Needed
Current state:
get_book() and load_all_books() as non-const (correct)Tasks:
mutable keyword for mutex to allow const methodsFiles: src/BookDetails.cpp
Status: COMPLETED
Previous behavior:
on_add_tag_button_clicked() called m_book_list.loadAll() after adding tagImplemented:
refresh_tags() now only queries tags for the specific bookFiles: src/BookShelf.cpp
Status: COMPLETED
Location: src/BookShelf.cpp:67-107
Implemented:
tag:tagname prefix syntax for exact tag filteringtag: syntaxRemaining (moved to Phase 3):
Files: src/BibliothecaWindow.cpp, src/BibliothecaWindow.hpp
Status: COMPLETED
Implemented:
Remaining for future:
Files: src/BibliothecaWindow.cpp
Status: COMPLETED
Implemented:
m_lastQuery when navigating to detailsFiles: src/Book.cpp, src/BookTile.cpp
Status: COMPLETED
Implemented:
Note: Format validation deferred - GTK handles format detection internally
Files: src/BibliothecaWindow.cpp
Status: COMPLETED
Implemented:
Note: Skipped prompt dialog - auto-update is simpler and non-destructive
Files: src/BookShelf.cpp, src/BookShelf.hpp, src/BibliothecaWindow.cpp, src/BibliothecaWindow.hpp
Status: COMPLETED
Implemented:
Not implemented (deferred):
Files: src/TagManagerDialog.cpp, src/TagManagerDialog.hpp, src/DatabaseManager.cpp, src/DatabaseManager.hpp
Status: COMPLETED
Implemented:
Files: src/SettingsDialog.cpp, src/SettingsDialog.hpp, src/BibliothecaWindow.cpp
Status: COMPLETED
Implemented:
Note: Cover quality and theme selection deferred - GTK handles theme system-wide.
Files: src/DatabaseManager.cpp, src/DatabaseManager.hpp, src/BookList.cpp, src/BookList.hpp, src/SettingsDialog.cpp
Status: COMPLETED
Implemented:
Note: Moved/renamed file detection deferred - would require fuzzy matching by size/hash.
Files: src/BibliothecaWindow.cpp, src/BibliothecaWindow.hpp, src/BookShelf.cpp, src/BookShelf.hpp
Status: COMPLETED
Implemented:
Note: Arrow key navigation in grid is handled by GTK's GridView natively. Tab navigation works through GTK's focus system.
Files: src/BibliothecaWindow.cpp, src/BookTile.cpp, src/BookDetails.cpp, src/SettingsDialog.cpp
Status: COMPLETED
Implemented:
Note: GTK4 uses tooltips as accessible names for icon-only buttons. High contrast mode and focus indicators are handled by the GTK theme system. ARIA is a web standard; GTK uses the ATK/AT-SPI accessibility framework natively.
Files: docs/*.md
Status: COMPLETED
Implemented:
Remaining for future:
Files: src/ReaderView.cpp, src/ReaderView.hpp
Status: COMPLETED
Implemented:
EPUB Implementation Details:
Remaining for future:
Files: src/FolderScanner.cpp, src/FolderScanner.hpp, src/SettingsDialog.cpp, src/BibliothecaWindow.cpp
Status: COMPLETED
Implemented:
Remaining for future:
Files: src/BookDetails.cpp, src/BookDetails.hpp, src/Book.hpp, src/BookList.cpp, src/BookList.hpp, src/DatabaseManager.cpp, src/DatabaseManager.hpp
Status: COMPLETED
Implemented:
| Priority | Task | Estimated Complexity |
|---|---|---|
| P0 | 1.1 Complete tag removal UI | Low |
| P0 | 1.2 Fix null pointer safety | Low |
| P0 | 1.4 Fix inefficient tag updates | Medium |
| P1 | 1.3 Fix const-correctness | Low |
| P1 | 2.1 Tag-based search | Medium |
| P1 | 2.2 Error handling/feedback | Medium |
| P2 | 2.3 Preserve search state | Low |
| P2 | 2.4 Cover handling improvements | Medium |
| P2 | 3.1 Duplicate detection | Medium |
| P3 | 3.2-3.5 New features | High |
| P4 | 4.1-4.3 Polish | Medium |