60 KiB
60 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: Git credential/auth boundaries and editor durability
- 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/markdownas the first shared workspace package. - Moved
compactMarkdownintopackages/markdownand 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.mjssopnpm testruns desktop and shared-package tests, while targeted test arguments remain targeted. - Updated the pre-commit branch guard to allow local commits on
codex/mobilefor this isolated mobile worktree. - Split
src/utils/wikilinks.tsinto shared@tolaria/markdownmodules 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/mobileas an Expo React Native workspace package. - Added root mobile scripts:
mobile:start,mobile:ios,mobile:test, andmobile: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/readNotelater. - Updated
scripts/run-tests.mjsso fullpnpm testruns desktop, mobile, and shared package tests, while targetedapps/mobile/...andpackages/markdown/...paths route to the correct workspace Vitest config. - Updated
.husky/pre-committo usepnpm test -- --silentso local commits include the new mobile test suite. - Added
react-native-gesture-handlerat Expo's SDK-compatible version. - Wrapped the mobile root in
GestureHandlerRootView. - Added a tested compact gesture mapper and
SwipeSurfacewrapper 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
MobileEditorAdapterwith 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 intoMobileEditorAdapterwith 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.tsxat CodeScene10.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/githubredirect 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_IDrequirement 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.
Next Action
Continue Phase 4 with editor durability:
- Continue TenTap Markdown serialization coverage for any editor output observed in simulator QA.
- Implement the native Git module behind
createNativeMobileGitTransport, preferably Rust/libgit2 unless Expo native-module constraints block it. - Retry the iOS development-client build after installing an iOS 26.2 simulator runtime in Xcode.
Verification Log
tool_searchexposed Codacy MCP tools after Codex restart.codacy_get_repository_with_analysissucceeded forrefactoringhq/tolaria.- Current branch verified as
codex/mobile. - CodeScene before extraction:
src/utils/compact-markdown.tsscored10. - CodeScene after extraction:
packages/markdown/src/compactMarkdown.tsscored10;packages/markdown/src/compactMarkdown.test.tsscored10; tiny export/config files returned no scorable code and no findings. pnpm --filter @tolaria/markdown testpassed: 29 tests.pnpm --filter @tolaria/markdown typecheckpassed.pnpm test -- src/utils/compact-markdown.test.tspassed and ran only that desktop test file: 29 tests.pnpm testpassed and ran the full desktop suite plus package tests: 309 desktop test files / 3639 desktop tests, then 29 package tests.pnpm lintpassed with one pre-existing warning insrc/components/tolariaBlockNoteSideMenu.tsx.npx tsc --noEmitpassed.pnpm buildpassed.- CodeScene before wikilink extraction:
src/utils/wikilinks.tsscored9.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 testpassed after wikilink extraction: 40 tests.pnpm test -- src/utils/wikilinks.test.ts src/utils/noteTitle.test.tspassed: 91 desktop tests.pnpm --filter @tolaria/markdown typecheckpassed after wikilink extraction.pnpm lint,npx tsc --noEmit, andpnpm buildpassed after wikilink extraction.- CodeScene before note-title extraction:
src/utils/noteTitle.tsscored9.68. - CodeScene after note-title extraction:
packages/markdown/src/noteTitle.tsandpackages/markdown/src/noteTitle.test.tsscored10; the desktop compatibility export returned no scorable code and no findings. pnpm --filter @tolaria/markdown testpassed after note-title extraction: 56 tests.pnpm test -- src/utils/noteTitle.test.tspassed: 14 desktop tests.pnpm --filter @tolaria/markdown typecheckpassed after note-title extraction.pnpm --filter @tolaria/mobile typecheckpassed.pnpm --filter @tolaria/mobile testpassed: 1 file / 2 tests.pnpm --filter @tolaria/mobile exec expo install --checkpassed after pinning Expo-compatible dependency versions.pnpm --filter @tolaria/mobile exec expo config --type publicpassed and shows iOS bundle identifiercom.tolaria.mobile.dev, Android packagecom.tolaria.mobile.dev, andsupportsTablet: true.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed and produced the iOS bundle.pnpm lintpassed with one pre-existing warning insrc/components/tolariaBlockNoteSideMenu.tsx.npx tsc --noEmitpassed.pnpm testpassed 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 scored10; 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), butxcrun simctl list ...hung indefinitely even after opening/Applications/Xcode.app/Contents/Developer/Applications/Simulator.app. pnpm --filter @tolaria/mobile testpassed after compact navigation extraction: 2 files / 6 tests.pnpm --filter @tolaria/mobile typecheckpassed after compact navigation extraction.- CodeScene after compact navigation extraction:
apps/mobile/src/compactNavigation.ts,apps/mobile/src/compactNavigation.test.ts, and the touchedapps/mobile/src/MobileApp.tsxscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after compact navigation extraction.pnpm --filter @tolaria/mobile testpassed after note projection extraction: 3 files / 8 tests.pnpm --filter @tolaria/mobile typecheckpassed after note projection extraction.- CodeScene after note projection extraction:
apps/mobile/src/mobileNoteProjection.tsandapps/mobile/src/mobileNoteProjection.test.tsscored10;apps/mobile/src/demoData.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after note projection extraction.pnpm --filter @tolaria/mobile testpassed after mobile vault repository extraction: 4 files / 11 tests.pnpm --filter @tolaria/mobile typecheckpassed after mobile vault repository extraction.- CodeScene after mobile vault repository extraction:
apps/mobile/src/mobileVaultRepository.tsandapps/mobile/src/mobileVaultRepository.test.tsscored10;apps/mobile/src/demoData.tsstill returned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile vault repository extraction.pnpm test -- apps/mobile/src/mobileVaultRepository.test.tspassed and ran only the mobile repository test file.pnpm test -- packages/markdown/src/noteTitle.test.tspassed and ran only the shared Markdown note-title test file.pnpm test -- --silentpassed 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.mjsscored10;.husky/pre-commitis unsupported by CodeScene file analysis because it has no supported extension. xcrun simctl list devices availablenow responds with available iPhone/iPad devices.xcrun simctl boot 40724AA3-A793-41D8-9C66-79745DA28DE4bootediPad Pro 13-inch (M4).pnpm --filter @tolaria/mobile exec expo start --iosinstalled/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 testpassed after adding gesture support: 5 files / 15 tests.pnpm --filter @tolaria/mobile typecheckpassed 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 scored10;apps/mobile/index.tsreturned no scorable code. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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 testpassed after Git remote auth parsing: 6 files / 20 tests.pnpm --filter @tolaria/mobile typecheckpassed after Git remote auth parsing.- CodeScene after Git remote auth parsing:
apps/mobile/src/mobileGitRemote.tsandapps/mobile/src/mobileGitRemote.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after Git remote auth parsing.pnpm --filter @tolaria/mobile test -- src/mobileVaultConfig.test.tspassed after vault config extraction: 7 files / 24 tests.pnpm --filter @tolaria/mobile typecheckpassed after vault config extraction.- CodeScene after vault config extraction:
apps/mobile/src/mobileVaultConfig.tsandapps/mobile/src/mobileVaultConfig.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after vault config extraction.pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.tspassed after editor adapter extraction: 8 files / 27 tests.pnpm --filter @tolaria/mobile typecheckpassed after editor adapter extraction.- CodeScene after editor adapter extraction:
apps/mobile/src/MobileApp.tsx,apps/mobile/src/MobileEditorAdapter.tsx,apps/mobile/src/mobileEditorDocument.ts, andapps/mobile/src/mobileEditorDocument.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after editor adapter extraction.- TenTap package check:
@10play/tentap-editor@1.0.1requiresreact,react-native, andreact-native-webview; Expo installedreact-native-webview@13.16.0. pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.tspassed after TenTap wiring: 8 files / 28 tests.pnpm --filter @tolaria/mobile typecheckpassed after TenTap wiring.- CodeScene after TenTap wiring:
apps/mobile/src/MobileEditorAdapter.tsx,apps/mobile/src/mobileEditorDocument.ts,apps/mobile/src/mobileEditorDocument.test.ts, andapps/mobile/src/styles/editorStyles.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after TenTap wiring; iOS bundle size is now about 11 MB and includes TenTap toolbar assets.pnpm --filter @tolaria/mobile exec expo start --ios --clearlaunched oniPad 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.tsxpassed after a transient full-hook failure in the unrelated desktop SearchPanel arrow-key test.pnpm --filter @tolaria/mobile test -- src/mobileEditorDocument.test.tspassed after the TenTap draft boundary: 8 files / 29 tests.pnpm --filter @tolaria/mobile typecheckpassed after the TenTap draft boundary.- CodeScene after the TenTap draft boundary:
apps/mobile/src/MobileEditorAdapter.tsx,apps/mobile/src/mobileEditorDocument.ts, andapps/mobile/src/mobileEditorDocument.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after the TenTap draft boundary.pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDocument.test.tspassed after supported Markdown serialization: 9 files / 32 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/MobileEditorAdapter.tsxscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after supported Markdown serialization.pnpm --filter @tolaria/mobile test -- src/mobileVaultStorage.test.ts src/mobileVaultRepository.test.tspassed after storage boundary extraction: 10 files / 35 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileVaultRepository.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after storage boundary extraction.expo-file-system@55.0.17is now an explicit@tolaria/mobiledependency.pnpm --filter @tolaria/mobile test -- src/mobileExpoVaultStorage.test.tspassed after Expo storage adapter extraction: 11 files / 38 tests.pnpm --filter @tolaria/mobile testpassed after Expo storage adapter extraction: 11 files / 38 tests.pnpm --filter @tolaria/mobile typecheckpassed after Expo storage adapter extraction.- CodeScene after Expo storage adapter extraction:
apps/mobile/src/mobileExpoVaultStorage.ts,apps/mobile/src/mobileExpoVaultStorage.test.ts, andapps/mobile/src/mobileNativeVaultStorage.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after Expo storage adapter extraction.pnpm --filter @tolaria/mobile test -- src/mobileVaultSeed.test.tspassed after app-local demo vault seeding: 12 files / 40 tests.pnpm --filter @tolaria/mobile testpassed after app-local demo vault seeding: 12 files / 40 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileVaultSeed.test.tsscored10;apps/mobile/src/demoData.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after app-local demo vault seeding.pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8087launched oniPad 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.tspassed after expanded TenTap serialization: 12 files / 42 tests.pnpm --filter @tolaria/mobile testpassed after expanded TenTap serialization: 12 files / 42 tests.pnpm --filter @tolaria/mobile typecheckpassed after expanded TenTap serialization.- CodeScene after expanded TenTap serialization:
apps/mobile/src/mobileEditorDraft.ts,apps/mobile/src/mobileEditorDraft.test.ts, andapps/mobile/src/mobileEditorHtmlMarkdown.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after expanded TenTap serialization.pnpm --filter @tolaria/mobile test -- src/mobileEditorDraftSave.test.tspassed after editor draft save boundary: 13 files / 44 tests.pnpm --filter @tolaria/mobile testpassed after editor draft save boundary: 13 files / 44 tests.pnpm --filter @tolaria/mobile typecheckpassed after editor draft save boundary.- CodeScene after editor draft save boundary:
apps/mobile/src/mobileEditorDraftSave.tsandapps/mobile/src/mobileEditorDraftSave.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after editor draft save boundary.pnpm --filter @tolaria/mobile test -- src/mobileEditorSaveState.test.ts src/mobileEditorDraftSave.test.tspassed after editor save UI wiring: 14 files / 46 tests.pnpm --filter @tolaria/mobile testpassed after editor save UI wiring: 14 files / 46 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/editorSaveStateStyles.tsscored10;apps/mobile/src/styles.tsreturned no scorable code. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after editor save UI wiring.pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8088launched oniPad Pro 13-inch (M4)after editor save UI wiring; screenshot captured at/tmp/tolaria-mobile-save-state-ipad.png. The app rendered theReadysave state with no red runtime error overlay.pnpm --filter @tolaria/mobile test -- src/mobileAutosaveQueue.test.ts src/mobileEditorSaveState.test.tspassed after debounced autosave: 15 files / 49 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/editorSaveStateStyles.tsscored10. pnpm --filter @tolaria/mobile testpassed after debounced autosave: 15 files / 49 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after debounced autosave.pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8089launched oniPhone 15after debounced autosave; screenshots captured at/tmp/tolaria-mobile-autosave-iphone.pngand/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.tspassed after saved note projection refresh: 16 files / 51 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileSavedDraftProjection.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after saved note projection refresh: 16 files / 51 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after saved note projection refresh.pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.ts src/mobileVaultRepository.test.tspassed after local note creation: 17 files / 53 tests.pnpm --filter @tolaria/mobile typecheckpassed after local note creation.- CodeScene after local note creation:
apps/mobile/src/MobileApp.tsx,apps/mobile/src/mobileDemoVault.ts, andapps/mobile/src/mobileNoteCreate.test.tsscored10;apps/mobile/src/mobileNoteCreate.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile testpassed after local note creation: 17 files / 53 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after local note creation.pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.tspassed after create-note UX state: 17 files / 53 tests.pnpm --filter @tolaria/mobile typecheckpassed after create-note UX state.- CodeScene after create-note UX state:
apps/mobile/src/MobileApp.tsx,apps/mobile/src/styles/noteListStyles.ts, andapps/mobile/src/styles/noteCreateStyles.tsscored10. pnpm --filter @tolaria/mobile testpassed after create-note UX state: 17 files / 53 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after create-note UX state.pnpm --filter @tolaria/mobile test -- src/mobileNoteCreate.test.tspassed after title-entry note creation: 17 files / 54 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/noteCreateStyles.tsscored10. pnpm --filter @tolaria/mobile testpassed after title-entry note creation: 17 files / 54 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after title-entry note creation.pnpm --filter @tolaria/mobile test -- src/mobileAppStateStorage.test.ts src/mobileNoteCreate.test.tspassed after saved app state storage: 18 files / 57 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileNativeAppStateStorage.tsscored10. pnpm --filter @tolaria/mobile testpassed after saved app state storage: 18 files / 57 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after local note deletion: 19 files / 62 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileDemoVault.tsscored10. pnpm --filter @tolaria/mobile testpassed after local note deletion: 19 files / 62 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after local note deletion.pnpm --filter @tolaria/mobile test -- src/mobileVaultMetadata.test.ts src/mobileVaultMetadataStorage.test.tspassed after vault metadata storage: 21 files / 68 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileVaultMetadataStorage.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after vault metadata storage: 21 files / 68 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after vault metadata storage.pnpm --filter @tolaria/mobile test -- src/mobileVaultRuntime.test.ts src/mobileVaultMetadata.test.ts src/mobileVaultMetadataStorage.test.tspassed after runtime vault metadata wiring: 22 files / 70 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileVaultRuntime.test.tsscored10;apps/mobile/src/useMobileVaultRuntimeLoader.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile testpassed after runtime vault metadata wiring: 22 files / 70 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after runtime vault metadata wiring.pnpm --filter @tolaria/mobile test -- src/mobileVaultRuntime.test.tspassed after runtime load retry UI: 22 files / 70 tests.pnpm --filter @tolaria/mobile typecheckpassed after runtime load retry UI.- CodeScene after runtime load retry UI:
apps/mobile/src/MobileApp.tsx,apps/mobile/src/styles/noteListStyles.ts, andapps/mobile/src/styles/vaultLoadStyles.tsscored10;apps/mobile/src/useMobileVaultRuntimeLoader.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile testpassed after runtime load retry UI: 22 files / 70 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after runtime load retry UI.pnpm --filter @tolaria/mobile exec expo start --ios --clear --port 8090launched 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 theReadysave state and no red runtime error overlay. pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatter.test.ts src/mobileVaultRepository.test.ts src/mobileEditorDraft.test.tspassed after mobile frontmatter metadata parsing: 23 files / 74 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileVaultRepository.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after mobile frontmatter metadata parsing: 23 files / 74 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile frontmatter metadata parsing.pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatterWrite.test.ts src/mobileNoteFrontmatter.test.tspassed after mobile frontmatter serialization helpers: 24 files / 78 tests.pnpm --filter @tolaria/mobile typecheckpassed after mobile frontmatter serialization helpers.- CodeScene after mobile frontmatter serialization helpers:
apps/mobile/src/mobileNoteFrontmatterWrite.tsandapps/mobile/src/mobileNoteFrontmatterWrite.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after mobile frontmatter serialization helpers: 24 files / 78 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile frontmatter serialization helpers.pnpm --filter @tolaria/mobile test -- src/mobileNoteFrontmatterSave.test.ts src/mobileNoteFrontmatterWrite.test.tspassed after mobile frontmatter save boundary: 25 files / 80 tests.pnpm --filter @tolaria/mobile typecheckpassed after mobile frontmatter save boundary.- CodeScene after mobile frontmatter save boundary:
apps/mobile/src/mobileNoteFrontmatterSave.ts,apps/mobile/src/mobileNoteFrontmatterSave.test.ts, andapps/mobile/src/mobileDemoVault.tsscored10. pnpm --filter @tolaria/mobile testpassed after mobile frontmatter save boundary: 25 files / 80 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after properties persistence wiring: 26 files / 84 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/propertyChipStyles.tsscored10. pnpm --filter @tolaria/mobile testpassed after properties persistence wiring: 26 files / 84 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after expanded TenTap serialization: 26 files / 86 tests.pnpm --filter @tolaria/mobile typecheckpassed after expanded TenTap serialization.- CodeScene after expanded TenTap serialization:
apps/mobile/src/mobileEditorHtmlMarkdown.ts,apps/mobile/src/mobileEditorDraft.test.ts, andapps/mobile/src/mobileEditorDraftSave.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after expanded TenTap serialization: 26 files / 86 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after expanded TenTap serialization.pnpm --filter @tolaria/mobile test -- src/mobileCoreFlowSmoke.test.tspassed after core flow smoke coverage: 27 files / 87 tests.pnpm --filter @tolaria/mobile typecheckpassed after core flow smoke coverage.- CodeScene after core flow smoke coverage:
apps/mobile/src/mobileCoreFlowSmoke.test.tsscored10. pnpm --filter @tolaria/mobile testpassed after core flow smoke coverage: 27 files / 87 tests.pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after core flow smoke coverage.pnpm --filter @tolaria/mobile exec expo install expo-dev-clientinstalledexpo-dev-client@~55.0.32.pnpm --filter @tolaria/mobile exec expo install expoupdated Expo to~55.0.20;pnpm --filter @tolaria/mobile exec expo install --checkpasses.pnpm --filter @tolaria/mobile typecheck,pnpm --filter @tolaria/mobile test, andpnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after development-client setup.pnpm --filter @tolaria/mobile exec expo run:ios --device 40724AA3-A793-41D8-9C66-79745DA28DE4 --no-bundlergenerated 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 -showdestinationslists 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.tspassed after safe image serialization: 27 files / 88 tests.pnpm --filter @tolaria/mobile typecheckpassed after safe image serialization.- CodeScene after safe image serialization:
apps/mobile/src/mobileEditorHtmlMarkdown.tsandapps/mobile/src/mobileEditorDraft.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after safe image serialization.pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.tspassed after simple table serialization: 27 files / 90 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileEditorDraftSave.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after simple table serialization.pnpm --filter @tolaria/mobile test -- src/mobilePropertyPicker.test.ts src/mobileNoteProperties.test.tspassed after expandable mobile property pickers: 28 files / 93 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/propertyChipStyles.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after expandable mobile property pickers.pnpm --filter @tolaria/mobile test -- src/mobileGitSyncPlan.test.ts src/mobileVaultConfig.test.ts src/mobileGitRemote.test.tspassed after mobile Git sync planning: 29 files / 98 tests.pnpm --filter @tolaria/mobile typecheckpassed after mobile Git sync planning.- CodeScene after mobile Git sync planning:
apps/mobile/src/mobileGitSyncPlan.tsandapps/mobile/src/mobileGitSyncPlan.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after mobile Git sync status wiring: 31 files / 107 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/gitSyncStyles.tsscored10;apps/mobile/src/mobileGitSyncRuntimePlan.tsandapps/mobile/src/styles.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile Git sync status wiring.pnpm --filter @tolaria/mobile exec expo install expo-secure-storeinstalledexpo-secure-store@~55.0.13and 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.tspassed after mobile Git credential storage: 33 files / 113 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileNativeGitCredentialStorage.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile Git credential storage.pnpm --filter @tolaria/mobile exec expo install expo-auth-session expo-web-browserinstalledexpo-auth-session@~55.0.15andexpo-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.tspassed after mobile GitHub OAuth boundary: 35 files / 121 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileNativeGitHubOAuthSession.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after wiring Connect to mobile auth: 37 files / 126 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileGitHubOAuthEnvironment.tsscored10;apps/mobile/src/mobileGitSyncRuntimePlan.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after wiring Connect to mobile auth.pnpm --filter @tolaria/mobile test -- src/mobileVaultRemoteSetup.test.ts src/mobileVaultConfig.test.ts src/mobileGitSyncRuntimePlan.test.tspassed after mobile remote setup: 38 files / 129 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/noteCreateStyles.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after mobile remote setup.pnpm --filter @tolaria/mobile test -- src/mobileGitHubOAuthEnvironment.test.ts src/mobileVaultRemoteSetup.test.ts src/mobileGitHubOAuth.test.tspassed after surfacing OAuth client-id state: 39 files / 131 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileGitHubOAuthEnvironment.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after surfacing OAuth client-id state.pnpm --filter @tolaria/mobile test -- src/mobileVaultRemoteSetup.test.ts src/mobileGitHubOAuthEnvironment.test.tspassed after splitting mobile remote prompt styles: 39 files / 131 tests.pnpm --filter @tolaria/mobile typecheckpassed after splitting mobile remote prompt styles.- CodeScene after splitting mobile remote prompt styles:
apps/mobile/src/MobileVaultRemotePrompt.tsx,apps/mobile/src/styles/remotePromptStyles.ts, andapps/mobile/src/styles/noteCreateStyles.tsscored10;apps/mobile/src/styles.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after splitting mobile remote prompt styles.pnpm --filter @tolaria/mobile test -- src/mobileVaultManagementSummary.test.ts src/mobileVaultRemoteSetup.test.tspassed after adding the vault-management sidebar card: 40 files / 134 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/styles/vaultManagementStyles.tsscored10;apps/mobile/src/styles.tsreturned no scorable code and no findings. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after adding the mobile Git transport execution boundary: 43 files / 143 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileGitSyncFlowAction.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after adding the mobile Git transport execution boundary.pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileEditorDraftSave.test.tspassed after hardening TenTap link serialization: 43 files / 145 tests.pnpm --filter @tolaria/mobile typecheckpassed after hardening TenTap link serialization.- CodeScene after hardening TenTap link serialization:
apps/mobile/src/mobileEditorHtmlMarkdown.tsandapps/mobile/src/mobileEditorDraft.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after hardening TenTap link serialization.pnpm --filter @tolaria/mobile test -- src/mobileNativeGitTransport.test.ts src/mobileGitTransport.test.ts src/mobileGitSyncFlowAction.test.tspassed after adding the native Git transport adapter contract: 44 files / 148 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileNativeGitTransport.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after adding the vault directory name to native Git transport requests: 44 files / 148 tests.pnpm --filter @tolaria/mobile typecheckpassed 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.tsandapps/mobile/src/mobileNativeGitTransport.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed 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.tspassed after horizontal-rule serialization: 44 files / 149 tests.pnpm --filter @tolaria/mobile typecheckpassed after horizontal-rule serialization.- CodeScene after horizontal-rule serialization:
apps/mobile/src/mobileEditorHtmlMarkdown.tsandapps/mobile/src/mobileEditorDraft.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after horizontal-rule serialization.pnpm --filter @tolaria/mobile test -- src/mobileEditorDraft.test.ts src/mobileHtmlEntities.test.tspassed after centralized mobile HTML entity decoding: 45 files / 150 tests.pnpm --filter @tolaria/mobile typecheckpassed 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, andapps/mobile/src/mobileEditorDraft.test.tsscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after centralized mobile HTML entity decoding.pnpm --filter @tolaria/mobile test -- src/mobileNativeGitModule.test.ts src/mobileNativeGitTransport.test.tspassed after adding the optionalTolariaGitnative module resolver: 46 files / 152 tests.pnpm --filter @tolaria/mobile typecheckpassed after adding the optionalTolariaGitnative module resolver.- CodeScene after adding the optional
TolariaGitnative module resolver:apps/mobile/src/mobileNativeGitModule.ts,apps/mobile/src/mobileNativeGitModule.test.ts,apps/mobile/src/mobileExpoNativeGitModule.ts,apps/mobile/src/mobileNativeGitTransport.ts, andapps/mobile/src/MobileApp.tsxscored10. pnpm --filter @tolaria/mobile exec expo export --platform ios --output-dir /tmp/tolaria-mobile-exportpassed after adding the optionalTolariaGitnative module resolver.pnpm test -- src/App.test.tsx --silentpassed after extending the flaky desktop Git setup dialog wait that was blocking verified mobile commits in the full hook: 34 tests.
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 tomain. - 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-dompeer 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.