Skip to content

Releases: arduinodude456/appdock.koplugin

AppDock 4.3.0 — Simple Mode

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 13:54

AppDock 4.3.0 — Simple Mode

Simple Mode

AppDock now offers a dedicated Simple category in Settings. Its three independent switches can be enabled separately and are saved locally.

  • Simple homescreen hides the greeting, status cards, store widgets, search field and background content. It leaves an apps-only 4×3 grid and does not schedule hidden widget refreshes.
  • Simple quick settings shows only Wi-Fi, Night, Save power and the brightness slider. Notifications and inbox actions are omitted.
  • Quick find limits the visible AppDock selection to Settings, File Browser, DReader, Library, BookTranslator and the Internet Browser. Hidden app pins are preserved and return when the switch is disabled.

Splitscreen feedback

The split divider now updates both pane sizes and the visible divider while it is dragged. Each changed drag position requests a bounded fast E-Ink refresh and yields to the display controller; the final position is persisted when the finger is released.

Verification

The release was checked with Lua 5.1 syntax validation, byte-identical root/package mirrors, the AppDock DApp regression suite, Simple-Mode configuration and UI contracts, live split refresh behavior, compact geometry, lifecycle handling and formatting validation.

AppDock 4.2.4 — Stability

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 13:37

AppDock 4.2.4 — Stability

Fundamentaler Splitscreen-Fix

Der Splitscreen-Mittelstreifen verwendet keine eigene Unterwidget-Geste mehr. Stattdessen empfängt der dauerhafte DApp-Host jede Pan- und Pan-Release-Geste über eine breite, absolute Touchzone um die aktuelle Trennposition. Die Steuerung ist damit unabhängig von der vorherigen Zugrichtung und bleibt bei Aufwärts- wie Abwärtsbewegungen am selben Host gebunden.

Web Browser

Der Browser importiert die zentrale Theme-Hilfe jetzt explizit. Dadurch ist Theme.fitLabel beim Aufbau der Browser-Aktionsbuttons verfügbar und der Startcrash durch eine fehlende globale Theme-Referenz ist behoben.

Validierung

Lua-5.1-Syntax, Root-/Paketspiegel, Browserstart und die DApp-Core-Regression wurden ausgeführt. Die Splitter-Regression prüft die breite Host-Touchzone, Bewegungen nach unten und oben, positionsloses Loslassen, Persistenz und den DApp-Lebenszyklus.

AppDock 4.2.3 — Split

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 13:22

AppDock 4.2.3 — Split

Zuverlässiges Ziehen in beide Richtungen

Während eines Ziehvorgangs bleibt der Splitscreen-Mittelstreifen jetzt am gleichen Gestenobjekt gebunden. Dadurch kann die Teilung zuerst nach unten und anschließend wieder nach oben verschoben werden, bevor der Finger losgelassen wird.

Stabilerer Neuaufbau

AppDock aktualisiert die Split-Teilung während der Pan-Geste nur intern und zeichnet die betroffene Region schnell nach. Der aufwändigere Host-Neuaufbau wird genau einmal beim Loslassen ausgeführt. Das verhindert, dass eine laufende Geste ihren Divider durch einen Zwischen-Neuaufbau verliert.

Validierung

Lua-5.1-Syntax, Root-/Paketspiegel und die DApp-Core-Regression wurden ausgeführt. Die Splitter-Regression deckt nun Abwärts- und anschließende Aufwärtsbewegung innerhalb derselben Geste, positionsloses Loslassen, Persistenz und den fortlaufenden DApp-Lebenszyklus ab.

AppDock 4.2.2 — Controls

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 13:16

AppDock 4.2.2 — Controls

Dropdown-Menü

Die Textzeilen in den Quick-Settings-Kacheln liegen enger zusammen. Dadurch bleiben Symbol, Titel und Untertitel auch auf kleineren Geräten innerhalb der jeweiligen Kachel.

Splitscreen

Der sichtbare Mittelstreifen besitzt jetzt eine deutlich größere unsichtbare Touchzone. Ein Ziehen kann daher etwas oberhalb oder unterhalb des Streifens beginnen. Während des Ziehens merkt sich AppDock zudem die letzte gültige Y-Position und verwendet sie beim Loslassen, falls der Touch-Controller im Release-Ereignis keine Position liefert.

Validierung

