-
Notifications
You must be signed in to change notification settings - Fork 1
Comparing changes
Open a pull request
base repository: Aureliolo/synthorg
base: v0.5.3
head repository: Aureliolo/synthorg
compare: v0.5.4
- 7 commits
- 138 files changed
- 3 contributors
Commits on Mar 31, 2026
-
feat: embed MkDocs build output in React web dashboard at /docs (#948)
## Summary - Add nginx location block to serve MkDocs static HTML at `/docs/` with docs-scoped CSP (permits `blob:` for Material search workers) - Add docs-builder stage to web Dockerfile (Python 3.14.3-slim + uv 0.10.9 + Zensical), with pre-compression matching the React builder pattern - Customize MkDocs Material theme to match dashboard dark design system via `docs/overrides/extra.css` - Add "Docs" nav item in sidebar (BookOpen icon, between Providers and Settings) and command palette entry - Add `external` prop to `SidebarNavItem` for plain `<a href>` rendering (bypasses React Router) - Update design spec, CLAUDE.md, and web/CLAUDE.md to reflect the new docs embedding architecture ## Test plan - [ ] `npm --prefix web run lint` -- zero warnings - [ ] `npm --prefix web run type-check` -- zero errors - [ ] `npm --prefix web run test` -- 2282 tests pass (4 new for `external` prop) - [ ] `docker compose -f docker/compose.yml build web` -- docs-builder stage completes - [ ] `curl http://localhost:3000/docs/` -- returns MkDocs HTML with dark theme - [ ] `curl http://localhost:3000/docs/nonexistent` -- returns 404 (not React SPA) - [ ] Sidebar shows "Docs" item; clicking performs full page navigation to `/docs/` - [ ] Cmd+K palette shows "Documentation" command ## Review coverage Pre-reviewed by 6 agents (docs-consistency, frontend-reviewer, design-token-audit, infra-reviewer, security-reviewer, issue-resolution-verifier). 11 findings addressed, 0 skipped. Closes #295 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for f229fc2 - Browse repository at this point
Copy the full SHA f229fc2View commit details -
docs: write user guides and tutorials (#949)
## Summary - Add 9 comprehensive user-facing guides under `docs/guides/` (2,817 lines total) covering the full user journey from quickstart to production deployment - Add guides landing page with MkDocs Material grid cards - Update `mkdocs.yml` nav with new Guides section (10 entries) - Add cross-references from `docs/index.md`, `docs/user_guide.md`, and `docs/getting_started.md` ### Guides written | Guide | Description | |-------|-------------| | Quickstart Tutorial | 5-minute first synthetic org with Mermaid diagrams | | Company Configuration | Complete YAML config reference for all RootConfig fields | | Agent Roles & Hierarchy | Seniority, personality presets, departments, reporting lines | | Budget & Cost Control | Alerts, auto-downgrade, cost tracking, scenario walkthrough | | Security & Trust Policies | 4 trust strategies (tabbed), autonomy levels, custom policies | | Tool Integration (MCP) | stdio/HTTP transports, tool filtering, caching | | Deployment (Docker) | CIS hardening, env vars, image verification, troubleshooting | | Memory Configuration | Retrieval pipeline tuning, org memory, dual-mode archival | | Contributing | Workflow, commits, testing, PR process, CLA | ## Test plan - [x] `uv run zensical build` exits 0 (pre-existing mkdocstrings errors unrelated to guides) - [x] `mkdocs.yml` nav validates correctly (10 guide entries in Guides section) - [x] All 10 guide files exist under `docs/guides/` - [x] Pre-commit hooks pass (trailing-whitespace, end-of-file, check-yaml, no-em-dashes, gitleaks) - [ ] Visual check: `uv run zensical serve` -- verify Guides tab renders, grid cards link correctly, Mermaid diagrams display, tabbed content works Closes #293 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 1367225 - Browse repository at this point
Copy the full SHA 1367225View commit details -
feat: support per-agent memory retention overrides (#209) (#951)
## Summary - Add `AgentRetentionRule` model and `MemoryConfig.retention_overrides` field for per-agent, per-category retention overrides - Extend `RetentionEnforcer` with `_resolve_categories()` implementing a 5-level resolution chain: agent per-category > company per-category > agent global default > company global default > keep forever - Pass through agent override params in `MemoryConsolidationService.cleanup_retention()` and `run_maintenance()` - Add `RETENTION_AGENT_OVERRIDE_APPLIED` structured log event - Update design spec and `RetentionConfig` docstring to document override mechanism ## Test plan - [ ] 30 new unit tests across 3 test files covering: - `AgentRetentionRule` model validation (frozen, ge=1, invalid values) - `MemoryConfig.retention_overrides` (defaults, duplicates, NONE type guard, coexistence with `retention_days`) - `_resolve_categories` resolution chain (all 5 priority levels individually + combined) - `cleanup_expired` with agent overrides (cutoff correctness, category expansion, log event) - Service pass-through (cleanup_retention, run_maintenance forwarding) - `AgentRetentionRule`/`RetentionRule` field parity test - [ ] Full test suite: 11358 passed, ruff clean, mypy clean - [ ] Pre-reviewed by 6 agents, 8 findings addressed (including critical resolution priority bug fix) Closes #209 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 020c610 - Browse repository at this point
Copy the full SHA 020c610View commit details -
feat: personality preset discovery API and user-defined preset CRUD (#…
…952) ## Summary - Add REST endpoints for personality preset discovery and CRUD under `/api/v1/personalities/` - Discovery (Issue #755): `GET /presets` (paginated list), `GET /presets/{name}` (full detail), `GET /schema` (PersonalityConfig JSON schema) -- all with `source: "builtin" | "custom"` tagging - CRUD (Issue #756): `POST /presets` (create with name collision prevention), `PUT /presets/{name}` (update), `DELETE /presets/{name}` (builtins protected) -- persisted via SQLite - Full layered architecture: `PersonalityPresetRepository` protocol + SQLite implementation, `PersonalityPresetService` merging builtin + custom sources, DTOs, controller with guards ## Test plan - [ ] 63 unit tests pass: repository CRUD + QueryError propagation, service layer (list/get/create/update/delete + error paths), property-based round-trip + idempotency, controller (all 6 endpoints + auth + validation) - [ ] `uv run ruff check src/ tests/` -- clean - [ ] `uv run mypy src/ tests/` -- clean (1269 files, no issues) - [ ] Full unit suite: 11,212 passed (pre-push hook verified) - [ ] Pre-reviewed by 4 agents (code-reviewer, persistence-reviewer, test-analyzer, conventions-checker), 14 findings addressed Closes #755 Closes #756 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 497848a - Browse repository at this point
Copy the full SHA 497848aView commit details -
feat: support multi-provider model resolution with budget-based selec…
…tion (#953) ## Summary - Change `ModelResolver` index from `dict[str, ResolvedModel]` to `dict[str, tuple[ResolvedModel, ...]]` so multiple providers can register the same model ID/alias without collision errors - Add `ModelCandidateSelector` protocol with `QuotaAwareSelector` (default, prefers providers with available quota then cheapest) and `CheapestSelector` implementations - Add `QuotaTracker.peek_quota_available()` synchronous method for lockless quota state snapshots used by the selector - Wire selector through `ModelRouter` and `ProviderManagementService._build_router()` - Harden error handling: empty-candidate guards, selector exception wrapping in `resolve()`/`resolve_safe()`, constructor validation, deterministic tie-breaking ## Test plan - [ ] `uv run python -m pytest tests/unit/providers/routing/ -n auto -v` -- all routing tests pass (selector, multi-provider resolver, quota-aware integration, strategies, router) - [ ] `uv run python -m pytest tests/unit/budget/test_quota_tracker.py -n auto -v` -- peek_quota_available tests pass (fresh, exhausted, multi-window, rotation, multiple providers) - [ ] `uv run python -m pytest tests/unit/budget/ -n auto` -- all budget tests pass (enforcer, optimizer use updated resolver index type) - [ ] `uv run ruff check src/ tests/` -- lint clean - [ ] `uv run mypy src/ tests/` -- type-check clean - [ ] Verify: two providers with same model ID no longer raises `ModelResolutionError` - [ ] Verify: `resolve()` returns cheapest provider by default (no quota data) - [ ] Verify: with quota snapshot, `resolve()` prefers provider with available quota ## Review coverage Pre-reviewed by 7 agents (code-reviewer, type-design-analyzer, silent-failure-hunter, test-analyzer, conventions-enforcer, issue-verifier, docs-consistency). 10 findings addressed in second commit. Closes #887 --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 146b782 - Browse repository at this point
Copy the full SHA 146b782View commit details
Commits on Apr 1, 2026
-
feat: artifact and project management UI in web dashboard (#954)
## Summary - Add full browse/view/manage UI for artifacts and projects in the web dashboard - Backend: 2 new WS channels (artifacts, projects), 5 event types, best-effort publish on create/delete/upload mutations - Frontend: typed API endpoints, Zustand stores with polling + WebSocket bindings, 4 data hooks, route constants, sidebar navigation - 3 new shared UI components: MetadataGrid (detail page metadata), ProjectStatusBadge (semantic status colors), ContentTypeBadge (MIME type badge) -- all with Storybook stories - Artifacts: list page with search/type/agent/task filters, detail page with metadata grid, inline content preview (text via CodeMirror, images via blob URL), download, and delete with confirmation - Projects: list page with search/status filter and create button, create drawer (6 fields including TagInput for team), detail page with header, team section (Avatar grid with lead badge), and linked task list - Tests: 2 store tests, 4 page tests, 2 MSW handler files, test factories - Documentation: updated page-structure.md, brand-and-ux.md, web/CLAUDE.md with new pages, components, routes, WS channels ## Test plan - [x] `uv run ruff check src/ tests/` -- all passed - [x] `uv run mypy src/ tests/` -- all passed - [x] `npm --prefix web run type-check` -- all passed - [x] `npm --prefix web run lint` -- zero warnings - [x] `npm --prefix web run test` -- 194 files, 2326 tests passed - [x] `npm --prefix web run build` -- production build succeeds - [ ] Visual verification at http://localhost:3000: list pages load with skeletons, filters work, detail views render, create form submits, download triggers, delete confirms Pre-reviewed by 8 agents (code-reviewer, frontend-reviewer, api-contract-drift, silent-failure-hunter, issue-resolution-verifier, design-token-audit, test-quality-reviewer, docs-consistency), 17 findings addressed. Closes #946 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Configuration menu - View commit details
-
Copy full SHA for 00a0430 - Browse repository at this point
Copy the full SHA 00a0430View commit details -
chore(main): release 0.5.4 (#950)
🤖 I have created a release *beep* *boop* --- ## [0.5.4](v0.5.3...v0.5.4) (2026-04-01) ### Features * artifact and project management UI in web dashboard ([#954](#954)) ([00a0430](00a0430)) * embed MkDocs build output in React web dashboard at /docs ([#948](#948)) ([f229fc2](f229fc2)) * personality preset discovery API and user-defined preset CRUD ([#952](#952)) ([497848a](497848a)) * support multi-provider model resolution with budget-based selection ([#953](#953)) ([146b782](146b782)) * support per-agent memory retention overrides ([#209](#209)) ([#951](#951)) ([020c610](020c610)) ### Documentation * write user guides and tutorials ([#949](#949)) ([1367225](1367225)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Configuration menu - View commit details
-
Copy full SHA for a755ec3 - Browse repository at this point
Copy the full SHA a755ec3View commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.5.3...v0.5.4