The edit path duplicated the streaming flow with inline require() calls; it now reuses regenerateResponse, which also fixes:
- edited conversations were never saved to History
- the answer generated after an edit could not be stopped (no abort handle kept)
Stopping a stream now saves the partial conversation, like finishing or failing does.
Adds characterization tests for ChatScreen and useLMStudio.
- add babel.config.js with unstable_transformImportMeta: zustand/middleware ships
import.meta.env, which the Metro web bundle (a classic script) cannot parse, so
every page threw 'SyntaxError: Cannot use import.meta outside a module' and the
app never hydrated after the static export.
- declare the settings screen as 'settings/index' in the root stack: the old name
'settings' matched no route, so the modal presentation and the 'Settings' title
were silently dropped (expo-router logged 'No route named settings exists').
- add the missing app/+not-found.tsx that the root layout already referenced.
- update the About label from LocalAiApp to LocalMind.