* fix(app): keep plugin composer items in the toolbar when they fit The density budget guessed a plugin item's width from a fixed label and counted every registered item, so an icon toggle or an item rendering nothing pushed the toolbar into its overflow state with room to spare. An item is an arbitrary component, so its width is only known by rendering it. Measure the toolbar form in an always-mounted slot; the width never depends on the density it decides, so moving items to the overflow cannot flip the answer. Sheet rows truncated short values such as "Full access" because the value's 45% cap resolved against a content-width row. Fill the row so the cap resolves against the sheet's width. * fix(app): close a plugin picker when its trigger moves to the overflow The measuring slot keeps toolbar plugin items mounted, so a picker that was open when the toolbar condensed lost its trigger but kept its popup, which portals to the overlay root. Mark the slot's items inactive while they are out of the row, the contract retained panels already use to close their popups. * test(app): allow the Updating messages toast when the daemon answers slowly A freshness check unanswered after 500ms reports Updating messages by design, but the resume spec asserted no toast regardless of how long the daemon took. On a loaded runner a cold reload's answer took 512ms, so the toast was correct and the spec failed. Assert no toast only when the answer came back promptly, using answer times the gate records. * test(app): check the Updating messages toast the same way on every run The previous repair skipped the no-toast assertion whenever the daemon took 300ms or more to answer, so a slow run proved nothing. The toast is correct once a check has gone unanswered for the quiet window, so the spec now always asserts that the toast did not appear sooner than that after the question was sent, timed in the page. The delayed-answer path gets its own test that holds the daemon's answer.
Welcome to your Expo app 👋
This is an Expo project created with create-expo-app.
Get started
-
Install dependencies
npm install -
Start the app
npx expo start
In the output, you'll find options to open the app in a
- development build
- Android emulator
- iOS simulator
- Expo Go, a limited sandbox for trying out app development with Expo
You can start developing by editing the files inside the app directory. This project uses file-based routing.
Get a fresh project
When you're ready, run:
npm run reset-project
This command will move the starter code to the app-example directory and create a blank app directory where you can start developing.
Learn more
To learn more about developing your project with Expo, look at the following resources:
- Expo documentation: Learn fundamentals, or go into advanced topics with our guides.
- Learn Expo tutorial: Follow a step-by-step tutorial where you'll create a project that runs on Android, iOS, and the web.
Join the community
Join our community of developers creating universal apps.
- Expo on GitHub: View our open source platform and contribute.
- Discord community: Chat with Expo users and ask questions.
Dictation debugging
Set EXPO_PUBLIC_ENABLE_AUDIO_DEBUG=1 before running npx expo start to render the in-app audio debug card. Pair it with the server-side STT_DEBUG_AUDIO_DIR flag so every dictation includes a copyable path to the saved raw audio file.