Commit Graph
289 Commits
Author SHA1 Message Date
dextmorgn 47b0c05115 feat(app): RBAC permission gating, UserAvatar component, share dialog redesign and responsive grids
- Add UserAvatar and AvatarGroup components to /ui/avatar, migrate all consumers
- Display collaborator avatars in top navbar with AvatarGroup
- Gate edit actions behind canEdit: toolbar (connect, merge, layouts), nodes-view,
  nodes-panel, relationships-view (checkboxes + delete), edge-details-panel,
  graph-navigation (Add tab), import sheet, analysis creation
- Add role badge (owner/admin/editor/viewer) with colored icons in case-header
- Redesign share-dialog: role badges as dropdown triggers, skeleton loading,
  owner/member separation, hover-reveal delete button
- Switch all card grids from viewport breakpoints to CSS container queries
  (dashboard-stats, investigations-list, sketches-section, metrics-grid, custom-types)
- Extend container query classes in styles.css for all needed column counts
2026-04-11 14:44:29 +02:00
dextmorgn f5e6fb79ae feat(app): RBAC permission gating, share dialog, profile page and user display
- Add useCan hook reading permissions from $investigationId layout route loader
- Add $investigationId layout route to fetch investigation and share data with children
- Add share dialog with user search autocomplete (debounced) for collaborator management
- Add /dashboard/profile page for editing first name, last name, avatar URL
- Gate all edit/create/delete actions based on user role (deny by default)
  - Graph: node drag, quick add, link creation, context menus, detail panel editing
  - Analysis: editor readonly, title readonly, actions hidden for viewers
  - Investigation: delete (owner only), share (admin+), new sketch/analysis (editor+)
  - Settings: sketch info readonly, delete sketch and import hidden for viewers
  - Selected items panel: enrich, delete, ask AI hidden for viewers
