# Bookokrat v0.3.0 Release Notes
**Release Date:** February 2026
This is a major release introducing PDF support alongside the existing EPUB reader.
## License Change: AGPL-3.0
Starting with v0.3.0, Bookokrat is licensed under **AGPL-3.0** (previously MIT).
Ooof. This change was necessary because:
- **MuPDF** (the PDF rendering library) is licensed under AGPL-3.0
- **epub-rs** (the EPUB parsing library) is also licensed under AGPL-3.0
Honestly, re-creating the required EPUB support in a clean-room fashion is doable, but MuPDF is just too good and feature-rich to pass up.
To comply with these licensing terms and maintain a consistent license across the project, Bookokrat has adopted AGPL-3.0.
In addition, a lot of inspiration on how to render PDFs in Kitty was taken from the [tdf](https://github.com/itsjunetime/tdf) project, which is also AGPL-3.0.
For users, this means:
- You can still freely use, modify, and distribute Bookokrat
- If you distribute modified versions or run it as a service, you must make the source code available under AGPL-3.0
## Headline Feature: PDF Support
Bookokrat now supports PDF documents with high-performance rendering optimized for terminal display.
### PDF Features
- **High-Performance Rendering**: Background worker pool with MuPDF for parallel page rendering (inspired by [tdf](https://github.com/itsjunetime/tdf))
- **Kitty Graphics Protocol**: SHM-based image transfer enabling smooth 60fps rendering in Kitty terminal (inspired by [tdf](https://github.com/itsjunetime/tdf))
- **Normal Mode**: Vim-style cursor navigation within PDF pages
- **Comments/Annotations**: Add, edit, and delete comments on PDF pages, with annotation export support
- **Table of Contents**: PDF outline parsing with hierarchical navigation
- **Theme Support**: Full Base16 theme support in PDF mode—colors are applied to rendered pages
- **Zoom Levels**: Multiple zoom levels with smooth viewport updates
### Notes & Warnings
**RAM Usage**: PDF rendering requires significantly more memory than EPUB reading. Expect 300–700 MB of additional RAM usage when viewing PDFs due to page caching and image buffers. If you primarily read EPUBs and want to minimize memory footprint, PDF support can be disabled in the settings window, bringing RAM utilization down to approximately 50 MB.
**Feedback Welcome**: PDF support is new in this release. If you encounter any issues with PDF viewing—rendering glitches, performance problems, or unexpected behavior—please report them at [github.com/bugzmanov/bookokrat/issues](https://github.com/bugzmanov/bookokrat/issues).
### Terminal Support for PDF
- **Kitty / Ghostty**: Full support with scroll mode (recommended)
- **WezTerm**: Almost full support; page scroll mode is not supported
- **iTerm2**: Commenting and annotations are not supported
- **Other terminals**: Sixel/Halfblock fallback where available, with the caveat that halfblocks are nearly unusable for PDFs
## New Features
### SVG Support in EPUB
EPUB documents containing SVG images are now rendered correctly.
### Terminal Capability Detection
Unified terminal detection system that automatically selects optimal rendering protocols and feature sets based on your terminal emulator.
### Settings Popup
New settings interface with PDF-specific configuration options.
## Improvements & Bug Fixes
- Better arrow key support in PDF mode
- Modal window consistency across all popups
- Improved Help window
- Better anchor tracking for navigation
- Fixed Wezterm rendering glitches
- Fixed Kitty memory leak
- Build performance optimizations
## Dependency Updates
### Ratatui 0.30.0
Upgraded to ratatui 0.30.0 with underline-color feature support.
### Vendored tui-textarea
The `tui-textarea` crate has been vendored into `vendor/tui-textarea` as the original crate is unmaintained and fell out of sync with ratatui. This ensures compatibility with the latest ratatui version.
**Upgrade Note**: Users upgrading from v0.2.x will find all existing bookmarks, comments, and settings preserved. The PDF feature is optional and requires an explicit feature flag to build.
## Acknowledgments
Special thanks to [tdf](https://github.com/itsjunetime/tdf) by @itsjunetime.