Why I made a reading app for the library you already own
Latency, Calibre, 126 bad icons and a public beta
I asked my father for an iPad Pro because I had read an article about latency.
Dan Luu had carried a high-speed camera around and measured how long machines take to respond to a person. The fastest computer he tested was an Apple IIe from 1983. The only modern device that kept up was the iPad Pro, at thirty milliseconds. A page would follow the finger, which I had decided mattered for reading bandes dessinées. I explained all of this to my father, ProMotion included, with the gravity of someone presenting a capital expenditure request to a board that has heard it all before. Officially, the machine was for my master’s theses. I wrote two on it, so the cover story held. Mostly I used it to read: papers by the hundred, and albums.
Comment dire. It was an expensive solution to a small problem. But the dimensions were right. A Franco-Belgian album is roughly the shape of an iPad, and its page does more than hold panels: the gutters and the double-page spreads set the pace of the reading. Cut the page into phone-sized rectangles and you keep the drawings but lose some of that pace.
The iPad felt made for albums, but the readers available for it felt made for files. I used TiReader, which mostly worked. It opened what I gave it, but the library felt like a storage room where somebody had left every cupboard open. Other apps were cleaner but wanted me to use their catalogue, their cloud or their subscription. I already had the books, and I wanted the software around them to get out of the way.
So I tried to make it.
The First Lijn
The surviving screen recording is dated 21 June 2020, during the lockdown. I had not yet explained any of this to my father. This was still the basic iPad, a year before the Pro; the page followed the finger at its own pace. My prototype opens onto a black library with a serif title, three covers per row and four tabs along the bottom. It holds Berserk, Thorgal, a volume of Centaurus, some course documents and, for gravity, my CV.
The original Lijn library, recorded on 21 June 2020.
Calibre was the first enemy, or rather the little metadata.opf file it placed beside each book. That file held everything useful (title, author, series, cover) in XML so verbose that I spent an unreasonable amount of time learning to parse it.
Before that I had to choose a language. Objective-C was older and looked serious. Swift looked suspiciously pleasant. I read comparisons, ran small experiments in Swift Playgrounds and watched a lot of YouTube. Each video clarified one thing and introduced four more I was apparently supposed to know. I chose Swift in the end, less because the research was complete than because continuing it had become embarrassing.
I had followed Paul Stamatiou’s tweets as he started building Stocketa during the same lockdown, learning Swift and SwiftUI by making the stock tracker he wanted for himself. His later account of the project is very polished; what I remember is the work appearing piece by piece on Twitter. Years earlier, Anand Sharma had published the making of April Zero, complete with paper sketches, abandoned directions and numbered prototypes. I found both more or less by accident. They had put the process online, a stranger had found it, and now the stranger was opening Xcode. Perhaps somebody would eventually find mine. That was enough permission.
The prototype could import books, read their metadata, show covers and open a comic. A context menu let me edit metadata, delete a title or share it. There was no OPDS and no server sync, only one library on one iPad, held together by what I had learned the week before.
It worked, and then I stopped. No instructive catastrophe occurred. The project reached the part where a demo becomes software: files with bad names, missing covers, corrupted archives, pages that take too much memory, settings that should still mean the same thing after an update. Two weeks after the recording, I was interning at a law firm, and Lijn stayed on a drive.
Opening It Again
Five years later, I started over.
The idea had not changed much. I still wanted the covers first, the controls at the edges, and a library that felt like a library rather than a file browser with literary ambitions. What had changed were the tools.
Claude Code could work inside the repository. A coding harness can search the project, open the relevant files, propose a patch, run a build and inspect the failure. This saves the first forty minutes of a free evening, normally spent remembering where everything lives and what I did the night before.
When I started again, Claude Code had just been released, on Claude 3.7 Sonnet. Lijn reached TestFlight on the Claude 5.5 family.
From the outside, “I built an app with AI” compresses the work almost beyond recognition. For Lijn it meant writing specifications, reviewing diffs, testing on devices, reverting plausible nonsense and trying again with a narrower instruction. It was slower than the phrase suggests, and faster than doing it alone. It made two-hour work sessions useful.
One small example is the shelving moment. When an OPDS download finishes, the cover leaves the progress pill and moves into its place in the library. The target might not exist, because the shelf is filtered, off-screen or showing a series stack. The animation must vanish cleanly in each case, and do nothing at all when Reduce Motion is on.
None of this is advanced computer science. Its job is to keep one plain sentence true: a book finishes downloading and arrives on a shelf, even when you have done something inconvenient.
The current Lijn library.
126 Bad Icons
The icon was a more visible failure, and a longer one.
I wanted a page turning, a hint of ligne claire and Apple’s new Liquid Glass treatment. I opened Blender and wrote Python scripts to generate rounded pages, golden-ratio fans, bent sheets, lights, cameras and materials. The folder reached v29, v30, v31, by way of physics experiments, page-turn studies, bento grids and enough discarded renders to suggest a small but determined design agency.
The folder, in the order it was filled: stacked pages, bento grids, the ℓ, a chair, a cat, Crater Lake, blueprints, a folded map, the curl, and the night. One hundred and twenty-six of the renders, out of several thousand, then the icon that shipped. Select a tile to see it large.
When you only half know how to make something, it is easy to keep iterating on the parameter you control instead of admitting that the result is wrong. I hired a designer; the work came back clean and professional, and it was still not the icon. Some failures you have to finish yourself.
Then, in July, I thought I had finished. A folder called Inspo - LAST ROUND held fifty icons pulled from my home screen and from the small canon around people like Gavin Nelson, and looking at fifty good icons at once separates the tricks from the taste. The app is called Lijn: line, as in klare lijn, the Dutch name for the style Hergé drew in. A folder of renders, and not one of them had drawn a line. So I drew one: a cursive ℓ, blue ink going in and gold coming out, diving under itself where it crossed. I pinned the crossing to the centre of Apple’s own icon grid, ray-traced the shadow and gave the stroke a matte grain. It went on the website and into the app, and by every measure I had it was correct, until October.
What followed belongs in the history of displacement activity. The folder now holds a lounge chair, in 2D and then in 3D, a blue lamp and a stack of lamps, a diffusion study and a sheet of pressed fibre. It holds a seated cat after Paul Rand, then the same cat cut into stripes like IBM’s eight bars, then a slimmer cat, then a cat thin enough to be handsome, at which point I asked whether a cat had ever been the right idea. There is also a topographic map.
The icon ended as a night printed on a turning page. The moon was goofy, so it went, and a sun with two ligne claire clouds made a weather app, so they went too. For light mode I tried some twenty daytimes before accepting what Apple’s guidelines had said all along: light mode is the same night, printed lighter.
The dotted night is a debt to Marc-Antoine Mathieu. Reading La Qu… is how I first thought about quadrichromy, the four inks that every printed album is made of.
The icon: light, dark, tinted and development. The same night, printed four ways.
Lijn lets you choose an accent colour, and the obvious move was to repaint the night in each: an umber night, a forest night, a wine night. They looked forced, because they were. So the night stays the same, and only the page underneath takes your colour: terracotta, marine, moss, heather, oxblood, rosewood. Navy, petrol and graphite stay on as plain alternatives for people who want the sky and nothing else.
I note, without enthusiasm, that this section opened with me wanting a page turning. It took more renders than I will admit to, and a cat, to get back there. T. S. Eliot had warned me: the end of all our exploring will be to arrive where we started, and know the place for the first time. The page turn is the oldest interface in the room.
The code and the icons were the same failure twice. A coding harness produced changes that compiled. Blender produced renders that looked enough like an icon to keep me adjusting them. Both made plausible versions cheap, which meant I could hold more of them up against the actual problem. Sometimes I saw what was wrong at once. Sometimes the folder reached v31, and then grew sub-folders with dates.
The icon sits on my iPad now between Things and The Witness, neither of which knows what it went through.
The Reader
Lijn is a reader for iPad and iPhone. It reads the formats that ended up in my library: CBZ, CBR, CBT, PDF and DjVu for comics; EPUB, MOBI, AZW3 (DRM-free), FB2 and plain text for books. It imports a folder or a whole Calibre library, and connects to Komga, Kavita, Calibre-Web, Stump and any other OPDS 1.2 or 2.0 catalogue. Pages come single or as a double spread, left to right or right to left, remembered for each album. They turn like paper, and webtoons scroll. Books open in a text reader with highlights and notes; an illustrated EPUB opens like a comic.
I still think the page is the unit. But people read on a phone too, on the train and in bed, so on an iPhone Lijn does the cutting itself. Panel by Panel finds the panels and moves from one to the next in reading order. Unfold an iPhone Duo and the whole page is back.
Most reading apps do some of that. Lijn also knows what it is holding.
To a reader, a bande dessinée is a tome in a series, sometimes a cycle in a universe, written by a scénariste and drawn by a dessinateur who are usually not the same person. Most reading apps flatten all of this into a filename and an alphabetical list, so that Le Secret de l’Espadon files itself under L and the intégrale argues with the tomes about who owns the number 1. Lijn reads what the files and the Calibre sidecar actually say, puts each series on its own shelf in tome order with every album under its own title, and keeps what it does not know to itself. When a tome is missing, Series Info names it. When you own the intégrale, it says the missing tomes may be inside, and it does not guess.
When it needs to know more, it asks the libraries. On request, and only on request, Find Metadata asks nine sources about an album, among them the BnF, the Sudoc and Wikidata, MangaDex and AniList for manga, and ComicVine and Metron with your own keys. Lijn shows you what would change before anything does. A BnF or Sudoc record also says what an intégrale contains, and from then on the intégrale counts as its tomes.
From there it can do the one thing a bookseller does that software rarely manages. Finish Aldébaran and Lijn suggests Bételgeuse, because it is the next cycle, and it says so. Every suggestion gives its reason, and none of it leaves your device.
The rest is plumbing, which is to say the part I am proudest of. Your progress goes back to Komga or Kavita when you close the album. Your place follows you between your iPad and your iPhone through iCloud, which is Apple’s business and yours. I tested the shelf against a library of one million albums: it appears in under a fifth of a second, and scrolling it does not hang. There is no account, no advertising and no analytics, and your files stay on your device. Lijn does not report back to me; Apple tells me how many copies sell, and that is all I will ever know about you. Lijn is closed source; I would rather say so here than in small print.
After the beta, Lijn will be free for ten albums, and those ten will be the whole app. After that it will be one purchase, with every later version included and no subscription. I dislike renting software that exists to read files I already own, and I suspect the people running a comic server on a NAS feel the same. The old arrangement, in which you paid for a thing and then it was yours, has outlived most of the arrangements devised to replace it.
Most readers do not need Lijn: Kindle and Apple Books are easier, Panels is established and very good at many of the same things, and a folder of PDFs may be enough. I made Lijn for the more awkward library: French albums, manga, EPUBs, old scans, a Calibre folder, perhaps a Komga server, all accumulated over years and never quite comfortable in one app.
The Public Beta
The public beta of Lijn is open on TestFlight, and it has one job: to find what breaks before release. My own library is not strange enough for that, and yours probably is.
Bring the files and servers that other apps choke on:
Odd CBZ and CBR files. Strange names, strange folders, strange images. Tell me if a file does not open, or if the pages come in the wrong order.
Big PDFs. Tell me the page count, the file size and what became slow.
Old scans. Uneven pages, wide margins.
DjVu files. The decoder is my own code, so it needs files I do not have.
OPDS servers behind a reverse proxy. Tell me the server, its version and the proxy.
Strange tome numbering. Tome 0, half tomes, hors-séries, cycles that start again at 1. Tell me where the order is wrong.
Intégrales. Before Find Metadata, Series Info should say the missing tomes may be inside. After, the intégrale should count as its tomes. Tell me which step is wrong.
Manga with mixed orientations. Tell me the volume and the page.
When something breaks, write to [email protected]. Say which file or server, what you did and what you saw, with the format and size of the file. A screenshot helps.
To join, install TestFlight from the App Store on your iPad or iPhone, then open this link on the same device: https://testflight.apple.com/join/xcUKGG9n. Lijn needs iPadOS 26 or iOS 26. There is no form and no account.
The beta is free, with no title limit, and closes at release. The App Store price will be on lijnreader.com before then.
What you find decides what I fix before release. I would rather read about a broken file in an email now than in an App Store review later. So bring your worst CBZ.
Lijn, ou la planche entière
Pourquoi j’ai conçu une app de lecture pour la bibliothèque que vous possédez déjà
Latence, Calibre, 126 icônes ratées et une bêta publique
J’ai demandé un iPad Pro à mon père parce que j’avais lu un article sur la latence.
Dan Luu avait promené une caméra à haute vitesse un peu partout et mesuré le temps que mettent les machines à répondre à une personne. L’ordinateur le plus rapide qu’il ait testé était un Apple IIe de 1983. Le seul appareil moderne à tenir le rythme était l’iPad Pro, à trente millisecondes. La page suivrait le doigt, ce qui, avais-je décidé, comptait pour lire des bandes dessinées. J’ai exposé tout cela à mon père, ProMotion compris, avec la gravité de quelqu’un qui présente une demande d’investissement à un conseil d’administration qui en a vu d’autres. Officiellement, la machine devait servir à mes mémoires de master. J’en ai écrit deux dessus, l’alibi a donc tenu. En réalité, je m’en servais surtout pour lire : des articles par centaines, et des albums.
Disons-le : c’était une solution coûteuse à un petit problème. Mais les proportions étaient les bonnes. Un album franco-belge a à peu près la forme d’un iPad, et sa planche fait plus que contenir des cases : les gouttières et les doubles pages donnent son rythme à la lecture. Découpez la planche en rectangles de la taille d’un téléphone, et vous gardez les dessins mais perdez une part de ce rythme.
L’iPad semblait fait pour les albums, mais les applications de lecture semblaient faites pour les fichiers. J’utilisais TiReader, qui marchait à peu près. L’app ouvrait ce que je lui donnais, mais la bibliothèque tenait du débarras où quelqu’un aurait laissé tous les placards ouverts. D’autres liseuses étaient plus nettes mais voulaient m’imposer leur catalogue, leur stockage en ligne ou leur abonnement. J’avais déjà les livres, et je voulais que le logiciel autour d’eux se fasse oublier.
Alors j’ai essayé de le faire moi-même.
La première Lijn
L’enregistrement d’écran qui a survécu date du 21 juin 2020, pendant le confinement. Je n’avais encore rien exposé de tout cela à mon père. C’était encore l’iPad de base, un an avant le Pro ; la page suivait le doigt à son propre rythme. Mon prototype s’ouvre sur une bibliothèque noire, avec un titre à empattements, trois couvertures par rangée et quatre onglets en bas de l’écran. On y trouve Berserk, Thorgal, un volume de Centaurus, des documents de cours et, pour le sérieux, mon CV.
La bibliothèque d’origine de Lijn, enregistrée le 21 juin 2020.
Calibre fut le premier ennemi, ou plutôt le petit fichier metadata.opf qu’il déposait à côté de chaque livre. Ce fichier contenait tout ce qui était utile (titre, auteur, série, couverture) dans un XML si prolixe que j’ai passé un temps déraisonnable à apprendre à le décortiquer.
Avant cela, il avait fallu choisir un langage. Objective-C était plus ancien et avait l’air sérieux. Swift avait l’air agréable, ce qui était suspect. J’ai lu des comparatifs, fait de petites expériences dans Swift Playgrounds et regardé beaucoup de vidéos sur YouTube. Chaque vidéo éclaircissait une chose et en introduisait quatre autres que j’étais apparemment censé connaître. J’ai fini par choisir Swift, moins parce que mes recherches étaient terminées que parce que les poursuivre devenait gênant.
J’avais suivi les tweets de Paul Stamatiou quand il avait commencé à développer Stocketa, pendant le même confinement, en apprenant Swift et SwiftUI à travers l’application de suivi boursier qu’il voulait pour lui-même. Son récit ultérieur du projet est très soigné ; ce dont je me souviens, c’est du travail qui apparaissait morceau par morceau sur Twitter. Des années plus tôt, Anand Sharma avait publié la genèse d’April Zero, avec croquis sur papier, pistes abandonnées et prototypes numérotés. J’ai trouvé l’un et l’autre plus ou moins par hasard. Ils avaient mis leur démarche en ligne, un inconnu l’avait trouvée, et voilà que cet inconnu ouvrait Xcode. Quelqu’un finirait peut-être par trouver la mienne. Il n’en fallait pas plus comme permission.
Le prototype savait importer des livres, lire leurs métadonnées, afficher les couvertures et ouvrir une BD. Un menu contextuel permettait de modifier les métadonnées, de supprimer un titre ou de le partager. Il n’y avait ni OPDS ni synchronisation avec un serveur, seulement une bibliothèque sur un iPad, qui ne tenait que par ce que j’avais appris la semaine précédente.
Ça marchait, et puis j’ai arrêté. Il n’y a pas eu de catastrophe instructive. Le projet avait atteint le moment où une démo devient un logiciel : fichiers mal nommés, couvertures manquantes, archives corrompues, pages trop gourmandes en mémoire, réglages qui doivent encore vouloir dire la même chose après une mise à jour. Deux semaines après l’enregistrement, j’étais stagiaire dans un cabinet d’avocats, et Lijn est restée sur un disque.
Rouvrir le projet
Cinq ans plus tard, j’ai recommencé.
L’idée n’avait pas beaucoup changé. Je voulais toujours les couvertures d’abord, les commandes sur les bords, et une bibliothèque qui ressemble à une bibliothèque plutôt qu’à un navigateur de fichiers aux ambitions littéraires. Ce qui avait changé, c’étaient les outils.
Claude Code pouvait travailler à l’intérieur du dépôt. Un agent de programmation sait chercher dans le projet, ouvrir les bons fichiers, proposer un correctif, lancer une compilation et examiner l’échec. Cela économise les quarante premières minutes d’une soirée libre, passées d’ordinaire à me rappeler où tout se trouve et ce que j’ai fait la veille.
Quand j’ai repris le projet, Claude Code venait de sortir et fonctionnait avec Claude 3.7 Sonnet. Lijn est arrivée sur TestFlight avec la famille Claude 5.5.
Vu de l’extérieur, « j’ai fait une app avec l’IA » comprime le travail jusqu’à le rendre méconnaissable. Pour Lijn, cela voulait dire écrire des spécifications, relire des diffs, tester sur des appareils, annuler des absurdités plausibles et réessayer avec une consigne plus étroite. C’était plus lent que la formule ne le laisse croire, et plus rapide que si je l’avais fait seul. Cela a rendu utiles des séances de travail de deux heures.
Un petit exemple : le moment du rangement. Quand un téléchargement OPDS se termine, la couverture quitte la pastille de progression et vient prendre sa place dans la bibliothèque. La cible peut ne pas exister, parce que l’étagère est filtrée, hors de l’écran ou affiche une pile de série. L’animation doit disparaître proprement dans chaque cas, et ne rien faire du tout quand Réduire les animations est activé.
Rien de cela n’est de l’informatique de pointe. Il s’agit de tenir une promesse simple : un livre finit de se télécharger et arrive sur une étagère, même quand vous avez fait quelque chose de malcommode.
La bibliothèque actuelle de Lijn.
126 icônes ratées
L’icône fut un échec plus visible, et plus long.
Je voulais une page qui tourne, un soupçon de ligne claire et le nouveau traitement Liquid Glass d’Apple. J’ai ouvert Blender et écrit des scripts Python pour générer des pages arrondies, des éventails au nombre d’or, des feuilles courbées, des lumières, des caméras et des matériaux. Le dossier a atteint v29, v30, v31, en passant par des expériences de physique, des études de page tournée, des grilles façon bento et assez de rendus jetés pour faire croire à une petite agence de design très déterminée.
Le dossier, dans l’ordre où il s’est rempli : pages empilées, grilles bento, le ℓ, un fauteuil, un chat, Crater Lake, des plans d’architecte, une carte pliée, le coin qui se soulève, puis la nuit. Cent vingt-six rendus, sur plusieurs milliers, puis l’icône retenue. Touchez une icône pour la voir en grand.
Quand on ne sait faire une chose qu’à moitié, il est facile de continuer à jouer sur le paramètre qu’on maîtrise plutôt que d’admettre que le résultat n’est pas le bon. J’ai engagé un designer ; le travail est revenu propre et professionnel, et ce n’était toujours pas l’icône. Certains échecs, il faut les mener à terme soi-même.
Puis, en juillet, j’ai cru avoir fini. Un dossier nommé Inspo - LAST ROUND réunissait cinquante icônes prises sur mon écran d’accueil et dans le petit canon formé autour de gens comme Gavin Nelson, et regarder cinquante bonnes icônes à la fois sépare les ficelles du goût. L’app s’appelle Lijn : ligne, comme dans klare lijn, le nom néerlandais du style d’Hergé. Un dossier de rendus, et aucun n’avait tracé de ligne. Alors j’en ai tracé une : un ℓ cursif, encre bleue à l’entrée, or à la sortie, qui plongeait sous lui-même à l’endroit où il se croisait. J’ai calé le croisement au centre de la grille d’icônes d’Apple, calculé l’ombre en lancer de rayons et donné au trait un grain mat. L’icône est allée sur le site et dans l’app, et selon tous mes critères elle était correcte, jusqu’en octobre.
Ce qui a suivi relève de l’histoire des activités de substitution. Le dossier contient désormais un fauteuil lounge, en 2D puis en 3D, une lampe bleue et une pile de lampes, une étude de diffusion et une feuille de fibre pressée. Il contient un chat assis d’après Paul Rand, puis le même chat découpé en bandes comme les huit barres d’IBM, puis un chat plus mince, puis un chat assez fin pour être élégant, et c’est là que je me suis demandé si un chat avait jamais été la bonne idée. Il y a aussi une carte topographique.
L’icône a fini en nuit imprimée sur une page qui tourne. La lune était niaise, alors elle a disparu, et un soleil avec deux nuages ligne claire faisait une app météo, alors ils ont disparu aussi. Pour le mode clair, j’ai essayé une vingtaine de ciels de jour avant d’accepter ce que les recommandations d’Apple disaient depuis le début : le mode clair, c’est la même nuit, imprimée plus claire.
La nuit en points est une dette envers Marc-Antoine Mathieu. C’est en lisant La Qu… que j’ai pensé pour la première fois à la quadrichromie, les quatre encres dont est fait chaque album imprimé.
L’icône : claire, sombre, teintée et de développement. La même nuit, imprimée de quatre façons.
Lijn permet de choisir une couleur d’accentuation, et l’idée évidente était de repeindre la nuit dans chacune : une nuit terre d’ombre, une nuit forêt, une nuit lie-de-vin. Elles avaient l’air forcées, parce qu’elles l’étaient. La nuit reste donc la même, et seule la page en dessous prend votre couleur : terracotta, marine, mousse, bruyère, sang-de-bœuf, bois de rose. Bleu nuit, pétrole et graphite restent proposés, sobres, pour ceux qui veulent le ciel et rien d’autre.
Je note, sans enthousiasme, que cette partie s’ouvrait sur mon envie d’une page qui tourne. Il a fallu plus de rendus que je ne l’avouerai, et un chat, pour y revenir. T. S. Eliot m’avait prévenu : à la fin de l’exploration, on revient au point de départ, et on le connaît pour la première fois. La page qui tourne est la plus ancienne des interfaces.
Le code et les icônes étaient le même échec, deux fois. Un agent de programmation produisait des modifications qui compilaient. Blender produisait des rendus qui ressemblaient assez à une icône pour que je continue à les ajuster. Les deux rendaient les versions plausibles bon marché, ce qui me permettait d’en confronter davantage au vrai problème. Parfois, je voyais tout de suite ce qui n’allait pas. Parfois, le dossier atteignait v31, puis se garnissait de sous-dossiers datés.
L’icône est aujourd’hui sur mon iPad, entre Things et The Witness, qui ignorent l’un comme l’autre ce qu’elle a traversé.
La liseuse
Lijn est une liseuse pour iPad et iPhone. Elle lit les formats qui se sont retrouvés dans ma bibliothèque : CBZ, CBR, CBT, PDF et DjVu pour la BD ; EPUB, MOBI, AZW3 (sans DRM), FB2 et texte brut pour les livres. Elle importe un dossier ou toute une bibliothèque Calibre, et se connecte à Komga, Kavita, Calibre-Web, Stump et à tout autre catalogue OPDS 1.2 ou 2.0. Les pages s’affichent une par une ou en double page, de gauche à droite ou de droite à gauche, et Lijn s’en souvient pour chaque album. Elles tournent comme du papier, et les webtoons défilent. Les livres s’ouvrent en mode texte, avec surlignages et notes ; un EPUB illustré s’ouvre comme une BD.
Je pense toujours que la planche est l’unité de lecture. Mais on lit aussi sur un téléphone, dans le train ou au lit. Sur iPhone, Lijn découpe donc la planche elle-même. Le mode Case par case trouve les cases et passe de l’une à l’autre dans l’ordre de lecture. Dépliez un iPhone Duo, et la planche entière revient.
La plupart des liseuses font une partie de cela. Lijn sait aussi ce qu’elle a entre les mains.
Pour un lecteur, une bande dessinée est un tome dans une série, parfois un cycle dans un univers, avec un scénariste et un dessinateur qui ne sont généralement pas la même personne. La plupart des applications aplatissent tout cela en un nom de fichier et une liste alphabétique, si bien que Le Secret de l’Espadon se range à la lettre L et que l’intégrale dispute aux tomes la propriété du numéro 1. Lijn lit ce que disent vraiment les fichiers et le fichier compagnon de Calibre, range chaque série sur sa propre étagère dans l’ordre des tomes, chaque album sous son propre titre, et garde pour elle ce qu’elle ne sait pas. Quand un tome manque, la fiche de la série le nomme. Quand vous avez l’intégrale, elle dit que les tomes manquants s’y trouvent peut-être, et elle ne devine pas.
Quand elle a besoin d’en savoir plus, elle interroge les bibliothèques. Sur demande, et seulement sur demande, Chercher les métadonnées interroge neuf sources sur un album, dont la BnF, le Sudoc et Wikidata, MangaDex et AniList pour les mangas, et ComicVine et Metron avec vos propres clés. Lijn vous montre ce qui changerait avant que quoi que ce soit ne change. Une notice de la BnF ou du Sudoc dit aussi ce que contient une intégrale ; dès lors, l’intégrale compte pour ses tomes.
De là, elle peut faire ce qu’un libraire sait faire et qu’un logiciel réussit rarement. Finissez Aldébaran, et Lijn vous propose Bételgeuse, parce que c’est le cycle suivant, et elle le dit. Chaque suggestion donne sa raison, et rien de tout cela ne quitte votre appareil.
Le reste, c’est de la plomberie, autrement dit la partie dont je suis le plus fier. Votre progression est renvoyée à Komga ou à Kavita quand vous refermez l’album. Votre page vous suit de votre iPad à votre iPhone par iCloud, ce qui regarde Apple et vous. J’ai testé l’étagère avec une bibliothèque d’un million d’albums : elle s’affiche en moins d’un cinquième de seconde, et le défilement ne se fige pas. Pas de compte, pas de publicité, pas de suivi d’usage, et vos fichiers restent sur votre appareil. Lijn ne me transmet rien ; Apple me dit combien d’exemplaires se vendent, et c’est tout ce que je saurai jamais de vous. Le code de Lijn n’est pas ouvert ; je préfère le dire ici plutôt qu’en petits caractères.
Après la bêta, Lijn sera gratuite jusqu’à dix albums, et ces dix albums donneront accès à toute l’app. Ensuite, ce sera un achat unique, avec toutes les versions suivantes comprises et sans abonnement. Je n’aime pas louer un logiciel qui sert à lire des fichiers que je possède déjà, et je soupçonne que ceux qui font tourner un serveur de BD sur un NAS pensent à peu près de même. Le vieil arrangement, où l’on payait une chose qui vous appartenait ensuite, a survécu à la plupart des arrangements inventés pour le remplacer.
La plupart des lecteurs n’ont pas besoin de Lijn : Kindle et Apple Books sont plus simples, Panels est bien établie et excellente sur bon nombre de ces mêmes points, et un dossier de PDF peut suffire. J’ai fait Lijn pour la bibliothèque plus biscornue : albums franco-belges, mangas, EPUB, vieilles numérisations, un dossier Calibre, peut-être un serveur Komga, le tout accumulé au fil des années et jamais tout à fait à l’aise dans une seule app.
La bêta publique
La bêta publique de Lijn est ouverte sur TestFlight, et elle a un seul but : trouver ce qui casse avant la sortie. Ma propre bibliothèque n’est pas assez étrange pour cela, et la vôtre l’est sans doute.
Apportez les fichiers et les serveurs sur lesquels les autres apps calent :
Les CBZ et CBR bizarres. Noms, dossiers ou images inhabituels. Dites-moi si un fichier ne s’ouvre pas, ou si les pages arrivent dans le désordre.
Les gros PDF. Indiquez-moi le nombre de pages, la taille du fichier et ce qui a ralenti.
Les vieilles numérisations. Pages inégales, grandes marges.
Les fichiers DjVu. Le décodeur est mon propre code, il lui faut donc des fichiers que je n’ai pas.
Les serveurs OPDS derrière un proxy inverse. Indiquez-moi le serveur, sa version et le proxy.
Les numérotations de tomes étranges. Tome 0, demi-tomes, hors-séries, cycles qui repartent à 1. Dites-moi où l’ordre des tomes est faux.
Les intégrales. Avant d’utiliser Chercher les métadonnées, la fiche doit dire que les tomes manquants sont peut-être dans l’intégrale. Après cette recherche, l’intégrale doit compter pour ses tomes. Dites-moi quelle étape se trompe.
Les mangas aux orientations mélangées. Indiquez-moi le volume et la page.
Quand quelque chose casse, écrivez à [email protected]. Indiquez le fichier ou le serveur, ce que vous avez fait et ce que vous avez vu, avec le format et la taille du fichier. Une capture d’écran est utile.
Pour participer, installez TestFlight depuis l’App Store sur votre iPad ou votre iPhone, puis ouvrez ce lien sur le même appareil : https://testflight.apple.com/join/xcUKGG9n. Lijn nécessite iPadOS 26 ou iOS 26. Pas de formulaire, pas de compte.
La bêta est gratuite, sans limite de titres, et prend fin à la sortie. Le prix sur l’App Store sera indiqué sur lijnreader.com d’ici là.
Ce que vous trouverez décidera de ce que je corrigerai avant la sortie. Je préfère apprendre par un e-mail aujourd’hui qu’un fichier est cassé, plutôt que par un avis sur l’App Store demain. Alors apportez votre pire CBZ.