Skip to content

Releases

NeuInk 0.4.3

Choose a tag to compare

@voxain voxain released this 11 Nov 21:08

Two Home and Library fixes, plus a larger Library cover grid.

  • Home: on the app grid, a swipe that starts at the left edge of the screen (a page swipe) no longer opens the
    most recent book. Only the physical Back button does.
  • Library, Recently Opened: books that were never opened now show their cover. It is built once, when its page is
    first shown, and kept in the book's cache folder; books without a cover image are marked so they are not retried.
  • Library, Grid Size: a new Library setting switches the cover grid between 3 x 3 and 2 x 2 (larger covers).
  • Library menu, Generate All Covers: builds the covers of every book at the current grid size, in any view or sort,
    with a progress popup and a Cancel button (Back). Covers already built are skipped.
  • Translations for the two new strings in all languages.

NeuInk 0.4.2

Choose a tag to compare

@voxain voxain released this 11 Nov 20:30

Fixes a font size bug inherited from upstream CrossInk.

With embedded styles on, text a book sets to 0.85em or 0.9em was scaled down again and then rounded down to a whole point, so the page read two or three sizes under the one picked (15 pt showed as 12 pt). Book scales from 0.84 to 1.1 now keep the picked size, and smaller or larger text rounds to the nearest size instead of down. Headings and footnotes still scale. The reader menu's preview still draws everything in one size.

NeuInk 0.4.1

Choose a tag to compare

@voxain voxain released this 08 Nov 21:57

A cleanup release: the same features, less duplicated code, a firmware about 1.5 KB smaller (6,047,872 bytes). Nothing
is added; a few screens changed their look slightly.

  • Buttons: every button drawn outside a FreeInkUI frame is now the kit's own button (drawButton, with the new
    ButtonProps::iconPlacement and shrinkFont): the games' buttons, Flashcards, the font download's Cancel, the
    online dictionary's "back to book", the rating's Clear, the highlights page's study pill and the stats date fields.
    Flashcards, Clear and the font download's Cancel were outlined or black before and are gray now; the games' icon
    buttons set their label at its natural line height.
  • One copy instead of many: calendar math (lib/hal/CalendarMath.h, six copies before), little-endian byte access
    (lib/Serialization/ByteOrder.h), ASCII text comparison (lib/Utf8/AsciiText.h), the games' random number step,
    the reader's toast message, the settings option helpers, and the em-space and visible-word checks.
  • Removed: the reader's dark-mode stub and everything behind it (drawImageInverted, the battery drawers'
    foregroundBlack parameter), eight functions nothing called, one unused header, and 98 translation keys no code
    uses (the build already left them out of the firmware and the language packs).
  • Tests: the symbol-fallback test follows the Lexend UI fonts; the calendar test and the stats test find
    CalendarMath.h and ByteOrder.h in their new places.

NeuInk 0.4.0

Choose a tag to compare

@voxain voxain released this 07 Nov 20:43

