Skip to content

feat(project): detect React Native / Flutter workspaces + status-bar badge - #60

Merged
dev-josias merged 1 commit into
mainfrom
feat/project-detection
Jul 1, 2026
Merged

feat(project): detect React Native / Flutter workspaces + status-bar badge#60
dev-josias merged 1 commit into
mainfrom
feat/project-detection

Conversation

@dev-josias

Copy link
Copy Markdown
Contributor

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.

  • 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.

…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
dev-josias merged commit 36965f2 into main Jul 1, 2026
7 checks passed
dev-josias added a commit that referenced this pull request Jul 2, 2026
docs(handoff): mobile-first backends landed (#60, #61)
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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant