<feed xmlns='http://www.w3.org/2005/Atom'>
<title>atril, branch libgepub-support</title>
<subtitle>MATE document viewer</subtitle>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/'/>
<entry>
<title>epub: Implement search using WebKit find controller</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T17:10:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=b1a648b9583b1368b80b988df3aa0bc0db7dc004'/>
<id>b1a648b9583b1368b80b988df3aa0bc0db7dc004</id>
<content type='text'>
Bypass the threaded EvJobFind for EPUB documents and use WebKit's
WebKitFindController directly. The threaded find job was incompatible
with GepubDoc's single-threaded design and caused segfaults. The new
approach searches within the current page using WebKit's built-in text
search and highlighting, which is both simpler and thread-safe.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Bypass the threaded EvJobFind for EPUB documents and use WebKit's
WebKitFindController directly. The threaded find job was incompatible
with GepubDoc's single-threaded design and caused segfaults. The new
approach searches within the current page using WebKit's built-in text
search and highlighting, which is both simpler and thread-safe.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Store GepubDoc handle in EvWebView and simplify navigation</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T17:03:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=3e7daa36411678717b833eac7866a7efd03f0bdd'/>
<id>3e7daa36411678717b833eac7866a7efd03f0bdd</id>
<content type='text'>
Store a reference to the GepubDoc in EvWebView via the new
get_doc_handle virtual method. Simplify next_page and previous_page to
just update the document model, letting the page-changed callback handle
content loading. This removes duplicate URI loading and prepares for
reimplementing search with WebKit's find controller.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Store a reference to the GepubDoc in EvWebView via the new
get_doc_handle virtual method. Simplify next_page and previous_page to
just update the document model, letting the page-changed callback handle
content loading. This removes duplicate URI loading and prepares for
reimplementing search with WebKit's find controller.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Expose GepubDoc handle via EvDocument virtual method</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T16:49:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=f7fec97c96e49e573bd7b8c301b0f4ed3954ba5d'/>
<id>f7fec97c96e49e573bd7b8c301b0f4ed3954ba5d</id>
<content type='text'>
Add a get_doc_handle virtual method to EvDocumentClass so the view layer
can obtain the underlying GepubDoc without depending on backend types
directly. This prepares for replacing EvWebView with GepubWidget which
needs the GepubDoc to render content.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add a get_doc_handle virtual method to EvDocumentClass so the view layer
can obtain the underlying GepubDoc without depending on backend types
directly. This prepares for replacing EvWebView with GepubWidget which
needs the GepubDoc to render content.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Remove MathJax build configuration</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T19:59:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=66219b376934e506180ea37051ada4885191e8fd'/>
<id>66219b376934e506180ea37051ada4885191e8fd</id>
<content type='text'>
WebKit2GTK renders MathML natively so the MathJax script injection is no
longer needed. Remove the mathjax-directory build option, the
auto-detection logic, and the CI package dependency.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
WebKit2GTK renders MathML natively so the MathJax script injection is no
longer needed. Remove the mathjax-directory build option, the
auto-detection logic, and the CI package dependency.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Remove dead code and unused virtual methods</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T19:26:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=7ee1b635fa7ee2fe50dc6ea9c203daf0ad3819a3'/>
<id>7ee1b635fa7ee2fe50dc6ea9c203daf0ad3819a3</id>
<content type='text'>
Remove the bundled minizip directory, unused includes, and the night
mode virtual methods from EvDocumentClass which are no longer called by
any code. Night mode is now handled entirely through WebKit user
stylesheets.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the bundled minizip directory, unused includes, and the night
mode virtual methods from EvDocumentClass which are no longer called by
any code. Night mode is now handled entirely through WebKit user
stylesheets.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Pre-compute page paths and disable find interface</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T19:15:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=63828db6e427c64e9fc968f9bc5c4f4e26306914'/>
<id>63828db6e427c64e9fc968f9bc5c4f4e26306914</id>
<content type='text'>
Pre-compute all page URI paths at load time so get_page is thread-safe
and does not mutate GepubDoc state. Remove the EvDocumentFind interface
because the threaded find job is incompatible with the single-threaded
GepubDoc and WebKit. EPUB search will be reimplemented using WebKit's
native find controller in a future commit.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Pre-compute all page URI paths at load time so get_page is thread-safe
and does not mutate GepubDoc state. Remove the EvDocumentFind interface
because the threaded find job is incompatible with the single-threaded
GepubDoc and WebKit. EPUB search will be reimplemented using WebKit's
native find controller in a future commit.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Implement night mode using WebKit user stylesheets</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:56:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=3557de01f62eb9b57db7a42c0101905c9c989efd'/>
<id>3557de01f62eb9b57db7a42c0101905c9c989efd</id>
<content type='text'>
Replace the old approach of modifying extracted HTML files on disk with
a WebKitUserStyleSheet injected via the WebKitUserContentManager. This
is cleaner and works with the new libgepub backend which no longer
extracts files to a temporary directory.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the old approach of modifying extracted HTML files on disk with
a WebKitUserStyleSheet injected via the WebKitUserContentManager. This
is cleaner and works with the new libgepub backend which no longer
extracts files to a temporary directory.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Replace backend internals with libgepub</title>
<updated>2026-06-09T16:38:12+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:49:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=d6a01f8611cf9bac65b856065906c5c1358f9e7d'/>
<id>d6a01f8611cf9bac65b856065906c5c1358f9e7d</id>
<content type='text'>
Replace the hand-rolled EPUB parsing with libgepub. This removes the
bundled minizip library, custom XML utilities, and temporary directory
extraction in favor of GepubDoc which handles archive access, metadata,
spine navigation, and table of contents. An epub:// URI scheme handler
serves resources directly from the archive without extracting to disk.
Search and night mode are stubbed as no-ops pending follow-up commits.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the hand-rolled EPUB parsing with libgepub. This removes the
bundled minizip library, custom XML utilities, and temporary directory
extraction in favor of GepubDoc which handles archive access, metadata,
spine navigation, and table of contents. An epub:// URI scheme handler
serves resources directly from the archive without extracting to disk.
Search and night mode are stubbed as no-ops pending follow-up commits.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: Add libgepub-0.7 build dependency</title>
<updated>2026-06-08T16:09:44+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-05-14T18:16:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=bedd5f88456901cefd7e1d50b18c798205bb6897'/>
<id>bedd5f88456901cefd7e1d50b18c798205bb6897</id>
<content type='text'>
Add libgepub as a required dependency for the EPUB backend in both meson
and autotools build systems. No source code changes yet, but this
prepares for replacing the hand-rolled EPUB parsing with libgepub.

