Skip to content

Releases: merlijntishauser/lastread

v0.22.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 15:58
v0.22.0
404e31c

Added

  • EPUB Folder in the Mac app. The folder whose books go on the Kobo
    has its own place in the sidebar: each book in it, by its title and
    author, with whether it is on the Kobo (and since when, as kepub or
    EPUB), refused for DRM, or waiting for the next plug-in, and its
    Hardcover status once a sync has read it from the Kobo. A double-click
    shows the book in Books. The folder is chosen there, in a panel that can
    make a new folder, and gets a Finder icon with the caret.
  • lastread to-kobo --json lists each book of the folder (list).

Changed

  • The folder is no longer chosen in the Mac app's Settings, but in
    EPUB Folder.

v0.21.0

Choose a tag to compare

@github-actions github-actions released this 01 Nov 12:27
v0.21.0
d3b8f74

Added

  • Books from a folder of yours go on the Kobo. lastread to-kobo FOLDER:
    at every plug-in, the EPUBs in that folder that this Kobo has not had yet
    are copied to a folder Lastread on it, and the Kobo lists them after the
    eject. Only files are written, never the Kobo's database or a setting.
    They go as kepub: the Mac app comes with kepubify 4.0.4, and the
    Homebrew formula installs it.
    Each book goes on each Kobo once; one deleted on the Kobo stays deleted.
    A book with DRM is not copied, and the sync says so. More than 20 books
    at once only with --yes. Installed otherwise, with kepubify on the
    computer, each goes as kepub too, converted on the computer. The folder is
    chosen with the command, in the Mac app's Settings (Advanced, a folder
    picker), or on the page in local mode (Settings, Advanced); each asks
    before a folder puts more than 20 books on the Kobo at once, and shows
    the books that were refused and why. The rules are P1 to P7 in
    docs/sync-rules.md.

  • Books you put on the Kobo yourself are found by their ISBN. The Kobo
    often keeps no ISBN for a sideloaded book; Lastread now reads it from the
    book's own EPUB file, so a DRM-free book bought elsewhere is matched on
    Hardcover as surely as a Kobo-store book. A sideloaded book that was
    waiting for a match gets one more look. The file is only read.

v0.20.1

Choose a tag to compare

@github-actions github-actions released this 31 Oct 21:33
v0.20.1
c4ab0cd

Changed

  • A new icon: the red caret on white, the mark a proofreader writes where
    something goes in, which is what a sync does. The Mac app, the disk image,
    the page's tab and the site all carry it, and the site's name has the same
    caret before it.

Fixed

  • The disk image's window says Drag Lastread onto Applications. In 0.20.0 it
    still named the app by its old name.

v0.20.0

Choose a tag to compare

@github-actions github-actions released this 31 Oct 18:28
v0.20.0
82d7206

Changed

  • The tool is called Lastread now. The command is lastread; the
    package on PyPI, the Homebrew formula, the container image and the Mac
    app carry the name, and the site is at https://lastread.app/. It does
    the same thing, and it says so under the name: your Kobo's reading, on
    Hardcover. What stays as it was: the state folder (~/Library/Application Support/kobo-hardcover-sync, ~/.local/share/kobo-hardcover-sync), the
    KHS_ settings, the keychain and keyring entries, the Mac app's bundle
    id and launch agent, and its kobo-hardcover-sync:// links, so an
    existing install keeps its settings, its token and its trigger. The old
    command name kobo-hardcover-sync still works. The Mac app of 0.19 cannot
    fetch this version by itself, because the disk image and the app inside
    it have the new name: download it once from the site and drag it over
    the old one. The repository, the container image and the Pages address
    under the old name redirect.

Added

  • Mac app: About shows a link to the tool's site, lastread.app, with the
    independent-project sentence.
  • The site has an address of its own, https://lastread.app/; the GitHub
    Pages address still works and sends you there.

Changed

  • The tag on a book first opened after the tool started says Auto, the
    word the Sync column and the guide already use for it, instead of New,
    and explains itself when pointed at. Same on the page's filter.

