Repository navigation
Releases: jularboolean/legejo
Releases · jularboolean/legejo
Release list
Legejo 1.24.1
- Searching the text sits beside the search box. On a wide screen the box
for searching inside the books stands next to the search field instead of
below it; on a phone it wraps below. - The admin page fits a phone. The buttons under Version go onto a line
each when there is no room, instead of making the page wider than the
screen. - What a Kobo gives up, said plainly. The handbook and the README now
say that the Kobo store does not work on a Kobo while it syncs with Legejo,
and that books bought from Kobo do not arrive; the handbook says how to
switch back.
Legejo 1.24.0
- The Kobo's reading time. The time a Kobo counts reading a book shows on
the book's page, and the time over all books on My reading. AI assistants
see it in the book details too. Marking a book read or unread in the web no
longer resets the count on the device. - The browser opens at the Kobo's line. Read on a Kobo, then open the book
in the browser: it opens at the sentence you stopped at on the device, not
only at the same percentage. This works for books the Kobo got from
Legejo; for others the percentage stands, as before.
Legejo 1.23.1
- The admin page works with PostgreSQL and the text search on. Its
account of the search inside the books came back from PostgreSQL in a form
the server could not read, so the whole settings page failed to load and
showed defaults instead. The account is read correctly now, and should it
ever fail again, the rest of the settings load all the same. - The features on the admin page are evenly spaced. Some switches sat
close under the explanation before them and others further down; now each
feature is the same distance from the one before.
Legejo 1.23.0
- Searching inside the books. Set
LEGEJO_FULLTEXT=trueand the search
page gets a box for searching the text of the EPUBs, not only their titles
and authors. Each book comes with the passages that match and where they
are; choose one to open the book with the search already in it. Every word
must occur, a word also finds longer words it begins, and words in double
quotes must stand in a row. Books on shelves shared with you are searched
too, and quoted, until you take them. - The text is kept once. The server reads the books in the background
and keeps their text in the database: once per text, so an imported copy
takes no room of its own, and a book whose details are edited is not
stored again. The admin page shows how far it has come and how much text
is kept. Started without the variable, the server drops the text again. - An assistant can search all the books. With the search turned on, the
MCP server offerssearch_text, which finds words in the text of the whole
library at once. It is still read-only. - The reader opens with a search. A link to a book can carry the words to
look for; the reader opens with the search panel showing them.
Legejo 1.22.2
- Book files are sent as they are read. A download to a Kobo, to the
browser, through OPDS or through a private link no longer loads the whole
book into the server's memory first. A comic made into a book for the
device can be hundreds of megabytes, and two devices fetching at once held
two such files; now each takes a small buffer, whatever its size. - A file that cannot be read no longer drops the connection. An EPUB with
a stray unclosed tag in its package document made the server's file check
fail in a way that cut the upload off without a word. The check now reads
past such a tag, and the reading of an uploaded book runs off the request
threads, so a bad file ends in a message to the uploader, and a large one
no longer holds up other requests while it is read. - Mailed links use the instance's address. The links in verification and
password-reset mails are built fromLEGEJO_PUBLIC_URLwhen it is set, as
invitation links already were, rather than from the address the request
came in on. - One round of requests per page load. The app installed on a device
asked the server for the session, settings and shelves twice each time a
page loaded, once for the page and once to warm its offline cache; the
cache already had them. Now once. - Pictures are checked before they are kept. A cover or an avatar must
decode as a picture (JPEG, PNG, WebP or GIF), is stored under the type
found in the file rather than the one the browser claimed, and is served
with headers that keep a browser from treating it as anything but a
picture. An avatar is scaled to 512 pixels and stripped of its metadata. A
cover an EPUB declares as an SVG is served as one, under a policy that
lets it draw and nothing more. - Only the routes that take files accept large bodies. Books, audio
files and pictures have their own limits; every other request is capped
at a megabyte. Past the limit an upload is told it is too large. - Passwords are checked off the request threads, so a burst of logins
no longer slows down Kobo sync and downloads, and a login for a name that
does not exist takes as long as a wrong password. - Mails from the login page are rationed: three verification or reset
mails per address within the login window, and twenty per client address
when the instance knows client addresses. Asking for a reset twice within
the hour sends the same link again instead of voiding the first, and the
mail goes out after the answer. A name is text in a mail, never markup. - Expired sessions and unconfirmed registrations are removed daily, so
a name registered but never confirmed is free again after two days. - One rule for usernames wherever one is chosen or changed: 1 to 60
characters, none of them control characters. - Upgrading: nothing to do.
Legejo 1.22.1
- Covers that went missing. Some EPUB 3 files name their cover only in
the older way, and such a book came into the library without one. Legejo
now finds the cover on upload, and marks it in the file so that a Kobo and
other reading apps find it too. Books already in the library get their
cover back after the upgrade, by themselves; their page offers Repair
the file to mark it in the file as well. A cover you chose yourself is
left as it is. - Lists look like the fields beside them. In Safari, the lists for
language, licence and federation were drawn as Safari's own small grey
controls. Every list in the app is now drawn alike, in every browser and
design. - Upgrading: nothing to do. Every book's file is checked once more after
the upgrade, which takes a moment on a large library.
Legejo 1.22.0
- Following a shelf. A shelf someone shares with you has a Follow
button. Books that come onto a shelf you follow are then announced above
your library, with the shelf, how many and their titles, and the number
shows beside Shared shelves in the sidebar. On the shelf itself, the new
ones are marked New. Opening the shelf counts as having seen them, and
Mark as seen clears them all at once.- Each shelf you follow has an Atom feed of its own, for a feed reader:
an address only you have, which needs no login and stops working when you
stop following, or when the shelf is no longer shared with you.
- Each shelf you follow has an Atom feed of its own, for a feed reader:
- Your reading, to take elsewhere. The Account page gives Reading as
CSV (Goodreads): the books you have read, are reading or want to read,
with ratings, the date you finished and your shelves, in the form that
StoryGraph, BookWyrm and Goodreads take in when importing. - A new password without mail. An admin can make a password reset
link for a user on the Admin page, under Users, and pass it on; it works
once, for a day. When no admin can log in,legejo reset-password <user>
run on the server (with Docker Compose:docker compose exec legejo legejo reset-password <user>) prints such a link. Both are noted in the system
log. - The export on the Account page is now headed Export your library.
- The Legejo Cookbook has three new recipes: Following a Shared Shelf,
Taking Your Reading Elsewhere, and Helping Someone Who Has Lost Their
Password. - Upgrading: nothing to do. A table is added for the shelves people
follow.
Legejo 1.21.1
- You see what you pick in Safari. In Safari, and in the app on a home
screen, text could only be picked blind: the reader has to lay a cover over
the book there, and the browser draws no selection under it. Now the
passage is marked as you drag the mouse, the pointer is a text cursor over
the page, and on a phone a finger held on a word and then moved picks from
there to where it is, marked as it moves. - From a book to its notes. The count of highlights on a book's page
leads to that book on My notes. - Upgrading: nothing to do.
Legejo 1.21.0
- My notes. A new page in the sidebar gathers every highlight and note
from all your books: book by book, in the order they come in the text, the
book you last changed something in first. Each shows the passage, your
note set apart below it, and in small grey the chapter, how far through
the book it is, and the page of the printed edition when the book has a
page list. Search them all, show only those with notes, write or change a
note right there, or remove a highlight. Show in the book opens the
reader at the passage, marked for a moment, without moving your place in
the book, and leads back to your notes. Export all gives every book's
notes in one Markdown file. Highlights from a Kobo are there too. - Highlights made before this version get their chapter and place the next
time their book is opened in the reader. - A click on a highlight opens it. On a computer, a click just beside a
highlight's lines, or in the gap between them, could turn the page
instead. - The Legejo Cookbook tells of My notes, in Going Through Your Notes.
- Upgrading: nothing to do. A column is added for where a highlight
stands.
Legejo 1.20.2
- The app holds when the server is down, not only the network. With the
network there but the server behind it down, the app installed on a phone
showed an error, or asked you to log in, and "Books on this device" did
nothing. Now it opens on the books saved on the device, as it does without
a network, and finds its way back once the server answers again. - On a poor connection just after an upgrade, the app no longer mixes the
page of the new version with the files of the old one, which made every
page change fail. What could not be fetched is called that, not an
internal error, and the links on the error page always do something. - Upgrading: nothing to do. The app on a phone takes the change the next
time it is opened with the server in reach.