Assisted-by: OpenCode:claude-opus-4-6
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Add libgepub as a required dependency for the EPUB backend in both meson
and autotools build systems. No source code changes yet, but this
prepares for replacing the hand-rolled EPUB parsing with libgepub.

Assisted-by: OpenCode:claude-opus-4-6
</pre>
</div>
</content>
</entry>
<entry>
<title>epub: add NULL guards to prevent crashes with malformed EPUBs</title>
<updated>2026-06-06T20:23:48+00:00</updated>
<author>
<name>Victor Kareh</name>
<email>vkareh@redhat.com</email>
</author>
<published>2026-06-05T13:55:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.mate-desktop.org/atril/commit/?id=9230de5a705068411d9ad4ffdba9b5e2d073ac35'/>
<id>9230de5a705068411d9ad4ffdba9b5e2d073ac35</id>
<content type='text'>
EPUB files with missing or incomplete metadata (like no title or missing
navigation elements) can cause NULL pointer dereferences in the XML
parsing functions. This adds NULL checks to xml_parse_children_of_node,
get_child_list, and the TOC text parsing loop.

Fixes #707
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
EPUB files with missing or incomplete metadata (like no title or missing
navigation elements) can cause NULL pointer dereferences in the XML
parsing functions. This adds NULL checks to xml_parse_children_of_node,
get_child_list, and the TOC text parsing loop.

Fixes #707
</pre>
</div>
</content>
</entry>
</feed>