Fixed

  • A book's cover reaches the server even when the book is no longer
    reported as touched: a book that came in before its cover id travelled
    with the upload, and that the Kobo has since stopped listing events for,
    kept an empty cover (the crossed box on Covers and Books). The next
    import fills it in.

v0.19.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 21:45
v0.19.0
693a763

Fixed

  • Mac app: hiding or showing the sidebar no longer flashes a button at the
    top right of the window (the toolbar's overflow chevron, for one frame,
    on macOS 26). The sidebar button now sits at the leading edge of the
    content's title bar, in the app's window and the guide's.

v0.18.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 19:34
v0.18.0
377704f

Added

  • Getting started, the same on the page and in the Mac app: four steps
    from a new reader to a live shelf (connect to Hardcover, plug in your
    Kobo, choose your books, go live), each marked done or to do, with the
    one button that does it right there. On the page it stands above your
    books, and connecting to Hardcover, adding your first computer on a
    server and going live all happen in it, without a trip to Settings. In
    the app it opens the Overview, above the chain, and the same steps sit
    above the list in Books. It goes away once you are live.
  • Needs you, once you are live: one line above your books, on the page
    and in the app, counts the books switched on that wait for you, with no
    Hardcover match yet or not sent at the last sync, and leads to the ones
    that need a match.

Changed

  • Settings on the page has your name and your Hardcover connection on
    top, and the rest under Advanced: folded until you open it, and open
    by itself when a link leads to one of its parts. Nothing was removed.
  • Settings in the Mac app has two tabs instead of three: General
    (Hardcover, ejecting the Kobo, notifications, updates) and Advanced
    (where your reading goes, the upload token, the log, an untested Kobo,
    the webhook, export, removing the app).
  • Setting up the Mac app ends with Continue, which opens its window and
    Getting started there, instead of opening the page in the browser. With
    a server
    now says it is only for a household that runs one.
  • Signing up on a server lands on Getting started instead of Settings.
  • The check's advice in the app and on the page points to Getting started
    for choosing your books and going live, and to Settings, Advanced for an
    untested Kobo; in a terminal it says what it said.

v0.17.0

Choose a tag to compare

@github-actions github-actions released this 28 Oct 10:35
v0.17.0
b5577a7

Added

  • The Mac app updates itself: Install and Restart, where it says a
    new version is out, downloads it, installs it only when Apple notarised
    it and it carries the same signature as the app you have, and starts
    it. From the next version on: this one is still installed by hand.
  • A guide in the Mac app (Help, ⌘?): how it works, each pane, what the
    marks mean, the keys, and what to do when something is wrong.
    Searchable, also from the Help menu's own search field, and it no
    longer sends you to GitHub.
  • A full-screen cover in the Mac app: on a cover shown large, the button
    in its corner (or F) puts it alone on black over the whole screen; a
    click or any key puts it back.

Changed

  • Covers in the Mac app takes about a third less of the processor while
    the rows drift, and next to nothing while a book or its large cover is
    open over them: each row now moves as one, and the rows stop drawing
    when they stand still.
  • The Mac app's overview and History are on the page's paper: your Kobo
    in the rail's blue, Hardcover in the proof margin, the status in its
    mark's colour, and a sync's outcome as the page shows it. The count of
    books a live sync will send is in red.
  • The Mac app keeps only the last four large covers in memory, not every
    one opened since it started, and reads each away from the window's
    thread before showing it.