Widgets on Home, and everything on it is an app. The new screens are in
FEATURES.md. Settings, books and reading stats carry over; the time per
app on the Battery page starts empty once (the battery graph is kept).

  • Vega Home widgets on a two-by-three grid at the top of the first page, in 1x1, 2x1 and 2x2: current book (author,
    pace, time left, estimated finish; stat tiles in 2x2), recent books (covers with progress), calendar (styled as
    the Clock app's month, a dot on the days read, optionally from a number of minutes), date, clock (digital in five
    digit sizes or analog, with or without the date), streak (this week's bars, Monday or Sunday first; totals in
    2x2), reading goal (minutes a day against a goal), up next (the series' next book, else the folder's), highlight
    (a saved one, a new one each day) and battery (with the Battery page's graph). A widget takes the first free place
    it fits in; the app icons shrink to make room and rows that do not fit move to the next page. The default layout
    is the one before: the greeting, the current book, the icons.
  • Edit mode, from the pencil in the layout panel: drag widgets and icons into place (bars at the screen's sides take
    an icon to another page), tap a widget for its size and data (shown live behind the panel, which hangs from the
    top for widgets in the lower half), tap an icon to hide it, Add widget and Done at the top. Edit mode only
    refreshes fast and cleans the screen once when it ends. One-time introductions explain Home's gestures and edit
    mode.
  • Layout panel: columns (2-6) and rows (1-8) as numbers side by side, about two thirds of the screen high, scrolls a
    page at a time, and shows its changes on Home behind it.
  • Settings > Apps lists everything with an icon on Home, Settings and Library included, on gray squircles. An app's
    page shows its icon large, Open and Enable / Disable (whether it shows on Home), then its settings (the Clock's,
    Sudoku's, the File Manager's) or a note that it has none. Home can be left empty.
  • The File Manager's page has Ask to open as USB drive: off, plugging into a computer no longer offers the SD card.
  • Control Center: a Settings button in its top right corner; the eighth button now defaults to Night light.
  • Battery page: one line through the whole day, the time the reader was awake shaded under it; time and charge for
    every app, Home, Settings, Files, Library, the OPDS browser, Reading stats and Saved included, the most used first.
    The runtimes and the graph's estimate come from one drain figure that leaves out every rise (a slow charge climbs
    one percent at a time and counted as no loss before), so the estimate can no longer climb and the runtimes follow
    the drain. The graph is a shared component (components/BatteryGraph).
  • General > Software updates: the NeuInk logo large and the installed version; after an update check, the version
    it found, and when that one is newer but was not installed, "New version available" with an Update now button.
  • Fixed: the reader menu's Font size for a font with five sizes or fewer (an SD-card bitmap font) opened an empty
    card whose invisible buttons jumped to the smallest or largest size; its row of size buttons now shows.
  • Fixed: the Battery page's list of apps ran off the screen; it scrolls a page at a time now.
  • Fixed: installed SD-card reader fonts fell back to Lexend Deca. The Vega greeting opened the whole Bitter family in
    every reader size in the font arena the reader shares; it now opens one face at one size.
  • Reading time per day for the last 64 days, in /.crosspoint/daily_reading.bin (the stats format and the stats sync
    are unchanged). The time-left, finish-date and pace estimates, the stats tile and the level bar are one shared copy
    each.
  • Icons and the boot logo are inline constexpr: each is in the firmware once instead of once per file that uses
    it (22 KB less).
  • New Lucide icons (calendar, calendar-1, trash-2, target, quote, skip-forward, external-link, eye, eye-off) and a
    55 px set of clock digits.

Install: download firmware-x4-pro.bin and update from Settings > General > Software updates, or copy it to the SD card. The X4 Pro is the only supported and tested reader.

NeuInk 0.3.0

Choose a tag to compare

@voxain voxain released this 07 Nov 01:11

