Skip to content

Releases: janovsk1s/paka

Paka 0.15.1

Choose a tag to compare

@janovsk1s janovsk1s released this 11 Jul 23:11

Paka 0.15.1 is the last release line supporting Light Phone 2. It adds a Developer light mode for e-ink screens, shows QR and Aztec codes on a compact centred stage, and roughly halves the download by shipping one CPU architecture per APK.

Which APK?

  • Paka-v0.15.1.apk — arm64. Light Phone III and every modern Android phone.
  • Paka-v0.15.1-arm32.apk — 32-bit. Light Phone 2 and other older 32-bit devices. On Light Phone 2, manual pass entry, code display, 2FA, photo import, backups, and light mode work; scanning, in-app capture, and PDF passes need a camera and Android 11.

Highlights

  • Show QR and Aztec codes on a centred compact stage surrounded by screen background instead of an almost edge-to-edge white panel. The rendered symbol is unchanged: full quiet zone, exact whole-module grid, and decode verification before display.
  • Add a persistent app-wide light mode to Developer settings — black text on paper-white, made for e-ink displays such as Light Phone 2, localised in all eight languages. The camera, capture review, and full-screen document viewers keep their dark backdrop, and rendered codes remain dark modules on a white field in both modes.
  • Ship one CPU architecture per release APK instead of four, roughly halving the download.

Reliability and security

  • Remove interrupted-write temporaries together with their store and recognise them in orphan cleanup.
  • Close a narrow race between a pass save's document cleanup and a concurrently starting restore.
  • Verify that stable release tags carry a development version suffix, and validate preview naming without hardcoding the cycle name.
  • Restore the clipboard TOTP handling and capture metadata-stripping disclosures in the README.
  • Measure long translated menu labels before first draw instead of visibly shrinking them into place.

Release verification

  • Unit tests, localisation/resource tests, Android lint, detekt, debug, minified preview, and minified release builds passed on the release commit.
  • APK: Paka-v0.15.1.apk (arm64-v8a)
  • APK SHA-256: 46c0caecffc6e39051ccb10555216d18ab7d2f2c8b554aa10b906bf884d22a11
  • APK: Paka-v0.15.1-arm32.apk (armeabi-v7a)
  • APK SHA-256: 10b69dd4febdb4a8dec82b156c3a8c16ba88341cd69e76dd58d021baf930d2e2
  • Signing certificate SHA-256: 098fbb0a5455ec00dbafae93f16bff74b048e5bde7a824fac9ecf42effad0019
  • Permissions: android.permission.CAMERA only

The complete chronological notes are in CHANGELOG.md.

Paka 0.15.0

Choose a tag to compare

@janovsk1s janovsk1s released this 10 Jul 23:09

Codename: Paperlight

Paka 0.15.0 brings document capture, full in-app localisation, stronger restore recovery, and a broad LightOS consistency pass to the stable line.

Highlights

  • Capture document photos directly inside Paka, then review, rotate, and crop them entirely in memory before encrypted storage. Chosen photos use the same review flow.
  • Use one- or two-sided photo passes with immediate hard-cut side changes, pinch-only zoom, optional page captions, and no edge scrollbar over the photo.
  • Automatically follow the first supported device language on first run: English, Latvian, Estonian, Lithuanian, Finnish, Swedish, German, or Slovak. Unsupported device languages use English, while a Developer setting remains an explicit persistent override.
  • Localise menus, forms, viewer states, validation, storage warnings, backup flows, and accessibility actions across all eight supported LTR languages.
  • Standardise five-slot menus, full-row touch targets, centred top bars, translated-label fitting, confirmation actions, and hard-cut paging without adding animation or generic Material surfaces.

Reliability and security

  • Make portable restore interruption-safe with encrypted pre-restore snapshots and a durable PREPARED/ROLLED_BACK/COMMITTED journal.
  • Recover valid backup-only pass and 2FA stores as writable stores while retaining corrupt encrypted evidence until a successful save.
  • Validate restored PDFs by opening and rendering page one before any store mutation.
  • Keep decrypted photo bitmaps scoped to the open viewer or stack and release them on close or background.
  • Correct all eight EXIF orientations, including mirrored inputs, while avoiding duplicate decode/encode work for untouched imports.
  • Keep camera, crop, backup, PDF, photo, and restore plaintext ownership explicit; nested sensitive screens no longer clear each other’s screenshot protection.
  • Preserve Paka’s offline boundary: the APK requests only android.permission.CAMERA, with no internet or network-state permission.

Barcode and scanner fidelity

  • Draw barcodes on exact integer module grids with format-appropriate quiet zones and natural rectangular aspect ratios.
  • Decode and verify every rendered payload before display or save.
  • Preserve byte-exact ISO-8859-1 behavior for binary Aztec/PDF417 payloads and GS1 separators for DataBar.
  • Add production-path regression coverage across supported formats, dense payloads, display widths, module grids, and cache reuse.

