Files
tolaria/docs/MOBILE_PROGRESS.md
2026-05-14 11:21:59 +02:00

75 KiB

Mobile Progress

Last updated: 2026-05-13

This file is the resumable working log for Tolaria mobile. The strategy and roadmap live in MOBILE_STRATEGY.md; this file records the current execution state.

Current State

  • Branch: codex/mobile
  • Active phase: Phase 4 - Editor V1
  • Active slice: Mobile quality remediation before new feature work
  • Push policy: commit locally; do not push unless explicitly requested
  • Validation target: iPad/iOS simulator first

Completed

  • Created high-fidelity iPhone mobile mockups in design/mobile-mockups/.
  • Documented the production mobile strategy in docs/MOBILE_STRATEGY.md.
  • Installed and authenticated Codacy MCP for this Codex environment.
  • Confirmed Codacy MCP can access refactoringhq/tolaria.
  • Recorded GitHub OAuth App as the first mobile GitHub auth path.
  • Created ADR-0109 for Expo React Native production mobile.
  • Superseded ADR-0005, the earlier Tauri iOS prototype ADR.
  • Created @tolaria/markdown as the first shared workspace package.
  • Moved compactMarkdown into packages/markdown and kept the existing desktop import path as a compatibility export.
  • Added package-local Vitest and TypeScript scripts for the shared Markdown package.
  • Added scripts/run-tests.mjs so pnpm test runs desktop and shared-package tests, while targeted test arguments remain targeted.
  • Updated the pre-commit branch guard to allow local commits on codex/mobile for this isolated mobile worktree.
  • Split src/utils/wikilinks.ts into shared @tolaria/markdown modules for frontmatter, wikilink block transforms, outgoing links, backlink context, snippets, and word counts.
  • Moved note-title derivation helpers into @tolaria/markdown, leaving the existing desktop import path as a compatibility export.
  • Added apps/mobile as an Expo React Native workspace package.
  • Added root mobile scripts: mobile:start, mobile:ios, mobile:test, and mobile:typecheck.
  • Configured Expo for a universal light-mode app with a development bundle identifier (com.tolaria.mobile.dev) and iPad support enabled.
  • Added the first iPad-first/phone-ready shell using fixture notes, shared Markdown title/snippet helpers, Phosphor React Native icons, and responsive panels for sidebar, note list, editor, and properties.
  • Split mobile styles into small panel-specific StyleSheet modules so new mobile code starts at CodeScene 10.0.
  • Pinned Expo runtime dependencies to the versions expected by Expo 55 after the initial generated versions failed iOS bundle export (react-native@0.83.6, react@19.2.0, matching safe-area/svg versions).
  • Extracted compact phone navigation into a pure tested state machine so future swipe gestures can dispatch explicit events instead of mutating panels ad hoc.
  • Extracted mobile note projection into a pure module that turns raw vault-like note records into the list/editor shape used by the mobile shell.
  • Added a minimal mobile vault repository contract plus fixture implementation so app-local vault storage and git sync can plug in behind listNotes / readNote later.
  • Updated scripts/run-tests.mjs so full pnpm test runs desktop, mobile, and shared package tests, while targeted apps/mobile/... and packages/markdown/... paths route to the correct workspace Vitest config.
  • Updated .husky/pre-commit to use pnpm test -- --silent so local commits include the new mobile test suite.
  • Added react-native-gesture-handler at Expo's SDK-compatible version.
  • Wrapped the mobile root in GestureHandlerRootView.
  • Added a tested compact gesture mapper and SwipeSurface wrapper so phone panels can transition through swipe gestures while keeping panel behavior in the reducer.
  • Re-tested the iPad simulator path; the app now launches in Expo Go on iPad Pro 13-inch (M4).
  • Added a pure mobile Git remote parser that codifies the auth choice: GitHub remotes use the GitHub OAuth App path, arbitrary Git remotes use the SSH-key path.
  • Added a pure mobile vault configuration model that keeps vault storage app-local, distinguishes local-only vs remote-backed sync, and derives the required Git auth path from the parsed remote.
  • Extracted the mobile editor surface behind MobileEditorAdapter with a tested document projection so TenTap can replace the placeholder surface without changing shell navigation.
  • Installed TenTap and Expo-compatible react-native-webview, then wired TenTap into MobileEditorAdapter with tested HTML generation from the mobile editor document projection.
  • Created ADR-0110 for the TenTap mobile editor spike and its acceptance gates.
  • Added a TenTap draft callback boundary that captures editor HTML but explicitly marks it non-persistable until Markdown serialization exists, preventing HTML from becoming canonical vault content by accident.
  • Added the first supported TenTap HTML-to-Markdown serializer for H1, paragraph, and unordered-list output; unsupported HTML remains blocked from persistence.
  • Added a mobile vault storage driver contract plus memory implementation, and connected the mobile vault repository to app-local markdown files behind that storage interface.
  • Added Expo FileSystem as the first app-local mobile vault storage implementation behind the storage driver contract.
  • Created ADR-0111 to record the mobile filesystem dependency and app-local vault storage path.
  • Added a mobile vault seeding boundary that writes starter Markdown files only when the app-local vault is empty.
  • Wired the mobile shell to load its starter notes through the native Expo FileSystem storage driver and stored repository path, with fixture notes retained as the fallback while storage initializes.
  • Expanded supported TenTap HTML serialization to include H1-H6 headings, ordered lists, task-list markers, inline strong/emphasis/code, and links while continuing to block unsupported block HTML.
  • Split the mobile editor HTML serializer into its own CodeScene-10 module so the draft boundary stays small.
  • Added a mobile editor draft save boundary that writes persistable canonical Markdown drafts to vault storage and refuses blocked drafts.
  • Wired mobile editor draft changes to the app-local demo vault save path and added visible editor save states: Ready, Saving, Saved, Blocked, and Save failed.
  • Split editor save-state styles into a separate style module to keep mobile style files at CodeScene 10.
  • Added a debounced mobile autosave queue that coalesces rapid TenTap draft changes, marks edited drafts as queued, and ignores stale save results when newer drafts supersede them.
  • Refreshed the in-memory mobile note projection after the latest successful editor save so the note list, editor source, properties words, and snippets update from canonical Markdown.
  • Added the first app-local mobile note creation path and wired the compose button to write a new Markdown note, prepend it to the current list, and select it through the shared compact navigation reducer.
  • Added create-note UX state so the compose button disables during app-local creation and displays a compact failure message if storage creation fails.
  • Added a title-entry prompt for mobile note creation so new notes are named before they are written to app-local storage.
  • Added app-managed mobile state storage for the active vault and last selected note, then restored and persisted note selection across launches.
  • Added delete support for app-managed mobile notes through the storage driver, Expo FileSystem adapter, repository boundary, demo vault facade, and editor toolbar.
  • Extracted mobile note deletion orchestration into a small hook so the app shell stays at CodeScene 10.0.
  • Added app-local mobile vault metadata and metadata storage boundaries so vault id/name/remote URL can live in persisted app state instead of being hardcoded in the app shell.
  • Replaced the demo vault's hardcoded identity with the shared default vault metadata boundary.
  • Wired mobile runtime loading through the persisted vault metadata catalog boundary, so app state, note loading, autosave, note creation, and deletion all operate against the active vault metadata.
  • Extracted runtime loading into a hook plus tested pure loader to keep MobileApp.tsx at CodeScene 10.0.
  • Added first-class runtime vault load failure state with a visible retry notice in the note list, replacing the previous silent failure path.
  • Completed the Phase 3 app-managed vault storage path for the current single-vault mobile app: app-local metadata, seeded markdown files, note listing, open, autosave, create, delete, last selection restore, runtime retry, and iPad/iPhone simulator render validation.
  • Deferred archive as a first-class mobile note state until the mobile vault schema/frontmatter model is explicit; implementing archive now as file movement would create throwaway semantics that may conflict with desktop-compatible metadata.
  • Added mobile frontmatter metadata parsing for stored markdown notes, including type, icon, date, and inline tags, so app-local vault scans can project note metadata instead of hardcoding every stored note as a generic file.
  • Added mobile frontmatter serialization helpers that can create/update supported type/status/date/icon/tags fields while preserving unknown metadata lines.
  • Added a mobile frontmatter save boundary that updates persisted note metadata through the vault storage driver and exposes the same path through the demo vault facade for future properties UI calls.
  • Wired the iPad/mobile properties panel to the frontmatter save boundary for type, status, icon, date, and tags; successful saves reload projected notes from app-local storage, and large iPads now show the right properties column.
  • Expanded supported TenTap HTML serialization to include blockquotes, fenced code blocks with language classes, strikethrough, and an unsupported inline-tag guard so image/table output stays blocked until explicitly handled.
  • Added a deterministic mobile core-flow smoke test over app-local storage that covers create, open, edit/save, property update, and delete through the same repository/storage/editor/frontmatter boundaries used by the app.
  • Added Expo development-client support and scripts for native iOS simulator QA without Expo Go overlay controls, while keeping generated native folders ignored.
  • Created ADR-0112 for the mobile development-client QA path.
  • Added safe TenTap image serialization for persisted relative/remote image sources while continuing to block transient image sources such as blob: URLs.
  • Added simple TenTap table serialization for rectangular tables, including entity decoding and escaped pipe characters, while continuing to block malformed table shapes.
  • Reworked the mobile properties panel into expandable Type/Status/Icon/Tags picker rows that show current values first and reveal chip choices on demand.
  • Added the first mobile Git sync plan model, covering local-only vaults, auth-required remotes, ready pull/push actions, active sync operations, and retryable failures.
  • Wired the mobile Git sync plan into the note-list UI through a visible status card for remote-backed vaults while local-only vaults remain chrome-free.
  • Added the first mobile Git credential storage boundary backed by Expo SecureStore, with host/strategy-scoped credential presence records for future GitHub OAuth and SSH flows.
  • Created ADR-0113 for the mobile secure credential storage dependency.
  • Added the mobile GitHub OAuth session boundary with Expo AuthSession/WebBrowser, PKCE request shaping, code exchange, SecureStore handoff, and the tolaria://oauth/github redirect scheme.
  • Created ADR-0114 for the mobile GitHub OAuth native dependency and redirect scheme.
  • Wired remote-backed mobile sync status actions to credential loading and the GitHub OAuth flow, including visible syncing/failed status states when Connect is tapped.
  • Added a mobile vault remote setup prompt behind the sidebar controls, with persisted remote URL metadata validation and removal by blanking the value.
  • Exposed the missing EXPO_PUBLIC_GITHUB_OAUTH_CLIENT_ID requirement inside the mobile remote setup prompt and split the client-id detector away from native AuthSession imports.
  • Separated the mobile Git remote setup prompt styles from note-creation prompt styles so vault-management UI can evolve without coupling to compose UI names.
  • Added a sidebar vault-management card that shows the active app-local vault, Git sync state, and an explicit Git remote action on iPad and compact sidebar surfaces.
  • Added the first mobile Git transport execution boundary behind the existing sync/auth plan, including explicit pull/push routing and a visible unavailable-transport failure until the native Git implementation lands.
  • Hardened TenTap link serialization so safe HTTP, mailto, and relative links persist while unsafe link destinations block draft persistence.
  • Added the first native mobile Git transport adapter contract, wiring the app to a native-module-shaped boundary that currently fails clearly until the real implementation is present.
  • Added the app-managed vault directory name to the native Git transport request so the future native module can locate the repository without deriving paths from display names.
  • Added TenTap horizontal-rule serialization so common divider output persists as canonical Markdown instead of blocking the draft.
  • Centralized mobile editor HTML entity decoding and added numeric entity / non-breaking-space support for paragraph, code, image/link, and table serialization.
  • Added the optional Expo native-module resolver for TolariaGit, so the JavaScript Git transport automatically binds to future development builds that include the native module and keeps the current unavailable-module failure everywhere else.
  • Created ADR-0115 for the mobile Git native module discovery boundary.
  • Added remote host and auth strategy to the native Git transport request so native Git can select credential callbacks without reparsing remote URLs.
  • Reworked the prototype compose flow so tapping the pencil immediately creates and opens an app-local Untitled note instead of blocking on a title modal.
  • Moved the editor breadcrumb and save state into the top editor toolbar, matching the desktop/Bear-style bar placement instead of rendering it inside the editor body.
  • Injected system-font CSS into TenTap so the editor uses iOS-native typography instead of the browser/WebView serif default, while leaving keyboard layout to the OS/simulator input source.
  • Upgraded the mobile properties prototype so type, status, date, and tags can be entered from the keyboard with quick chips as shortcuts, while icon editing stays chip-based.
  • Removed the now-unused title prompt component and kept the compose-button disabled state with the note-list styles.
  • Split new breadcrumb styles out of the shared toolbar styles and removed stale editor/property style entries so the CodeScene pre-commit safeguard stays green.
  • Added first-class mobile metadata projection for _favorite, _favorite_index, custom scalar properties, and dynamic relationship frontmatter fields.
  • Added editable mobile relationship groups with inline note autocomplete, removable relationship chips, addable custom relationship groups, and add/remove custom scalar properties.
  • Added raw Markdown wikilink autocomplete that detects active [[... queries, suggests local notes, and inserts canonical aliased wikilinks.
  • Added Favorites to the mobile sidebar and breadcrumb star toggle, including the desktop-aligned CmdOrCtrl+D shortcut command.
  • Added mobile saved views with nested all / any filter groups and desktop-like relationship/wikilink comparison semantics.
  • Added desktop-inspired type/relationship chip coloring for the mobile note list and properties panel.
  • Added an API-key-only AI side panel using an OpenAI-compatible /chat/completions request path, with no agents and no local models.
  • Recorded docs/MOBILE_QUALITY_AUDIT.md after product review found the mobile implementation had drifted into prototype-grade feature coverage. The audit is now the quality gate for existing mobile surfaces before new feature work resumes.
  • Corrected the AI product boundary: provider/model/API-key setup now lives in a mobile Settings surface, provider config persists as app-local settings, API keys go through SecureStore, and MobileAiPanel only consumes a configured API model target.
  • Tightened relationship writes so mobile relationship additions save canonical wikilink refs, dedupe by canonical target, resolve aliases/plain titles for chip display/opening, and avoid introducing new loose id/string values from the properties UI.
  • Demoted saved views from the primary mobile sidebar until real persisted view definitions exist; fixture nested-view definitions remain available to tests but are no longer exposed as if they were desktop-equivalent saved views.
  • Continued the properties quality pass by grouping the panel into system, relationships, custom properties, info, and history; adding read-only derived inverse relationship groups; and demoting custom scalar properties to read-only until typed mobile controls exist.
  • Added the first usable mobile Git transport with isomorphic-git and an Expo FileSystem adapter: GitHub OAuth remotes can clone into app-local vault storage, fast-forward pull, autocommit local changes, and push.
  • Disabled demo vault seeding for remote-backed vaults so cloned real vaults are not polluted with fixture notes.
  • Created ADR-0116 for the JavaScript Git transport decision and its native-replacement boundary.
  • Set the booted iPad simulator keyboard preferences to Italian (it_IT@sw=QWERTY;hw=Automatic).

Next Action

Continue Phase 4 as a quality remediation pass before new feature work:

  1. Run simulator QA for the real-vault sync path: configure a GitHub remote, connect OAuth, clone, inspect loaded notes, edit locally, push, and relaunch.
  2. Run iPad simulator QA over sidebar filters, favorites, properties sections, relationship add/remove, raw wikilink autocomplete, AI/settings input states, and Git status transitions.
  3. Add real persisted view definition loading before re-exposing Views in the sidebar.
  4. Install a simulator runtime matching the active Xcode SDK, or switch Xcode to one matching the installed iOS 17.5/18.6 runtimes, then retry the iOS development-client build.

Verification Log

  • tool_search exposed Codacy MCP tools after Codex restart.
  • codacy_get_repository_with_analysis succeeded for refactoringhq/tolaria.
  • Current branch verified as codex/mobile.
  • CodeScene before extraction: src/utils/compact-markdown.ts scored 10.
  • CodeScene after extraction: packages/markdown/src/compactMarkdown.ts scored 10; packages/markdown/src/compactMarkdown.test.ts scored 10; tiny export/config files returned no scorable code and no findings.
  • pnpm --filter @tolaria/markdown test passed: 29 tests.
  • pnpm --filter @tolaria/markdown typecheck passed.
  • pnpm test -- src/utils/compact-markdown.test.ts passed and ran only that desktop test file: 29 tests.
  • pnpm test passed and ran the full desktop suite plus package tests: 309 desktop test files / 3639 desktop tests, then 29 package tests.
  • pnpm lint passed with one pre-existing warning in src/components/tolariaBlockNoteSideMenu.tsx.
  • npx tsc --noEmit passed.
  • pnpm build passed.
  • CodeScene before wikilink extraction: src/utils/wikilinks.ts scored 9.09.
  • CodeScene after wikilink extraction: new shared wikilink/frontmatter/content files scored 10; small export surfaces returned no scorable code and no findings.
  • pnpm --filter @tolaria/markdown test passed after wikilink extraction: 40 tests.
  • pnpm test -- src/utils/wikilinks.test.ts src/utils/noteTitle.test.ts passed: 91 desktop tests.
  • pnpm --filter @tolaria/markdown typecheck passed after wikilink extraction.
  • pnpm lint, npx tsc --noEmit, and pnpm build passed after wikilink extraction.
  • CodeScene before note-title extraction: src/utils/noteTitle.ts scored 9.68.
  • CodeScene after note-title extraction: packages/markdown/src/noteTitle.ts and packages/markdown/src/noteTitle.test.ts scored 10; the desktop compatibility export returned no scorable code and no findings.
  • pnpm --filter @tolaria/markdown test passed after note-title extraction: 56 tests.
  • pnpm test -- src/utils/noteTitle.test.ts passed: 14 desktop tests.
  • pnpm --filter @tolaria/markdown typecheck passed after note-title extraction.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test passed: 1 file / 2 tests.
  • pnpm --filter @tolaria/mobile exec expo install --check passed after pinning Expo-compatible dependency versions.
  • pnpm --filter @tolaria/mobile exec expo config --type public passed and shows iOS bundle identifier com.tolaria.mobile.dev, Android package com.tolaria.mobile.dev, and supportsTablet: true.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed and produced the iOS bundle.
  • pnpm lint passed with one pre-existing warning in src/components/tolariaBlockNoteSideMenu.tsx.
  • npx tsc --noEmit passed.
  • pnpm test passed after the mobile scaffold: 309 desktop test files / 3639 desktop tests plus 56 shared package tests.
  • CodeScene mobile shell scores: apps/mobile/App.tsx, apps/mobile/src/MobileApp.tsx, apps/mobile/src/NamedIcon.tsx, apps/mobile/src/demoData.ts, apps/mobile/src/demoData.test.ts, and all scorable style modules scored 10; tiny config/export/theme files returned no scorable code.
  • CodeScene pre-commit safeguard passed for the current change set.
  • Codacy MCP can read repository analysis and security items for refactoringhq/tolaria; local Codacy CLI analysis is currently blocked because the Codacy CLI binary is not installed in this environment.
  • iOS simulator validation was initially blocked locally: Xcode is installed (Xcode 26.3), but xcrun simctl list ... hung indefinitely even after opening /Applications/Xcode.app/Contents/Developer/Applications/Simulator.app.
  • pnpm --filter @tolaria/mobile test passed after compact navigation extraction: 2 files / 6 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after compact navigation extraction.
  • CodeScene after compact navigation extraction: apps/mobile/src/compactNavigation.ts, apps/mobile/src/compactNavigation.test.ts, and the touched apps/mobile/src/MobileApp.tsx scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after compact navigation extraction.
  • pnpm --filter @tolaria/mobile test passed after note projection extraction: 3 files / 8 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after note projection extraction.
  • CodeScene after note projection extraction: apps/mobile/src/mobileNoteProjection.ts and apps/mobile/src/mobileNoteProjection.test.ts scored 10; apps/mobile/src/demoData.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after note projection extraction.
  • pnpm --filter @tolaria/mobile test passed after mobile vault repository extraction: 4 files / 11 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile vault repository extraction.
  • CodeScene after mobile vault repository extraction: apps/mobile/src/mobileVaultRepository.ts and apps/mobile/src/mobileVaultRepository.test.ts scored 10; apps/mobile/src/demoData.ts still returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile vault repository extraction.
  • pnpm test -- apps/mobile/src/mobileVaultRepository.test.ts passed and ran only the mobile repository test file.
  • pnpm test -- packages/markdown/src/noteTitle.test.ts passed and ran only the shared Markdown note-title test file.
  • pnpm test -- --silent passed after runner/hook updates: 309 desktop files / 3639 desktop tests, 4 mobile files / 11 mobile tests, 3 shared Markdown files / 56 shared tests.
  • CodeScene after test-runner update: scripts/run-tests.mjs scored 10; .husky/pre-commit is unsupported by CodeScene file analysis because it has no supported extension.
  • xcrun simctl list devices available now responds with available iPhone/iPad devices.
  • xcrun simctl boot 40724AA3-A793-41D8-9C66-79745DA28DE4 booted iPad Pro 13-inch (M4).
  • pnpm --filter @tolaria/mobile exec expo start --ios installed/opened Expo Go and launched Tolaria on the booted iPad simulator.
  • Simulator screenshot captured at /tmp/tolaria-mobile-ipad.png; the Tolaria shell renders behind Expo Go's first-run tools modal.
  • pnpm --filter @tolaria/mobile typecheck passed after local workflow parity additions.
  • VITEST_MAX_THREADS=1 VITEST_MIN_THREADS=1 pnpm --filter @tolaria/mobile test passed after local workflow parity additions: 52 files / 172 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-workflow passed after local workflow parity additions.
  • CodeScene touched-file checks passed at 10.0 for mobile metadata, sidebar navigation, raw wikilink autocomplete, saved view filters, AI client/panel, type appearance, style modules, and touched app/panel components; non-scorable fixture/style aggregation files returned no score.
  • CodeScene pre-commit safeguard passed for the current local change set.
  • iPad simulator keyboard preference now reads KeyboardsCurrentAndNext = (it_IT@sw=QWERTY;hw=Automatic, it_IT@sw=QWERTY;hw=Automatic).
  • Native simulator QA is currently blocked by local platform tooling: Xcode has only the iOS 26.2 SDK installed, while CoreSimulator has iOS 17.5 and 18.6 runtimes, so expo run:ios --device "iPad Pro 13-inch (M4)" fails with xcodebuild error 70 because no matching destination is eligible.
  • pnpm --filter @tolaria/mobile typecheck passed after the mobile quality remediation pass.
  • VITEST_MAX_THREADS=1 VITEST_MIN_THREADS=1 pnpm --filter @tolaria/mobile test passed after the mobile quality remediation pass: 56 files / 183 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-quality-pass passed after the mobile quality remediation pass.
  • CodeScene touched-file checks and pre-commit safeguard passed after AI settings separation, relationship ref canonicalization, and saved-view demotion.
  • pnpm --filter @tolaria/mobile test passed after adding gesture support: 5 files / 15 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding gesture support.
  • CodeScene after gesture support: apps/mobile/src/compactGestures.ts, apps/mobile/src/compactGestures.test.ts, apps/mobile/src/SwipeSurface.tsx, touched app/root files, and touched style module scored 10; apps/mobile/index.ts returned no scorable code.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding gesture support.
  • Simulator screenshot after gesture support captured at /tmp/tolaria-mobile-gestures-ipad.png; no red runtime error overlay appeared.
  • pnpm --filter @tolaria/mobile test passed after Git remote auth parsing: 6 files / 20 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after Git remote auth parsing.
  • CodeScene after Git remote auth parsing: apps/mobile/src/mobileGitRemote.ts and apps/mobile/src/mobileGitRemote.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after Git remote auth parsing.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultConfig.test.ts passed after vault config extraction: 7 files / 24 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after vault config extraction.
  • CodeScene after vault config extraction: apps/mobile/src/mobileVaultConfig.ts and apps/mobile/src/mobileVaultConfig.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after vault config extraction.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.ts passed after editor adapter extraction: 8 files / 27 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after editor adapter extraction.
  • CodeScene after editor adapter extraction: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/mobileEditorDocument.ts, and apps/mobile/src/mobileEditorDocument.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after editor adapter extraction.
  • TenTap package check: @10play/tentap-editor@1.0.1 requires react, react-native, and react-native-webview; Expo installed react-native-webview@13.16.0.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.ts passed after TenTap wiring: 8 files / 28 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after TenTap wiring.
  • CodeScene after TenTap wiring: apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/mobileEditorDocument.ts, apps/mobile/src/mobileEditorDocument.test.ts, and apps/mobile/src/styles/editorStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after TenTap wiring; iOS bundle size is now about 11 MB and includes TenTap toolbar assets.
  • pnpm --filter @tolaria/mobile exec expo start --ios --clear launched on iPad Pro 13-inch (M4); screenshot captured at /tmp/tolaria-mobile-tentap-ipad.png. The app rendered with the TenTap-backed editor behind Expo Go's first-run Tools modal and no red runtime error overlay appeared.
  • pnpm test -- src/components/SearchPanel.test.tsx passed after a transient full-hook failure in the unrelated desktop SearchPanel arrow-key test.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.ts passed after the TenTap draft boundary: 8 files / 29 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after the TenTap draft boundary.
  • CodeScene after the TenTap draft boundary: apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/mobileEditorDocument.ts, and apps/mobile/src/mobileEditorDocument.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after the TenTap draft boundary.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDocument.test.ts passed after supported Markdown serialization: 9 files / 32 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after supported Markdown serialization.
  • CodeScene after supported Markdown serialization: apps/mobile/src/mobileEditorDraft.ts, apps/mobile/src/mobileEditorDraft.test.ts, apps/mobile/src/mobileEditorDocument.ts, and apps/mobile/src/MobileEditorAdapter.tsx scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after supported Markdown serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultStorage.test.ts src/mobileVaultRepository.test.ts passed after storage boundary extraction: 10 files / 35 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after storage boundary extraction.
  • CodeScene after storage boundary extraction: apps/mobile/src/mobileVaultStorage.ts, apps/mobile/src/mobileVaultStorage.test.ts, apps/mobile/src/mobileVaultRepository.ts, and apps/mobile/src/mobileVaultRepository.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after storage boundary extraction.
  • expo-file-system@55.0.17 is now an explicit @tolaria/mobile dependency.
  • pnpm --filter @tolaria/mobile test -- src/mobileExpoVaultStorage.test.ts passed after Expo storage adapter extraction: 11 files / 38 tests.
  • pnpm --filter @tolaria/mobile test passed after Expo storage adapter extraction: 11 files / 38 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after Expo storage adapter extraction.
  • CodeScene after Expo storage adapter extraction: apps/mobile/src/mobileExpoVaultStorage.ts, apps/mobile/src/mobileExpoVaultStorage.test.ts, and apps/mobile/src/mobileNativeVaultStorage.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after Expo storage adapter extraction.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultSeed.test.ts passed after app-local demo vault seeding: 12 files / 40 tests.
  • pnpm --filter @tolaria/mobile test passed after app-local demo vault seeding: 12 files / 40 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after app-local demo vault seeding.
  • CodeScene after app-local demo vault seeding: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileExpoVaultStorage.ts, apps/mobile/src/mobileVaultSeed.ts, and apps/mobile/src/mobileVaultSeed.test.ts scored 10; apps/mobile/src/demoData.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after app-local demo vault seeding.
  • pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8087 launched on iPad Pro 13-inch (M4) after app-local demo vault seeding; screenshot captured at /tmp/tolaria-mobile-seeded-ipad.png. The app rendered via the stored repository path behind Expo Go's first-run Tools modal with no red runtime error overlay.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts passed after expanded TenTap serialization: 12 files / 42 tests.
  • pnpm --filter @tolaria/mobile test passed after expanded TenTap serialization: 12 files / 42 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after expanded TenTap serialization.
  • CodeScene after expanded TenTap serialization: apps/mobile/src/mobileEditorDraft.ts, apps/mobile/src/mobileEditorDraft.test.ts, and apps/mobile/src/mobileEditorHtmlMarkdown.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after expanded TenTap serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraftSave.test.ts passed after editor draft save boundary: 13 files / 44 tests.
  • pnpm --filter @tolaria/mobile test passed after editor draft save boundary: 13 files / 44 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after editor draft save boundary.
  • CodeScene after editor draft save boundary: apps/mobile/src/mobileEditorDraftSave.ts and apps/mobile/src/mobileEditorDraftSave.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after editor draft save boundary.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorSaveState.test.ts src/mobileEditorDraftSave.test.ts passed after editor save UI wiring: 14 files / 46 tests.
  • pnpm --filter @tolaria/mobile test passed after editor save UI wiring: 14 files / 46 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after editor save UI wiring.
  • CodeScene after editor save UI wiring: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileEditorSaveState.ts, apps/mobile/src/mobileEditorSaveState.test.ts, apps/mobile/src/styles/editorStyles.ts, and apps/mobile/src/styles/editorSaveStateStyles.ts scored 10; apps/mobile/src/styles.ts returned no scorable code.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after editor save UI wiring.
  • pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8088 launched on iPad Pro 13-inch (M4) after editor save UI wiring; screenshot captured at /tmp/tolaria-mobile-save-state-ipad.png. The app rendered the Ready save state with no red runtime error overlay.
  • pnpm --filter @tolaria/mobile test -- src/mobileAutosaveQueue.test.ts src/mobileEditorSaveState.test.ts passed after debounced autosave: 15 files / 49 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after debounced autosave.
  • CodeScene after debounced autosave: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/mobileAutosaveQueue.ts, apps/mobile/src/mobileAutosaveQueue.test.ts, apps/mobile/src/mobileEditorSaveState.ts, apps/mobile/src/mobileEditorSaveState.test.ts, and apps/mobile/src/styles/editorSaveStateStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after debounced autosave: 15 files / 49 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after debounced autosave.
  • pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8089 launched on iPhone 15 after debounced autosave; screenshots captured at /tmp/tolaria-mobile-autosave-iphone.png and /tmp/tolaria-mobile-autosave-iphone-loaded.png. The app rendered behind Expo Go's first-run Tools modal with no red runtime error overlay.
  • pnpm --filter @tolaria/mobile test -- src/mobileAutosaveQueue.test.ts src/mobileSavedDraftProjection.test.ts passed after saved note projection refresh: 16 files / 51 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after saved note projection refresh.
  • CodeScene after saved note projection refresh: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileAutosaveQueue.ts, apps/mobile/src/mobileAutosaveQueue.test.ts, apps/mobile/src/mobileSavedDraftProjection.ts, and apps/mobile/src/mobileSavedDraftProjection.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after saved note projection refresh: 16 files / 51 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after saved note projection refresh.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.ts src/mobileVaultRepository.test.ts passed after local note creation: 17 files / 53 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after local note creation.
  • CodeScene after local note creation: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileDemoVault.ts, and apps/mobile/src/mobileNoteCreate.test.ts scored 10; apps/mobile/src/mobileNoteCreate.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile test passed after local note creation: 17 files / 53 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after local note creation.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.ts passed after create-note UX state: 17 files / 53 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after create-note UX state.
  • CodeScene after create-note UX state: apps/mobile/src/MobileApp.tsx, apps/mobile/src/styles/noteListStyles.ts, and apps/mobile/src/styles/noteCreateStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after create-note UX state: 17 files / 53 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after create-note UX state.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.ts passed after title-entry note creation: 17 files / 54 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after title-entry note creation.
  • CodeScene after title-entry note creation: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileNoteCreatePrompt.tsx, apps/mobile/src/useMobileNoteCreateFlow.ts, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileNoteCreate.test.ts, and apps/mobile/src/styles/noteCreateStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after title-entry note creation: 17 files / 54 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after title-entry note creation.
  • pnpm --filter @tolaria/mobile test -- src/mobileAppStateStorage.test.ts src/mobileNoteCreate.test.ts passed after saved app state storage: 18 files / 57 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after saved app state storage.
  • CodeScene after saved app state storage: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileAppStateStorage.ts, apps/mobile/src/mobileAppStateStorage.test.ts, and apps/mobile/src/mobileNativeAppStateStorage.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after saved app state storage: 18 files / 57 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after saved app state storage.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultStorage.test.ts src/mobileExpoVaultStorage.test.ts src/mobileVaultRepository.test.ts src/mobileNoteDelete.test.ts passed after local note deletion: 19 files / 62 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after local note deletion.
  • CodeScene after local note deletion: apps/mobile/src/MobileApp.tsx, apps/mobile/src/useMobileNoteDeleteFlow.ts, apps/mobile/src/mobileNoteDelete.ts, apps/mobile/src/mobileNoteDelete.test.ts, apps/mobile/src/mobileVaultStorage.ts, apps/mobile/src/mobileVaultStorage.test.ts, apps/mobile/src/mobileExpoVaultStorage.ts, apps/mobile/src/mobileExpoVaultStorage.test.ts, apps/mobile/src/mobileVaultRepository.ts, apps/mobile/src/mobileVaultRepository.test.ts, and apps/mobile/src/mobileDemoVault.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after local note deletion: 19 files / 62 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after local note deletion.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultMetadata.test.ts src/mobileVaultMetadataStorage.test.ts passed after vault metadata storage: 21 files / 68 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after vault metadata storage.
  • CodeScene after vault metadata storage: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileVaultMetadata.ts, apps/mobile/src/mobileVaultMetadataStorage.ts, apps/mobile/src/mobileNativeVaultMetadataStorage.ts, apps/mobile/src/mobileVaultMetadata.test.ts, and apps/mobile/src/mobileVaultMetadataStorage.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after vault metadata storage: 21 files / 68 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after vault metadata storage.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultRuntime.test.ts src/mobileVaultMetadata.test.ts src/mobileVaultMetadataStorage.test.ts passed after runtime vault metadata wiring: 22 files / 70 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after runtime vault metadata wiring.
  • CodeScene after runtime vault metadata wiring: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileVaultRuntime.ts, and apps/mobile/src/mobileVaultRuntime.test.ts scored 10; apps/mobile/src/useMobileVaultRuntimeLoader.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile test passed after runtime vault metadata wiring: 22 files / 70 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after runtime vault metadata wiring.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultRuntime.test.ts passed after runtime load retry UI: 22 files / 70 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after runtime load retry UI.
  • CodeScene after runtime load retry UI: apps/mobile/src/MobileApp.tsx, apps/mobile/src/styles/noteListStyles.ts, and apps/mobile/src/styles/vaultLoadStyles.ts scored 10; apps/mobile/src/useMobileVaultRuntimeLoader.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile test passed after runtime load retry UI: 22 files / 70 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after runtime load retry UI.
  • pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8090 launched the runtime metadata/retry build in Expo Go.
  • iPhone simulator screenshot captured at /tmp/tolaria-mobile-runtime-iphone.png; the note list rendered from app-local storage with no red runtime error overlay, but Expo Go's gear overlay still blocks clean interaction screenshots.
  • iPad simulator screenshot captured at /tmp/tolaria-mobile-runtime-ipad-loaded.png; the iPad split layout rendered stored notes and TenTap content with the Ready save state and no red runtime error overlay.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatter.test.ts src/mobileVaultRepository.test.ts src/mobileEditorDraft.test.ts passed after mobile frontmatter metadata parsing: 23 files / 74 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile frontmatter metadata parsing.
  • CodeScene after mobile frontmatter metadata parsing: apps/mobile/src/mobileNoteFrontmatter.ts, apps/mobile/src/mobileNoteFrontmatter.test.ts, apps/mobile/src/mobileVaultRepository.ts, and apps/mobile/src/mobileVaultRepository.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after mobile frontmatter metadata parsing: 23 files / 74 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile frontmatter metadata parsing.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatterWrite.test.ts src/mobileNoteFrontmatter.test.ts passed after mobile frontmatter serialization helpers: 24 files / 78 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile frontmatter serialization helpers.
  • CodeScene after mobile frontmatter serialization helpers: apps/mobile/src/mobileNoteFrontmatterWrite.ts and apps/mobile/src/mobileNoteFrontmatterWrite.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after mobile frontmatter serialization helpers: 24 files / 78 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile frontmatter serialization helpers.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatterSave.test.ts src/mobileNoteFrontmatterWrite.test.ts passed after mobile frontmatter save boundary: 25 files / 80 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile frontmatter save boundary.
  • CodeScene after mobile frontmatter save boundary: apps/mobile/src/mobileNoteFrontmatterSave.ts, apps/mobile/src/mobileNoteFrontmatterSave.test.ts, and apps/mobile/src/mobileDemoVault.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after mobile frontmatter save boundary: 25 files / 80 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile frontmatter save boundary.
  • pnpm --filter @tolaria/mobile test -- src/mobileNoteProperties.test.ts src/mobileNoteFrontmatter.test.ts src/mobileVaultRepository.test.ts src/mobileNoteFrontmatterSave.test.ts passed after properties persistence wiring: 26 files / 84 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after properties persistence wiring.
  • CodeScene after properties persistence wiring: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobilePropertiesPanel.tsx, apps/mobile/src/mobileNoteFrontmatter.ts, apps/mobile/src/mobileNoteFrontmatter.test.ts, apps/mobile/src/mobileNoteProjection.ts, apps/mobile/src/mobileVaultRepository.ts, apps/mobile/src/mobileVaultRepository.test.ts, apps/mobile/src/mobileNoteProperties.ts, apps/mobile/src/mobileNoteProperties.test.ts, apps/mobile/src/useMobileNotePropertiesFlow.ts, apps/mobile/src/styles/propertiesStyles.ts, and apps/mobile/src/styles/propertyChipStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after properties persistence wiring: 26 files / 84 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after properties persistence wiring.
  • iPad simulator screenshot captured at /tmp/tolaria-mobile-properties-ipad-visible.png; the large iPad layout renders the properties column with save-backed type/status/icon/date/tag controls and no red runtime error overlay.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.ts passed after expanded TenTap serialization: 26 files / 86 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after expanded TenTap serialization.
  • CodeScene after expanded TenTap serialization: apps/mobile/src/mobileEditorHtmlMarkdown.ts, apps/mobile/src/mobileEditorDraft.test.ts, and apps/mobile/src/mobileEditorDraftSave.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after expanded TenTap serialization: 26 files / 86 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after expanded TenTap serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileCoreFlowSmoke.test.ts passed after core flow smoke coverage: 27 files / 87 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after core flow smoke coverage.
  • CodeScene after core flow smoke coverage: apps/mobile/src/mobileCoreFlowSmoke.test.ts scored 10.
  • pnpm --filter @tolaria/mobile test passed after core flow smoke coverage: 27 files / 87 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after core flow smoke coverage.
  • pnpm --filter @tolaria/mobile exec expo install expo-dev-client installed expo-dev-client@~55.0.32.
  • pnpm --filter @tolaria/mobile exec expo install expo updated Expo to ~55.0.20; pnpm --filter @tolaria/mobile exec expo install --check passes.
  • pnpm --filter @tolaria/mobile typecheck, pnpm --filter @tolaria/mobile test, and pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after development-client setup.
  • pnpm --filter @tolaria/mobile exec expo run:ios --device 40724AA3-A793-41D8-9C66-79745DA28DE4 --no-bundler generated ignored native iOS output and installed CocoaPods via Homebrew, then blocked because Xcode has the iOS 26.2 SDK but only iOS 17.5/18.6 simulator runtimes installed; xcodebuild -showdestinations lists no eligible simulator destination until the matching iOS 26.2 runtime is installed.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.ts passed after safe image serialization: 27 files / 88 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after safe image serialization.
  • CodeScene after safe image serialization: apps/mobile/src/mobileEditorHtmlMarkdown.ts and apps/mobile/src/mobileEditorDraft.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after safe image serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.ts passed after simple table serialization: 27 files / 90 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after simple table serialization.
  • CodeScene after simple table serialization: apps/mobile/src/mobileEditorHtmlMarkdown.ts, apps/mobile/src/mobileEditorTableMarkdown.ts, apps/mobile/src/mobileEditorDraft.test.ts, and apps/mobile/src/mobileEditorDraftSave.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after simple table serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobilePropertyPicker.test.ts src/mobileNoteProperties.test.ts passed after expandable mobile property pickers: 28 files / 93 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after expandable mobile property pickers.
  • CodeScene after expandable mobile property pickers: apps/mobile/src/MobilePropertiesPanel.tsx, apps/mobile/src/MobileEditablePropertyPickers.tsx, apps/mobile/src/mobilePropertyPicker.ts, apps/mobile/src/mobilePropertyPicker.test.ts, and apps/mobile/src/styles/propertyChipStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after expandable mobile property pickers.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitSyncPlan.test.ts src/mobileVaultConfig.test.ts src/mobileGitRemote.test.ts passed after mobile Git sync planning: 29 files / 98 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile Git sync planning.
  • CodeScene after mobile Git sync planning: apps/mobile/src/mobileGitSyncPlan.ts and apps/mobile/src/mobileGitSyncPlan.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile Git sync planning.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitSyncStatus.test.ts src/mobileGitSyncRuntimePlan.test.ts src/mobileGitSyncPlan.test.ts src/mobileVaultConfig.test.ts passed after mobile Git sync status wiring: 31 files / 107 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile Git sync status wiring.
  • CodeScene after mobile Git sync status wiring: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileGitSyncStatusCard.tsx, apps/mobile/src/mobileGitSyncStatus.ts, apps/mobile/src/mobileGitSyncStatus.test.ts, apps/mobile/src/mobileGitSyncRuntimePlan.test.ts, and apps/mobile/src/styles/gitSyncStyles.ts scored 10; apps/mobile/src/mobileGitSyncRuntimePlan.ts and apps/mobile/src/styles.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile Git sync status wiring.
  • pnpm --filter @tolaria/mobile exec expo install expo-secure-store installed expo-secure-store@~55.0.13 and added the Expo config plugin.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitCredentialStorage.test.ts src/mobileSecureGitCredentialStorage.test.ts src/mobileGitSyncRuntimePlan.test.ts src/mobileGitSyncStatus.test.ts passed after mobile Git credential storage: 33 files / 113 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile Git credential storage.
  • CodeScene after mobile Git credential storage: apps/mobile/src/mobileGitCredentialStorage.ts, apps/mobile/src/mobileGitCredentialStorage.test.ts, apps/mobile/src/mobileSecureGitCredentialStorage.ts, apps/mobile/src/mobileSecureGitCredentialStorage.test.ts, and apps/mobile/src/mobileNativeGitCredentialStorage.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile Git credential storage.
  • pnpm --filter @tolaria/mobile exec expo install expo-auth-session expo-web-browser installed expo-auth-session@~55.0.15 and expo-web-browser@~55.0.14, adding the Expo WebBrowser config plugin.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitHubOAuth.test.ts src/mobileGitHubOAuthFlow.test.ts src/mobileGitCredentialStorage.test.ts src/mobileSecureGitCredentialStorage.test.ts passed after mobile GitHub OAuth boundary: 35 files / 121 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile GitHub OAuth boundary.
  • CodeScene after mobile GitHub OAuth boundary: apps/mobile/src/mobileGitCredentialStorage.ts, apps/mobile/src/mobileGitCredentialStorage.test.ts, apps/mobile/src/mobileGitHubOAuth.ts, apps/mobile/src/mobileGitHubOAuth.test.ts, apps/mobile/src/mobileGitHubOAuthFlow.ts, apps/mobile/src/mobileGitHubOAuthFlow.test.ts, and apps/mobile/src/mobileNativeGitHubOAuthSession.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile GitHub OAuth boundary.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitAuthentication.test.ts src/mobileGitCredentialStateForVault.test.ts src/mobileGitSyncRuntimePlan.test.ts src/mobileGitHubOAuthFlow.test.ts src/mobileGitHubOAuth.test.ts passed after wiring Connect to mobile auth: 37 files / 126 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after wiring Connect to mobile auth.
  • CodeScene after wiring Connect to mobile auth: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileGitSyncStatusCard.tsx, apps/mobile/src/useMobileGitSyncFlow.ts, apps/mobile/src/mobileGitAuthentication.ts, apps/mobile/src/mobileGitAuthentication.test.ts, apps/mobile/src/mobileGitCredentialStateForVault.ts, apps/mobile/src/mobileGitCredentialStateForVault.test.ts, and apps/mobile/src/mobileGitHubOAuthEnvironment.ts scored 10; apps/mobile/src/mobileGitSyncRuntimePlan.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after wiring Connect to mobile auth.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultRemoteSetup.test.ts src/mobileVaultConfig.test.ts src/mobileGitSyncRuntimePlan.test.ts passed after mobile remote setup: 38 files / 129 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after mobile remote setup.
  • CodeScene after mobile remote setup: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileVaultRemotePrompt.tsx, apps/mobile/src/mobileVaultRemoteSetup.ts, apps/mobile/src/mobileVaultRemoteSetup.test.ts, apps/mobile/src/useMobileVaultRemoteSetupFlow.ts, and apps/mobile/src/styles/noteCreateStyles.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after mobile remote setup.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitHubOAuthEnvironment.test.ts src/mobileVaultRemoteSetup.test.ts src/mobileGitHubOAuth.test.ts passed after surfacing OAuth client-id state: 39 files / 131 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after surfacing OAuth client-id state.
  • CodeScene after surfacing OAuth client-id state: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileVaultRemotePrompt.tsx, apps/mobile/src/mobileGitHubOAuthClientId.ts, apps/mobile/src/mobileGitHubOAuthEnvironment.ts, and apps/mobile/src/mobileGitHubOAuthEnvironment.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after surfacing OAuth client-id state.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultRemoteSetup.test.ts src/mobileGitHubOAuthEnvironment.test.ts passed after splitting mobile remote prompt styles: 39 files / 131 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after splitting mobile remote prompt styles.
  • CodeScene after splitting mobile remote prompt styles: apps/mobile/src/MobileVaultRemotePrompt.tsx, apps/mobile/src/styles/remotePromptStyles.ts, and apps/mobile/src/styles/noteCreateStyles.ts scored 10; apps/mobile/src/styles.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after splitting mobile remote prompt styles.
  • pnpm --filter @tolaria/mobile test -- src/mobileVaultManagementSummary.test.ts src/mobileVaultRemoteSetup.test.ts passed after adding the vault-management sidebar card: 40 files / 134 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding the vault-management sidebar card.
  • CodeScene after adding the vault-management sidebar card: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileVaultManagementCard.tsx, apps/mobile/src/mobileVaultManagementSummary.ts, apps/mobile/src/mobileVaultManagementSummary.test.ts, and apps/mobile/src/styles/vaultManagementStyles.ts scored 10; apps/mobile/src/styles.ts returned no scorable code and no findings.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding the vault-management sidebar card; Metro recovered from a cache deserialize warning by doing a full crawl.
  • pnpm --filter @tolaria/mobile test -- src/mobileGitPrimaryAction.test.ts src/mobileGitTransport.test.ts src/mobileGitSyncFlowAction.test.ts src/mobileGitSyncRuntimePlan.test.ts src/mobileGitSyncStatus.test.ts passed after adding the mobile Git transport execution boundary: 43 files / 143 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding the mobile Git transport execution boundary.
  • CodeScene after adding the mobile Git transport execution boundary: apps/mobile/src/MobileApp.tsx, apps/mobile/src/useMobileGitSyncFlow.ts, apps/mobile/src/mobileGitSyncPlan.ts, apps/mobile/src/mobileGitPrimaryAction.ts, apps/mobile/src/mobileGitPrimaryAction.test.ts, apps/mobile/src/mobileGitTransport.ts, apps/mobile/src/mobileGitTransport.test.ts, apps/mobile/src/mobileGitSyncFlowAction.ts, and apps/mobile/src/mobileGitSyncFlowAction.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding the mobile Git transport execution boundary.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.ts passed after hardening TenTap link serialization: 43 files / 145 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after hardening TenTap link serialization.
  • CodeScene after hardening TenTap link serialization: apps/mobile/src/mobileEditorHtmlMarkdown.ts and apps/mobile/src/mobileEditorDraft.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after hardening TenTap link serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileNativeGitTransport.test.ts src/mobileGitTransport.test.ts src/mobileGitSyncFlowAction.test.ts passed after adding the native Git transport adapter contract: 44 files / 148 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding the native Git transport adapter contract.
  • CodeScene after adding the native Git transport adapter contract: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileNativeGitTransport.ts, and apps/mobile/src/mobileNativeGitTransport.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding the native Git transport adapter contract; Metro recovered from a cache deserialize warning by doing a full crawl.
  • pnpm --filter @tolaria/mobile test -- src/mobileNativeGitTransport.test.ts src/mobileVaultMetadata.test.ts src/mobileVaultConfig.test.ts passed after adding the vault directory name to native Git transport requests: 44 files / 148 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding the vault directory name to native Git transport requests.
  • CodeScene after adding the vault directory name to native Git transport requests: apps/mobile/src/mobileNativeGitTransport.ts and apps/mobile/src/mobileNativeGitTransport.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding the vault directory name to native Git transport requests; Metro recovered from a cache deserialize warning by doing a full crawl.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts passed after horizontal-rule serialization: 44 files / 149 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after horizontal-rule serialization.
  • CodeScene after horizontal-rule serialization: apps/mobile/src/mobileEditorHtmlMarkdown.ts and apps/mobile/src/mobileEditorDraft.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after horizontal-rule serialization.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileHtmlEntities.test.ts passed after centralized mobile HTML entity decoding: 45 files / 150 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after centralized mobile HTML entity decoding.
  • CodeScene after centralized mobile HTML entity decoding: apps/mobile/src/mobileHtmlEntities.ts, apps/mobile/src/mobileHtmlEntities.test.ts, apps/mobile/src/mobileEditorHtmlMarkdown.ts, apps/mobile/src/mobileEditorTableMarkdown.ts, and apps/mobile/src/mobileEditorDraft.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after centralized mobile HTML entity decoding.
  • pnpm --filter @tolaria/mobile test -- src/mobileNativeGitModule.test.ts src/mobileNativeGitTransport.test.ts passed after adding the optional TolariaGit native module resolver: 46 files / 152 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding the optional TolariaGit native module resolver.
  • CodeScene after adding the optional TolariaGit native module resolver: apps/mobile/src/mobileNativeGitModule.ts, apps/mobile/src/mobileNativeGitModule.test.ts, apps/mobile/src/mobileExpoNativeGitModule.ts, apps/mobile/src/mobileNativeGitTransport.ts, and apps/mobile/src/MobileApp.tsx scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding the optional TolariaGit native module resolver.
  • pnpm test -- src/App.test.tsx --silent passed after extending the flaky desktop Git setup dialog wait that was blocking verified mobile commits in the full hook: 34 tests.
  • pnpm --filter @tolaria/mobile test -- src/mobileNativeGitTransport.test.ts src/mobileNativeGitModule.test.ts passed after adding remote host/auth strategy to native Git requests: 46 files / 152 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after adding remote host/auth strategy to native Git requests.
  • CodeScene after adding remote host/auth strategy to native Git requests: apps/mobile/src/mobileNativeGitTransport.ts and apps/mobile/src/mobileNativeGitTransport.test.ts scored 10.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after adding remote host/auth strategy to native Git requests; Metro recovered from a cache deserialize warning by doing a full crawl.
  • pnpm --filter @tolaria/mobile test passed after the direct-create/properties editability update: 46 files / 153 tests.
  • pnpm --filter @tolaria/mobile typecheck passed after the direct-create/properties editability update.
  • CodeScene after the direct-create/properties editability update: apps/mobile/src/MobileApp.tsx, apps/mobile/src/MobileEditablePropertyPickers.tsx, apps/mobile/src/MobileEditorAdapter.tsx, apps/mobile/src/MobileEditorBreadcrumb.tsx, apps/mobile/src/MobilePropertiesPanel.tsx, apps/mobile/src/mobileNoteProperties.ts, apps/mobile/src/mobilePropertyPicker.ts, apps/mobile/src/styles/breadcrumbStyles.ts, apps/mobile/src/styles/commonStyles.ts, apps/mobile/src/styles/editorStyles.ts, apps/mobile/src/styles/noteListStyles.ts, apps/mobile/src/styles/propertyChipStyles.ts, and apps/mobile/src/useMobileNoteCreateFlow.ts scored 10; apps/mobile/src/styles.ts reported no scorable score.
  • CodeScene pre-commit safeguard passed after splitting the new styles.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export passed after the direct-create/properties editability update.
  • pnpm --filter @tolaria/mobile exec expo install --check passed after aligning Expo SDK 55 patch dependencies and adding the mobile Git transport dependencies.
  • pnpm --filter @tolaria/mobile typecheck passed after the isomorphic-git mobile sync transport.
  • pnpm --filter @tolaria/mobile test passed after the isomorphic-git mobile sync transport: 59 files / 191 tests.
  • CodeScene after the isomorphic-git mobile sync transport: apps/mobile/src/MobileApp.tsx, apps/mobile/src/mobileIsomorphicGitTransport.ts, apps/mobile/src/mobileExpoGitFileSystem.ts, apps/mobile/src/useMobileGitSyncFlow.ts, apps/mobile/src/mobileGitSyncFlowAction.ts, apps/mobile/src/mobileGitTransport.ts, apps/mobile/src/mobileIsomorphicGitTransport.test.ts, apps/mobile/src/mobileNativeIsomorphicGitTransport.ts, apps/mobile/src/mobileDemoVaultSeedPolicy.ts, apps/mobile/src/mobileDemoVault.test.ts, apps/mobile/src/mobileSecureGitCredentialStorage.ts, apps/mobile/src/mobileDemoVault.ts, apps/mobile/src/mobileGitCredentialStorage.ts, and the touched credential/sync tests scored 10; apps/mobile/src/mobileGitSyncRuntimePlan.ts reported no scorable score.
  • CodeScene pre-commit safeguard passed after the isomorphic-git mobile sync transport.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-git-sync passed after the isomorphic-git mobile sync transport.

Risks / Watch Items

  • Editor quality remains the largest mobile risk; TenTap must pass the quality gates before becoming accepted.
  • Shared package extraction must not destabilize active desktop work.
  • Desktop alpha release currently triggers on every push to main; this branch is safe, but release path filters should be added before mobile work merges to main.
  • Codacy analyzes committed/pushed repository state; local edits still need local lint/test/CodeScene discipline before remote checks exist.
  • TenTap declares a React DOM 18 dependency, but the mobile workspace now overrides that nested dependency to react-dom@19.1.0 so Expo SDK 54 runs with a single mobile React DOM version. Keep this override under review when upgrading TenTap or Expo.

2026-05-13 Review-Driven Quality Pass

  • Downgraded the mobile Expo runtime to SDK 54 for compatibility with the currently available physical-iPad Expo Go runtime, then added a mobile Metro resolver so the native bundle resolves mobile react@19.1.0 / react-dom@19.1.0 instead of the desktop root React.
  • Preserved notes that no longer start with an H1 in the rich editor; the TenTap initial document no longer re-inserts a title heading after the user removes it.
  • Added rich wikilink rendering for persisted wikilinks and serialization back to desktop-compatible wikilink Markdown.
  • Routed rich wikilink taps from the TenTap WebView back to mobile note navigation.
  • Added a WebView keyboard hook for hardware Tab indentation/outdentation inside the rich editor.
  • Added a WebView shortcut hook for Cmd+N while focus is inside the rich editor.
  • Replaced the Type property chip picker with a combobox-style option list.
  • Reworked relationship target adding to use a modal note picker rather than an inline always-visible suggestion list.
  • Added custom relationship group creation with an initial target, custom relationship group deletion, relationship chip removal, and custom property deletion.
  • Added initial iPad split-panel drag handles: sidebar/list can collapse left, properties can collapse right, and edge handles restore hidden panels.
  • Updated MOBILE_STRATEGY.md with the iPad feature-parity roadmap and MOBILE_QUALITY_AUDIT.md with the current gap inventory.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test passed: 59 files / 194 tests.
  • pnpm --filter @tolaria/mobile exec expo install --check --json passed.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-quality-pass passed.
  • Added a TenTap bridge extension for mobile wikilink insertion, with the Link bridge configured to preserve tolaria-note: links.
  • Added a rich-editor [[ suggestion overlay backed by the same mobile note suggestion logic used by the raw editor.
  • Split the editor WebView setup, message parser, suggestion UI, and wikilink bridge into focused files so each touched code file stays at CodeScene 10.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test passed: 59 files / 194 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-wikilink-pass passed.

2026-05-14 iPad Panel Drag Follow-Up

  • Replaced boolean-only iPad panel swipe toggles with live numeric panel widths so sidebar, note list, and right panel resize while dragging and snap open/closed on release.
  • Added tablet panel layout tests covering left-panel resizing, right-panel resizing, velocity/width snapping, and left-edge reveal order.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test -- src/tabletPanelLayout.test.ts src/compactGestures.test.ts passed; the mobile test runner executed 60 files / 198 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-panel-drag passed.

2026-05-14 Hardware Tab Indent Follow-Up

  • Replaced the rich editor WebView document.execCommand("indent") Tab handler with explicit listIndent messages.
  • Routed Tab to TenTap editor.sink() and Shift+Tab to editor.lift() so hardware keyboard indentation uses ProseMirror list commands.
  • Added mobile editor message parsing coverage for valid and malformed list indentation messages.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorMessages.test.ts src/mobileShortcutCommands.test.ts src/mobileEditorDraft.test.ts passed; the mobile test runner executed 61 files / 200 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-tab-indent passed.
  • Treated [[ as an active empty wikilink query so suggestions appear immediately after the second bracket.
  • Added WebView cursor geometry to wikilink query messages and anchored the suggestion menu below the active editor line instead of at the bottom of the document.
  • Changed rich wikilink insertion to focus the TenTap editor, replace the active trigger range, and insert a real Tiptap link mark targeting tolaria-note:.
  • Added message parsing coverage for empty wikilink queries with geometry and raw autocomplete coverage for the empty [[ trigger.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test -- src/mobileEditorMessages.test.ts src/mobileWikilinkAutocomplete.test.ts passed; the mobile test runner executed 61 files / 202 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-wikilink-autocomplete passed.

2026-05-14 Type Combobox Follow-Up

  • Reworked the mobile Type picker into a searchable combobox: opening Type focuses the text field, typing filters available type options, and exact typed matches normalize to the canonical type label.
  • Added empty-state copy for unmatched type searches.
  • Added pure mobile combobox tests for option filtering and canonical exact-match resolution.
  • pnpm --filter @tolaria/mobile typecheck passed.
  • pnpm --filter @tolaria/mobile test -- src/mobilePropertyCombo.test.ts src/mobileNoteProperties.test.ts passed; the mobile test runner executed 62 files / 204 tests.
  • pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-export-type-combobox passed.