The NeuInk interface: the Vega theme, a rebuilt reader menu, Battery and Storage pages, apps, and a USB prompt. The
new screens are in FEATURES.md. Reading stats, books and settings carry
over; the Battery history and the per-app times start empty once.

  • USB: a computer at the other end of the cable (not a charger) is detected, and the reader asks once per
    connection whether to open the SD card as a USB drive; saying no, or leaving USB mode, silences it until the
    cable has been out for ten seconds. X4 Pro: enumeration by the host (tud_mounted); other S3 boards: USB
    start-of-frame packets.
  • Reader menu: a floating gray card like the Home layout panel (white pill rows, tabs as a black pill, a round back
    button); orientation and paragraph alignment are rows of picture buttons in the Layout list, no longer
    behind a submenu (the orientation buttons are one device icon turned in 90 degree steps). Sliders are the
    Control Center's level sliders with round - and + buttons (panel::levelSlider, shared with the quick settings
    panel). Other short choices that fit become a row of buttons; the picked entry of a list is black. The reader's
    status bars use the header's level-box battery, smaller.
  • Icons: the toolkit turns any icon in 90 degree steps, so the chevrons (left, up, down), the double chevrons and
    the down arrow are the one right-facing icon, turned, instead of a copy each. The reader menu's icons are
    Lucide; the five style-B tab icons and their generator code are gone.
  • Settings > Battery and Storage have an icon and a title in the title bar.
  • Settings > Storage (between Battery and Network): the SD card's used space in large type and one rounded, segmented
    bar in four grays for Books, Images and screenshots, Fonts and dictionaries, App data and caches, and Other, with a
    row per category and what is free. The page opens at once; "--" and a spinner on the bar stand in until the scan,
    which runs in the background, is done. The SD card and used-space rows left About.
  • Settings > Battery: the charge in large type, two runtime estimates (screen on, from the loss between neighbouring
    points; asleep, from the loss across the gaps where the reader slept), and no explanatory text under the graph.
  • Battery graph and the time and charge per app survive software restarts (RTC_NOINIT instead of RTC_DATA, which
    a restart resets) and, through a 0.6 KB copy in /.crosspoint/usage.bin written before sleep and before an OTA or SD
    update restarts, a power-off or a flash.
  • Vega Home: swipe up from the bottom edge for a layout panel (icon size 24/32/42/48, icon shape squircle,
    rounded square, circle or hexagon, grid 4x3/4x4/3x4/3x3, names on or off, and an experimental true gray
    for the plates). Library: Recently Opened lists never-opened books after the recent ones, by title; grid
    covers and page dots are round. Settings: rows keep a fixed size and scroll, and are ordered General,
    Display, Reader, Battery, Storage, Network, Dictionaries, Controls, Library, Apps, Stats, About.
  • X4 Pro: Settings > Battery shows the charge level, a graph of the last 24 hours (a point every five minutes)
    with an estimate for the next 24, the time spent in the reader and each app today and over the last week, and
    the percent of charge each costs per hour (the loss between two gauge reads goes to what was in front; screen
    changes, charging and sleep never count). It takes the levels from the reads the status bar already does: no
    extra gauge reads and nothing during deep sleep. About 0.8 KB of RTC memory.
  • Games: fixed the broken Chess, Checkers and Go boards (the board now fits the screen),
    black chess pieces are filled with gray and outlined, "New" in the title bar is a plain tap
    (nothing resets until Start), and the new-game popup has a rule above Start and Cancel.
    Highlights uses gray squircle icons and a gray Study button. Book-cover corners line up
    with the new dither phase again.
  • New default UI theme, Vega: the last opened book as a card (cover, title, author, pill
    progress bar) over a paged grid of light-gray squircles for every Home action and app.
    Swipe or use the buttons to change page. Only this theme lists the apps on Home, with
    short names (Files, Stats) and two-line names where needed. On touch readers an icon lights
    only while pressed, and the selection shows only while the buttons are in use. Its title
    bars (File Manager, Library, Settings, apps...) are light gray, taller, without the black
    underline, and show the app's icon. Lists in the other apps (Settings, File Manager,
    Library...) also show a selected row only while the buttons are in use. The status bar has
    a bigger clock, a Wi-Fi icon while Wi-Fi is on (Lucide wifi when joined, wifi-zero while
    joining), and a new battery: no outline, rounded, light-gray empty part, the percentage
    without its sign inside it. The reader's own status bar is unchanged.
  • App and Home icons are Lucide. 24 px is Lucide's own grid, pixel-exact (title bars, Wi-Fi);
    squircles and tiles use 32 px, where the Library's pillars and the Stats bars are moved onto
    whole pixels so their gaps are equal.
  • Settings: each group's icon sits on a light-gray squircle (all Lucide now) with a smaller
    description under the title; new About page (version, build, device, chip, memory,
    battery, uptime, reading totals; the SD card moved to Storage), which replaces the version line under the group list;
    Apps has its own entry; General is split into Date and time and Software updates.
  • Shared UI components: switches are a rounded track with a round knob (light gray off,
    dark on, knob inverted); a value is now a size smaller than its label; submenu rows show a
    chevron icon instead of ">". Dictionaries, the Apps options and About are made of the
    shared list instead of their own drawing code (the Apps screen's own boxes, switches and
    buttons are gone; the games keep theirs). Dictionaries: Remove language is a row now
    instead of holding a language chip.
  • Vega's Home does a half refresh when entered from another screen, and after every sixth
    fast refresh within Home, since its gray areas ghost.
  • Settings > Display and Reader are grouped into submenus (Display: Status bar, Screen refresh; Reader:
    Content, Reading aids, Word lookup); Disable touchscreen moved to Controls > Taps and gestures.
  • The quick settings pane: round light-gray buttons with Lucide icons, the sliders are rounded boxes
    (light gray, dark up to the level, the percent inside) and the +/- buttons only show while the buttons
    are being used.
  • The Clock app has no title or status bar (a round exit button on touch screens).
  • Wi-Fi's status bar icon updates when joining or dropping (a comparison in the main loop, no polling).
  • About: the SD card's used space is worked out on request (it reads the whole FAT).
  • Switches in reader menus use the 50% gray, which survives the reader's refresh; the File Browser
    settings and the reader drawer use the same switch as the lists now.
  • Reading Stats opens a list first: "All Books" on top, then every recent book with its progress, so
    the stats to see are chosen first. The stats pages use rounded light-gray tiles and rounded bars
    instead of outlined boxes; the shared action buttons (e.g. the Wi-Fi prompts) follow the same look.
  • Chess pieces are Lucide (48 px on the board, 24 px for the captured pieces): the outline is the
    white piece and the same shape filled in is the black one. That is about half the size of the old
    Noto bitmaps (4.3 KB, was 8.9 KB). The checkers crown is Lucide's too.
  • The status bar's "on but not joined" Wi-Fi icon is Lucide's crossed-out Wi-Fi (the single dot was
    too easy to miss). The title bars' trailing icons (File Manager, Library, OPDS) are Lucide and sit
    on the title's line. The quick settings pane has no outline. Vega's Home does a half refresh after
    the pane closes. The games' controls keep a larger gap to the foot of the screen.
  • File Manager and Library: every file type and the menus' icons are Lucide, on gray squircles in the
    lists; the File Manager's path is a gray pill with a folder icon and its File Transfer button is a
    gray rounded button; the Library's sorting controls sit on a gray pill instead of between two rules.
    There is one icon lookup now (homeIconSet.h) instead of three, so Lyra's and the Cover Grid's menu
    icons are Lucide too; appsIcon.h and its generator are gone.
  • The File Transfer menu has Lucide icons on gray squircles. The quick settings pane is one light-gray
    surface with white controls (no shadow or outline). The Library has air between its title bar and
    the sort pill; Chess and Checkers shrink their board to keep the buttons clear of the screen's foot.
  • Black chess pieces are the Lucide icon inverted: a black body with the outline in white.
  • Fixed: a gray rounded box now has the same corners wherever it sits (the 25% dither is anchored to
    the box's own corner instead of the screen's, so a corner no longer loses pixels by parity). Lists
    draw no selected row while a touch screen is not in button use, also in the File Manager, the Library
    and the File Transfer menu (a flag in the list component, not an index the caller must clear).
  • Fixed: the quick-settings panel drew a gray bar at the top; the book card's top rows were
    painted over by the Home header.
  • File Transfer is now part of the File Manager (its settings page) and no longer a Home
    entry in any theme; "Browse Files" is now called "File Manager" (German: Dateimanager).
    A File Transfer button sits under the title bar of the File Manager (touch readers); the
    power-button shortcut and Quick Actions still start File Transfer directly.
  • The apps list is one shared registry (activities/apps/AppRegistry.h). The Apps screen
    has small tiles with 32 px Lucide icons; the large drawn icons and the 84 px chess
    knight...
