Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
38 commits
Select commit Hold shift + click to select a range
7992bd9
fix(e2e): make labels tests resilient to existing data
patchmemory Feb 5, 2026
6f95c12
feat(map): integrate Labels and Neo4j schema into Map page visualization
patchmemory Feb 5, 2026
5d72656
chore(dev): update submodule pointer for completed task
patchmemory Feb 5, 2026
cae8558
feat(labels): add Arrows.app schema import/export functionality
patchmemory Feb 5, 2026
d930f1e
chore(dev): update submodule pointer for completed task
patchmemory Feb 5, 2026
fa2e000
fix(labels): fix Arrows import button and modal hiding issues
patchmemory Feb 5, 2026
2f381d2
fix(e2e): improve timing for arrows import test
patchmemory Feb 5, 2026
9e8f58c
fix(e2e): manually trigger input event for textarea fill
patchmemory Feb 5, 2026
c7ee21d
fix(e2e): fix modal timing and duplicate variable issues
patchmemory Feb 5, 2026
73cd7c2
fix(e2e): improve arrows import test reliability
patchmemory Feb 5, 2026
a645a9f
fix(labels): remove syntax error breaking Arrows buttons
patchmemory Feb 5, 2026
ad99014
debug(labels): add console logging to arrows import/export
patchmemory Feb 5, 2026
7f53c2d
fix(labels): implement custom modal for Arrows import + test cleanup
patchmemory Feb 5, 2026
b9c861e
fix(e2e): update labels-arrows tests for custom modal + add label cle…
patchmemory Feb 5, 2026
1bc6c28
feat(labels): add incoming relationships section to Labels UI
patchmemory Feb 5, 2026
6f8e098
chore(dev): update submodule with new expandable textarea task
patchmemory Feb 5, 2026
904d595
fix(labels): correct table name in cleanup + fix dropdown rendering
patchmemory Feb 5, 2026
825ee45
fix(e2e): check relationship input values instead of textContent
patchmemory Feb 5, 2026
858653b
feat(labels): show total relationship count with incoming/outgoing br…
patchmemory Feb 5, 2026
749bda5
feat(labels): make source labels clickable in incoming relationships
patchmemory Feb 5, 2026
e05568e
feat(labels): add navigation buttons to outgoing relationships
patchmemory Feb 5, 2026
33b9256
chore(dev): update submodule with Neo4j instance editing tasks
patchmemory Feb 6, 2026
00280c4
chore(dev): update submodule to sync ready-queue
patchmemory Feb 6, 2026
b7274ca
fix(neo4j): add missing get_neo4j_client function to neo4j_client module
patchmemory Feb 6, 2026
3b6913a
fix(neo4j): add execute_read and execute_write methods to Neo4jClient
patchmemory Feb 6, 2026
7add750
feat(labels): separate per-label and bulk Neo4j pull operations
patchmemory Feb 6, 2026
68862dc
refactor(labels): remove Push button and enhance Pull to include rela…
patchmemory Feb 6, 2026
67d9b61
feat(labels): add multi-select and batch operations
patchmemory Feb 6, 2026
ee0c15b
fix(labels): include relationships in Pull All operation
patchmemory Feb 6, 2026
1b39141
fix(labels): correct Neo4j relationship queries for all pull operations
patchmemory Feb 6, 2026
040b3cc
fix(labels): use MATCH pattern for Pull All relationships
patchmemory Feb 6, 2026
a3f1586
feat(labels): add comprehensive keyboard navigation
patchmemory Feb 6, 2026
bef5d11
fix(labels): enable button Enter key and add Shift+navigation selection
patchmemory Feb 6, 2026
9e34112
fix(labels): proper shift+navigation selection anchor tracking
patchmemory Feb 6, 2026
48271cc
style(labels): change "New Label" button to "+ Label" with bold text
patchmemory Feb 6, 2026
a23de4a
feat(labels): add adjustable divider between panels
patchmemory Feb 6, 2026
a291227
feat(ui): comprehensive keyboard navigation for Labels page
patchmemory Feb 6, 2026
3c72e7e
test: add comprehensive unit tests for labels API operations
patchmemory Feb 6, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -61,3 +61,8 @@ coverage.xml
sqlite:/
sqlite:/home
sqlite:/tmp