Fixed

  • ⌘V pastes in the Mac app's text fields, the Hardcover token among them:
    the Edit menu had no Paste (nor Cut, Undo and Redo). A new Sync menu
    holds Sync Now (⌘R), Check Again (⇧⌘R) and Show the Log.
  • VoiceOver says when a sync starts and how it ended, in the Mac app.
  • The Mac app's grey text (authors, facts, labels) is dark enough to read
    in light mode, in every pane, Settings and the widget. A book selected
    in Books keeps its status, marks and gauge readable on the selection's
    blue, and the covers on the Covers pile open by keyboard too. Its red
    "Next sync" stays readable on the grey a selected row takes when the
    window is in the back.
  • The Mac app's menu bar has a View menu (the four panes on ⌘1 to ⌘4,
    the sidebar on ⌃⌘S, full screen on ⌃⌘F), Zoom and Bring All to
    Front
    in Window, and a Help menu with the guide, whose search
    field finds the guide's topics as well as the menus.
  • VoiceOver can move by heading through a book's Details, and open a
    cover on the Covers rows. Covers shows its keys for a few seconds each
    time the keyboard comes into its rows.
  • Open the page in the Mac app no longer holds up the window while the
    tool starts.
  • A book's Open on the Page in the Mac app opened the server's front
    page in server mode, not the book; open --book now lands on the book
    there too, with its details open. The button says where it goes:
    Open in Browser, or Open on and the server's name. In server mode
    the details open once the server runs 0.17.0.
  • On a wide window, the page opened at a book (after an action, or from
    open --book) scrolled the whole page as well as the list: its top
    out of view, and no way to scroll back up. Only the list scrolls now.
  • With Increase Contrast on (Accessibility, Display), the Mac app's grey
    text, colours and rules are stronger: the words 7:1 on the paper.

v0.16.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 11:41
v0.16.0
d4860e2

Added

  • Show on Covers in the Mac app: the rows hold only the books of one
    of the list's filters, such as the ones that sync (the books in your
    Kobo collection), the ones you are reading or the ones you have not
    started. Covers and Books each remember what you chose to show.

v0.15.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 09:28
v0.15.0
61f98d0

Added

  • In server mode the Mac app has your books too, as in local mode: the
    list with its marks, Details, Sync, State, a match, Set all and going
    live, all made on the server for you. It asks with this Mac's upload
    token, so nothing new to set up on the Mac. The server needs 0.15.0
    too, and its proxy has to let /api/app/ past its sign-in, as it does
    /upload (README).
  • A tip above the Mac app's list of books: one book from your own shelf,
    asked as a question. A book you stopped halfway through more than half
    a year ago, then one on your Want to read that is already on your Kobo,
    then one you never opened. The same one all day; Not now puts it
    aside for a month. It is chosen from what the tool already knows;
    nothing is asked of Hardcover or anyone else. In a terminal,
    book ID --not-now.
  • Covers in the Mac app's sidebar: your library as a press run. Three
    rows of covers drift slowly left: at the front the books you read in
    the last year, behind them the rest you read, at the back the ones you
    never opened. Pointing at a cover stops its row and lifts it, with its
    title, how far you are and what the next sync does. A click opens the
    cover large in a third of the window, with its Details and what you can
    do with it beside it; a click on that cover, or Space, shows it over the
    whole window. The arrow keys walk the rows, two fingers move them. A
    red caret marks a book the next sync changes.
    Below the rows: the book you are reading, and the tip. With Reduce
    motion on, the rows stand still. Full screen with ⌃⌘F.
  • Your books in Spotlight on your Mac: type a title, and the app opens
    Covers at that book. The index is your Mac's own; removing the app
    takes the books out again.
  • A widget for the desktop and Notification Center (macOS 14 and later):
    the book you are reading with its cover and how far you are, and in the
    medium size the tip beside it. A click opens Covers at that book. It
    needs the signed app from the release; a build of your own, signed ad
    hoc, has no widget.
  • When a sync marks a book as read on Hardcover, the Mac app says so in
    a notification of its own, "Finished: …", with the book's cover; on
    Linux the cover is the notification's icon. In local mode: in server
    mode the server marks books read, after the upload.

Fixed

  • Book titles in the Mac app are in the page's serif, Source Serif 4, as
    meant. macOS picked the font's subset without lowercase letters, and
    set them in the system font instead.

v0.14.0

Choose a tag to compare

@github-actions github-actions released this 26 Oct 09:16
v0.14.0
cc0f74c

The Mac app gets an icon of its own, drawn like the page, and the disk
image it comes on says what to do with it.

Changed

  • The Mac app has a new icon, drawn like the page: a galley of your books
    with the next sync's red caret in its margin. On macOS 26 and later it
    is a proper icon for those versions, with the system's glass, where the
    old one was shrunk into a grey tile. At the smallest sizes it is drawn
    for the size, not made smaller.
  • The disk image the app comes on has its own icon, and its window shows
    what to do: drag the app onto Applications.