Releases: techempower-org/candela
Release list
v1.13.1
Release build for v1.13.1.
candela-v1.13.1.apk— phone / tablet (sideload)candela-wear-v1.13.1.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.13.1.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- docs: refresh stale README + wiki bottom (source counts, versions, roadmap) by @jphein in #1682
- build(deps): bump androidx.compose:compose-bom from 2026.06.00 to 2026.06.01 in the compose group across 1 directory by @dependabot[bot] in #1610
- fix: TechEmpower → TechEMPOWER in user-facing strings (#1671) by @jphein in #1683
- ci: disable Dependabot auto-rebase to stop the build-swarm OOM by @jphein in #1684
- test: harden Voice Notes backup-rules exclusion gate (#1659) by @jphein in #1687
- build: bundle FULL native debug symbols in release (#1674) by @jphein in #1690
- build(deps): bump com.github.k2-fsa:sherpa-onnx from 1.13.3 to 1.13.4 by @dependabot[bot] in #1689
- build(deps): bump the hilt group across 1 directory with 3 updates by @dependabot[bot] in #1688
- build(deps): bump the kotlin-ecosystem group across 1 directory with 2 updates by @dependabot[bot] in #1686
- build(deps): bump the wear group across 1 directory with 4 updates by @dependabot[bot] in #1611
- build(deps): bump the testing group across 1 directory with 2 updates by @dependabot[bot] in #1612
- build(deps): bump hilt-work from 1.3.0 to 1.4.0 by @dependabot[bot] in #1613
- build(deps): bump androidx.baselineprofile from 1.5.0-alpha06 to 1.5.0-alpha07 by @dependabot[bot] in #1614
- build(deps): bump androidx.hilt:hilt-navigation-compose from 1.3.0 to 1.4.0 by @dependabot[bot] in #1615
- build(deps): bump aboutlibraries from 15.0.2 to 15.0.3 by @dependabot[bot] in #1616
- build(deps): bump androidx.concurrent:concurrent-futures from 1.2.0 to 1.3.0 by @dependabot[bot] in #1617
- test: add Compose-UI test toolchain to :feature (#1661) by @jphein in #1693
- refactor: dedupe Tier-3 pool cap-on-failure across voice plugins (#1503) by @jphein in #1694
- fix: consume the shared URL so Share → Candela adds it (#1679) by @jphein in #1692
- feat: scroll chapter list to the resume chapter on open (#1676) by @jphein in #1695
Full Changelog: v1.13.0...v1.13.1
v1.13.0
Release build for v1.13.0.
candela-v1.13.0.apk— phone / tablet (sideload)candela-wear-v1.13.0.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.13.0.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- feat(settings): complete deadline-reminder regression bar (#1631 follow-up) by @jphein in #1650
- fix(test): restore Test Compile broken by #1650 (main hotfix) by @jphein in #1651
- docs(changelog): screener shipped a preview seed, not 33 programs by @jphein in #1653
- chore(db): commit exported Room v19 schema JSON (backfill from #1639) by @jphein in #1654
- feat(settings): parked settings trio — sleep-timer default #1590, Palace config #1591, AO3 row #1592 by @jphein in #1656
- feat(notes): Voice Notes storage foundation — NotesDatabase + backup rules (Phase 1) by @jphein in #1658
- feat(notes): Voice Notes UI — list / record / detail + Notes dock tab (Phase 4) by @jphein in #1660
- feat(notes): Voice Notes transcription — OfflineTranscriber + WorkManager (Phase 2b) by @jphein in #1662
- fix(notes): eliminate bidirectional lost-update via column-scoped writes (#1663) by @jphein in #1665
- feat(notes): Voice Notes recording — AudioRecorder + mic FGS (Phase 2a) by @jphein in #1666
- feat(notes): Voice Notes summarization — consent-gated LLM summary (Phase 3) by @jphein in #1664
- docs: Voice Notes design spec + plan (#1657) by @jphein in #1668
- feat(notes): non-tab nav entry for Voice Notes (rail + Library top-bar waveform) by @jphein in #1670
Full Changelog: v1.12.6...v1.13.0
v1.12.6
Release build for v1.12.6.
candela-v1.12.6.apk— phone / tablet (sideload)candela-wear-v1.12.6.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.6.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- feat(settings): deadline-reminder enable toggle (#1631 slice 2) by @jphein in #1649
- feat(settings): un-bury Discord/Telegram/Google News + local folders into Content Sources (§C) by @jphein in #1648
Full Changelog: v1.12.5...v1.12.6
v1.12.5
Release build for v1.12.5.
candela-v1.12.5.apk— phone / tablet (sideload)candela-wear-v1.12.5.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.5.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- feat(settings): Downloads & Storage subscreen + global default download mode (#1632) by @jphein in #1642
- feat(settings): Benefits hub entry — re-discover Screener/Decoder (#1634) by @jphein in #1643
- feat(settings): migrate Outline + Wikipedia onto the config seam (#1624 §B) by @jphein in #1645
- feat(teleprompter): persist recording knobs + countdown + Scripts presets (#1633) by @jphein in #1646
- feat(settings): Notifications subscreen — un-bury inbox toggles + permission row (#1631) by @jphein in #1647
Full Changelog: v1.12.4...v1.12.5
v1.12.4
Release build for v1.12.4.
candela-v1.12.4.apk— phone / tablet (sideload)candela-wear-v1.12.4.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.4.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- fix(import): preserve line & paragraph breaks when importing a text file (#1619) by @jphein in #1622
- revert: drop the v1.12.2 sleep-timer Log.w diagnostics (#1604) — sleep verified fixed by @jphein in #1620
- fix(epub): preserve paragraph structure in real EPUB chapters (#1623) by @jphein in #1625
- fix(notion): flattenNested child_page descent guard + prove official child_page decode (#1621) by @jphein in #1629
- fix(sources): shared jsoup HTML→text util; fix RSS & Standard Ebooks paragraph/entity loss (#1626, #1627) by @jphein in #1636
- refactor(sources): retire divergent HTML strippers onto shared core-data htmlToPlainText (#1628) by @jphein in #1638
- feat(settings): group the hub into 7 categories + expose Cloud Voices (#1624 Wave 1) by @jphein in #1637
- fix(cache): revalidate stale chapter LISTS on parse-logic bump — CHAPTER_PLAN_VERSION (#1621) by @jphein in #1639
- feat(settings): Content Sources subscreen — un-bury per-source config (#1630) by @jphein in #1641
Full Changelog: v1.12.3...v1.12.4
v1.12.3
Release build for v1.12.3.
candela-v1.12.3.apk— phone / tablet (sideload)candela-wear-v1.12.3.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.3.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- chore(screener): drift-check + docs to keep the app corpus in sync with /qualify by @jphein in #1607
- fix(sleep): marshal timer-fire pause to Main — stop Player-wrong-thread crash (#1606) by @jphein in #1609
Full Changelog: v1.12.2...v1.12.3
v1.12.2
Release build for v1.12.2.
candela-v1.12.2.apk— phone / tablet (sideload)candela-wear-v1.12.2.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.2.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- fix(playback): atomic _state.update{} at all writers — race-free shake-toggle (#1595 follow-up) by @jphein in #1603
- fix(sleep): raise DND/shake diagnostics to Log.w so they survive release minification (#1574 #1595) by @jphein in #1604
Full Changelog: v1.12.1...v1.12.2
v1.12.1
Release build for v1.12.1.
candela-v1.12.1.apk— phone / tablet (sideload)candela-wear-v1.12.1.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.1.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- fix(ui): Inbox tab badge overlap (#1600) + library chip gap + TechEmpower Browse icon by @jphein in #1601
- fix(sleep): fix shake-toggle clobber + instrument DND auto-arm & shake-extend (#1574 #1595) by @jphein in #1602
Full Changelog: v1.12.0...v1.12.1
v1.12.0
Release build for v1.12.0.
candela-v1.12.0.apk— phone / tablet (sideload)candela-wear-v1.12.0.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.12.0.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- feat(settings): 'Read the handbook' entry point in About (#1563, #1544) by @jphein in #1565
- feat(docs): multi-page document scanner → shareable PDF (#1513) by @jphein in #1566
- feat(techempower): offline benefits screener — client-side /qualify (#1517) by @jphein in #1567
- feat(techempower): benefits letter decoder — NOA form-number → verified explainer (#1516) by @jphein in #1568
- feat(techempower): "make the call" — guided phone scripts + tap-to-dial + capture (#1518) by @jphein in #1571
- fix(notion): auto-refresh Browse on connect — key paginator on config (#1556) by @jphein in #1575
- dx(sources): enforce + document the fiction-id ":" prefix (#1564) by @jphein in #1576
- dx(scaffold): --local Reader as interface + bound impl (Context-backed sources) (#1562) by @jphein in #1578
- feat(google-drive): Connect button + empty state in Browse (#1534 item 1) by @jphein in #1579
- ux(settings): coverage + discoverability overhaul — findable settings (#1577) by @jphein in #1587
- feat(techempower): 'My Documents' — encrypted, device-locked wallet for benefits proofs (#1514) by @jphein in #1573
- feat(settings): source-config coverage (Slack/Matrix) + reader read-along + DND label fix (#1577) by @jphein in #1594
- feat(docs): saved household profile — autofill scanned forms (#1519) by @jphein in #1572
- feat(sleep): default bedtime/DND auto-sleep ON (#1574) by @jphein in #1596
- feat(techempower): notice deadline keeper — photo → local reminder (#1515) by @jphein in #1569
- fix(docs): disclose on-device mic use in privacy + Data Safety (#1589) by @jphein in #1597
- feat(docs): photo → fillable PDF — fill a paper form on-phone, export flattened (#1512) by @jphein in #1570
- fix(wallet): thread-safety + error handling in EncryptedFileWalletStore/WalletViewModel by @jphein in #1598
- fix(google-drive): OAuth threading + empty-state error-type guard (#1588) by @jphein in #1599
Full Changelog: v1.11.0...v1.12.0
v1.11.0
Release build for v1.11.0.
candela-v1.11.0.apk— phone / tablet (sideload)candela-wear-v1.11.0.apk— Wear OS companion ("Library Nocturne"), sideload to the watchcandela-v1.11.0.aab— Android App Bundle for Play Store upload (#1456)
The two APKs are signed with the project's checked-in keystore (stable since v0.4.15) so the watch ↔ phone Data Layer bridge pairs — sideload-only distribution today. The
.aabis release-signed for Play upload only when built on a runner that has thestoryvox.release*keystore props (katana); on any other runner it is debug-signed and Play will reject it. Upload to Play Console is still manual (no publisher automation yet).
What's Changed
- fix(ao3): CF WAF/1020 block 403s → retryable NetworkError by @jphein in #1541
- build: version-catalog mockwebserver alias + drop redundant jvmTarget by @jphein in #1542
- fix(ksp): disambiguate generated Hilt module names by package hash by @jphein in #1546
- dx: polish epic paragraph split + impact determinism (#1525) by @jphein in #1545
- feat(rss): decouple subscription identity from fetch URL (#1498) by @jphein in #1549
- feat(rss): persist item bodies at refresh so taps never re-fetch (#1497) by @jphein in #1547
- ux(notion): distinct connected-but-empty Browse state on first fetch (#1511) by @jphein in #1552
- feat(google-news): base-url seam + contract-kit coverage (#1491) by @jphein in #1550
- feat(settings): generic per-source config-field seam + Prime feed-URL UI (#1531, #1535) by @jphein in #1553
- fix(rss): address #1547/#1549 review — merge N+1, refresh clobber, robustness by @jphein in #1554
- feat(scaffold): new-source.sh --local/--auth/--xml modes (#1526, #1529, #1533) by @jphein in #1548
- docs: post-v1.10.0 pass — 33 sources, wiki setup-guide sync, microsite unstale, docs index by @jphein in #1557
- fix(testkit): fail on mis-routed listPathFragment + di-module docs (#1523, #1522) by @jphein in #1551
- feat(browse): consume @SourcePlugin(iconName) for the source glyph (#1527) by @jphein in #1555
- build(testkit): split voice kit into :core-voice-testkit by @jphein in #1560
- ux(settings): 'Replay the welcome tour' row in About — no restart (#1558) by @jphein in #1559
- feat: in-app Candela Handbook — bundled narrated user guide (first --local dogfood) by @jphein in #1561
Full Changelog: v1.10.0...v1.11.0