Release verification

  • Unit tests, localisation/resource tests, Android lint, detekt, debug, minified preview, and minified release builds passed on the release commit.
  • APK: Paka-v0.15.0.apk
  • APK SHA-256: 9e13a9aabb567f1869c751810b948be4c0b6b36b0f7081c6062bf2991f11ca87
  • Signing certificate SHA-256: 098fbb0a5455ec00dbafae93f16bff74b048e5bde7a824fac9ecf42effad0019
  • Permissions: android.permission.CAMERA only

The complete chronological notes, including every capture-preview change, are in CHANGELOG.md.

Paka 0.15.0 capture preview 3.3

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 08 Jul 17:32

Point release on top of capture preview 3.2: a small rendering refinement, with no change to app behavior beyond sharper code layout.

  • Rendered barcodes and QR codes now snap to an exact whole-module pixel grid, so every module is an identical width with no leftover quiet-zone pixels and no sub-pixel draw drift
  • Raised the internal render cap so a future enlarged/zoom code view can be drawn at native resolution instead of upscaling
  • Payload verification is unchanged; every rendered code is still decoded and checked against its source before display
  • Added a security policy and security-contact metadata (SECURITY.md, .well-known/security.txt), a threat model, and a persistence/backup format registry under docs/
  • Added a device-testing checklist, a release checklist, and a security/longevity roadmap
  • CI now guards APK permissions on the debug, preview, and unsigned release builds, failing if internet, network-state, or any unexpected permission ever appears in the merged manifest
  • Added tools/verify_release_apk.sh and tools/check_apk_permissions.sh for local certificate and permission verification
  • Corrected the photo format registry to list every supported image header (JPEG, PNG, GIF, WebP, HEIF/HEIC, AVIF) and hardened the verification scripts (aapt2 fallback, version-ordered build-tools selection)

At normal panel size codes already rendered on an integer grid, so this is a subtle cleanup rather than a visible change; the extra headroom matters mainly for a later enlarge/fullscreen view.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/document-capture branch; main remains at 0.14.0.

Paka 0.15.0 capture preview 3.1

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 08 Jul 11:09

Point release on top of capture preview 3: a battery/lifecycle pass plus a Kotlin update.

  • Background work now pauses instead of relying on Compose keeping effects alive: the per-second 2FA code tick and the capture screen's focus-retry loop stop while Paka is backgrounded
  • An open PDF releases its decrypted session and native memory when backgrounded (like photos already did) and reopens on return
  • Stack previews recycle their rendered PDF page bitmaps instead of leaking them until garbage collection
  • The scanner and capture light label no longer reads "on" after returning from the background, where the torch was actually switched off
  • Kotlin updated to 2.4.0 (dependency-verification checksums regenerated); no behavior change

Worth testing on the device: leave the codes screen and the camera open, background and return, and confirm the light label and focus behave; open a PDF, background, return, and confirm it reappears cleanly.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/document-capture branch; main remains at 0.14.0.

Paka 0.15.0 capture preview 3

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 08 Jul 09:55

Third preview of 0.15.0, focused on the photo review/crop flow and UI polish, on top of capture previews 1–2.

  • Chosen/imported photos now go through the same review and crop screen as captured ones before saving, including two-photo front/back batches
  • Crop corners use larger invisible touch targets so resizing feels snappier on the Light Phone III
  • While cropping, tapping the photo rotates the working image 90° counter-clockwise with an immediate hard-cut preview; rapid repeated taps no longer crash the crop screen
  • Details, manual entry, settings, and submenus share the app typography more consistently, with an optional official-font toggle in hidden Developer settings
  • Bottom controls (gear, plus, barcode, code/asterisk) were sharpened and rebalanced to the same visual envelope without changing sizes; the original Paka gear is the default settings icon again, with the Light SDK gear as an optional Developer setting
  • The transitive ACCESS_NETWORK_STATE permission from CameraX/Media3 is explicitly removed from the merged manifest — the APK requests camera only

Before stable 0.15.0, this still needs a hardware battery/lifecycle pass covering camera, torch, brightness, TOTP ticking, and PDF/photo rerender cleanup.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/document-capture branch; main remains at 0.14.0.

Paka 0.15.0 capture preview 2

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 04 Jul 22:23

Second preview of 0.15.0, adding photo cropping and better capture focus on top of capture preview 1.

  • Crop a captured photo before it is saved: a scanner-style corner frame you drag by its corners or move as a whole, with the area outside dimmed. Cropping happens entirely in memory before encryption; the uncropped bytes are zeroed once replaced
  • The capture screen now keeps nudging centre focus on the scanner's retry cadence, so close-up documents (IDs, cards) settle without repeated manual taps — a tap-to-focus still takes priority
  • Also in this preview (from capture preview 1): take document photos directly inside Paka with no gallery entry or temporary file and metadata stripped, and reorder passes within a stack from a pass's Details

