Files
tolaria/docs/MOBILE_PROGRESS.md
2026-05-05 20:29:56 +02:00

66 KiB

Mobile Progress

Last updated: 2026-05-05

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: Local workflow parity, relationships, views, favorites, and AI panel
  • 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.
  • Set the booted iPad simulator keyboard preferences to Italian (it_IT@sw=QWERTY;hw=Automatic).

Next Action

Continue Phase 4 with local workflow parity and native QA:

  1. 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.
  2. Run iPad simulator QA over sidebar filters, favorites, editable properties, relationship add/remove, raw wikilink autocomplete, saved views, and AI panel input states.
  3. Continue TenTap Markdown serialization coverage for any editor output observed in simulator QA.
  4. Implement the native Git module behind createNativeMobileGitTransport, preferably Rust/libgit2 unless Expo native-module constraints block it.

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 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.

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's package graph currently reports a react-dom peer warning because its bundled web editor path depends on React DOM 18 while the native app uses React 19; simulator launch and iOS export pass, but this should be tracked during the editor spike.