* fix: prevent Shift+Tab from changing a backgrounded agent's mode The New Workspace mode-cycle shortcut (Shift+Tab) could reach a still-mounted background agent's mode control and silently change that running agent's execution mode — including into a permissive/bypass mode — with no feedback in the New Workspace UI. Root cause is in useKeyboardActionHandler: it re-registered its handler on every render (a fresh inline `actions` array plus a changing `handle` identity). The dispatcher runs the most-recently-registered matching handler first, so a frequently re-rendering control climbed ahead of the active one and consumed the key. The registered `handle`/`enabled` were also captured per registration and read stale by the native keydown listener. Fix: register once per (handlerId, priority, actions); read `handle` and `isActive` live from a ref; fold `enabled` into a fresh `isActive` so the dispatcher re-checks it at dispatch time. Registration order stays stable and callbacks stay current for all six consumers of the hook. Add an e2e regression test that opens a live agent, opens New Workspace, and presses Shift+Tab. It asserts the running agent's mode is unchanged: its daemon-committed mode, plus no set_agent_mode_request on the wire. It fails on the previous code (the mode was flipped to a more permissive mode) and passes with this change. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> * fix(app): restore workspace pin shortcut build The shortcut change landed with an import path removed by the workspace tabs reshape, breaking app typecheck and web builds. Import the canonical workspace tab model. --------- Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Co-authored-by: Mohamed Boudra <boudra.moha@gmail.com>
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.