Worth testing on the device: whether the auto-focus retry helps or fights close-up framing, the crop frame's feel on the small screen, and the two-shot front/back flow with a crop on each.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/document-capture branch; main remains at 0.14.0.

Paka 0.15.0 capture preview 1

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 04 Jul 10:38

First preview of 0.15.0, built on the released 0.14.0.

  • Take document photos directly inside Paka when creating a photo pass: the capture goes sensor → memory → encrypted store, with no temporary file, media-store entry, or gallery thumbnail ever created
  • Captures are re-encoded in memory before storage: sensor rotation baked in, size bounded, and all camera metadata (EXIF timestamps, device identifiers) stripped
  • The capture screen matches the scanner: tap to focus, a manual light toggle, and a retake/use confirmation; screenshots are blocked while a document is in front of the camera
  • Passes inside a stack can now be reordered from a pass's Details — a sort action next to the stack field opens the reorder screen scoped to that stack

Worth testing on the device: close-up focus on documents (IDs, cards), the light toggle in dim rooms, front/back two-shot flow, and in-stack sorting with stacks that have singles between their members.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/document-capture branch; main remains at 0.14.0.

Paka 0.14.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 00:44

Paka 0.14.0 adds encrypted photo passes and hardens nearly every layer beneath them.

Added

  • Encrypted photo passes: one or two imported images per pass (photo ID front/back, proof of insurance), stored only as AES-256-GCM ciphertext with envelope encryption, included in portable backups
  • Immediate viewing: pre-scaled encrypted display copies, session caching, and pre-decoding of the visible page make opening and side-flipping instant
  • Photo-containing backups use a compact binary payload; barcode/PDF-only backups keep stable-compatible schemas and remain restorable by 0.13

Security

  • Portable backups derive keys with 600,000 PBKDF2-HMAC-SHA256 rounds; new passphrases require 12+ characters (older backups and passphrases still restore)
  • On-device keys prefer StrongBox where available; pre-versioned 2FA stores re-encrypt into the authenticated layout on first load
  • Imports read through bounded, zeroed buffers; photo imports validate headers, dimensions, and pixel counts
  • The build supply chain is pinned end to end: SHA-pinned CI actions, validated Gradle wrapper, checksum-verified dependency graph, Dependabot

Reliability

  • Crash-durable store replacement (directory fsync, flushed backups) and a tested primary/backup recovery path
  • Tolerant restore skips pass types from newer versions instead of rejecting the backup; restore success and rollback are covered by tests

Performance

  • Cold start improves via a recorded baseline profile that is now actually applied on sideloaded installs
  • Updated toolchain and Compose (Gradle 9.6, AGP 9.2, compileSdk 37; runtime behavior unchanged)

Fixed

  • A pass opened on its own shows its barcode at the same height as inside a stack

Full details in CHANGELOG.md. Installs as an update over 0.13 and all 0.14 previews.

Paka 0.14.0 photo preview 7

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 04 Jul 00:29

Release-candidate preview for 0.14.0.

  • A pass opened on its own now shows its barcode at the same height as inside a stack
  • Otherwise identical to photo preview 6: encrypted photo passes, recorded baseline profile applied on sideload, Gradle 9.6/AGP 9.2/compileSdk 37 toolchain, hardened and tested storage recovery

If this preview passes a device check — cold start, page snapping, scanner, PDF zoom, photo passes, updating over an existing install, and one backup round trip — it becomes stable 0.14.0 unchanged.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/photo-pass-viewer branch; main is unchanged.

Paka 0.14.0 photo preview 6

Pre-release

Choose a tag to compare

@janovsk1s janovsk1s released this 03 Jul 23:54

Toolchain and speed preview on top of photo preview 5.

  • Cold start gets a recorded baseline profile, applied on sideloaded installs via profileinstaller — this also activates the Compose library profiles that sideloads previously ignored
  • Android toolchain moved to Gradle 9.6.1, AGP 9.2.1, and compileSdk 37 with the current Compose release; runtime behavior (targetSdk) is unchanged
  • Store recovery is now tested end to end: legacy pass migration, corrupt-file recovery, legacy 2FA re-encryption, and restore success/rollback
  • The build pipeline gains detekt (baseline-ratcheted) and a tagged-release workflow; dependency verification covers cold caches and all contributor platforms

Worth a fresh pass over startup feel, gestures, paging, scanning, and PDF/photo viewing on the device given the toolchain jump.

Signed like the regular releases, so it installs as an update over an existing Paka installation (including earlier previews). Source is on the preview/photo-pass-viewer branch; main is unchanged.