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: Not Started
Files: src/BookImport.cpp, src/BookTile.cpp
Status: Not Started
Files: src/BookList.cpp, src/BibliothecaWindow.cpp
Status: Not Started
Files: New files required Status: Not Started
Files: New files required Status: Not Started
Files: New files required Status: Not Started
Files: src/DatabaseManager.cpp, src/BookList.cpp
Status: Not Started
Files: src/BibliothecaWindow.cpp, src/BookShelf.cpp
Status: Not Started
Files: All UI files Status: Not Started
Files: docs/*.md
Status: Not Started
| 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 |
meson.build - Added BookDetails.cppsrc/BibliothecaWindow.cpp - Added details viewsrc/BibliothecaWindow.hpp - Added memberssrc/Book.hpp - Added tags vectorsrc/DatabaseManager.cpp - Added tag tables/methodssrc/DatabaseManager.hpp - Added tag signaturessrc/main.cpp - Pass DB to windowsrc/BookDetails.cpp - Details pane (incomplete)src/BookDetails.hpp - Details pane headerdocs/Feature-Tagging.md - Tagging design doc