Read more

NeuInk 0.2.0

Choose a tag to compare

@voxain voxain released this 06 Nov 15:44

Adds switching to VARAGH, CrossInk or CrossPoint from the settings, and repairs online
firmware downloads, which did not work in 0.1.0. A reader on 0.1.0 cannot download this
release itself: copy firmware-x4-pro.bin to the SD card and use Settings → System →
SD Card Firmware Update
once. Online updates work from 0.2.0 on.

  • Fixed online firmware downloads, including NeuInk's own updates. The reader's
    wolfSSL was built without SHA-384, so it could not verify the certificate chain
    of github.com and the download stopped with "Update failed" right after you
    confirmed it. SHA-384 is now enabled, and the build refuses to compile without
    it. NeuInk 0.1.0 has this fault, so a 0.1.0 reader cannot install this fix
    online: use SD Card Firmware Update once.
  • Fixed a second reason online firmware downloads failed, with the bar showing the
    size and stopping at 0 bytes. The reader does not set its system clock at boot, so
    the certificate date checks of the pinned download ran against 1970 and wolfSSL
    could not even load the pinned root. The download now syncs the clock first, with
    the same NTP step KOReader sync uses.
  • Added scripts/wolfssl_pin_check/check.sh, which handshakes with the pinned
    GitHub hosts using the reader's own wolfSSL source and settings. Run it before a
    release and whenever GitHub changes its certificates.
  • Added Settings → System → Switch to Another Firmware. It installs the latest
    VARAGH, CrossInk or CrossPoint release over WiFi, after a warning that says SD card
    files and books should stay safe but a backup is sensible. It reuses the OTA updater
    and the pinned GitHub certificates, matches each project's own release asset name
    for the device, and refuses a release that has no SHA-256 digest.

NeuInk 0.1.0

Choose a tag to compare

@voxain voxain released this 06 Nov 13:39

First NeuInk release: e-reader firmware for the Xteink X4 Pro, based on VARAGH 1.3.2.

Install: download firmware-x4-pro.bin, copy it to the SD card, then use Settings → System → SD Card Firmware Update.

What's in it

  • NeuInk name, logo and sleep and boot wordmark.
  • Only the X4 Pro is supported and tested. The X4 Classic and X3 builds are experimental.
  • KOReader sync uses only the built-in server, with its certificate checked. Custom sync servers are not supported.
  • Firmware updates come only from GitHub, over pinned certificates, and the release SHA-256 digest is checked.
  • Version 0.1.0 starts NeuInk's own numbering. The VARAGH and CrossInk history is in the changelog.

Full notes: CHANGELOG.md.