A big update: search, filters, custom lists, and OPDS
One big update: search across your whole library, a filter builder, Custom Lists (smart and manual), connecting third-party OPDS servers, and a batch of quality-of-life touches.
This is a big update. Back at launch I said the next three things coming were search, custom lists, and third-party sources, landing one after another since each one builds on the last. They ended up ready around the same time, so instead of spacing them out I'm putting them all in one update, along with the filtering that comes with search and a few smaller things I added on the side.
Here's everything that's new.
Search, across everything
Open the library, tap search, and start typing. Comic Vision looks across everything it knows about a book, titles, series, publishers, creators, characters, tags, and narrows the results as you go. It stays quick whether your library is fifty comics or fifty thousand.
The part I actually fussed over was fitting all of this in without overcrowding the UI. I could have hung the search field and its buttons off a separate ornament, or found some other corner to put them in, but I wanted to keep things clean instead of piling more onto the screen. So it had to work within the space that was already there. My first attempt was to fade out the list title, grow the search field into the space it left behind, and slot the extra buttons (save and filter) in next to it. It worked, but it never felt right. The field growing in looked a bit off, and the new buttons popped into existence out of nowhere. When I plan a transition I try as hard as I can to make things arrive naturally instead of appearing from nothing, and that version just didn't.
So I started leaning into "How could I leverage the spatial UI of visionOS here?" The nav bar flipping over to reveal the search bar is the solution I came up with. Sure, a flip animation like this could be done on a flat screen too, but on visionOS, it actually feels natural instead of being a flashy animation. The nav bar turns over and the full search field is right there on the back of it, with its own buttons and actions, like it had been there the whole time. Tap search, the bar flips, and it flips back when you're done.
There's a fair bit of work behind keeping that instant. It runs on SQLite's full-text search with a trigram index instead of scanning every book on each keystroke. That part is its own story though, and I'll write it up on its own soon.
Filters, for the messier questions
A search box is great for "find me this one book." But the questions I actually ask my library are messier than that. Everything by one writer I haven't finished. One publisher, but only the volumes I tagged to re-read. A single search field can't really ask those.
So there's a filter builder for the rest. You group the conditions that all have to be true, split the alternatives apart, and a comic shows up if it matches any one group. It reads the way it looks, which was the whole point.

The layout idea actually came from a Shopify app I work on at my day job called MinCart, where merchants build conditions that get complicated fast. Bundling the "and" conditions together and splitting the "or" conditions apart was what kept those legible, and it turned out to be exactly what I wanted here. That happens more than you'd think, some tool from one project quietly turning up in a completely unrelated one.
The fields you can filter on go deeper than the comic itself, too. Every comic is linked to other entities, its series, its publisher, its characters, the collaborators who made it, and you can reach through those links and filter on their fields as well. So instead of just "author is Togashi," you could ask for every comic whose author was born after a certain date. You drill from the comic into the linked entity, then pick one of its fields.

Custom lists
Once you can search and filter, lists are the natural next step, and there are three kinds. The third type is explained in the next section.
Manual lists are the obvious one. Hand-pick what you want and drop it in. A reading pile, a favorites shelf, a stack to get to next, whatever you feel like keeping together. Name the list, pick what it holds, select the items, and add them.



Smart lists are the second. A smart list is really just a saved search and filter that keeps itself current. Set one up for "everything by this writer I haven't finished" and it fills itself in, and stays right as you add books or mark things read.
And a list isn't just for comics. You can build one from any entity the app tracks, a list of series, of characters, of publishers, of authors, not only individual books. Manual or smart, it works the same either way, just grouping whatever you point it at.
Once you have a few, you can group lists into folders. It's only one level deep, no folders inside folders, but it's enough to keep the sidebar tidy, like a "Favourite series" folder with a handful of lists tucked inside.

Your library doesn't have to live on the device
For anyone who already keeps a real library on a server, this is probably the one you were waiting for. Comic Vision now speaks OPDS, so you can connect an external catalog and browse, search, and read from it with the same interface you use for your local comics.
This is that third kind of list. A connected catalog sits in your library right next to your manual and smart ones, except it lives on a server instead of on the device. Catalogs nest too, so you can save a sub-catalog, a single shelf on the server, as its own list and jump straight to it.
It covers OPDS 1.x and 2.0, which is most of the open-source self-hosted setups out there, plus OPDS-PSE for streaming. With PSE you read a comic page by page straight off the server, without pulling the whole file down first.
Add a server, browse down through its catalog, and search it right from there. Search and filtering on a remote catalog aren't the local ones, though. They run against the server's own search, so what you can actually do depends on the server you connect to. If you're running Komga, Kavita, or anything else that speaks OPDS, it should be compatible with Comic Vision. I tried to implement as much of the ODPS standard as I could, including OPDS v2 that has a bit more complex grouping capabilities.
You don't have to stream, either. Any book in a catalog can be downloaded to the device, so you can grab what you want ahead of time and read it offline later, exactly like the rest of your local library.
A few smaller things
Not all of this update is a headline feature. A couple of smaller ones that make the day-to-day nicer:
Window size sticks now. Resize the reader or the library window once and it comes back that size the next time you open the app or a new comic, instead of resetting on you every time. If you prefer a bigger comic reader, it will remember it.
A Continue Reading card. There's a card on the library that surfaces the last comic you were reading, so you can jump straight back in without hunting for it. If you actually finished it, it shows the next issue in the series instead, so you're one tap from either carrying on or moving forward.

What's next
That's the three features that were planned for after launch, all in.
From here the pace will probably be a bit calmer. Those were the big pieces I had planned, and now that they're in I can be more deliberate about what comes next. Honestly I'm a bit torn on direction. I'd love to try more immersive, spatial features, but I also want to smooth out any quality-of-life walls people keep running into. If you have thoughts on which way to lean, or a feature you want, I'd love to hear it in the community.
The next real feature is already started. It's metadata suggestions, pulling a comic's identity from third-party databases so you're not filling every field in by hand. It's not ready yet, but it's far enough along for a peek. Point it at a comic with a messy, unknown filename and it proposes matches from a source like AniList, then lays out exactly what each field would become before you apply anything.
![The Edit Comic screen for a messy, unidentified file named '[Japan-shin]Shokugeki_no_Soma...v9_c73' marked Unknown, with a Metadata suggestions panel proposing AniList matches. The top match is 'Food Wars!: Shokugeki no Soma' with a Load into editor button.](/screenshots/comic-vision-metadata-suggestions-1280.webp)

There's still plenty to figure out before it ships, and I'll write about it properly when it's closer.
And as always, I'm around. If something breaks or feels off, the community is the fastest way to reach me, and I fix bugs as quick as I can. I still trip over things myself just from how I use the app, so I'm sure there are more waiting to be found.
Thanks for reading, and for being here. More soon.