diff --git a/.gitignore b/.gitignore index 3c5c9c2..2a5d880 100644 --- a/.gitignore +++ b/.gitignore @@ -46,9 +46,10 @@ Thumbs.db *.tmp *.bak -# Markdown: only README.md is versioned +# Markdown: only README.md and CHANGELOG.md are versioned *.md !README.md +!CHANGELOG.md # Frontend (React dashboard) frontend/node_modules/ diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..153b437 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,58 @@ +# Changelog + +All notable changes to Sentinel are documented here. + +## [0.2.0] - 2026-09-01 + +### Added + +#### Frontend Features +- **Toast notifications** — success/error/info toasts with 4s auto-dismiss (`Toast.tsx`) +- **Keyboard shortcuts** — `1`/`2` switch tabs, `Escape` dismisses panels (`useKeyboardShortcuts.ts`) +- **History panel** — last 10 analyses stored in localStorage (`HistoryPanel.tsx`, `useHistory.ts`) +- **Share button** — copy analysis URL to clipboard (`ShareButton.tsx`) +- **Export** — download results as JSON or CSV (`ExportButton.tsx`) +- **Caching** — 5-minute client-side cache for repeated analyses (`api.ts`) +- **Performance tracking** — shows "Analyzed in X.Xs" (`usePerformance.ts`) +- **Analytics** — localStorage-based event tracking, max 50 events (`useAnalytics.ts`) +- **Responsive mobile cards** — improved violation cards with file count, line-clamp, component overflow (`ViolationsTab.tsx`) +- **Error boundary** — React class component with retry (`ErrorBoundary.tsx`) +- **Meta tags** — Open Graph + Twitter Card for social sharing (`index.html`) + +#### Backend Improvements +- **Concurrency limiter** — `asyncio.Semaphore(3)` prevents resource exhaustion, returns 429 on limit +- **Input validation** — Pydantic validators for GitHub URL regex + branch sanitization +- **Git clone timeout** — 60s timeout on `git clone --depth=1` +- **FQN resolution** — Java and C# parsers return full FQN (`com.example.model.User` instead of `User`) + +#### Infrastructure +- **CI pipeline** — GitHub Actions: lint (ruff), test matrix (Python 3.12 + 3.13, Ubuntu + Windows), frontend build +- **Pre-deploy script** — `scripts/deploy_check.py` validates lint, format, tests, build, security +- **Code splitting** — Manual Vite chunks: vendor (~182KB), motion (~133KB), index (~42KB) +- **Test isolation** — `afterEach(cleanup)` in test-setup.ts, `clearCache()` in api tests + +### Fixed +- **Desktop expand bug** — nested `