Skip to content

Mobile experience overhaul: list-default, slim chrome, no Neo4j surface, clean sign-in - #77

Merged
mvalancy merged 1 commit into
developfrom
feat/mobile-experience
Jun 16, 2026
Merged

Mobile experience overhaul: list-default, slim chrome, no Neo4j surface, clean sign-in#77
mvalancy merged 1 commit into
developfrom
feat/mobile-experience

Conversation

@mvalancy

Copy link
Copy Markdown
Member

Why

Phones wasted most of the screen on chrome built for desktop, landed on the cramped graph view, surfaced scary Neo4j-specific errors even though the app is D1-first / store-agnostic, and the sign-in page leaked a dev hint (Run: ./scripts/setup-oauth.sh). This makes mobile a real "check in on the go" surface.

What

Workspace

  • Phone-width screens default to the card list (matchMedia, persisted); desktop still defaults to the graph.
  • View-tab strip scrolls horizontally on mobile (all 8 tabs reachable, no clipping); compact tabs.
  • Status chip + in-graph banner re-keyed off the GraphQL data layer (the real signal), not Neo4j; copy genericized ("Connected"/"Offline", "Connection Lost"). No more false "Database Connection Lost / Neo4j is not available".
  • Mini-map hidden on mobile (covered ~18% of the screen); node inspector becomes a bottom sheet.

Shell / Layout

  • Mobile drawer is full-width with labels (was unlabeled icons); guest indicator shown.
  • dvh height + safe-area insets (viewport-fit=cover).

Views

  • Tighter mobile padding in CardView / ViewManager toolbar.
  • Project Health 320px panel is desktop-only (covered phones).
  • Removed a per-row console.log in TableView.

Sign-in / Sign-up

  • OAuth block hidden when no provider is configured → dev hint never reaches users; responsive header/form.

Tests

  • New tests/e2e/mobile-experience.spec.ts: list-default, no Neo4j/DB-down strings, no horizontal overflow at 390px, all 8 tabs reachable, mobile graph view mini-map-free with no banner.
  • Web typecheck + prod build clean; new spec green.
  • Smoke gate 4/5 — the grow-flow case fails identically on clean develop against this local DB (pre-existing data-state issue; this PR touches no graph-canvas code). CI's fresh-seed smoke gate is authoritative.

…ce, clean sign-in

Phones now land on a readable card list instead of the cramped graph, the
chrome no longer eats most of the screen, and Neo4j-specific strings/errors
are gone from the user surface (the app is D1-first / store-agnostic).

Workspace
- Default to the card list on phone-width screens (matchMedia, persisted to
  localStorage); desktop still defaults to the graph.
- View-tab strip is horizontally scrollable on mobile so all eight tabs stay
  reachable instead of clipping; tabs are more compact on small screens.
- Re-key the status chip and the in-graph connection banner off the GraphQL
  data layer (the real signal) instead of Neo4j; genericize the copy
  ("Connected"/"Offline", "Connection Lost") so an unused Neo4j never shows
  a scary "Database Connection Lost / Neo4j is not available".
- Hide the mini-map on mobile (it covered ~18% of a phone screen).
- Node inspector renders as a bottom sheet on mobile instead of being hidden.
- Slimmer header padding on small screens.

Layout / shell
- Mobile drawer is full-width with labels (Workspace, Ontology, …) instead of
  unlabeled icons; guest indicator shows in the drawer.
- Dynamic viewport height (dvh) + safe-area insets (viewport-fit=cover) so the
  app fills the visible area under collapsing mobile browser bars / notches.

View components
- CardView / ViewManager toolbar use tighter mobile padding.
- Project Health floating panel (320px) is desktop-only; it covered phones.
- Remove a per-row console.log spamming the table render.

Sign-in / sign-up
- Hide the OAuth block entirely when no provider is configured, so the dev
  hint "Run: ./scripts/setup-oauth.sh" never reaches end users; neutral label
  otherwise. Responsive header/form padding for narrow screens.

Tests
- tests/e2e/mobile-experience.spec.ts: phone lands on a list (no graph
  canvas), no Neo4j/DB-down strings, no horizontal overflow, all eight tabs
  reachable, mobile graph view is mini-map-free with no connection banner.

Verified: web typecheck + prod build clean; new mobile spec green; smoke gate
4/5 (the grow-flow case fails identically on clean develop against this local
DB — a pre-existing data-state issue, not from these changes; touches no
graph-canvas code).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@github-actions

Copy link
Copy Markdown

🧪 Comprehensive Test Suite

  • Unit suites (Node 18.x & 20.x) — core, web, server, mcp-server: ✅ passed
  • Installer & deploy config: ✅ passed

Full-stack smoke gate runs in the CI workflow.

@mvalancy
mvalancy merged commit 32a8a77 into develop Jun 16, 2026
16 checks passed
@mvalancy
mvalancy deleted the feat/mobile-experience branch June 16, 2026 16:44
mvalancy added a commit that referenced this pull request Jun 16, 2026
…th-config log (#78)

Follow-up sweep of the non-workspace pages at phone widths (concrete overflow /
squeeze fixes found by a mobile audit):

- Ontology: search/filter rows stack on mobile (flex-col → row at sm) instead of
  crushing the search input next to the count.
- Admin: database-stats grid is 2-up on phones (was 1 tiny column), quick-actions
  and the TLS legend collapse responsively (sm:grid-cols-2) instead of overflowing.
- Agents: header stacks title over actions on mobile and the action buttons wrap.
- Sign-in/up: the optional OAuth-config fetch failing (expected on the D1-first
  cloud with no OAuth backend) now logs at debug, not as a red console error.

Web typecheck clean. Workspace/Layout/sign-in mobile work shipped separately in #77.

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
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