Die Korrektur wurde mit Lua-5.1-Syntaxprüfung, Root-/Paketspiegelvergleich und der DApp-Core-Regression geprüft. Der Test deckt neben dem Ziehen nun auch die breite Touchzone sowie den positionslosen Release-Fallback ab.

AppDock 4.2.1 — Layout

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 10:16

AppDock 4.2.1 — Layout

Saubere Beschriftungen im gesamten System

AppDock nutzt jetzt eine zentrale, UTF-8-sichere Ein-Zeilen-Kürzung für lange UI-Texte. Beschriftungen werden innerhalb ihres Controls mit einer Auslassung gekürzt, statt mehrzeilig umgebrochen, unter einen Button geschoben oder über benachbarte Elemente gezeichnet zu werden.

Betroffene Oberflächen

Die Korrektur deckt die DApp-Host-Aktionen und Recents-Karten, Einstellungszeilen und Kategorien, Quick-Settings-Kacheln und Benachrichtigungen, Homescreen-Kacheln und Infokarten, Dateimanager-Toolbar und Dateizeilen, AppStore-Karten, Browser-Toolbar sowie Speicherübersichten ab.

Kompakte Panegrößen

Schriftgrößen, Innenabstände und Titel-/Untertitel-Offsets orientieren sich jetzt an der tatsächlichen Kontrollhöhe. Dadurch bleiben auch reduzierte Splitscreen-Panes lesbar und die Touchflächen unverändert erreichbar.

Validierung

Lua-5.1-Syntax, Root-/Paketspiegelgleichheit, die bestehende DApp-Regression und neue Tests für einzeilige UTF-8-Kürzung sowie schmale Controls wurden vor dem Release ausgeführt.

AppDock 4.2.0 — Navigation

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 09:59

AppDock 4.2.0 — Navigation

Adjustable split screen

Split screen now includes a visible horizontal divider. Drag the divider up or down to resize both DApp panes. AppDock maintains safe minimum pane heights and saves the final valid divider position for the next split-screen session.

Android-style system navigation

The three system actions have moved out of the top-left title area. Home, Open Apps, and Close are now grouped in a centered navigation bar at the bottom of every DApp host. The DApp content region ends above this bar, so its controls do not overlap running DApps.

Validation

The core regression suite covers the lower navigation placement, drag and release gestures, bounded resizing, persistence, active DApp continuity, root/package mirror equality, and Lua 5.1 syntax.

AppDock 4.1.1 — Plugin Host Widget Bridge

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 08:27

AppDock 4.1.1 „Bueno"

AppDock 4.1.1 improves the opt-in Plugin-in-DApp beta host. When a hosted plugin action synchronously opens a standard menu, confirmation dialog, information message, or input dialog, AppDock now captures the widget request and presents it as a local AppDock overlay inside the active plugin host.

For text entry, the overlay shows the current value and opens an AppDock-created text editor. Saving transfers the value back to the original plugin dialog object, so existing plugin callbacks can still read it through their normal interface. Dynamic Text editor-style menus continue to use the local adapter; AppStore-style direct actions retain their existing launch behavior.

This is a compatibility bridge, not a global replacement of KOReader's widget framework. Complex standalone plugin windows, asynchronously created third-party widgets, and plugins that bypass the hosted action path remain outside the bridge and may continue to use their own UI. Plugin hosts still cannot enter split screen.

Verification

  • All twelve existing AppDock Lua regression scripts pass under Lua 5.1.
  • Plugin-host regressions cover dynamic Text editor menus, AppStore-style actions, standard dialogs, information messages, input-dialog capture, callback preservation, host return, and split-screen rejection.
  • Package and root module mirrors are verified byte-for-byte before packaging.

AppDock 4.1.0 Bueno

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 06:35

AppDock 4.1.0 „Bueno"

AppDock 4.1.0 expands the JavaScript-free Web Browser DApp with safe rendering for static images in server-rendered HTML pages.

Static image rendering

The browser now discovers img elements, resolves relative and protocol-relative sources against the current page, and fetches supported HTTP(S) images into a controlled temporary local cache. The rendered HTML is rewritten to reference only generated local filenames, and KOReader’s ScrollHtmlWidget receives that cache as its resource directory. MuPDF can therefore render local image resources without receiving arbitrary network or device paths from the original document.