# Dev submodule code imports (should be handled by dev/.gitignore)
# Added here as safety net to prevent leaking into main repo
dev/code-imports/nc3rsEDA/
!dev/code-imports/nc3rsEDA/README.md
55 changes: 50 additions & 5 deletions DEMO_SETUP.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,12 +116,39 @@ The test suite creates temporary test data. You can reference `tests/conftest.py

### Workflow 2: Graph Visualization

#### Option A: Using Local Labels
1. **Navigate** to Labels page (`/labels`)
2. **Create** a new label (e.g., "Project")
3. **Add** properties (e.g., name: string, budget: number)
4. **Define** relationships (e.g., "HAS_FILE" → File)
5. **Save** the label
6. **Navigate** to Map page (`/map`)
7. **Select** "Local Labels" from Source dropdown
8. **View** schema visualization (nodes appear in red = definition only, no instances)
9. **Observe** relationships shown as edges

#### Option B: Using Neo4j Schema
1. **Navigate** to Settings (`/settings`)
2. **Connect** to Neo4j (configure URI, username, password)
3. **Test** connection to verify it works
4. **Navigate** to Labels page (`/labels`)
5. **Click** "Pull from Neo4j" to sync schema
6. **Navigate** to Map page (`/map`)
7. **Select** "Neo4j Schema" from Source dropdown
8. **View** schema pulled from database (nodes in green)

#### Option C: Combined View (Default)
1. **Scan** files and commit to Neo4j (Files page)
2. **Navigate** to Map page
3. **View** graph layout
4. **Filter** by labels/relationships
5. **Adjust** layout and appearance
6. **Interact** with nodes (click, drag)
2. **Navigate** to Map page (`/map`)
3. **Source** defaults to "All Sources"
4. **View** combined graph with color-coded nodes:
- **Blue**: In-memory graph (actual scanned data)
- **Red**: Local labels (definitions only, no instances)
- **Green**: Neo4j schema (pulled from database)
- **Orange/Purple/Teal/Yellow**: Mixed sources
5. **Filter** by labels/relationships (dropdowns populate dynamically)
6. **Adjust** layout and appearance
7. **Interact** with nodes (click, drag)

### Workflow 3: Schema Management

Expand All @@ -131,6 +158,24 @@ The test suite creates temporary test data. You can reference `tests/conftest.py
4. **Define** relationships (e.g., "HAS_FILE")
5. **Push** schema to Neo4j

#### Import/Export with Arrows.app

**Import from Arrows.app:**
1. Design schema at https://arrows.app
2. Export JSON from Arrows (File → Export → JSON)
3. In scidk, navigate to Labels page
4. Click "Import from Arrows.app"
5. Paste JSON or upload file
6. Click "Import" to create labels

**Export to Arrows.app:**
1. Navigate to Labels page
2. Click "Export to Arrows.app"
3. Download JSON file
4. Open https://arrows.app
5. Import file (File → Import → From JSON)
6. View/edit schema in Arrows

### Workflow 4: Link Creation

1. **Navigate** to Links page
Expand Down
2 changes: 1 addition & 1 deletion dev
Submodule dev updated from 87f0cb to d71bf7
14 changes: 13 additions & 1 deletion e2e/global-teardown.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,10 @@ import { FullConfig } from '@playwright/test';
import { teardown } from './global-setup';

export default async function globalTeardown(config: FullConfig) {
// Clean up test scans before shutting down server
// Clean up test data before shutting down server
const baseUrl = (process as any).env.BASE_URL;
if (baseUrl) {
// Clean up test scans
try {
const response = await fetch(`${baseUrl}/api/admin/cleanup-test-scans`, {
method: 'POST',
Expand All @@ -16,6 +17,17 @@ export default async function globalTeardown(config: FullConfig) {
} catch (error) {
console.error('[cleanup] Failed to cleanup test scans:', error);
}

// Clean up test labels
try {
const response = await fetch(`${baseUrl}/api/admin/cleanup-test-labels`, {
method: 'POST',
});
const result = await response.json();
console.log('[cleanup] Test labels cleaned up:', result);
} catch (error) {
console.error('[cleanup] Failed to cleanup test labels:', error);
}
}

// Kill the server process
Expand Down
Loading