Commit Graph

8 Commits

Author SHA1 Message Date
Davi Rezende
d4179af665 feat(frontend/security): add npm audit to CI and document env guidelines (#41)
* chore(ci): add npm audit job for frontend deps in security workflow

* docs(frontend/security): document VITE env and JWT storage in CONTRIBUTING

* fix(frontend): resolve high-severity npm audit (minimatch, rollup)

- npm audit fix for ReDoS in minimatch and path traversal in rollup
- Unblocks Security / NPM Audit (frontend) CI check per review

Made-with: Cursor

---------

Co-authored-by: Bruno César <bruno@sekai.cx>
2026-03-03 21:27:54 -03:00
Davi Rezende
52f71b19eb chore(pr-review): squash merge #40
Merged by strict manual review cycle 20260303T215220Z.
2026-03-03 19:02:44 -03:00
Bruno César
add44821e8 sync: upstream convergence 2026-03-02
Co-authored-by: bruno cesar <brunoclz@brunos-MacBook-Pro.local>
2026-03-02 03:51:26 -03:00
c3c4d4
e2c564dceb Harden auth, sharing, search, and ETL security controls (#24)
* Harden auth, sharing, search, and ETL security controls

* Address PR feedback on client headers, store deps, and test coverage

* test(frontend): fix GraphExplorer store mock selector support

* fix(api): escape lucene query in search count

---------

Co-authored-by: bruno cesar <brunoclz@brunos-MacBook-Pro.local>
2026-03-01 21:32:19 -03:00
bruno cesar
6c088a1f2e refactor: rename icarus namespace to bracc and clean public identity 2026-03-01 13:52:40 -03:00
bruno cesar
f182fb7300 Phase 2 UI overhaul: Entity Analysis dossier, graph polish, exposure optimization
- Entity Analysis page with 4-tab layout (Graph, Connections, Timeline, Export)
- Exposure index with heuristic percentile functions (0.2s vs 21s peer sampling)
- Graph canvas: ResizeObserver sizing, d3 force tuning, relationship-colored edges,
  directional arrows, node glow effects, grid background, auto-fit on load
- Dark HUD tooltip with graph2ScreenCoords positioning fix
- New components: ScoreRing, InsightsPanel, ConnectionsList, TimelineView,
  EntityHeader, AnalysisNav, GraphToolbar, ZoomControls, GraphLegend, GraphMinimap,
  ContextMenu, NodeTooltip, CommandPalette, Button, Skeleton, StatusBar, Toast
- Landing page, Register page, Dashboard page, PublicShell
- Zustand stores: graphExplorer, toast
- Custom node/edge canvas rendering with LOD, icons, connection badges
- IBM Plex Mono/Sans self-hosted fonts
- Design tokens: node colors, relationship colors, z-index scale
- 40+ i18n keys (PT-BR + EN), keyboard shortcuts hook, command palette
- All 145 API tests + 127 frontend tests passing

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-23 05:22:42 -03:00
bruno cesar
b468577f2b Phase 1: Frontend — design system, common components, search page
- Design tokens: entity type colors, spacing, typography as TS constants
- MoneyLabel: R$ formatting (Brazilian Real with locale)
- SourceBadge: data source colored badges
- ConfidenceBadge: solid/dashed visual for match confidence
- Disclaimer: neutral data disclaimer via i18n
- SearchBar: input with type filter dropdown
- SearchResults: result list with entity colors and source badges
- API client: typed fetch wrapper with search/entity/graph endpoints
- i18n: expanded PT-BR and EN translations
- 12 vitest tests passing (lint + type-check + vitest clean)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 03:21:30 -03:00
bruno cesar
127a3e6754 Phase 0: Foundation — project skeleton with all three packages
- git init, AGPL-3.0 license, .gitignore, .env.example, Makefile
- CLAUDE.md with neutrality rules, build commands, code style
- Custom agents: security-reviewer, code-reviewer, test-writer
- API: FastAPI skeleton with health check, meta endpoints, Neo4j driver
- ETL: Pipeline base class, CLI runner skeleton, splink + basedosdados deps
- Frontend: Vite + React 19 + React Router 7 + i18n (PT-BR/EN) + Zustand
- Infra: docker-compose.yml (Neo4j + API + Frontend), schema init.cypher
- All feedback loops pass: ruff, mypy, pytest, eslint, tsc, vitest

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-22 03:16:21 -03:00