Consolidate duplicated utility functions into shared format-utils module.
Replace unsafe static ref pattern in PageWebView with forwardRef/useImperativeHandle.
Stabilize useNodeListQuery memoization by replacing JSON.stringify deps.
Add React.memo to FlatList item components (MessageItem, ChatListItem,
SpaceListItem, FileItem). Wrap all tab route layouts with ErrorBoundary.
Set up jest-expo test infrastructure with initial format utility tests.
Add empty states for message list and home screen. Add accessibility
labels to buttons, inputs, list items, and navigation elements. Create
animated skeleton loading components for node lists. Fix pre-existing
lint errors in import ordering.
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mobile: add prebuild hook and submit config for EAS builds
Add prebuildCommand to run copy-editor.js during EAS builds so the
editor.html asset is available for Metro bundling. Also restore the
App Store Connect submit credentials (appleId, appleTeamId, ascAppId)
so builds auto-submit to TestFlight.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mobile: use eas-build-post-install hook for editor asset
prebuildCommand replaces expo prebuild entirely, causing build failures.
Use eas-build-post-install lifecycle hook instead to run copy-editor.js
after npm install but before the native build.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mobile: fix page editor keyboard and interaction issues
- Disable native WebView scrolling and use CSS overflow to prevent
scroll-to-top when keyboard opens
- Fix slash command click-through by preventing ProseMirror from
processing mousedown events immediately after command selection
- Remove keyboard from auto-opening on page load and auto-focusing
cursor; keyboard now only appears on user tap
- Add eas-build-post-install hook to build editor HTML asset during
EAS builds
- Improve editor.html iframe sandbox and CSP settings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mobile: replace inline page editor with WebView-based TipTap editor
Replaces the plain-text block-by-block page editor with a Vite-built
WebView that runs the full TipTap rich text editor. The editor HTML is
bundled as a single self-contained asset, loaded via expo-asset and
rendered in react-native-webview. Communication between RN and the
WebView uses postMessage/onMessage bridge for init, mutations, queries,
theme changes, and navigation.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* Mobile: reorganize WebView editor as standalone package
Moves the editor WebView app from apps/mobile/src/editor-webview/ to
apps/mobile/webviews/editor/ as a first-class build target with its own
package.json, tsconfig.json, and vite.config.ts. This fixes TypeScript
compilation (editor code no longer typechecked as React Native) and
makes the build story clearer.
- WebView editor is now at apps/mobile/webviews/editor/
- Built artifact copied to apps/mobile/assets/editor-dist/ on prestart
- Vite dev server support for fast iteration
- Tailwind CSS @source path fixed (../../../../packages/ui)
- Page title editing restored via RenameNodeSheet
- File preview now converts file:// to base64 data URLs for WebView
- WebView hidden until ready to avoid white flash
- Keyboard accessory bar hidden on iOS
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Migrate from Vite/web-based setup to native React Native with Expo Router.
Includes auth flows, chat/spaces/settings screens, CRDT sync, file upload,
workspace switching, emoji picker, message reactions, and iOS/Android projects.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* Init mobile app
* Minor fixes and improvements
* Improve assets loading
* Fix event bus proxy
* Improve emojis and icons loading
* Improve app initialization in web
* Init tanstack router
* Refactor components
* Refactor some more components
* Refactor layouts
* Improve routing
* Improve routing
* Routing improvements
* Make sidebar work in mobile
* Refactor container and breadcrumb
* Fix some packages and warnings
* Encode and decode yjs update for ipc communication
* Refactor servers in client
* Fix some errors and warnings in editor and sidebar
* Add route masking for web
* Improve container layout
* Improve ui for mobile
* Improve mobile ui
* Create custom link component
* Router improvements
* Implement tabs for desktop
* tabs improvements
* Refactor routes
* Layout improvements
* Improve desktop tabs
* Use tanstack-db for global collections
* Improve tanstack db collections
* Refactor workspaces and accounts databases and routes locally
* Use tanstackdb for users
* Use tanstackdb for uploads and downloads
* Use tanstackdb for temp files
* Rename database to collections
* Improve tabs
* Fix packages
* Improve local file handling
* Rename sync cursor keys
* Save some bootstrap data in a file
* Reset all data on new version update in desktop
* Minor refactor
* Implement app reset on startup
* UI fixes and improvements
* More Ui improvements
* Fix logout
* Add tab in route contexts for workspace routes
* Store last used workspace id as metadata
* Fix account logout
* Fix file preview
* Fix file thumbnail loading in tabs
* Fix chat tab loading
* Fix some redirect handling
* Disable staletime for icon.svg.get query
* Fix not found pages and throws
* add readme for mobile
* fix some keys
* Improve add tab handler
* Fix path