Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
814 commits
Select commit Hold shift + click to select a range
0ddb575
fix: update E2E tests for new error/warning UX + show error in previe…
alfredorubin96 Apr 4, 2026
013502e
fix(cli): validate config values to prevent injection in db commands
alfredorubin96 Apr 4, 2026
ffd0f05
fix(widgets): use refs for all handlePreview deps to fix lab-edit sta…
alfredorubin96 Apr 4, 2026
4813def
Merge pull request #358 from alfredo1996/fix/v1.0-bug-fixes
alfredo1996 Apr 4, 2026
2efc514
Merge pull request #349 from alfredo1996/release/1.0-all-fixes
alfredo1996 Apr 4, 2026
6e99f0d
feat(cli): frictionless experience — local mode, config cmd, logs, be…
alfredorubin96 Apr 4, 2026
87d024a
Merge pull request #359 from alfredo1996/feat/cli-frictionless
alfredo1996 Apr 4, 2026
5cac247
Merge remote-tracking branch 'origin/release/1.0' into dev
alfredorubin96 Apr 4, 2026
04243f8
docs: v1.0 documentation overhaul — screenshots, CLI docs, user guides
alfredorubin96 Apr 4, 2026
811dd37
docs: migrate from Fumadocs to Starlight (Astro)
alfredorubin96 Apr 4, 2026
5937ec3
docs: add chart type pages, improve hero, fix broken links
alfredorubin96 Apr 4, 2026
82bae08
docs: fix critical issues — correct examples, broken links, CodeRabbit
alfredorubin96 Apr 5, 2026
16b0ce4
Merge pull request #360 from alfredo1996/docs/v1.0-launch
alfredo1996 Apr 5, 2026
c095399
feat: clicking user icon in sidebar opens profile settings (#351)
alfredorubin96 Apr 5, 2026
c8d1024
fix: bar chart blank render on initial widget placement (#332)
alfredorubin96 Apr 5, 2026
9b6b2c2
feat: responsive bar chart label rotation based on widget width (#337)
alfredorubin96 Apr 5, 2026
0da1967
feat: scrollable pie chart legend with better controls (#338)
alfredorubin96 Apr 5, 2026
d926245
feat: connect nulls and end labels for line chart (#146)
alfredorubin96 Apr 5, 2026
215de9f
fix: show ID and entity type in graph inspection panel (#352)
alfredorubin96 Apr 5, 2026
64ae7d0
feat: dual Y-axis support for line chart (#159)
alfredorubin96 Apr 5, 2026
6f228d1
feat: select dropdown field type for form widget (#151)
alfredorubin96 Apr 5, 2026
7d1e350
feat: onboarding guide on empty dashboards page (#333)
alfredorubin96 Apr 5, 2026
23375a3
feat: field validation for form widget (#150)
alfredorubin96 Apr 5, 2026
d976549
perf: memoize graph callbacks and consolidate state updates (#353)
alfredorubin96 Apr 5, 2026
767cadd
fix: add rawValue to static options for type compatibility
alfredorubin96 Apr 5, 2026
43675a8
test: increase chart options panel test timeout for slow CI
alfredorubin96 Apr 5, 2026
b3563d5
fix: rename profile button aria-label to avoid E2E selector collision
alfredorubin96 Apr 5, 2026
f383fdc
fix: rename onboarding step-3 button to avoid E2E collision
alfredorubin96 Apr 5, 2026
ee97ec1
fix: use 'Account menu' aria-label to avoid Profile selector collision
alfredorubin96 Apr 5, 2026
f86f557
fix: remove cursor-pointer class from profile button (E2E selector co…
alfredorubin96 Apr 5, 2026
63a0f47
test: increase chart options panel test timeout for slow CI
alfredorubin96 Apr 5, 2026
886d3a6
ci: re-trigger flaky graph chart E2E
alfredorubin96 Apr 5, 2026
2e04d77
ci: another re-trigger attempt
alfredorubin96 Apr 5, 2026
d224120
Merge pull request #361 from alfredo1996/fix/issue-351-user-icon-click
alfredo1996 Apr 5, 2026
0cd9148
Merge pull request #362 from alfredo1996/fix/issue-332-bar-chart-blank
alfredo1996 Apr 5, 2026
e44ae40
Merge pull request #364 from alfredo1996/feat/issue-338-pie-legend-sc…
alfredo1996 Apr 5, 2026
2c0038d
Merge pull request #363 from alfredo1996/feat/issue-337-bar-label-rot…
alfredo1996 Apr 5, 2026
2fe8331
Merge pull request #365 from alfredo1996/feat/issue-146-line-nulls-la…
alfredo1996 Apr 5, 2026
c3184ad
Merge pull request #366 from alfredo1996/fix/issue-352-graph-inspecti…
alfredo1996 Apr 5, 2026
f7a4d36
Merge pull request #367 from alfredo1996/feat/issue-159-line-dual-y-axis
alfredo1996 Apr 5, 2026
7870749
Merge pull request #368 from alfredo1996/feat/issue-151-form-select-v2
alfredo1996 Apr 5, 2026
3871e17
Merge pull request #369 from alfredo1996/feat/issue-333-onboarding-em…
alfredo1996 Apr 5, 2026
def8f22
Merge pull request #370 from alfredo1996/feat/issue-150-form-validati…
alfredo1996 Apr 5, 2026
b10b3a2
Merge pull request #371 from alfredo1996/perf/issue-353-graph-rendering
alfredo1996 Apr 5, 2026
8eafb49
feat: click-to-drill-down for sunburst and treemap (#147)
alfredorubin96 Apr 5, 2026
208f41d
feat: enable click action for gauge widgets (#152)
alfredorubin96 Apr 5, 2026
53f268e
feat: zoom controls and node count for graph chart (#149)
alfredorubin96 Apr 5, 2026
753f559
fix: scope graph-node-count locators with .first() to avoid strict mo…
alfredorubin96 Apr 5, 2026
3929bf9
Merge pull request #372 from alfredo1996/feat/issue-147-drill-down
alfredo1996 Apr 5, 2026
40d0a7e
Merge pull request #373 from alfredo1996/feat/issue-152-gauge-click-a…
alfredo1996 Apr 5, 2026
4ada3f5
Merge pull request #374 from alfredo1996/feat/issue-149-graph-controls
alfredo1996 Apr 5, 2026
4b11a38
fix: use createRequire for connection adapter to fix Turbopack runtim…
alfredorubin96 Apr 5, 2026
9061879
test: increase chart options panel test timeout for slow CI
alfredorubin96 Apr 5, 2026
dcfa073
Merge pull request #375 from alfredo1996/fix/turbopack-connection-ada…
alfredo1996 Apr 5, 2026
b1c68fa
fix: UX crawler findings — login a11y, error sanitization, error hand…
alfredorubin96 Apr 5, 2026
0ad420b
Merge remote-tracking branch 'origin/dev' into release/1.1
alfredorubin96 Apr 5, 2026
0e3246c
Merge pull request #376 from alfredo1996/fix/ux-crawler-bugs
alfredo1996 Apr 5, 2026
13e69c9
feat(app): chart plugin registry — contract + registry primitives (#220)
alfredorubin96 Apr 5, 2026
980f720
ci: re-trigger flaky data-grid test
alfredorubin96 Apr 5, 2026
68af552
feat(app): plugin-driven chart renderer + markdown plugin migration (…
alfredorubin96 Apr 5, 2026
e875a98
Merge pull request #377 from alfredo1996/feat/chart-plugin-registry
alfredo1996 Apr 5, 2026
5fcab85
ci: trigger workflow after base change
alfredorubin96 Apr 5, 2026
5297fdc
Merge pull request #378 from alfredo1996/feat/chart-plugin-renderer
alfredo1996 Apr 5, 2026
6c98ba1
feat(app): migrate bar/line/pie charts to plugin system (#220)
alfredorubin96 Apr 5, 2026
fe5e396
ci: trigger after base rebase
alfredorubin96 Apr 5, 2026
3f39514
Merge pull request #379 from alfredo1996/feat/chart-plugin-migrate-si…
alfredo1996 Apr 5, 2026
1d177d5
feat(app): migrate all 13 remaining charts to plugin system (#220)
alfredorubin96 Apr 5, 2026
1856c08
fix: switch from Turbopack to webpack for dev/E2E (#220)
alfredorubin96 Apr 5, 2026
6dc7486
chore(deps): bump actions/checkout from 4 to 6
dependabot[bot] Apr 6, 2026
4cda03c
chore(deps): bump actions/download-artifact from 4 to 8
dependabot[bot] Apr 6, 2026
292b745
chore(deps): bump SonarSource/sonarcloud-github-action from 3 to 5
dependabot[bot] Apr 6, 2026
d336fd7
chore(deps): bump docker/setup-buildx-action from 3 to 4
dependabot[bot] Apr 6, 2026
b1ee7ca
chore(deps): bump docker/build-push-action from 6 to 7
dependabot[bot] Apr 6, 2026
26d294b
chore(deps): bump the minor-and-patch group
dependabot[bot] Apr 6, 2026
f8440a7
chore(deps): bump the minor-and-patch group in /app with 5 updates
dependabot[bot] Apr 6, 2026
24c19ca
chore(deps): bump the minor-and-patch group
dependabot[bot] Apr 6, 2026
fd4d715
chore(deps-dev): bump @types/node from 24.10.11 to 25.5.2 in /component
dependabot[bot] Apr 6, 2026
1213893
ci: re-trigger flaky graph E2E
alfredorubin96 Apr 6, 2026
4f4a2ce
refactor: unify plugin callback — single onChartClick, shared PluginP…
alfredorubin96 Apr 6, 2026
dd1b771
Merge pull request #380 from alfredo1996/feat/chart-plugin-migrate-all
alfredo1996 Apr 6, 2026
e72c393
feat(connection): connector plugin registry + neo4j/postgres plugins …
alfredorubin96 Apr 6, 2026
f105617
Merge pull request #393 from alfredo1996/feat/connector-plugin-registry
alfredo1996 Apr 6, 2026
8d94297
Merge pull request #381 from alfredo1996/dependabot/github_actions/ac…
alfredo1996 Apr 6, 2026
5bdcb67
Merge pull request #382 from alfredo1996/dependabot/github_actions/ac…
alfredo1996 Apr 6, 2026
621508c
Merge pull request #383 from alfredo1996/dependabot/github_actions/So…
alfredo1996 Apr 6, 2026
d26eb02
Merge pull request #384 from alfredo1996/dependabot/github_actions/do…
alfredo1996 Apr 6, 2026
1ec971d
Merge pull request #385 from alfredo1996/dependabot/github_actions/do…
alfredo1996 Apr 6, 2026
bc80d43
Merge pull request #386 from alfredo1996/dependabot/npm_and_yarn/conn…
alfredo1996 Apr 6, 2026
3b9cfc3
Merge pull request #387 from alfredo1996/dependabot/npm_and_yarn/app/…
alfredo1996 Apr 6, 2026
d9a7b17
Merge pull request #388 from alfredo1996/dependabot/npm_and_yarn/comp…
alfredo1996 Apr 6, 2026
b7a9d11
Merge pull request #392 from alfredo1996/dependabot/npm_and_yarn/comp…
alfredo1996 Apr 6, 2026
7b810f1
docs: add chart plugin + connector plugin developer guides
alfredorubin96 Apr 6, 2026
2923b3d
Merge pull request #395 from alfredo1996/docs/plugin-guides
alfredo1996 Apr 6, 2026
15c22df
Merge pull request #394 from alfredo1996/release/1.1
alfredo1996 Apr 6, 2026
49799ac
fix: UX audit findings — 6 issues from release/1.1 audit
alfredorubin96 Apr 6, 2026
c80bc56
fix: update delete dialog E2E test for dynamic title
alfredorubin96 Apr 6, 2026
47c80e0
Merge pull request #396 from alfredo1996/fix/ux-audit-findings
alfredo1996 Apr 6, 2026
7a5688c
fix(e2e): fix flaky Widget Lab and graph chart tests
alfredorubin96 Apr 6, 2026
ab0f45a
fix(cli): setup scripts use docker mode, increase health timeout
alfredorubin96 Apr 6, 2026
836a70d
fix(cli): reliable setup — resolve DATABASE_URL, DBs-only compose, fa…
alfredorubin96 Apr 6, 2026
1fed29d
fix(cli): use execSync for dockerExec to preserve quoted Cypher queries
alfredorubin96 Apr 6, 2026
6c019b3
fix(cli): demo runs full Docker stack, setup runs DBs only
alfredorubin96 Apr 6, 2026
cfaee7a
fix(cli): seed with Docker-internal hostnames for full-stack mode
alfredorubin96 Apr 6, 2026
8de9ef6
fix(cli): harden DATABASE_URL parsing — strip quotes, URI-encode cred…
alfredorubin96 Apr 6, 2026
9c6a820
fix(security): resolve SonarCloud security hotspots for release 1.1
alfredorubin96 Apr 6, 2026
0983864
fix(deps): align storybook core version with addons (10.2.6 → 10.3.4)
alfredorubin96 Apr 6, 2026
1853e37
fix: regenerate component lockfile for storybook 10.3.4
alfredorubin96 Apr 6, 2026
7da44d9
Merge pull request #414 from alfredo1996/fix/combined-release-1.1-fixes
alfredo1996 Apr 6, 2026
ea534e2
refactor(plugins): extract chart transforms into standalone modules
alfredorubin96 Apr 6, 2026
607a618
feat(connection): align connector registry API with chart plugin regi…
alfredorubin96 Apr 7, 2026
6885f3d
Merge pull request #424 from alfredo1996/refactor/plugin-extract-tran…
alfredo1996 Apr 7, 2026
7626e3d
Merge pull request #425 from alfredo1996/feat/connector-registry-alig…
alfredo1996 Apr 7, 2026
82c55ad
refactor(plugins): replace chart-registry with plugin delegation shim
alfredorubin96 Apr 7, 2026
f15c69d
refactor(plugins): replace chart-registry with plugin delegation shim
alfredorubin96 Apr 7, 2026
0098a28
feat(plugins): add Zod typed settings schemas for all 17 chart plugins
alfredorubin96 Apr 7, 2026
96e8a85
Merge remote-tracking branch 'origin/feat/plugin-typed-settings' into…
alfredorubin96 Apr 7, 2026
244acd5
refactor(plugins): consolidate chart options into plugin definitions …
alfredorubin96 Apr 7, 2026
cbacaaa
refactor(app): delete legacy chart-registry, migrate to chart-helpers…
alfredorubin96 Apr 7, 2026
18d6790
fix(plugins): resolve TypeScript errors from plugin migration
alfredorubin96 Apr 7, 2026
ad54323
fix(plugins): cast getCompatibleChartTypes return to ChartType[]
alfredorubin96 Apr 7, 2026
4e64c24
fix(plugins): address CodeRabbit review findings
alfredorubin96 Apr 7, 2026
9236a8e
fix(plugins): restore Pie Chart label, ensure real plugins override s…
alfredorubin96 Apr 7, 2026
5beb22a
fix(plugins): fix parameter-select schema + Pie Chart test assertion
alfredorubin96 Apr 7, 2026
7594d40
Merge pull request #428 from alfredo1996/refactor/plugin-system-integ…
alfredo1996 Apr 7, 2026
ee1e2a5
refactor: architecture improvements — lib reorg, workspaces, ESM, pro…
alfredo1996 Apr 7, 2026
a2d1072
fix(component): stabilize flaky data-grid tests (#439)
alfredo1996 Apr 8, 2026
6a2ffa7
chore: apply safe npm audit fixes, reduce CVEs from 13 to 2 (#450)
alfredo1996 Apr 8, 2026
67ea131
docs: add ARCHITECTURE.md with package, data flow, and system diagram…
alfredo1996 Apr 8, 2026
75665ee
fix(security): add tenantId to users table, enforce tenant isolation …
alfredo1996 Apr 8, 2026
c35ef79
fix(app): click action multi-rule execution and styling rule priority…
alfredo1996 Apr 8, 2026
cb7f3c6
docs: enhance architecture page, add API key guide, link developer do…
alfredo1996 Apr 8, 2026
f1c393c
fix(app): parameter type coercion validation and atomic batch updates…
alfredo1996 Apr 8, 2026
2287556
fix(security): reduce login rate limit to 20/min, strengthen bootstra…
alfredo1996 Apr 8, 2026
5cc7f9b
fix(app): calculated column operator precedence and cache TTL isolati…
alfredo1996 Apr 8, 2026
2c4e63f
fix(connection): delete redundant factory, add Neo4j close(), fix exp…
alfredo1996 Apr 8, 2026
4dd88e0
fix(component): enable client-side filtering for searchable param-sel…
alfredo1996 Apr 9, 2026
abd28de
feat(component): implement map chart marker clustering (#467)
alfredo1996 Apr 9, 2026
5bff4bd
fix(component): improve pie and sunburst chart label readability (#468)
alfredo1996 Apr 9, 2026
ec05ca7
fix(component): remove duplicate nodeClick property in sunburst chart
alfredorubin96 Apr 9, 2026
54a8741
fix(app): restore --webpack flag for production build
alfredorubin96 Apr 9, 2026
8b123d9
fix(app): pass string type to createConnectionModule, keep numeric fo…
alfredorubin96 Apr 9, 2026
24abf85
fix(app): restore connection package to transpilePackages for E2E
alfredorubin96 Apr 9, 2026
5dc35e3
fix(app): relax rate limiter in test/CI environments for E2E
alfredorubin96 Apr 9, 2026
42f5cb2
chore: exclude plugin barrel files from SonarCloud coverage
alfredorubin96 Apr 9, 2026
63ef6a3
refactor(app): restructure plugins into directory modules (#470)
alfredo1996 Apr 9, 2026
bc497a7
fix: rename UI labels + improve gauge chart styling (#471)
alfredo1996 Apr 9, 2026
2e5b030
feat(app): add icons to chart type selector, default to table (#472)
alfredo1996 Apr 9, 2026
ba8de79
feat(app): default parameter bar hidden, add filter counter badge (#473)
alfredo1996 Apr 9, 2026
5b22a68
docs: external plugin guide with MongoDB example + CLAUDE.md update (…
alfredo1996 Apr 9, 2026
c819322
feat(app): add Save to Widget Lab action in dashboard view mode (#475)
alfredo1996 Apr 9, 2026
7a0d385
fix(app): auto-show parameter bar on first click action, fix E2E
alfredorubin96 Apr 9, 2026
5fb5f40
fix(e2e): update filter toggle test for auto-show parameter bar
alfredorubin96 Apr 9, 2026
b203c43
fix(app): fix parameter bar toggle state — use null-override pattern
alfredorubin96 Apr 9, 2026
0ff3419
test(component): bump select-all DataGrid test timeout to 15s
alfredorubin96 Apr 10, 2026
19d8b93
test(e2e): add dashboard sharing CRUD + permission matrix spec (#477)
alfredorubin96 Apr 10, 2026
c11f7ea
test(e2e): add write-permission enforcement spec (#478)
alfredorubin96 Apr 10, 2026
7cdc4a4
test(e2e): cover all parameter widget types (#479)
alfredorubin96 Apr 10, 2026
bda396c
test(e2e): verify query safety nets — timeout, row cap, error UX (#480)
alfredorubin96 Apr 10, 2026
c4479cf
chore(e2e): make AuthPage.login resilient to pre-hydration race
alfredorubin96 Apr 10, 2026
9dc97a7
chore(e2e): tighten Movie Analytics selectors + Theme button + Back-a…
alfredorubin96 Apr 10, 2026
3b6c75f
chore(e2e): add POST /api/dashboards boundary + pin local workers to 4
alfredorubin96 Apr 11, 2026
07af58c
Merge remote-tracking branch 'origin/feat/issue-477-sharing-e2e' into…
alfredorubin96 Apr 11, 2026
850be40
Merge remote-tracking branch 'origin/feat/issue-478-write-permissions…
alfredorubin96 Apr 11, 2026
5bcb4d9
Merge remote-tracking branch 'origin/feat/issue-479-parameter-types-e…
alfredorubin96 Apr 11, 2026
d8ca6c1
Merge remote-tracking branch 'origin/feat/issue-480-query-safety-e2e'…
alfredorubin96 Apr 11, 2026
7dc5b24
chore(e2e): remove duplicate robustLogin from 4 specs
alfredorubin96 Apr 11, 2026
6854772
chore(e2e): address CI failure + CodeRabbit findings on 3-PR chore stack
alfredorubin96 Apr 11, 2026
4b6a27b
fix(component): forward rest props on SidebarItem to fix nested <button>
alfredorubin96 Apr 11, 2026
5e98ef9
docs(e2e): fix stale APOC comment per CodeRabbit nit
alfredorubin96 Apr 11, 2026
4b6ecf9
Merge pull request #506 from alfredo1996/fix/sidebar-item-nested-button
alfredo1996 Apr 11, 2026
a26ce7b
Merge pull request #504 from alfredo1996/chore/e2e-all-fixes-consolid…
alfredo1996 Apr 11, 2026
687a256
fix(query): wire driver truncation signal + user-configurable maxRows…
alfredorubin96 Apr 11, 2026
9a1b7c3
test(e2e): cover delete-connection-in-use scenario (#481)
alfredorubin96 Apr 11, 2026
7bb9a3b
fix(test): address #507 CI failures — executor mocks + viewport + cov…
alfredorubin96 Apr 11, 2026
6bf1da8
Merge pull request #511 from alfredo1996/test/issue-481-delete-connec…
alfredo1996 Apr 11, 2026
dc50584
Merge pull request #507 from alfredo1996/fix/issue-499-row-cap-banner
alfredo1996 Apr 11, 2026
93fe34d
fix(form-widget): proactively gate form for users without write permi…
alfredo1996 Apr 11, 2026
8081cbc
fix(connections): in-use guard + usage breakdown dialog (#508 + #509)…
alfredo1996 Apr 12, 2026
afb780a
test(dashboard): E2E import validation and connection mapping (#483) …
alfredo1996 Apr 12, 2026
34e962f
test(auth): E2E session expiry redirect and callbackUrl round-trip (#…
alfredo1996 Apr 12, 2026
6229c6a
feat(widgets): enable Save to Widget Lab in dashboard view mode (#485…
alfredo1996 Apr 12, 2026
c939c8c
test(charts): E2E render + interaction coverage for Pie, Map, and Gra…
alfredo1996 Apr 12, 2026
012824d
test(dashboard): E2E manual refresh button and auto-refresh disable (…
alfredo1996 Apr 12, 2026
73df385
test(ui): E2E theme toggle persistence and color-scheme support (#488…
alfredo1996 Apr 12, 2026
5dcc21b
test(widgets): E2E empty result set and No data UX (#490) (#521)
alfredo1996 Apr 12, 2026
16f4e51
test(dashboard): E2E NeoDash legacy dashboard import (#494) (#522)
alfredo1996 Apr 12, 2026
d171d65
test(auth): E2E signup edge cases — weak password validation (#491) (…
alfredo1996 Apr 12, 2026
77ae2b3
test(performance): E2E 10k-row dataset render and sort (#493) (#525)
alfredo1996 Apr 12, 2026
9394385
test(widgets): E2E Widget Lab consumption — duplicate, filter, search…
alfredo1996 Apr 12, 2026
d7dd451
Merge remote-tracking branch 'origin/dev' into release/1.1
alfredorubin96 Apr 12, 2026
e20a2a0
chore: regenerate lockfile after dev merge
alfredorubin96 Apr 12, 2026
701ed40
fix(docker): set API_KEY_HMAC_SECRET in docker-compose.full.yml (#526…
alfredo1996 Apr 12, 2026
ccf628b
fix(a11y): default aria-describedby to undefined on DialogContent (#5…
alfredo1996 Apr 12, 2026
42aea36
fix(dashboard): show inline validation error for empty dashboard name…
alfredo1996 Apr 12, 2026
6d212cd
fix(dashboard): enable Filters button when dashboard has parameter wi…
alfredo1996 Apr 12, 2026
840364e
fix(ui): increase disabled toggle opacity so checked state stays visi…
alfredo1996 Apr 12, 2026
dbcf5bd
fix(a11y): ensure fullscreen widget dialog always has DialogTitle (#5…
alfredo1996 Apr 12, 2026
02ecbd4
Merge pull request #476 from alfredo1996/release/1.1
alfredo1996 Apr 13, 2026
5699d7b
chore(deps): bump docker/metadata-action from 5 to 6
dependabot[bot] Apr 13, 2026
6c6dc41
chore(deps): bump docker/login-action from 3 to 4
dependabot[bot] Apr 13, 2026
3f48f57
chore(deps): bump softprops/action-gh-release from 2 to 3
dependabot[bot] Apr 13, 2026
b8ed8d6
Merge pull request #538 from alfredo1996/dependabot/github_actions/do…
alfredo1996 Apr 17, 2026
1b8b6ba
Merge pull request #539 from alfredo1996/dependabot/github_actions/do…
alfredo1996 Apr 17, 2026
edcae6c
Merge pull request #540 from alfredo1996/dependabot/github_actions/so…
alfredo1996 Apr 17, 2026
462c680
fix(hardening): dashboard error boundary + expression tokenizer for n…
alfredo1996 Apr 20, 2026
7226577
fix(security): add tenantId to fast-path connection lookup in query r…
alfredo1996 Apr 20, 2026
23d476d
fix(e2e): resolve strict mode violation in widget-lab filter tests (#…
alfredo1996 May 6, 2026
eb9ad15
fix(security): add tenantId to admin password reset WHERE clause (#686)
alfredo1996 May 6, 2026
64f0b14
fix(security): enforce REGISTRATION_ENABLED in signup server action (…
alfredo1996 May 6, 2026
512a75f
fix(security): add HTTPS redirect middleware for production (#690)
alfredo1996 May 6, 2026
c933194
fix(security): add security response headers to next.config (#688)
alfredo1996 May 6, 2026
cecdb19
fix(security): remove wildcard CORS from OpenAPI endpoint (#689)
alfredo1996 May 6, 2026
15c1296
fix(security): JWT maxAge + session invalidation on password/role cha…
alfredo1996 May 6, 2026
34e64f2
feat(enterprise): SSO OIDC providers — schema, API, auth flow (#702)
alfredo1996 May 10, 2026
8afd5d0
chore(config): audit and improve Claude Code skills, agents, hooks, a…
alfredo1996 May 10, 2026
5d3cdee
feat(config): centralized env validation, health endpoint, CLI env co…
alfredo1996 May 10, 2026
97ba692
chore: move enterprise to private submodule, scrub from history
alfredorubin96 May 10, 2026
9c4e291
docs: update CLI env commands and configuration reference (#712)
alfredo1996 May 10, 2026
bc44ed1
fix(types): resolve Property 'code' does not exist on type 'Error'
alfredorubin96 May 12, 2026
bba40e7
chore(e2e): remove Keycloak and SSO tests from public repo (#709) (#723)
alfredo1996 May 12, 2026
c2e6bbc
fix(test): stabilize flaky copy-button timer test
alfredorubin96 May 13, 2026
83c9b03
feat(charts): export chart as SVG (#706)
alfredorubin96 May 11, 2026
b266411
fix(form): form widget UX, performance, and a11y improvements (#721)
alfredorubin96 May 12, 2026
d79f99a
feat(form): optional confirmation dialog before form submission
alfredorubin96 May 12, 2026
12249b6
fix(types): cast inert attribute for TypeScript compat
alfredorubin96 May 12, 2026
9f3e037
fix(types): use any cast for inert attribute (not in React type defs)
alfredorubin96 May 12, 2026
c9afacb
feat(charts): percentage stacked bar chart mode (#167)
alfredorubin96 May 12, 2026
1c3f18f
fix(types): type displayValue as number|string for ECharts compat
alfredorubin96 May 12, 2026
e84b1cf
feat(markdown): syntax highlighting for fenced code blocks (#166)
alfredorubin96 May 12, 2026
95ac404
feat(form): multi-step form wizard (#165)
alfredorubin96 May 13, 2026
94c0ba8
fix(test): stabilize login test timeout and add wizard coverage
alfredorubin96 May 13, 2026
82647f8
fix(form): address CodeRabbit review findings
alfredorubin96 May 13, 2026
bc2e648
fix(test): stabilize signup tests and add formatSummaryValue coverage
alfredorubin96 May 13, 2026
9ade9cc
chore(test): remove unnecessary formatSummaryValue test file
alfredorubin96 May 13, 2026
4d247eb
test: trim type-checking tests and consolidate date-range presets
alfredorubin96 May 13, 2026
d18e51e
test: fix test errors and remove hardcoded E2E waits
alfredorubin96 May 14, 2026
00022c3
fix(test): stabilize DateRangeParameter preset test timeout
alfredorubin96 May 14, 2026
51d0b41
fix(deps): update shiki imports to match installed version
alfredorubin96 May 14, 2026
61216b6
refactor(charts): reduce code duplication in percent-stacked bar
alfredorubin96 May 14, 2026
efa4a00
fix(test): stabilize signup test timeouts with delay: null
alfredorubin96 May 14, 2026
f353e7c
Merge pull request #720 from alfredo1996/feat/issue-706-svg-export
alfredo1996 May 14, 2026
836696e
Merge pull request #722 from alfredo1996/fix/issue-721-form-widget-im…
alfredo1996 May 14, 2026
f1c3dd2
Merge pull request #724 from alfredo1996/feat/issue-167-percent-stack…
alfredo1996 May 14, 2026
c575256
Merge pull request #725 from alfredo1996/feat/issue-166-markdown-synt…
alfredo1996 May 14, 2026
4b6f09a
Merge remote-tracking branch 'origin/dev' into feat/issue-165-form-wi…
alfredorubin96 May 14, 2026
aa10b11
Merge pull request #726 from alfredo1996/feat/issue-165-form-wizard
alfredo1996 May 14, 2026
1fade5d
fix(security): escape HTML in chart tooltips and sanitize Shiki output
alfredorubin96 May 14, 2026
4a5013f
fix(form): improve wizard error display and reset behavior
alfredorubin96 May 14, 2026
eaca140
refactor: deduplicate escapeHtml into single chart-utils export
alfredorubin96 May 14, 2026
a0b6185
fix(app): refresh button silently no-op'd due to queryKey mismatch (#…
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