- Fix nav-user to show real user data instead of hardcoded placeholder
- Add user-display utils (getDisplayName, getInitials) shared across components
- Add avatar display in nav-user, case-header collaborators and share dialog
2026-04-11 14:44:28 +02:00
dextmorgnandGitHub a38a773657 Merge pull request #128 from hillw3318-ui/tags-input
feat(app): Added 'tags-input'. Changed the text input for aliases in details panel
2026-04-08 11:28:40 +02:00
dextmorgn 976bd0ae99 feat(app): vertical link rendering 2026-03-16 11:15:16 +01:00
William HillandGitHub 1d376b8ac0 Merge branch 'reconurge:main' into tags-input 2026-03-16 00:32:00 +03:00
bjst0ne def29144eb fix(app): fixed lists/arrays render in 'details-panel' 2026-03-16 00:37:03 +03:00
dextmorgn 3ef942a2bc feat(app): fix double-click detection and graphRef initialization
Thread MouseEvent through onBackgroundClick for double-click detection.
Use stable callback ref to avoid ForceGraph2D stale closure issues.
Fix graphRef not being set on first load by notifying parent immediately
after ForceGraph2D mounts. Close quick-add input on blur.
2026-03-15 13:34:34 +01:00
dextmorgn 5292a3c541 feat(app): add quick-add node on double-click
Double-click on the graph background opens an inline input at that position.
Typing triggers debounced type detection via the API, showing the detected
type as a badge. On Enter, a node is created at the click position with the
detected type and persisted to the API. Escape or click outside cancels.
2026-03-15 12:37:46 +01:00
dextmorgn 97ef7e4695 feat(app): add alt+drag edge creation between nodes
Allow creating edges by holding Alt and dragging from one node to another.
On release, the edge is added to the graph and the edge context menu opens
with the label input focused and selected, ready for editing. The edge is
only persisted to the API on Enter/submit; Escape removes it from the store.
2026-03-15 11:51:05 +01:00
bjst0ne 3e8e4c8423 Merge branch 'main' into tags-input 2026-03-10 13:37:48 +03:00
bjst0ne cd67ae369b refactor(app): changed props for 'tags-input' 2026-03-10 12:54:16 +03:00
dextmorgn aacbd5ac85 feat(app): add input and output type to enricher template 2026-03-09 19:39:33 +01:00
dextmorgn 611bc1a563 feat(app): improve node and edge rendering 2026-03-08 20:01:55 +01:00
dextmorgn 16df6b9928 feat(app): update status indicator height 2026-03-04 21:50:15 +01:00
dextmorgn ffd44968ad feat(app): update toolbars layout 2026-03-04 19:53:50 +01:00
dextmorgn bb7c955eab feat(app): update details panel 2026-03-04 19:33:02 +01:00
bjst0ne 5cdd8e70af feat(app): add copy for lists in details-panel 2026-03-02 02:33:57 +03:00
bjst0ne 15878019fa feat(app): add tags-input for list fields in creation form 2026-03-02 02:05:05 +03:00
bjst0ne 523a387661 refactor(app): change tags-input to stacked variant 2026-03-01 19:06:11 +03:00
bjst0ne 171c606e07 fix(app): reduced the height of tags-input 2026-03-01 19:06:11 +03:00
bjst0ne 22400f2e20 refactor(app): change styles to general design 2026-03-01 19:06:11 +03:00
bjst0ne 04e1c2f542 refactor(app): changed condition for aliases input 2026-03-01 19:06:10 +03:00
bjst0ne ae81c216b0 feat(app): added 'tags-input'. Changed the text input for aliases to tags-input in the details panel 2026-03-01 19:06:10 +03:00
dextmorgn ab13a8e2b0 feat(app/enricher-template): io bar in template enricher layout 2026-02-28 11:52:56 +01:00
dextmorgn 7a2ea266d5 feat(app/enricher-template): io bar to specify input and output type 2026-02-28 11:52:31 +01:00
dextmorgn 4d97932604 feat(app): check chat key exists 2026-02-16 09:14:29 +01:00
dextmorgn c481a14747 feat(app): path finder 2026-02-15 15:25:35 +01:00
dextmorgn 635f342aba feat(app): remove spaces from custom types 2026-02-15 12:57:29 +01:00
dextmorgn d6324208a3 feat(app): remove feature flag 2026-02-14 18:00:53 +01:00
dextmorgn 9d1d5c1416 feat(app): update custom types 2026-02-14 15:35:20 +01:00
dextmorgn 92e5a7097a fix(app): radio group 2026-02-13 13:18:00 +01:00
dextmorgn dcce008b8d feat(app): minimal ui updates 2026-02-13 11:23:52 +01:00
dextmorgn ad6a31a7ab feat(app): enricher template feature flag 2026-02-12 23:52:39 +01:00
dextmorgn ae070c14c7 feat(app): feature flag 2026-02-12 23:43:57 +01:00
dextmorgn 11df9e6fde fix(app): chat context 2026-02-12 23:39:21 +01:00
dextmorgn 89f32e2182 feat(app): progress on templates 2026-02-12 22:04:29 +01:00
dextmorgn 19ee40c46d feat(app): chat context 2026-02-12 22:04:28 +01:00
dextmorgn 137d16e1fc feat(app): updates on chat 2026-02-12 22:04:28 +01:00
dextmorgn 07f32c983a feat: use ai sdk useChat 2026-02-12 22:04:21 +01:00
dextmorgn a461f9997d feat: progress on enricher templates 2026-02-12 22:03:28 +01:00
dextmorgn ac397f6714 feat(app): enrichers from templates 2026-02-12 22:03:04 +01:00
dextmorgn 1bf3dae185 feat(app): update map 2026-02-12 22:02:14 +01:00
dextmorgn 2fec5b82e9 fix(app): remove next-theme dependency 2026-02-05 22:38:24 +01:00
dextmorgn 51e2f87643 fix(app): analysis mention list 2026-01-25 21:13:01 +01:00
dextmorgn ab1b7f5c24 feat(app): remove paste feature 2026-01-25 16:02:07 +01:00
dextmorgn 138bbb0fc6 feat(app): support object in detail-panel 2026-01-25 15:26:12 +01:00
dextmorgn 531bcf970e feat(app): add nodeShape to node property 2026-01-24 19:07:33 +01:00
dextmorgn 3c6a23ebfa feat(core): refactor Neo4jDict to GraphDict 2026-01-22 09:41:01 +01:00
dextmorgn d0343cba50 feat(app): node display features + new nodeLabel 2026-01-21 17:20:19 +01:00
dextmorgn aa1e39b8af feat(app): minor changes in utils.js 2026-01-16 09:09:45 +01:00