feat(project): detect React Native / Flutter workspaces + status-bar badge - #60
Merged
Conversation
…badge
First piece of the mobile-first direction: UMIDE now knows when the open
workspace is a mobile app instead of treating every folder the same.
- New `project` module: `ProjectKind { ReactNative, Flutter }` +
`detect_project_kind(path)` — two cheap offline file probes (pubspec.yaml
mentioning flutter; package.json with an exact "react-native" dependency,
quote-delimited so react-native-web alone doesn't match). Flutter wins in a
mixed root. 5 unit tests.
- `CommonData.project_kind: RwSignal<Option<ProjectKind>>`, populated in
`WindowTabData::new` next to the other workspace-derived loads, local
workspaces only (remote paths can't be probed from here).
- Status bar: a "React Native"/"Flutter" badge next to the git branch,
hidden (Display::None) for non-mobile workspaces — same pattern as the
branch item.
Verified live on Windows: opened an RN demo workspace → the status bar shows
"React Native"; unit tests cover Flutter/RN/neither/mixed. Groundwork for AI
project-context injection (Mac's seam via send_handler) and run-on-device.
dev-josias
added a commit
that referenced
this pull request
Jul 2, 2026
Bump 0.3.0 -> 0.3.1 (Cargo.toml workspace / umide.spec / Info.plist), flip the docs badge, add the v0.3.1 changelog entry. Ships the mobile-first dock layout (#59), macOS native panel icons (#62), the Windows dock-overflow fix, transcript wrap, RN/Flutter detection (#60) and the logcat backend (#61).
dev-josias
added a commit
that referenced
this pull request
Jul 2, 2026
) Consume CommonData.project_kind (#60's RN/Flutter detection) in both agent paths, so the assistant KNOWS the stack instead of re-discovering it every session: a byte-stable project_context() suffix names the framework and its idioms/tooling. The built-in agent appends it to SYSTEM_PROMPT; Claude Code gets it in --append-system-prompt (write and read-only modes). Snapshotted per turn in the panel (detection may complete after the panel opens); None keeps the neutral prompt, so plain folders are unchanged. Unit-tested.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
feat(project): detect React Native / Flutter workspaces + status-bar badge
First piece of the mobile-first direction: UMIDE now knows when the open
workspace is a mobile app instead of treating every folder the same.
projectmodule:ProjectKind { ReactNative, Flutter }+detect_project_kind(path)— two cheap offline file probes (pubspec.yamlmentioning flutter; package.json with an exact "react-native" dependency,
quote-delimited so react-native-web alone doesn't match). Flutter wins in a
mixed root. 5 unit tests.
CommonData.project_kind: RwSignal<Option<ProjectKind>>, populated inWindowTabData::newnext to the other workspace-derived loads, localworkspaces only (remote paths can't be probed from here).
hidden (Display::None) for non-mobile workspaces — same pattern as the
branch item.
Verified live on Windows: opened an RN demo workspace → the status bar shows
"React Native"; unit tests cover Flutter/RN/neither/mixed. Groundwork for AI
project-context injection (Mac's seam via send_handler) and run-on-device.