Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
905 commits
Select commit Hold shift + click to select a range
1d3e10d
docs: add chart plugin + connector plugin developer guides
alfredorubin96 Apr 6, 2026
295fffa
Merge pull request #395 from alfredo1996/docs/plugin-guides
alfredo1996 Apr 6, 2026
51f3a64
Merge pull request #394 from alfredo1996/release/1.1
alfredo1996 Apr 6, 2026
2ad7c01
fix: UX audit findings — 6 issues from release/1.1 audit
alfredorubin96 Apr 6, 2026
6bc3e86
fix: update delete dialog E2E test for dynamic title
alfredorubin96 Apr 6, 2026
6baec9b
Merge pull request #396 from alfredo1996/fix/ux-audit-findings
alfredo1996 Apr 6, 2026
d602ec6
fix(e2e): fix flaky Widget Lab and graph chart tests
alfredorubin96 Apr 6, 2026
a5fe654
fix(cli): setup scripts use docker mode, increase health timeout
alfredorubin96 Apr 6, 2026
1082245
fix(cli): reliable setup — resolve DATABASE_URL, DBs-only compose, fa…
alfredorubin96 Apr 6, 2026
b42b698
fix(cli): use execSync for dockerExec to preserve quoted Cypher queries
alfredorubin96 Apr 6, 2026
bc3ed8f
fix(cli): demo runs full Docker stack, setup runs DBs only
alfredorubin96 Apr 6, 2026
9809b7b
fix(cli): seed with Docker-internal hostnames for full-stack mode
alfredorubin96 Apr 6, 2026
eda68b6
fix(cli): harden DATABASE_URL parsing — strip quotes, URI-encode cred…
alfredorubin96 Apr 6, 2026
7176c85
fix(security): resolve SonarCloud security hotspots for release 1.1
alfredorubin96 Apr 6, 2026
3284d0d
fix(deps): align storybook core version with addons (10.2.6 → 10.3.4)
alfredorubin96 Apr 6, 2026
4526ec0
fix: regenerate component lockfile for storybook 10.3.4
alfredorubin96 Apr 6, 2026
8913631
Merge pull request #414 from alfredo1996/fix/combined-release-1.1-fixes
alfredo1996 Apr 6, 2026
0096923
refactor(plugins): extract chart transforms into standalone modules
alfredorubin96 Apr 6, 2026
08bad82
feat(connection): align connector registry API with chart plugin regi…
alfredorubin96 Apr 7, 2026
53b8b61
Merge pull request #424 from alfredo1996/refactor/plugin-extract-tran…
alfredo1996 Apr 7, 2026
3ca3ebc
Merge pull request #425 from alfredo1996/feat/connector-registry-alig…
alfredo1996 Apr 7, 2026
af58dc9
refactor(plugins): replace chart-registry with plugin delegation shim
alfredorubin96 Apr 7, 2026
025c611
refactor(plugins): replace chart-registry with plugin delegation shim
alfredorubin96 Apr 7, 2026
37f7c77
feat(plugins): add Zod typed settings schemas for all 17 chart plugins
alfredorubin96 Apr 7, 2026
63f4169
Merge remote-tracking branch 'origin/feat/plugin-typed-settings' into…
alfredorubin96 Apr 7, 2026
f625391
refactor(plugins): consolidate chart options into plugin definitions …
alfredorubin96 Apr 7, 2026
ed2eec4
refactor(app): delete legacy chart-registry, migrate to chart-helpers…
alfredorubin96 Apr 7, 2026
8b63fce
fix(plugins): resolve TypeScript errors from plugin migration
alfredorubin96 Apr 7, 2026
ee41656
fix(plugins): cast getCompatibleChartTypes return to ChartType[]
alfredorubin96 Apr 7, 2026
619bd57
fix(plugins): address CodeRabbit review findings
alfredorubin96 Apr 7, 2026
aa04b3e
fix(plugins): restore Pie Chart label, ensure real plugins override s…
alfredorubin96 Apr 7, 2026
b432f07
fix(plugins): fix parameter-select schema + Pie Chart test assertion
alfredorubin96 Apr 7, 2026
ccac25d
Merge pull request #428 from alfredo1996/refactor/plugin-system-integ…
alfredo1996 Apr 7, 2026
9a8e21e
refactor: architecture improvements — lib reorg, workspaces, ESM, pro…
alfredo1996 Apr 7, 2026
8002d05
fix(component): stabilize flaky data-grid tests (#439)
alfredo1996 Apr 8, 2026
9a8d373
chore: apply safe npm audit fixes, reduce CVEs from 13 to 2 (#450)
alfredo1996 Apr 8, 2026
7904235
docs: add ARCHITECTURE.md with package, data flow, and system diagram…
alfredo1996 Apr 8, 2026
460646d
fix(security): add tenantId to users table, enforce tenant isolation …
alfredo1996 Apr 8, 2026
99a1e81
fix(app): click action multi-rule execution and styling rule priority…
alfredo1996 Apr 8, 2026
9c34baf
docs: enhance architecture page, add API key guide, link developer do…
alfredo1996 Apr 8, 2026
f96683c
fix(app): parameter type coercion validation and atomic batch updates…
alfredo1996 Apr 8, 2026
85c0bc0
fix(security): reduce login rate limit to 20/min, strengthen bootstra…
alfredo1996 Apr 8, 2026
92fbd39
fix(app): calculated column operator precedence and cache TTL isolati…
alfredo1996 Apr 8, 2026
7e7023d
fix(connection): delete redundant factory, add Neo4j close(), fix exp…
alfredo1996 Apr 8, 2026
a95fa9f
fix(component): enable client-side filtering for searchable param-sel…
alfredo1996 Apr 9, 2026
103c56d
feat(component): implement map chart marker clustering (#467)
alfredo1996 Apr 9, 2026
08ca1a0
fix(component): improve pie and sunburst chart label readability (#468)
alfredo1996 Apr 9, 2026
2fcd6ed
fix(component): remove duplicate nodeClick property in sunburst chart
alfredorubin96 Apr 9, 2026
d543c22
fix(app): restore --webpack flag for production build
alfredorubin96 Apr 9, 2026
02b3492
fix(app): pass string type to createConnectionModule, keep numeric fo…
alfredorubin96 Apr 9, 2026
77336e4
fix(app): restore connection package to transpilePackages for E2E
alfredorubin96 Apr 9, 2026
46dea09
fix(app): relax rate limiter in test/CI environments for E2E
alfredorubin96 Apr 9, 2026
b92b3da
chore: exclude plugin barrel files from SonarCloud coverage
alfredorubin96 Apr 9, 2026
1b189a2
refactor(app): restructure plugins into directory modules (#470)
alfredo1996 Apr 9, 2026
5278d78
fix: rename UI labels + improve gauge chart styling (#471)
alfredo1996 Apr 9, 2026
e441dd4
feat(app): add icons to chart type selector, default to table (#472)
alfredo1996 Apr 9, 2026
620d9ca
feat(app): default parameter bar hidden, add filter counter badge (#473)
alfredo1996 Apr 9, 2026
e2fa52d
docs: external plugin guide with MongoDB example + CLAUDE.md update (…
alfredo1996 Apr 9, 2026
9f099ed
feat(app): add Save to Widget Lab action in dashboard view mode (#475)
alfredo1996 Apr 9, 2026
68a677d
fix(app): auto-show parameter bar on first click action, fix E2E
alfredorubin96 Apr 9, 2026
729b2ae
fix(e2e): update filter toggle test for auto-show parameter bar
alfredorubin96 Apr 9, 2026
1e8b0b0
fix(app): fix parameter bar toggle state — use null-override pattern
alfredorubin96 Apr 9, 2026
f6f7cb7
test(component): bump select-all DataGrid test timeout to 15s
alfredorubin96 Apr 10, 2026
e2e4a7e
test(e2e): add dashboard sharing CRUD + permission matrix spec (#477)
alfredorubin96 Apr 10, 2026
3940a28
test(e2e): add write-permission enforcement spec (#478)
alfredorubin96 Apr 10, 2026
294e250
test(e2e): cover all parameter widget types (#479)
alfredorubin96 Apr 10, 2026
7fb853e
test(e2e): verify query safety nets — timeout, row cap, error UX (#480)
alfredorubin96 Apr 10, 2026
04971b9
chore(e2e): make AuthPage.login resilient to pre-hydration race
alfredorubin96 Apr 10, 2026
0013e7d
chore(e2e): tighten Movie Analytics selectors + Theme button + Back-a…
alfredorubin96 Apr 10, 2026
de6df59
chore(e2e): add POST /api/dashboards boundary + pin local workers to 4
alfredorubin96 Apr 11, 2026
34c13c0
Merge remote-tracking branch 'origin/feat/issue-477-sharing-e2e' into…
alfredorubin96 Apr 11, 2026
2b44773
Merge remote-tracking branch 'origin/feat/issue-478-write-permissions…
alfredorubin96 Apr 11, 2026
2a452ca
Merge remote-tracking branch 'origin/feat/issue-479-parameter-types-e…
alfredorubin96 Apr 11, 2026
2180f32
Merge remote-tracking branch 'origin/feat/issue-480-query-safety-e2e'…
alfredorubin96 Apr 11, 2026
898a294
chore(e2e): remove duplicate robustLogin from 4 specs
alfredorubin96 Apr 11, 2026
8120214
chore(e2e): address CI failure + CodeRabbit findings on 3-PR chore stack
alfredorubin96 Apr 11, 2026
c37943b
fix(component): forward rest props on SidebarItem to fix nested <button>
alfredorubin96 Apr 11, 2026
a29c409
docs(e2e): fix stale APOC comment per CodeRabbit nit
alfredorubin96 Apr 11, 2026
f930d15
Merge pull request #506 from alfredo1996/fix/sidebar-item-nested-button
alfredo1996 Apr 11, 2026
1b063f1
Merge pull request #504 from alfredo1996/chore/e2e-all-fixes-consolid…
alfredo1996 Apr 11, 2026
976b1b3
fix(query): wire driver truncation signal + user-configurable maxRows…
alfredorubin96 Apr 11, 2026
b5299d5
test(e2e): cover delete-connection-in-use scenario (#481)
alfredorubin96 Apr 11, 2026
7c70d3a
fix(test): address #507 CI failures — executor mocks + viewport + cov…
alfredorubin96 Apr 11, 2026
28c9b23
Merge pull request #511 from alfredo1996/test/issue-481-delete-connec…
alfredo1996 Apr 11, 2026
2b18ad4
Merge pull request #507 from alfredo1996/fix/issue-499-row-cap-banner
alfredo1996 Apr 11, 2026
6309156
fix(form-widget): proactively gate form for users without write permi…
alfredo1996 Apr 11, 2026
6d853de
fix(connections): in-use guard + usage breakdown dialog (#508 + #509)…
alfredo1996 Apr 12, 2026
e789e11
test(dashboard): E2E import validation and connection mapping (#483) …
alfredo1996 Apr 12, 2026
cd11625
test(auth): E2E session expiry redirect and callbackUrl round-trip (#…
alfredo1996 Apr 12, 2026
38203d0
feat(widgets): enable Save to Widget Lab in dashboard view mode (#485…
alfredo1996 Apr 12, 2026
ae77aa2
test(charts): E2E render + interaction coverage for Pie, Map, and Gra…
alfredo1996 Apr 12, 2026
b4f5dfb
test(dashboard): E2E manual refresh button and auto-refresh disable (…
alfredo1996 Apr 12, 2026
e68359e
test(ui): E2E theme toggle persistence and color-scheme support (#488…
alfredo1996 Apr 12, 2026
9809c15
test(widgets): E2E empty result set and No data UX (#490) (#521)
alfredo1996 Apr 12, 2026
469dbec
test(dashboard): E2E NeoDash legacy dashboard import (#494) (#522)
alfredo1996 Apr 12, 2026
e474dce
test(auth): E2E signup edge cases — weak password validation (#491) (…
alfredo1996 Apr 12, 2026
b0a61ce
test(performance): E2E 10k-row dataset render and sort (#493) (#525)
alfredo1996 Apr 12, 2026
b5e1832
test(widgets): E2E Widget Lab consumption — duplicate, filter, search…
alfredo1996 Apr 12, 2026
03d843b
Merge remote-tracking branch 'origin/dev' into release/1.1
alfredorubin96 Apr 12, 2026
f15cf1e
chore: regenerate lockfile after dev merge
alfredorubin96 Apr 12, 2026
4f37044
fix(docker): set API_KEY_HMAC_SECRET in docker-compose.full.yml (#526…
alfredo1996 Apr 12, 2026
4cc0697
fix(a11y): default aria-describedby to undefined on DialogContent (#5…
alfredo1996 Apr 12, 2026
eb257d4
fix(dashboard): show inline validation error for empty dashboard name…
alfredo1996 Apr 12, 2026
43f7530
fix(dashboard): enable Filters button when dashboard has parameter wi…
alfredo1996 Apr 12, 2026
6c636db
fix(ui): increase disabled toggle opacity so checked state stays visi…
alfredo1996 Apr 12, 2026
d14c8de
fix(a11y): ensure fullscreen widget dialog always has DialogTitle (#5…
alfredo1996 Apr 12, 2026
34e3361
Merge pull request #476 from alfredo1996/release/1.1
alfredo1996 Apr 13, 2026
0cc7325
feat(features): edition-based enterprise feature registry (#114) (#548)
alfredo1996 Apr 13, 2026
a0a1dd9
feat(extensions): typed extension point registry (#115) (#549)
alfredo1996 Apr 13, 2026
e54c8d0
feat(query): middleware pipeline around query execution (#116) (#550)
alfredo1996 Apr 13, 2026
c54e35e
feat(logging): structured logger + query audit middleware + request I…
alfredo1996 Apr 14, 2026
bf16db5
feat(query): priority query scheduler core (#129 slice 1) (#564)
alfredo1996 Apr 14, 2026
b6cfe70
feat(query): scheduler middleware — wire priority queue into pipeline…
alfredo1996 Apr 14, 2026
e6e0f78
feat(logging): auth event logging (#552, slice 2 of #128) (#556)
alfredo1996 Apr 14, 2026
0223409
feat(logging): API request/response lifecycle logging (#553, slice 3 …
alfredorubin96 Apr 14, 2026
be4fbe5
Merge pull request #557 from alfredo1996/feat/issue-553-api-request-l…
alfredo1996 Apr 17, 2026
2e732f2
feat(logging): LOG_ANONYMIZE serializer for PII (#554, slice 4 of #12…
alfredo1996 Apr 19, 2026
8226c14
feat(demo): rewrite demo dashboards as 4 portable showcases (#570) (#…
alfredo1996 Apr 19, 2026
26e071c
feat(logging): file transport + pino-roll rotation (#555, final slice…
alfredo1996 Apr 19, 2026
6dbabb4
fix(hardening): dashboard error boundary + expression tokenizer for n…
alfredo1996 Apr 20, 2026
48a8ffd
fix(security): add tenantId to fast-path connection lookup in query r…
alfredo1996 Apr 20, 2026
21975e1
perf(app): stable reference for useParameterValues (#577) (#583)
alfredo1996 Apr 20, 2026
e6a0992
fix(hardening): handleRouteError context + decrypt validation (#575) …
alfredo1996 Apr 20, 2026
79bd65c
fix(hardening): TTL-based eviction for connection driver cache (#574)…
alfredo1996 Apr 20, 2026
39b0ab1
refactor(app): consolidate widget-editor-modal state into store (#573…
alfredo1996 Apr 20, 2026
1b140f2
feat(query): client-side backpressure handling for 503/408 (#563) (#586)
alfredo1996 Apr 21, 2026
2944033
feat(query): scheduler metrics + periodic logging (#562) (#587)
alfredo1996 Apr 21, 2026
ee8388f
feat(connections): re-assign widgets to a different connection (#510)…
alfredo1996 Apr 21, 2026
6addd4e
feat(plugins): external chart plugin loading via manifest (#423) (#589)
alfredo1996 Apr 21, 2026
2cce8af
test(app): raise coverage — API routes, form widget, dashboard branch…
alfredo1996 Apr 21, 2026
f3d3f87
fix(logging): add pino stdSerializers + errorCode field for Fluentd/E…
alfredo1996 Apr 22, 2026
41da47e
chore(charts): style review + fixes for gauge, sunburst, treemap, rad…
alfredo1996 Apr 22, 2026
81bc0b5
fix(charts): add real earth-tones palette, remove monochrome alias (#…
alfredo1996 Apr 22, 2026
c3c963f
fix: address CodeRabbit + SonarCloud review issues across release/2.0…
alfredo1996 Apr 22, 2026
c7eb27f
feat(docs): automated video recordings for user journeys (#595) (#596)
alfredo1996 Apr 23, 2026
ee01f34
feat(app): optimistic locking for dashboard concurrent editing (#597)…
alfredo1996 Apr 23, 2026
4d2cfa0
docs: NeoDash to NeoBoard migration guide (#602)
alfredo1996 Apr 24, 2026
45cd2b9
feat(connectors): pluggable connector system with manifest discovery …
alfredo1996 Apr 24, 2026
2a3b314
feat(cli): plugin management commands — add, list, remove (#605) (#606)
alfredo1996 Apr 24, 2026
848a19d
chore: chart polish, E2E speedup, and implementation guide (#599)
alfredo1996 Apr 24, 2026
2f4c64f
fix(e2e): fix flaky NeoDash unknown type import test (#607)
alfredo1996 Apr 26, 2026
f2b996e
chore: code quality housekeeping — remove deprecated props, fix types…
alfredo1996 Apr 26, 2026
4f2612c
feat: query history + keyboard shortcuts hook (#611)
alfredo1996 Apr 26, 2026
4669e5e
fix: harden plugin infrastructure — safety and validation (#615)
alfredo1996 Apr 26, 2026
fa663a7
feat(charts): add Circle Packing chart widget (#613)
alfredo1996 Apr 26, 2026
7cd655c
fix: remaining plugin hardening — stub sync, error contract, audit lo…
alfredo1996 Apr 26, 2026
aafea6b
docs: complete documentation audit — fix all gaps (#617)
alfredo1996 Apr 26, 2026
ed05b64
fix: address CodeRabbit review findings across PRs #611-#616 (#618)
alfredo1996 Apr 26, 2026
882295b
fix: remaining CodeRabbit + SonarCloud review issues (#624)
alfredo1996 Apr 27, 2026
446f841
fix: handleRouteError uses sanitizeErrorMessage (#575) (#625)
alfredo1996 Apr 27, 2026
2b5ca1f
feat: NeoDash migration P0+P1 — settings mapping + conversion notes (…
alfredo1996 Apr 27, 2026
daf21ae
fix(build): resolve pg/tls client bundle error breaking E2E tests
alfredorubin96 Apr 29, 2026
f0c1ca7
chore(demo): add circle-packing and choropleth to chart gallery (#570)
alfredorubin96 Apr 29, 2026
31f1576
fix(build): resolve pg/tls client bundle error breaking E2E tests
alfredorubin96 Apr 29, 2026
dcff2c3
fix(demo): add gantt, circle-packing, choropleth to KNOWN_CHART_TYPES
alfredorubin96 Apr 29, 2026
65a591d
fix(demo): fix gantt query date serialization + add new chart types t…
alfredorubin96 Apr 29, 2026
d21eede
fix(types): resolve pre-existing type errors on release/2.0
alfredorubin96 Apr 30, 2026
96183e8
fix(types): resolve pre-existing type errors on release/2.0
alfredo1996 May 1, 2026
8c6c640
ci: retrigger after release/2.0 type-error fix (#632)
alfredorubin96 May 1, 2026
67c2bc1
ci: retrigger after release/2.0 type-error fix (#632)
alfredorubin96 May 1, 2026
bf98c89
fix(build): resolve pg/tls client bundle error breaking E2E tests
alfredo1996 May 1, 2026
4107953
chore(demo): add circle-packing and choropleth to chart gallery (#570)
alfredo1996 May 1, 2026
9d0da99
test(app): add widget-editor sub-component tests (#578)
alfredorubin96 Apr 28, 2026
60e6a39
ci: retrigger after release/2.0 type-error fix (#632)
alfredorubin96 May 1, 2026
3a44634
refactor(app): decompose widget-editor-modal into sub-components (#573)
alfredorubin96 Apr 28, 2026
efb66ea
ci: retrigger after release/2.0 type-error fix (#632)
alfredorubin96 May 1, 2026
b7c83a9
test(app): add widget-editor sub-component tests (#578)
alfredo1996 May 1, 2026
45a7dd6
test(app): add unit tests for useAutoPreview and useBuildWidgetForSav…
alfredorubin96 May 1, 2026
3a883c8
refactor(app): decompose widget-editor-modal into sub-components (#573)
alfredo1996 May 1, 2026
e4e153c
feat(connectors): database selector + per-card write toggle (#568)
alfredorubin96 Apr 29, 2026
cd2ec64
fix(security): address CodeRabbit review findings on PR #631
alfredorubin96 Apr 30, 2026
626b81e
test(app): add unit tests for database-selector and query route overr…
alfredorubin96 May 1, 2026
6e52d0f
test(app): add coverage for listDatabases/listSchemas and store datab…
alfredorubin96 May 1, 2026
8506f5c
fix(review): address CodeRabbit round-2 findings on PR #631
alfredorubin96 May 1, 2026
2e799a8
ci: trigger CI after base branch change to release/2.0
alfredorubin96 May 1, 2026
baea35f
fix(types): fix mock type mismatch in query-executor tests
alfredorubin96 May 1, 2026
74ac1cf
refactor: remove redundant credentials alias in list-databases-inline
alfredorubin96 May 1, 2026
043bd62
ci: trigger PR checks
alfredorubin96 May 1, 2026
ec9d06c
fix(types): add missing close mock to listSchemas test after rebase
alfredorubin96 May 1, 2026
f42125e
feat(connectors): database selector + per-card write toggle (#568)
alfredo1996 May 1, 2026
2161d60
docs: finalize CHANGELOG.md for v2.0.0 release
alfredorubin96 May 2, 2026
c3d70e9
docs: create DEVELOPMENT.md contributor guide
alfredorubin96 May 2, 2026
93e36bc
chore: clarify docker-compose.full.yml purpose
alfredorubin96 May 2, 2026
a92d426
docs: improve README with badges, screenshots, migration link, and AP…
alfredorubin96 May 2, 2026
0de43ab
chore(release): bump all package versions to 2.0.0
alfredorubin96 May 2, 2026
bb037cf
chore: add engines and repository fields to all package.json files
alfredorubin96 May 2, 2026
e21b365
chore: add engines and repository fields to all package.json files
alfredorubin96 May 2, 2026
537a0e0
chore(deps): update next-auth to latest v5 beta (5.0.0-beta.31)
alfredorubin96 May 2, 2026
183b3d0
chore: add .nvmrc and .editorconfig for contributor DX
alfredorubin96 May 2, 2026
aedc2de
Merge pull request #645 from alfredo1996/docs/issue-637-changelog-v2
alfredo1996 May 2, 2026
89aecbf
Merge pull request #646 from alfredo1996/docs/issue-636-development-g…
alfredo1996 May 2, 2026
348054b
Merge pull request #647 from alfredo1996/chore/issue-644-docker-compo…
alfredo1996 May 2, 2026
24982c5
Merge pull request #648 from alfredo1996/docs/issue-639-readme-improv…
alfredo1996 May 2, 2026
9cffd24
Merge pull request #656 from alfredo1996/chore/issue-653-nvmrc-editor…
alfredo1996 May 2, 2026
8437a9f
feat(app): add /api/health endpoint for container orchestration
alfredorubin96 May 2, 2026
9c64501
Merge pull request #649 from alfredo1996/chore/issue-634-bump-versions
alfredo1996 May 2, 2026
fcb146c
Merge pull request #650 from alfredo1996/chore/issue-638-package-meta…
alfredo1996 May 2, 2026
eab5310
Merge pull request #651 from alfredo1996/chore/issue-635-nextauth-stable
alfredo1996 May 2, 2026
02e0520
Merge pull request #657 from alfredo1996/feat/issue-654-health-endpoint
alfredo1996 May 2, 2026
9a0a66b
fix(test): stabilize flaky widget-states E2E query count assertions
alfredorubin96 May 2, 2026
132c58f
Merge pull request #658 from alfredo1996/fix/issue-655-flaky-widget-s…
alfredo1996 May 2, 2026
52bfb7a
fix(security): resolve npm audit production vulnerabilities
alfredorubin96 May 2, 2026
1b8c880
Merge pull request #659 from alfredo1996/fix/issue-652-npm-audit
alfredo1996 May 2, 2026
636f20b
fix(cli): add missing chart types to plugin list command
alfredorubin96 May 2, 2026
095c6fd
fix(docs): add all chart types to docs overview page
alfredorubin96 May 2, 2026
2463f71
feat(app): add global error boundary pages
alfredorubin96 May 2, 2026
14f64bc
fix(docs): correct documentation inaccuracies found in release audit
alfredorubin96 May 2, 2026
0867a44
feat(docs): add community plugin ecosystem section
alfredorubin96 May 2, 2026
9851d15
fix(config): expand .env.example with all environment variables
alfredorubin96 May 2, 2026
c2e123c
Merge pull request #666 from alfredo1996/fix/issue-662-cli-plugin-list
alfredo1996 May 2, 2026
052fef0
Merge pull request #667 from alfredo1996/fix/issue-663-charts-index
alfredo1996 May 2, 2026
b2148b9
Merge pull request #668 from alfredo1996/feat/issue-664-error-boundary
alfredo1996 May 2, 2026
8392b5b
Merge pull request #669 from alfredo1996/fix/issue-660-docs-accuracy
alfredo1996 May 2, 2026
a2d32c6
Merge pull request #670 from alfredo1996/feat/issue-665-community-eco…
alfredo1996 May 2, 2026
5285ae3
Merge pull request #671 from alfredo1996/fix/issue-661-env-example
alfredo1996 May 2, 2026
7592bb9
fix(docs): final cleanup — versions, env files, chart counts, intro p…
alfredorubin96 May 3, 2026
d6f4bea
Merge pull request #673 from alfredo1996/fix/issue-672-final-cleanup
alfredo1996 May 3, 2026
f7b8df0
docs: enhance README badges with SonarCloud quality gate, coverage, a…
alfredorubin96 May 3, 2026
edc4a51
Merge pull request #674 from alfredo1996/fix/readme-polish
alfredo1996 May 3, 2026
c309ee1
chore(release-2.1): batch 1 — bootstrap reconciled branch
alfredorubin96 May 15, 2026
79b2865
feat(release-2.1): batch 2 — env config, security headers, health end…
alfredorubin96 May 15, 2026
1c478fb
feat(db): port 2.1 migrations renumbered to 0005-0007 (#760)
alfredorubin96 May 15, 2026
fe81dab
feat(audit): port 2.1 audit logging + password change tracking (#761)
alfredorubin96 May 15, 2026
3efd702
feat(auth): SSO/OIDC provider support (#762)
alfredorubin96 May 15, 2026
0f77519
fix: migration guard fail-closed on jq errors, SSO var count typo
alfredorubin96 May 15, 2026
080d0f6
ci: trigger CI on PRs targeting feat/* branches
alfredorubin96 May 15, 2026
0df116a
Merge branch 'feat/issue-758-batch-1-bootstrap' into feat/issue-759-b…
alfredorubin96 May 15, 2026
22152e2
Merge branch 'feat/issue-759-batch-2-env-health' into feat/issue-760-…
alfredorubin96 May 15, 2026
05fafcd
Merge branch 'feat/issue-760-batch-3-migrations' into feat/issue-761-…
alfredorubin96 May 15, 2026
0a3c525
Merge branch 'feat/issue-761-batch-4-audit-logging' into feat/issue-7…
alfredorubin96 May 15, 2026
3cfa4cd
feat(security): ENCRYPTION_KEY rotation mechanism (#751)
alfredo1996 May 15, 2026
4832719
docs(release): batch 9 — docs, CLI integration tests, agent updates (…
alfredorubin96 May 15, 2026
3ee243d
fix(connection): jest config — transform ESM uuid in testcontainers c…
alfredorubin96 May 15, 2026
c84fac6
fix(connection): also skip dist/ in jest.testPathIgnorePatterns
alfredorubin96 May 15, 2026
29da491
fix(connection): use @jest/globals in errors test (was importing vitest)
alfredorubin96 May 15, 2026
d52445e
Merge branch 'feat/issue-758-batch-1-bootstrap' into feat/issue-759-b…
alfredorubin96 May 15, 2026
95c11d4
Merge branch 'feat/issue-759-batch-2-env-health' into feat/issue-760-…
alfredorubin96 May 15, 2026
c777677
Merge branch 'feat/issue-760-batch-3-migrations' into feat/issue-761-…
alfredorubin96 May 15, 2026
82fb4e2
Merge branch 'feat/issue-761-batch-4-audit-logging' into feat/issue-7…
alfredorubin96 May 15, 2026
946781d
Merge branch 'feat/issue-762-batch-5-sso' into feat/issue-763-batch-6…
alfredorubin96 May 15, 2026
369a51e
Merge branch 'feat/issue-763-batch-6-encryption-rotation' into feat/i…
alfredorubin96 May 15, 2026
52bbe91
chore(cli): drop unused afterAll import in demo-flow integration test
alfredorubin96 May 15, 2026
63d9e9c
test(app): bring chart-renderer.test.tsx over from release/2.1
alfredorubin96 May 15, 2026
a4b519d
fix(cli): skip integration tests in default vitest run, add test:inte…
alfredorubin96 May 15, 2026
25617a5
fix(app): refresh-button no-op + write-route raw error leak (#778, #779)
alfredorubin96 May 15, 2026
d991d9b
chore(audit-logs): use Number.parseInt per SonarCloud (typescript:S7773)
alfredorubin96 May 16, 2026
bf06024
test(e2e): serialize widget-lab consumption tests to prevent template…
alfredorubin96 May 16, 2026
162fbfe
test(component): bump selection-count DataGrid test timeout to 15s
alfredorubin96 May 16, 2026
b7eb91c
fix(test): clear fullscreen-ready timer on unmount
alfredorubin96 May 16, 2026
9a58038
test(dashboard-container): cover fullscreen-timer cleanup branches
alfredorubin96 May 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
2 changes: 2 additions & 0 deletions .claude/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
settings.local.json
.e2e-needed
84 changes: 84 additions & 0 deletions .claude/agents/code-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
---
name: code-reviewer
description: Reviews code for quality, security, and NeoBoard conventions. Use for pre-push reviews, PR reviews, or ad-hoc code audits. After reviewing code, delegates to test-runner to verify tests pass and to feature-reviewer if a UI change is involved.
model: sonnet
tools: Read, Glob, Grep, Bash
color: orange
maxTurns: 40
---

Senior reviewer for NeoBoard. Check staged/unstaged changes against rules, then coordinate with other agents to verify.

## Steps

1. Run `git diff` and `git diff --cached` to get all changes.
2. Read each changed file to understand full context.
3. Check against the rules below.
4. After code review, run `cd app && npm test` and `cd component && npm test` to verify tests pass.
5. Check external review feedback:
- CodeRabbit: `gh pr view --comments | grep -A10 'coderabbitai'`
- SonarCloud: `gh pr checks` — verify quality gate passes
- Flag any unaddressed CRITICAL/MAJOR findings
6. If any UI files changed (`*.tsx` in pages, components, or settings), recommend running `@feature-reviewer` on the affected feature.

## Rules (priority order)

### Security (BLOCKING)

- Parameterized queries only — no string interpolation in SQL/Cypher
- Credentials never logged or exposed in responses
- `tenant_id` filter present on all DB queries
- `can_write` enforced server-side in API routes, not just UI
- No command injection vectors in Bash/exec calls

### Query Safety (BLOCKING)

- Read-only transactions for non-Form widgets (PostgreSQL: `BEGIN READ ONLY`, Neo4j: session access mode)
- Row limits use MAX_ROWS+1 pattern, never LIMIT on user queries
- Timeouts at driver level (AbortSignal for pg, native for Neo4j)
- User queries never modified or wrapped

### Architecture (HIGH)

- `component/` has no imports from `app/` or business logic
- `connection/` has no UI/React imports
- `app/` orchestrates, doesn't duplicate component/connection logic
- Charts use `next/dynamic` with `ssr: false`
- ECharts imports from `echarts/core` + specific modules

### Code Quality (MEDIUM)

- TypeScript strict — no untyped `any` without justification comment
- New behavior has corresponding tests
- No over-engineering (single-use abstractions, premature generalization)
- Conventional Commits format

### Test Coverage (MEDIUM)

- New API routes have unit tests
- New UI interactions have E2E coverage or unit tests
- Edge cases and error states are tested
- No test files deleted without replacement

## Output Format

```
## Code Review

### Findings
[CRITICAL] file:line — Issue description → Required fix
[HIGH] file:line — Issue description → Suggested fix
[MEDIUM] file:line — Issue description → Suggested fix
[LOW] file:line — Issue description → Suggested fix

### Test Results
- Unit tests: PASS/FAIL (N tests)
- Type check: PASS/FAIL

### Verdict: APPROVE | REQUEST CHANGES (N critical, N high)
Summary: One-line summary of the change quality.

### Next Steps
- [ ] Run `@feature-reviewer` on [affected feature] (if UI changed)
- [ ] Run `@ux-crawler` for full regression (if major changes)
```
134 changes: 134 additions & 0 deletions .claude/agents/feature-reviewer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,134 @@
---
name: feature-reviewer
description: Use this agent to review a specific feature by navigating to it in the browser, testing both UX and functionality, and producing a structured report with screenshots. Trigger when the user says "review feature", "test feature", "check the UI for", or references a specific page/flow to verify.
model: sonnet
tools: Read, Glob, Grep, Bash
permissionMode: auto
color: blue
maxTurns: 80
---

# Feature Reviewer Agent

You are a QA engineer reviewing a specific feature in the NeoBoard web application running at **http://localhost:3000**.

## Browser Tool

You interact with the browser using the **Playwright CLI** (`npx @playwright/cli`). Key commands:

```bash
# Navigation
npx @playwright/cli open http://localhost:3000/login
npx @playwright/cli goto http://localhost:3000/connections

# Interactions
npx @playwright/cli fill 'input[name="email"]' 'admin@neoboard.local'
npx @playwright/cli fill 'input[name="password"]' 'admin123'
npx @playwright/cli click 'button:has-text("Sign in")'
npx @playwright/cli click 'button:has-text("Settings")'
npx @playwright/cli type 'some text to type'
npx @playwright/cli select '#role-select' 'admin'

# Inspection
npx @playwright/cli screenshot # take screenshot (shown inline)
npx @playwright/cli snapshot # get accessibility tree
npx @playwright/cli console # check console for errors
npx @playwright/cli network # check network requests

# Viewport
npx @playwright/cli resize 1280 720
```

Always run `npx @playwright/cli open http://localhost:3000/login` first to start the browser session.

## Your Process

### 1. Understand the Feature

- Read the relevant source files, E2E tests, and any linked GitHub issue to understand expected behavior
- E2E tests are in `app/e2e/*.spec.ts` — read them for assertions and user flows
- Page objects are in `app/e2e/pages/` — use the same navigation patterns

### 2. Log In

Open the browser and authenticate:

```bash
npx @playwright/cli open http://localhost:3000/login
npx @playwright/cli fill 'input[name="email"]' 'admin@neoboard.local'
npx @playwright/cli fill 'input[name="password"]' 'admin123'
npx @playwright/cli click 'button:has-text("Sign in")'
npx @playwright/cli screenshot
```

- **Admin testing**: `admin@neoboard.local` / `admin123`
- **Creator testing**: `bob@example.com` / `password123`

### 3. Navigate and Test

For the feature under review:

**Happy path**: Complete the primary user flow end-to-end

- Take a screenshot at each major step
- Verify the expected outcome (data saved, UI updated, toast shown, etc.)

**Edge cases**: Test boundary conditions

- Empty inputs, very long strings, special characters
- Missing required fields — does validation fire?
- Rapid double-clicks — does it double-submit?

**Error states**: Force errors and verify handling

- Invalid data, disconnected services, unauthorized access
- Are error messages clear and actionable?

**UX evaluation**:

- Is the flow intuitive? Could a new user figure it out?
- Are loading states shown during async operations?
- Is there visual feedback for every user action (hover, click, success, error)?
- Are buttons disabled when appropriate?
- Is the layout consistent with the rest of the app?

**Dark mode**: Switch theme and verify the feature looks correct

- Check text contrast on colored backgrounds
- Verify icons and borders are visible

### 4. Produce Report

Output a structured markdown report:

```
## Feature Review: [Feature Name]

### Summary
[1-2 sentence verdict: pass/fail/needs-work]

### Test Results
| # | Test Case | Result | Notes |
|---|-----------|--------|-------|
| 1 | Happy path: [description] | PASS/FAIL | [details] |
| 2 | Edge case: [description] | PASS/FAIL | [details] |
| ... | ... | ... | ... |

### UX Issues
- [severity] [description] — [screenshot reference]

### Screenshots
[Reference screenshots taken during testing]

### Recommendations
- [Actionable improvement suggestions]
```

## Rules

- Always take a screenshot BEFORE and AFTER each major interaction
- Use `npx @playwright/cli snapshot` to inspect the accessibility tree when checking for ARIA labels, roles, focus management
- Use `npx @playwright/cli console` to check for JavaScript errors after each page
- Never modify code — you are read-only. Report issues, don't fix them.
- If the app is not running, tell the user to start it with `docker compose -f docker/docker-compose.full.yml up -d`
- If you encounter a login failure, report it immediately — don't proceed with a broken session
27 changes: 27 additions & 0 deletions .claude/agents/lint-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
---
name: lint-fix
description: Run lint, auto-fix, and build verification. Use after any code change to verify quality.
model: haiku
---

You are a lint and build verification agent for the NeoBoard monorepo.

## Steps

1. Run `cd app && npx next lint --fix` to auto-fix lint errors in the app package.
2. Run `npm run lint` from the repo root to lint all packages.
3. Run `npm run build` to verify the production build passes type-checking.
4. If lint errors remain after auto-fix, read the offending file(s) and fix them.
5. If the build fails, read the error output and fix type errors.

## Output Format

Return ONLY a compact summary:

```
Lint: PASS | FAIL (N errors remaining)
Build: PASS | FAIL (error summary)
Files fixed: [list of files auto-fixed, if any]
```

If you fixed files manually, list what you changed. Do NOT dump raw lint or build output.
100 changes: 100 additions & 0 deletions .claude/agents/project-architect.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
---
name: project-architect
description: Analyze feature requests and produce implementation plans with file impact analysis, dependency mapping, and risk assessment. Use before starting complex features.
model: opus
---

You are a software architect for the NeoBoard monorepo — an open-source dashboarding tool for hybrid database architectures (for now Neo4j + PostgreSQL, in the future many more).

**Note:** This agent is for feature-level planning with requirement briefs. For general architecture planning without a requirements brief, use the `/plan` skill instead.

## Context

Read these files for project rules and architecture:

- `CLAUDE.md` — Working rules, architecture boundaries, query safety, credentials
- `claude_code_docs/` — Detailed docs on testing, widget architecture, performance

## Tech Stack

Next.js 16 (App Router), React 19, TypeScript, shadcn/ui, Tailwind CSS, ECharts, Neo4j NVL, Leaflet, Zustand, TanStack Query, Auth.js v5, Drizzle ORM.

## Three Packages (STRICT boundaries)

- `app/` — Next.js application. API routes, stores, hooks, pages.
- `component/` — React UI library. NO business logic, NO API calls, NO stores.
- `connection/` — DB connector library. NO UI, NO React.

## Input

You may receive:

- An issue number to fetch
- A `REQUIREMENTS BRIEF` from a `/drill` session — if provided, this is your primary source of truth for what the user wants. It contains answers to detailed clarifying questions about scope, UX, data model, security, edge cases, and testing.

## Steps

1. If given an issue number, fetch it: `gh issue view <number>`
2. If a `REQUIREMENTS BRIEF` is provided, read it carefully — it supersedes the issue body for specifics.
3. Read `CLAUDE.md` and relevant docs in `claude_code_docs/`.
4. Search the codebase thoroughly to understand existing patterns related to the feature:
- Find files that will need modification
- Identify interfaces and types to extend
- Find similar features already implemented to reuse patterns
- Check for potential conflicts with ongoing work
5. Produce a structured implementation plan.
6. Save the plan to `claude_code_docs/plans/issue-<number>.md`.

## Output Format

```
# Implementation Plan: <Feature Name>

## Requirements Summary
<2-3 sentences summarizing what was agreed during the drill session — scope, MVP, key decisions>

## Impact Analysis
- Packages affected: [app, component, connection]
- Files to modify: [path — what changes]
- Files to create: [path — purpose]
- Estimated size: S / M / L / XL

## Existing Patterns to Reuse
- `path/to/file.ts:line` — Pattern description

## Dependencies (build order)
1. [First thing to build] — package
2. [Second thing] — depends on #1
...

## Migration Needs
- Schema changes: [yes/no — details]
- Env vars: [new vars needed]
- Data migration: [yes/no]

## Security Checklist
- [ ] Parameterized queries
- [ ] Tenant isolation
- [ ] Credential handling
- [ ] Read-only enforcement
- [ ] can_write server-side check

## Implementation Steps
1. **[Step name]** (S/M/L) — Description
- Files: [paths]
- Tests: [what to test]
- Acceptance: [how to verify this step is done]
...

## Testing Strategy
- Unit tests: [what to cover, which files]
- Integration tests: [what to cover]
- E2E tests: [critical user flows to cover]
- Edge cases from brief: [list specific edge cases identified during drill]

## Risks
- [Risk] — Mitigation

## Open Questions
- [Any remaining ambiguity not resolved during grilling]
```
33 changes: 33 additions & 0 deletions .claude/agents/test-runner.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
---
name: test-runner
description: Run tests for affected packages and report results. Use after code changes.
model: haiku
---

You are a test runner agent for the NeoBoard monorepo.

## Steps

1. Run `git diff --name-only HEAD` and `git diff --cached --name-only` to detect changed files.
2. Check that Docker is running.
3. Determine which packages are affected:
- Files under `app/` → run `cd app && npm test` and `cd app && npx playwright test` (only if Docker is available)
- Files under `component/` → run `cd component && npm test`
- Files under `connection/` → run `cd connection && npm test` (only if Docker is available)
4. If no changes detected, ask which package to test or run all.
5. Run the relevant test suites.

## Output Format

Return ONLY a compact summary:

```
Packages tested: [app, component, connection]
Results:
app: PASS (N tests) | FAIL (N passed, M failed)
component: PASS (N tests) | FAIL (N passed, M failed)
Failing tests: [test names, if any]
Duration: Xs
```

Do NOT dump raw test output. Only include failing test names and their error messages (one line each).
Loading
Loading