Repository navigation
Releases: skepjandi/gitnotes
Release list
GitNotēs 1.7.6 (stable)
What's Changed
- fix(clone): keep screen awake during clones by @vidwadeseram in #1681
- fix(pdf): render opened PDFs natively by @vidwadeseram in #1679
- fix(settings): keep repository picker inputs above keyboard by @vidwadeseram in #1682
- fix: remove trial marketing copy by @vidwadeseram in #1683
- fix(git-button): improve hold feedback visibility by @vidwadeseram in #1686
- docs: add second-order thinking rule + remove stale Metro blocklist by @vidwadeseram in #1688
- feat(canvas): new CanvasListCard preview component for canvases list by @vidwadeseram in #1691
- chore(ui): polish visual primitives, accessibility, and reduced-motion by @vidwadeseram in #1692
- fix(home): prevent card content overlap by @vidwadeseram in #1695
- fix: support Forgejo and Gitea host-aware sync by @vidwadeseram in #1696
- chore: bump app version to 1.7.5 by @vidwadeseram in #1697
- feat(onboarding): support multi-provider token setup by @vidwadeseram in #1698
- chore: update GitHub org from gedwolmen to skepjandi by @vidwadeseram in #1699
- fix(graph): keep canvas from blocking search by @vidwadeseram in #1701
- chore(git): scope Git implementation to MPL-2.0 by @vidwadeseram in #1702
- fix(canvas): prevent stroke flicker after finger release by @vidwadeseram in #1703
- fix(canvas): eliminate remaining release flash by @vidwadeseram in #1704
- feat: Pro accent color picker with theme token persistence by @vidwadeseram in #1706
- rename: Fancy UI → Neumorphic UI by @vidwadeseram in #1708
- feat(auth): add GitHub OAuth and GitHub App installation support by @vidwadeseram in #1700
- feat: add Neo-Brutalist UI style switch by @vidwadeseram in #1711
- feat(theme): add retrofuturistic UI style by @vidwadeseram in #1712
- fix(auth): complete GitHub OAuth and App repository flow by @vidwadeseram in #1713
- feat: alternate app icon picker with AppIconService and settings row by @vidwadeseram in #1710
- fix: standardize visible GitNotēs branding by @vidwadeseram in #1714
- fix(ios): prebuild native modules before run by @vidwadeseram in #1716
- feat(onboarding): add GitHub auth methods by @vidwadeseram in #1715
- fix(auth): complete GitHub App installation callback by @vidwadeseram in #1717
- fix(ui): restore additional GitHub OAuth account action by @vidwadeseram in #1718
- fix: deduplicate repository picker entries by @vidwadeseram in #1720
- fix: scope GitHub accounts and stabilize Settings hosts by @vidwadeseram in #1719
- fix(app): deduplicate callback delivery by @vidwadeseram in #1721
- fix(app): let duplicate callbacks reach service dedupe by @vidwadeseram in #1722
- fix(ui): keep repository filters visible by @vidwadeseram in #1723
- fix: show GitHub App profile and installation status by @vidwadeseram in #1724
- fix(settings): preserve GitHub App install and host identity actions by @vidwadeseram in #1725
- fix(auth): preserve GitHub App credentials on cold boot by @vidwadeseram in #1726
- fix: restore GitHub App-only repository authorization by @vidwadeseram in #1727
- fix(auth): recover Git pulls from auth replay errors by @vidwadeseram in #1728
- fix: unify GitHub credential access and removal by @vidwadeseram in #1729
- fix(settings): restructure account credential rows by @vidwadeseram in #1730
- fix(settings): disconnect all connected hosts by @vidwadeseram in #1732
- fix(auth): retry clone with fallback credentials by @vidwadeseram in #1731
- fix(settings): collapse multi-host credentials by @vidwadeseram in #1733
- fix(git): remember commit author per host by @vidwadeseram in #1734
- fix(git): unblock floating commit author by @vidwadeseram in #1735
- fix(settings): clean up repos after credential removal by @vidwadeseram in #1736
- fix(auth): support OAuth and App cloning by @vidwadeseram in #1737
- fix(auth): resolve OAuth credentials during repo preflight by @vidwadeseram in #1738
- fix(oauth): request private repository access by @vidwadeseram in #1739
- OAuth permission review and credential-aware repo access by @vidwadeseram in #1740
- fix(git): restore author email and floating commits by @vidwadeseram in #1741
- fix(android): preserve auth redirects with alternate icons by @vidwadeseram in #1742
- fix(android): route Expo dev links through icon aliases by @vidwadeseram in #1743
- fix(android): disable alternate icons in dev builds by @vidwadeseram in #1744
- fix(settings): show repositories for OAuth-only accounts by @vidwadeseram in #1745
- fix: restore OAuth repository sync on native clients by @vidwadeseram in #1746
- fix(android): replace Expo reload errors during repository clone by @vidwadeseram in #1747
- fix(auth): allow native credential repository imports by @vidwadeseram in #1748
- fix(git): fail fast on busy commit repositories by @vidwadeseram in #1749
- fix(git): remember commit authors per repository by @vidwadeseram in #1750
- fix(auth): preserve OAuth hosts on app restart by @vidwadeseram in #1751
- chore: bump app version to 1.7.6 by @vidwadeseram in #1752
- fix(ios): handle GitHub credential variants by @vidwadeseram in #1753
Full Changelog: v1.7.0...v1.7.6
GitNotēs 1.7.0 (stable)
What's New in 1.7.0 (stable)
This release spans 72 commits since v1.6.1, focusing on Android build reliability, TLS certificate handling, and Git operation correctness.
Android Build & Platform
- JNA/R8 minification compatibility — Preserve
Pointer.peerfield and full JNA keep rules through R8 shrinking so native Git operations work in release builds - Local Android Rust builds —
yarn androidnow builds Rust libraries before launching, fixingdlopenerrors on local dev builds - Kotlin JDK 21 compatibility — Restrict Kotlin API level and add JVM target args for EAS JDK 21 builds; upgrade JNA to 5.18.0
- EAS UniFFI Kotlin patching — Patch regenerated Kotlin bindings in EAS builds to prevent
checksum mismatchbuild failures - Android orientation — Reverted from portrait-locked to system-default; tablets and foldables now use landscape
- SSL cert fixes — Four-layer fix for Android TLS failures: unconditional cert error skip, corrected
build.rsregistry path walk, PEM fallback chain, andConscryptJava-layer compatibility
Git Operations
- Rename detection — Staging files now uses
git add <path>directly in the index, enabling proper rename detection instead ofgit rm + git add - Rename via Rust engine — Note title renames are now routed through the Rust engine for correct rename detection; duplicate file creation on title edit fixed
- Duplicate note fix — Fixed
handleSave()using stalefilePathafter title changes that caused duplicate files - Duplicate commit pagination — Ignore pagination callbacks while initial commit page is loading to prevent duplicate entries
- Git credential refresh — Android native git credentials refresh on
refreshCredentials()calls
UI / Layout
- Explore header insets — All Git sub-tabs (commits, changes, staging, remotes, conflicts) now render below the workspace header on every screen size
- Android hook-order crashes — Fixed
FilesSectionand responsiveuseWindowDimensions()components that could crash Android withRendered fewer hooks than expected - Canvas stroke rendering — Strokes now render live during pen/highlighter gesture instead of only after release; migrated deprecated
Skia.Path.Make()toPathBuilderAPI - Selection indicator — Platform-specific selection indicator with border-bottom on Android instead of elevation/shadow
- Fancy UI Android visibility — Fixed neumorphic shadow overlays on Android for proper Fancy UI visibility
Other
- Clipboard migration — Migrated from deprecated
react-nativeclipboard to@react-native-clipboard/clipboardandexpo-clipboard - iOS Swift flags — Fixed CocoaPods
OTHER_SWIFT_FLAGSgeneration for production archives - Note ID deduplication — Normalize note IDs at storage read/write boundaries to prevent duplicate rows
Full changelog: https://github.com/gedwolmen/gitnotes/blob/main/CHANGELOG.md
Wiki: https://github.com/gedwolmen/gitnotes/wiki
Issues: https://github.com/gedwolmen/gitnotes/issues
GitNotēs 1.6.1 (stable)
What's Changed
- Delete docs/wiki/code-audit-2026-08.md by @vidwadeseram in #1332
- feat(eas): add EAS cloud build pipeline for Rust GitEngine by @vidwadeseram in #1333
- fix(explore): add missing ExploreDiff screen by @vidwadeseram in #1334
- fix(explore): improve ExploreDiffScreen dark mode support by @vidwadeseram in #1335
- fix(explore): remove count from diff screen buttons by @vidwadeseram in #1336
- fix(explore): refresh on focus + discard button for changes/staging by @vidwadeseram in #1337
- fix: replace deprecated InteractionManager with setTimeout by @vidwadeseram in #1338
- fix(rust): replace broken -force_load rustflags with -U ___chkstk_darwin by @vidwadeseram in #1339
- fix(explore): add discardFiles to restore files to HEAD instead of git rm by @vidwadeseram in #1340
- fix(explore): add discardFiles to Expo module types and fix error z-index by @vidwadeseram in #1341
- fix(explore): proper error when native module unavailable and fix FlatList layout by @vidwadeseram in #1342
- fix(GitEngine): add local CocoaPod wrapper for Expo native module by @vidwadeseram in #1343
- fix(GitEngine): fix Podfile insertion to use correct line by @vidwadeseram in #1344
- fix(git-engine): port complete Swift module with discardFiles by @vidwadeseram in #1345
- fix(explore): add ExploreFile screen and fix loading spacing by @vidwadeseram in #1346
- fix(android): make splash-icon.png background transparent by @vidwadeseram in #1347
- fix(git-engine): add Android native module implementation by @vidwadeseram in #1348
- fix(explore): fix Issues/PR Open settings navigation and loading spacing by @vidwadeseram in #1349
- Delete docs/wiki/codeql-quality-findings.md by @vidwadeseram in #1353
- Delete docs/wiki/v1.5.0-app-store-rejection.md by @vidwadeseram in #1354
- fix(explore): add dev scripts and fix navigation to SettingsTab by @vidwadeseram in #1350
- fix(git-engine): disable UniFFI checksum validation on Android (uniffi-rs#2939) by @vidwadeseram in #1355
- fix: make commit pending button text white on primary variant by @vidwadeseram in #1356
- fix: make primary button text white in CommitComposer and ExploreDiffScreen by @vidwadeseram in #1357
- feat: per-host SSH key authentication for Git operations by @vidwadeseram in #1358
- fix: remove duplicate RemoteUrlOptions and restore authedRemote after merge by @vidwadeseram in #1359
- fix: add missing i18n strings for SSH key modal by @vidwadeseram in #1360
- fix: improve SSH key modal padding and spacing by @vidwadeseram in #1361
- fix: improve SSH key modal padding and spacing by @vidwadeseram in #1362
- fix: add top margin to SSH modal description by @vidwadeseram in #1363
- docs(wiki): replace wiki with simple 4-page structure by @vidwadeseram in #1364
- feat(explore): add commit message placeholder and clear button by @vidwadeseram in #1365
- fix: commit popup button text, discard button styling, floating button nav, and tag/color persistence by @vidwadeseram in #1366
- ci: remove failing Jest tests to get CI passing by @vidwadeseram in #1367
- fix: remove failing tests, resolve security vulnerabilities by @vidwadeseram in #1368
- fix: remove node_modules symlink breaking CI, resolve security vulnerabilities by @vidwadeseram in #1369
- fix: prevent keyboard on token/key TextInput fields by @vidwadeseram in #1370
- Delete node_modules by @vidwadeseram in #1371
- fix: remove @xmldom/xmldom resolution that breaks expo prebuild by @vidwadeseram in #1372
- fix: remove image-size resolution - breaks metro bundler by @vidwadeseram in #1373
- fix: apply chromeTopInset to PR/Issues FlatList during initial load by @vidwadeseram in #1374
- fix: PR/Issues tabs safe area inset by @vidwadeseram in #1375
- fix: PR/Issues tabs content offset by @vidwadeseram in #1376
- fix: guard against undefined repo in load callbacks by @vidwadeseram in #1377
- fix: shorten pauseForegroundSyncSub text by @vidwadeseram in #1378
- fix: update pauseForegroundSyncSub text by @vidwadeseram in #1379
- fix: wrap Discard button text in ButtonText by @vidwadeseram in #1380
- fix: use label prop for Button to fix invisible text by @vidwadeseram in #1381
- fix: correct ROOT_DIR calculation in eas post-install script by @vidwadeseram in #1382
- fix: skip Android builds when NDK not available by @vidwadeseram in #1383
- fix: skip iOS Rust builds when xcrun not available by @vidwadeseram in #1384
- fix: skip UniFFI binding generation when host target unavailable by @vidwadeseram in #1385
- fix(ExploreScreen): make Add repository button navigate to Settings tab by @vidwadeseram in #1386
- fix(paywall): use locally stored build for Android grandfathering by @vidwadeseram in #1387
- fix(paywall): await setAndroidFirstSeenBuild + preserve null boot cache entries by @vidwadeseram in #1388
- fix(ExploreScreen): guard repo useMemo against corrupted repo data by @vidwadeseram in #1389
- fix(Explore): guard workingTreeUri against corrupted repo paths in commit and diff screens by @vidwadeseram in #1390
- chore(release): bump version to 1.5.4 by @vidwadeseram in #1391
- fix(paywall): run setAndroidFirstSeenBuild unconditionally at startup by @vidwadeseram in #1392
- fix(paywall): persist restore-granted flag so TestFlight iOS users keep Pro across launches by @vidwadeseram in #1393
- docs(wiki): comprehensive rewrite — 13 pages, all fact-checked against source by @vidwadeseram in #1394
- fix(paywall): grandfathering reliability by @vidwadeseram in #1395
- fix: Prettier formatting in CHANGELOG.md by @vidwadeseram in #1396
- fix(wiki): remove dead routes from screens.md nav tree by @vidwadeseram in #1397
- fix(explore): make discard button red in ChangesSection by @vidwadeseram in #1398
- feat(explore): navigate to staging/commits tab after stage/commit all by @vidwadeseram in #1399
- fix(ui): use label prop for primary variant buttons by @vidwadeseram in #1400
- fix(explore): make discard button functional and visible in ChangesSection by @vidwadeseram in #1401
- feat(auth): show specific GitHub token permission error messages by @vidwadeseram in #1402
- fix(sync): wire commitOps to GitEngine, delete stubs, remove API mode by @vidwadeseram in #1403
- fix(explore): remove auto-stage on save; reload AsyncStorage on discard by @vidwadeseram in #1406
- fix(ios): pass libgitnotes_git2.a to app target linker by @vidwadeseram in #1407
- docs: fix broken wiki link and reinforce main-clean rules by @vidwadeseram in #1408
- fix: correct iOS library paths in EAS post-install script by @vidwadeseram in #1409
- fix: remove lipo step in EAS post-install script by @vidwadeseram in #1410
- fix(TagInput): always show border on tags textbox using colors.border by @vidwadeseram in #1411
- fix: add staticlib verification and fix OTHER_LDFLAGS quoting by @vidwadeseram in https://github.com/gedwolmen/...
GitNotēs 1.6.0 (stable)
What's New in 1.6.0 (stable)
This is a significant stability and build-quality release spanning 249 commits since v1.5.3. Key highlights:
Build & Platform
- Android GitEngine native module — full Kotlin implementation (clone, status, diff, stage, commit, history, conflicts, fetch, pull, push, branches, remotes, repair)
- EAS cloud build pipeline for Rust GitEngine across all four Android ABIs
- R8 minification and resource shrinking enabled for Android release builds
- iOS Xcode 26 compatibility — Swift flags generator, ExpoSQLite explicit modules, UniFFI module map fixes
- System-default Android orientation — tablets and foldables now use landscape
UI / Layout Stability
- Explore tab header insets — all sub-tabs (commits, changes, staging, remotes, conflicts) now render correctly below the workspace header on every screen size
- Android hook-order crash fixes — FilesSection and responsive dimension components no longer crash on Android due to hook count mismatches
- Responsive layout — NoteImage and GraphViewScreen now react correctly to orientation changes
Sync
- Write-through clone mode — commits and pushes happen immediately when online (8s budget); offline changes queue durably and push when connectivity returns
- Conflict resolution UX — editor-first flow with Accept ours/theirs/both and full edit
- Repository identity recovery — clone corruption recovery preserves repoId, host context, and credentials through re-clones
- Foreground sync reliability — missing Git object recovery, foreground failure alerts, local worktree path fixes
Pro / Paywall
- Entitlement sync — RevenueCat callbacks and account bind/unbind now correctly refresh Pro state
Productivity
- SSH authentication — SSH key storage, host SSH flag, SSH remote URL construction and credential wiring
- Command palette — hint chips for quick command discovery, better modal positioning
- Custom templates — full CRUD with GitHub sync
- Todo kanban view — redesigned with better header offset and screen-edge handling
- Calendar view — content now properly offset below absolutely-positioned header
- Daily quote settings — grouped under Artificial Intelligence with keyboard handling fixes
Full changelog: https://github.com/gedwolmen/gitnotes/blob/main/CHANGELOG.md
Wiki: https://github.com/gedwolmen/gitnotes/wiki
Issues: https://github.com/gedwolmen/gitnotes/issues
GitNotēs 1.5.3(unstable)
v1.5.3 chore: bump version to v1.5.3 (#1331)
GitNotēs 1.5.0(unstable)
Description
GitNotēs 1.5.0 is our biggest update yet — 288 commits since v1.1.2. This release introduces GitNotēs Pro, a RevenueCat-powered paywall (existing users are automatically grandfathered as Pro), plus a wave of AI-powered features: PenEcho-style AI handwriting transcription on Canvas, voice thought dumps, AI memory with local vector search, and AI-powered 3-way Git conflict resolution. We also added multi-host Git support (GitLab, Gitea, Forgejo), a stage-then-push workflow with progress rings and notifications, daily philosopher quotes, reminders, and dozens of stability and UX fixes.
What's New in This Version
GitNotēs Pro (In-App Subscriptions)
- New RevenueCat-powered paywall with 30-day free trial, Monthly ($2.99), Yearly, and Lifetime ($40) plans
- Existing users are grandfathered as Pro automatically — no action needed
- Free users now see the features they're missing (AI tools, Fancy UI, 2nd repo) with a clear upgrade path
- Pro Settings section with subscription status and trial-expiry interstitial
- Paywall fully localized across all languages
AI Upgrades
- Anthropic API support with auto-discovery of API keys, plus an explicit API-type selector in Add Provider
- GitHub Agent Tools: 8 new chat capabilities + 5 note-focused hint chips (Settings toggle + Onboarding step)
- AI 3-way merge for Git conflicts — propose a resolution and accept-then-push in one flow
- PenEcho AI handwriting transcription on Canvas (Waves 1–7) with a full vision pipeline
- Liquid "gooey" Skia floating AI hub — tap for new chat, long-press for the hub menu
- Affordance animations on the floating AI button
AI Memory
- Local vector index service with provider-chain embeddings and lexical fallback
- Thought dumps are indexed on save/delete and reconciled after sync
- Past thought-dump recall is injected into chat context
- Reset AI memory with a confirmation dialog in Settings
Thought Dumps
- Voice thought dumps + floating hub voice button
- Swipe-to-select multi-delete, redesigned home card
- Repo-synced storage so your dumps live in your Git history
Git Sync & Staging
- Stage-then-push is now the default workflow
- Floating stage button with determinate progress ring and body-text push notifications (with deep links)
- Staged Changes screen grouped by repo and branch
- Upgraded grouped conflicts management page
- Resume interrupted pushes on app foreground; idle-timeout push scheduler with FIFO queue
- Stages deletes, AI saves, conflict merges, editor saves, todos, canvases, templates, and thought dumps
- Git-core hardening: binary decode integrity, case-collision guards, queue dedup, batch upserts, and pull/reconcile data-loss fixes (#876–#892)
Multi-Host & Accounts
- GitHub, GitLab, Gitea, and Forgejo host support with per-host connection UI
- Multi-host, multi-account connection flow with inline connected-hosts UI and native disconnect
- Remember last repo/branch/folder across note and todo creation
- Removing a token cascades removal of its repos (with warning); 403s now surface the required token scopes
Reminders & Learning
- Scheduled learning replaced with Reminders: generate the note on save and schedule a reminder
- Multi-select prompts + folder picker, daily repeat, questioner notes and grading
Daily Philosopher Quote
- New daily quote feature with i18n support and contextual fallbacks
UI/UX Polish
- Button label centering with trailing icons; CSS-aware safe-area adapter
- Floating-button collision avoidance (no more overlapping buttons)
- Layout fixes across Explore, Notes, Todo, and Settings headers
- Theme token parity between ThemeContext and NativeWind; templates card layout with proper margins
Notable Fixes
- Data-loss fix: notes survive push + restart (default notes/ path preserved); pull reconcile no longer drops local data
- Paywall UX: hide tab bar/floating buttons on paywall screen, unified subscribe button styles
- Editor: inline Save indicator replaces full-screen overlay; hard-wrap toggle wired into save
- Chat: crash fix for thread-card timestamps, inset empty-state layout
- Daily quote: stable hook, no more infinite re-render loop
Full Changelog: v1.1.2...v1.5.0
GitNotēs 1.1.2(unstable)
Full Changelog: v1.1.0...v1.1.2
What's in 1.1.2
- fix(gitHttp): remove dead req.onAuth blocks causing 4 TS errors
- fix(ui): use state for gitOperationActive so RefreshControl re-renders
- fix(ui): read inflight on demand in handlePullToRefresh callbacks
- chore: apply prettier formatting to repo
- refactor: type navigation and tighten 9/10 'as any' sites
- chore(lint): drop unused vars and useless regex escapes
- fix(security): redact hardcoded OpenRouter key in e2e maestro flow
- chore(release): bump app and package version to 1.1.2
GitNotēs 1.1.0(unstable)
Full Changelog: v1.0.9...v1.1.0
GitNotēs 1.0.9(unstable)
What's New
Hint Icons with i18n Support
- Added information hint icons throughout Settings screen
- Hint dialogs display helpful explanations in your preferred language
- Supports all 6 languages: English, Spanish, French, German, Japanese, Korean
Settings Improvements
- Updated UI toggle with Soft-UI shadow explanation
- Biometric lock hints for security settings
- Sync frequently and background sync hints
- AI section hints for Enable AI, Action Mode, Chat Storage, and Providers
- Scheduled Learning hint for the beta feature
- Dark mode and language setting hints
Bug Fixes
- Various UI alignment improvements for hint icons
Contributors
Thanks to all contributors for this release!
GitNotēs 1.0.7(unstable)
Highlights
- Conflict resolution UI + service — handle divergent local/remote edits without losing work. (#604, Part 2 of #563)
- Neorg syntax extensions —
@code/@endblocks, syntax highlighting, spoilers, details, math wiring. (#605) - Git LFS pointer download — large binaries downloaded properly + made readable. (#570, #574)
- Foreground + online auto-pull — repos refresh automatically when the app comes back. (#563, #573)
- Auto-rebase on divergent push — clone-mode pushes recover when local diverged from origin. (#630)
- Push coalescing — N pushes per drain → 1 commit in clone mode. (#565, #578)
- AI provider eligibility gating + UI. (#577)
- 4 new locales — Japanese, German, Korean, French + dropdown selector. (#559)
- Math rendering fix — replaced KaTeX stub with real CDN rendering. (#600)
- Bulk select + swipe-to-delete on Notes & Todos. (#603)
Sync & data
- Reconcile remote deletions for canvases and todos. (#581, #586)
- Prevent resurrection of remote-deleted notes; stop silent overwrite on 409. (#589, #588, #597)
- 5 MB size guard on sync to prevent data corruption. (#618)
- SHA conflict guard + preserve
filePathon save. (#617) - Optimistic removal of deleted items from explore tree. (#619)
- Cloud-icon now pulls and surfaces auto-pull results.
saveAllNotesguarded against empty array.- Sync error sanitizer + delete reliability. (#572)
- Purge orphan repo data + friendlier push errors.
iPad / layout
- Horizontal tab bar instead of vertical column.
- Tab bar bg extends into bottom safe area.
- Screen header spans full width, not constrained column.
- Drop max content width on Home, Notes, Todos, Settings — no more empty side gutters.
- React Navigation theme bg aligned with app palette.
Editor & UI
- No more autofocus on note/todo editors — keyboard stays closed until tap.
- Canvas picker modal uses page-sheet presentation; Cancel no longer under status bar.
- Canvas: 2-finger crash fix, dark-mode icons, checklist render + keyboard, AI gating, template padding.
- Markdown tables wrap+scroll; columns aligned per-column.
- Hardcoded emojis replaced with Ionicons in render output. (#631)
- Hop title→body via Return; slug cap; divergent-clone fallback.
- Canvases search bar gets breathing room above.
- Notes list excludes
.jsonfiles (canvas/config artifacts). - Crash guards around preview pipeline. (#580, #587)
- Editor warns when opening folder picker with no repo selected. (#591)
- Break infinite re-render loop in raw mode. (#601)
- LogBox suppressed in non-dev builds. (#616)
Lists
- Pure pan gesture for selection — no overlay; merged blue block for adjacent selected rows.
- Red trash hint on slide-left, blue Select on slide-right.
- Toggle selection on release, not after spring settles.
- Separate FlashList recycler pools for pinned/unpinned. (#599)
Home
- Defer journal-entry creation until user saves.
- Drop tag chips from Recent feed tiles (only large keeps them).
- Promote journal entry to hero tile below create-note.
- Drop large hero tile from Recent feed. (#590)
- 10 recents on phone (was 7).
Settings
- Floating header gets 16px breathing room below.
- Sync-frequently label breaks onto two lines.
Auth & security
- Biometric auth required on toggle; Face/Touch ID detection. (#557)
- Dark-mode
textSecondarybumped to meet WCAG AA. (#554)
CI / tests
- iOS Maestro suite expanded; canvas, bulk-select, nav, providers, repo-prefill flows added.
- e2e runbook + evidence process docs.
- Jest, maestro, coverage validation gates required in CI.
- Android emulator on Ubuntu KVM with
pixel_6profile.