feat(hubble): modernize graph workbench experience#19
Conversation
- add route-first GraphSpace and graph selection\n- preserve recent context without cross-space leakage\n- expose source-specific loading errors and retries\n- cover dual-mode, concurrency, and accessibility contracts
- connect overview and Schema with shared graph navigation - make statistics status and failure recovery explicit - protect graph route data from stale request results - add query entry, accessibility labels, and regression tests
- link mode-aware Schema, data source, and import steps - distinguish failed requests from honest empty states - isolate stale responses and pause failed polling - verify real datasource mutation and dual-mode routes
- prevent duplicate task mutations and stale async updates - preserve task state across recoverable request failures - isolate detail rows by route task identity - add accessible task action controls and race tests
- separate history and favorite loading and retry state - isolate late responses across graph context changes - pause async polling after failures and while pending - add task-result retry and explicit empty states
- separate algorithm history and favorite recovery - prevent pending pagination from rolling back early - provide stable query table row keys - contain graph tools within responsive result layouts
- add cached semantic zoom thresholds for dense graph labels - fit force layouts after final layout completion - preserve hovered labels across viewport changes - cover density and zoom boundary contracts
- project BigInt and JSONbig values safely for JSON display - render table cells without lossy quoting or precision changes - prevent hidden graph fitting and duplicate layout registration
- redesign login as a balanced accessible desktop shell - align workspace navigation, surfaces, controls and spacing - simplify compact graph card labels without changing full graph views - share the topbar height token and preserve document scrolling
- bound query and algorithm result regions to desktop viewport - keep table pagination visible with internal scrolling - compact query and algorithm history panels - preserve full viewport behavior for 2D and 3D graph modes
- include URL hash in request-time login redirects - cover HTTP and business 401 redirect contracts - verify login restores query and hash context - assert unauthorized requests are not replayed
- centralize PD account administrator policy - align route guard with sidebar visibility - redirect unauthorized users before Account mounts - cover superadmin, space admin, analyst and fallback paths
- label ten icon-only graph controls with localized text - keep accessible names aligned with existing tooltips - add regression coverage for query and algorithm tools
- replace fixed empty-table margins with a responsive token - center empty content without changing populated table rows - add regression coverage for the global density contract
- apply the shared ring to discrete workbench controls - move skip-link activation into the main workspace - scope navigation topbar workspace and login styles - add DOM and stylesheet regression contracts
- start data preparation from the mode-aware Schema step - prefer current route context over stored graph context - share one path contract across home, sidebar, and journey navigation - keep safe GraphSpace fallbacks when no graph is selected
- release submit loading after validation or request failures - preserve password fields for non-200 responses and retries - cover validation, rejection, business error, and success paths
- replace click-only field and selection icons with named buttons - constrain task names with ellipsis and full-value tooltips - extend the accessibility contract to cover React icon actions - add localized accessible names for the new controls
- serialize create, edit, and auth submissions - clear stale account detail and form state - ignore late identity responses after switching users - cover pending, race, and failure recovery
- derive sidebar selection from route and product mode - highlight the PD schema preparation entry - preserve non-PD graph metadata under graph understanding - cover route helper and rendered menu selection
- compact the My profile and password forms with Workbench tokens - give 404 recovery a bounded surface and direct workspace return - preserve async task context with a graph-scoped return entry - cover surface, routing, i18n, and form-alignment contracts
- describe the destructive scope as schema and data\n- replace the misleading data-only API and menu names\n- cover modal copy, canonical route, and card actions\n- preserve exact-name, pending, and recovery behavior
- improve login balance and brand rendering - clarify navigation information architecture - expose unavailable operations as coming soon - render profile empty values consistently
- add guarded keyboard query execution - expose canvas fullscreen shortcut - tune force layout for readable graph results - cover shortcuts and layout behavior with tests
- default fresh sessions to English - share language fallback across UI and requests - keep explicit login language selections persistent - focus graph canvas for fullscreen shortcuts
- prevent selected English journey labels from truncating - retain the existing collapsed navigation behavior - target the primary 1080p and 2K desktop layouts
- restore workbench route title helpers and styles\n- keep internal test routes development-only\n- remove duplicated task action definition
There was a problem hiding this comment.
Code Review
This pull request introduces significant enhancements to the HugeGraph Hubble platform, including a new operations monitoring dashboard, improved authentication and authorization scopes for graph spaces, and refined data import workflows. Key changes include the addition of a LiveOperationsCollector for real-time metrics, enhanced permission checks in BaseController and AccessService, and improved error handling with new exception types. Additionally, the UI has been updated with a new navigation structure, a graph context switcher, and updated i18n resources. I have reviewed the code and suggest addressing the potential type safety issue in GraphsService.java as noted in the feedback.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
- clarify query shortcuts, empty states, and compact results - correct Schema navigation and documentation paths - explain operations metrics and external Dashboard scope - add contextual sidebar expansion and onboarding links
Bug: GQL Traversal fails with JWT; UI force-logs outBranch tip tested: SymptomAfter login, GQL Traversal (Gremlin) on a valid query e.g. Root cause (verified, not tester setup)
Hubble always uses the login token (Bearer) for Gremlin. FE treats any API check: Hubble Product gaps
|
- preserve CodeMirror focus across controlled callback updates - distinguish upstream query auth failures from session expiry - cover synchronous and asynchronous query authentication paths - make query failure guidance neutral and actionable
Quick correction — Gremlin JWT retest (clean stack)After the force-logout fix was pushed, I retested and thought Gremlin was fully working. That was a misread on my side. My temporary local proxy was still on (Mac I’ve since cleaned the stack, re-pulled What I’m seeing on a clean retest
So the commit looks right for the force-logout / bad error copy side. I was wrong to treat “query works” as fixed while the proxy was still masking Server. What I came up with (please verify)This is my current read — please double-check, I may still be missing something:
QuestionDoes this match how you see it?
If this conclusion is wrong, tell me what I’m missing and I’ll retest that way. Env (clean): local Hubble |
|
Verified. The clean-stack conclusion is:
The locally built clean-stack runtime covered the authentication behavior; CI is now running against the exact pushed heads. Chrome confirmed login plus |
What this PR delivers
This PR turns Hubble into a cohesive graph workbench with native operations, centralized
authorization context, safer credential handling, and recoverable end-to-end journeys. Native
monitoring no longer depends on Dashboard or Grafana; Dashboard remains an optional advanced
entry.
Product and workflow modernization
algorithms, async tasks, data sources/import, accounts, profile, and Operations.
query, result inspection, and task recovery; direct URLs and legacy aliases now resolve to a
stable destination or an actionable error state.
states, plus keyboard focus, accessible names, localized status text, and responsive desktop
layouts.
P0 = 0, P1 = 0, with no unresolved actionable P2.
Native cluster Operations
freshness, bounded caches/fan-out, response limits, timeouts, and explicit partial/stale state.
and independent system/drive/Raft/backend metric groups.
Dashboard never blocks native monitoring.
Authorization and security contract
SUPERADMIN/SPACEADMIN/USERcapability/action context; the frontend does not infer security permissions from role names or cached flags.SUPERADMINcan access cluster Operations; standaloneADMINmaps through the backend compatibility context, while standaloneUSERremains restricted.SPACEADMINcan manage only members, roles, targets, and grants inside assigned spaces; global account/space operations remainSUPERADMIN-only.Deployment compatibility
localized unsupported PD/Store states, and token-authenticated Gremlin execution.
hugegraph/hugegraph#161.
historical time-series storage, mobile layouts, or production capacity policy.
UI evidence
Real Chrome validation covers PD and standalone deployments, role/login switching, source
failure/recovery, and five desktop viewports: 1280×720, 1366×768, 1440×900, 1920×1080, and
2560×1440.
Verification — current head
ec034d0a2239/2239 keys with 1525 statically referenced keys; production build passed.
and cross-module regression gates passed.
10 native-bearing JARs; release tarball SHA-256:
600a5283f1f576a26227549d783ad11adfa93b84ed2073cd6c8d32d0c02aef06.CLEAN, and 61/61 review threads resolved.