Supported formats are PNG, JPEG, GIF and WebP when the server declares an image/* response and a supported raster type. CSS constrains rendered images to the readable width of the Browser pane.

Safety and E-Ink limits

Boundary Limit
Per page At most 8 images and 5 MiB of total image bytes.
Per image At most 1.5 MiB, using the existing request timeout and redirect limit.
Sources HTTP(S), relative, and protocol-relative sources only. data:, javascript:, local paths, SVG, active media, and unsupported response types are excluded.
Fallback Unavailable, oversized, blocked, or unsupported images are rendered as safe Alt text so the article remains readable.
Lifecycle Image files are removed on page replacement, Home, and closing the Web Browser DApp.

JavaScript, WebSockets, forms, downloads, embedded media, and arbitrary local file access remain unavailable. This continues to be a reading-oriented browser rather than a full web platform.

Verification

Regression coverage verifies relative and protocol-relative image URLs, local resource rewriting, cache handoff to ScrollHtmlWidget, data: rejection, cleanup on Home and session close, plus existing navigation, redirect, search, and HTML-sanitization behavior. The full Lua 5.1 syntax check and complete AppDock regression suite passed.

AppDock 4.0.2 Bueno

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 06:23

AppDock 4.0.2 „Bueno“

This patch repairs the remaining central mistake in the 4.0 Plugin-in-DApp Beta: opening a plugin tile created an AppDock host but left the user on a passive action list, even when the original KOReader plugin had exactly one primary action that normally starts immediately.

Direct single-action plugin start

After an AppDock plugin-host session is fully constructed, AppDock now checks its published main-menu actions. When there is exactly one action, it invokes that action on KOReader’s next UI cycle. The host has already been registered in Open apps at that point, so it remains a non-splittable AppDock session while the plugin opens its own UI.

Real plugin 4.0.2 behavior
Text editor Its sole dynamic root menu opens immediately. The local TouchMenu adapter then supports the plugin’s item_table, page, and updateItems() lifecycle for settings, file history, and the return from editing.
AppStore.koplugin Its sole direct callback runs immediately after the host opens, starting the AppStore browser without requiring a second AppDock tap.

Boundaries retained

Plugin hosts remain excluded from split screen at every entry point. A plugin with multiple published actions still opens an explicit AppDock action list; AppDock does not guess which action to run. AppDock also does not rewrite third-party widgets into panes: buildAppDockPane(context) remains the opt-in contract for a true local plugin-owned pane.

Verification

The regression suite now covers the complete host-open-to-action path for a real Text editor-style dynamic root menu and for an AppStore-style direct callback, in addition to the previous dynamic-menu, notification, Open Apps, lifecycle, and split-screen checks. The complete Lua 5.1 syntax and existing AppDock test suite passed.

AppDock 4.0.1 Bueno

Choose a tag to compare

@arduinodude456 arduinodude456 released this 26 Aug 06:15

AppDock 4.0.1 „Bueno“

This patch release repairs the Plugin-in-DApp Beta introduced with 4.0.0 for two real KOReader plugin contracts.

Fixed plugin menu lifecycle

The core KOReader Text editor plugin exposes a dynamic sub_item_table_func. Its actions expect a TouchMenu-like argument with item_table, page, and updateItems(): it uses that object when creating or closing an editor to rebuild its dynamic history and settings menu. The AppDock plugin host now supplies a local compatibility adapter with those three responsibilities. Dynamic menus are therefore rebuilt inside the host instead of failing because the expected menu object was absent.

The external AppStore.koplugin entry is a direct callback that opens its own browser widget. The host now closes its temporary action menu first and starts that callback on KOReader’s next UI cycle. This removes the competing-menu timing that could prevent the plugin browser from appearing.

Boundaries retained

The patch preserves the 4.0.0 safety and hardware-independent boundaries. Plugin host sessions remain non-splittable, existing generic callbacks remain supported, AppDock notifications are used for host errors, and AppDock does not globally intercept or rewrite arbitrary third-party plugin dialogs. A plugin that exposes buildAppDockPane(context) remains the only contract for a true plugin-owned local pane.

Verification

Regression coverage now includes a Text editor-style dynamic menu that resets item_table, restores page 1, and calls updateItems(), plus an AppStore-style direct callback that runs after the AppDock host menu closes. The full Lua 5.1 syntax check and existing AppDock regression suite passed after the fix.