Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
414a05c
feat: Add AI Dashboard and related functionality
borhanst Jul 17, 2026
7664d2e
fix: Correct typo in performance counter function name
borhanst Jul 20, 2026
fb6d09f
Merge branch 'main' into feat/ai-agent
borhanst Jul 21, 2026
95cc2f0
feat: add AI tools registry page and floating chat widget
borhanst Jul 21, 2026
068d081
add proper type hint
borhanst Jul 21, 2026
928c823
feat: Enhance AI chat functionality with conversation history and man…
borhanst Jul 22, 2026
4964cc2
feat: Add get_ticket tool and enhance AI chat widget with tool call f…
borhanst Jul 22, 2026
dd10b9d
feat: Improve user message layout and timestamp styling in AI chat in…
borhanst Jul 22, 2026
d6ff0ea
feat: Enhance AI agent context handling for tool calls based on page …
borhanst Jul 22, 2026
165dd23
Merge branch 'main' into feat/ai-agent
borhanst Jul 31, 2026
91c3eb0
Merge branch 'main' into feat/ai-agent
borhanst Jul 31, 2026
d1a7adc
feat: Integrate AI functionality into FastAPI Admin Kit
borhanst Jul 31, 2026
4c6abbc
fix: update PydanticAIAgent to store model instance and pass it to Ru…
borhanst Aug 3, 2026
0dc4693
feat: update AI agent configuration and enhance error handling
borhanst Aug 3, 2026
7da7161
feat: add dynamic prompt providers and enhance agent configuration
borhanst Aug 3, 2026
e7b738b
feat: Enhance AI agent functionality with model-bound agents and audi…
borhanst Aug 4, 2026
801cad7
feat: Add AIBackendName to configuration and update tests for backend…
borhanst Aug 4, 2026
aa380f2
feat: Implement AI backend registry and enhance agent creation process
borhanst Aug 4, 2026
4b484d0
feat: Add streaming support for AI chat and enhance conversation logging
borhanst Aug 4, 2026
913fcda
feat: Add AI agent setup guide, native SSE streaming support, and enh…
borhanst Aug 7, 2026
6b12226
feat: Remove debug print statements from PydanticAIAgent initialization
borhanst Aug 7, 2026
f1fab2a
feat: Enhance conversation logging with rollback support and improve …
borhanst Aug 7, 2026
5117783
feat: Add support for tuple-based search_fields and list_display in a…
borhanst Aug 7, 2026
65722be
feat: Update streaming adapter methods to return None and improve doc…
borhanst Aug 7, 2026
011e37d
feat: Add title parameter to conversation logging and improve code fo…
borhanst Aug 7, 2026
26250f2
feat: Add text color for selection in dark theme
borhanst Aug 7, 2026
7924746
feat: Add support for file attachments in AI chat
borhanst Aug 11, 2026
f811321
feat: Implement tool-call failure recovery and friendly fallback in A…
borhanst Aug 11, 2026
eede44c
add custom template dir feature
borhanst Aug 11, 2026
90f1c86
Refactor AI module for improved data access and serialization
borhanst Aug 12, 2026
085a498
feat: Enhance AI agent error handling and tool call logic
borhanst Aug 12, 2026
2a7d4e8
feat: Enhance delta handling in Pydantic AI backend and add tests for…
borhanst Aug 12, 2026
1a1dfe3
feat: Implement SMS notification system with Twilio and custom providers
borhanst Aug 12, 2026
97c515e
feat: Update cost handling in AI agent configuration and backend, nor…
borhanst Aug 12, 2026
733252d
feat: Improve SQLite handling with busy timeout and pre-commit for st…
borhanst Aug 12, 2026
0fd3bbf
feat: Add notification system with admin integration and UI components
borhanst Aug 12, 2026
19a2059
add example for custom template
borhanst Aug 12, 2026
044505e
Merge branch 'feat/notification-system' into feat/ai-agent
borhanst Aug 13, 2026
7649ffb
Merge remote-tracking branch 'origin/feat/custom-template-support' in…
borhanst Aug 13, 2026
141f26f
feat(ai): Enable AI features and manage AI tables dynamically
borhanst Aug 14, 2026
7796164
Refactor database session handling and improve query execution
borhanst Aug 14, 2026
fb85f74
feat(notifications): Implement ORM-agnostic notification system with …
borhanst Aug 14, 2026
2b8cd3e
feat(notifications): Implement ORM-agnostic notification system with …
borhanst Aug 17, 2026
2255c9b
feat(notifications): Enhance notification system with polling for unr…
borhanst Aug 17, 2026
05a2d93
feat(notifications): Integrate notification system with auto-configur…
borhanst Aug 17, 2026
975d87c
chore: Bump version to 0.4.0
borhanst Aug 17, 2026
ca8b59f
feat: Enhance AI file upload handling with extension validation and e…
borhanst Aug 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions .github/workflows/changelog.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Update Changelog

on:
release:
types: [published]
workflow_dispatch:

permissions:
contents: write

jobs:
changelog:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0

- uses: actions/setup-python@v5
with:
python-version: "3.12"

- name: Generate CHANGELOG.md from GitHub releases
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
GITHUB_REPOSITORY: ${{ github.repository }}
run: python scripts/generate_changelog.py --output CHANGELOG.md

- name: Commit and push changes
run: |
if git diff --quiet CHANGELOG.md; then
echo "No changelog changes to commit."
exit 0
fi
git config user.name "github-actions[bot]"
git config user.email "github-actions[bot]@users.noreply.github.com"
git add CHANGELOG.md
git commit -m "docs: sync CHANGELOG.md from GitHub releases"
git push
2 changes: 1 addition & 1 deletion .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ jobs:
python-version: ${{ matrix.python-version }}

- name: Install dependencies
run: pip install -e ".[dev]"
run: pip install -e ".[dev,ai]"

- name: Lint with ruff
run: |
Expand Down
140 changes: 102 additions & 38 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,47 +5,111 @@ All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [0.2.1] - 2026-07-20
## [Unreleased]

### Changed
- **AI is now gated behind `ai_enabled` (default `False`).** When AI is
disabled, the `admin_ai_*` tables are not created, and the AI models, nav
group, and routes are not registered in the admin UI or the JSON API.
Notifications, auth, roles, audit, and login-attempt models are unaffected.
- Internal tables (`admin_refresh_tokens`, `admin_user_permissions`,
`admin_user_totp`, `admin_ai_attachments`) are no longer exposed over the
JSON API (previously a latent security hole). They remain hidden from the
sidebar.

### Added
- `Admin.setup()` now logs a non-blocking preflight warning naming any missing
`admin_ai_*` tables (with the command to fix them) when `ai_enabled=True`
but the schema is absent (Alembic / `SKIP_CREATE_TABLES=true` mode).
- `fastapi_admin_kit.schemas.builtin.AI_TABLE_NAMES` and
`INTERNAL_TABLE_NAMES` constants for gating/identification.
- `AdminRegistry.auto_discover(exclude_tables=...)` accepts a set of table
names to skip during discovery.

## [0.3.2] - 2026-07-31

### Changed
- Added Alembic database migrations so schema changes can be versioned and
applied incrementally instead of relying solely on auto-create
([#39](https://github.com/borhanst/fastapi-admin-kit/pull/39)).

## [0.3.1] - 2026-07-29

### Added
- CSV export and import support for models, enabling bulk data download and
upload from the admin UI
([#38](https://github.com/borhanst/fastapi-admin-kit/pull/38)).

## [0.3.0] - 2026-07-28

### Added
- Per-model permission updates and refinements to the RBAC model
([#20](https://github.com/borhanst/fastapi-admin-kit/pull/20)).
- Inline formset support for `ModelAdmin`, allowing related records to be
edited on the same page
([#21](https://github.com/borhanst/fastapi-admin-kit/pull/21)).
- Adapter registration wired directly into `Admin`
([#35](https://github.com/borhanst/fastapi-admin-kit/pull/35)).
- Schema-first + protocol hybrid approach for built-in admin models
([#34](https://github.com/borhanst/fastapi-admin-kit/pull/34)).

### Changed
- Decoupled `DefaultQueryProvider`, `search_utils`, and the `Filter` classes
from SQLAlchemy, improving backend portability
([#33](https://github.com/borhanst/fastapi-admin-kit/pull/33)).

### Fixed
- Assorted bug fixes and stability improvements
([#36](https://github.com/borhanst/fastapi-admin-kit/pull/36)).

## [0.2.1] - 2026-07-21

### Fixed
- Corrected a user-permission model bug and adjusted how permissions are
stored and evaluated
([#19](https://github.com/borhanst/fastapi-admin-kit/pull/19)).

## [0.2.0] - 2026-07-13

### Added
- Authentication subsystem with session-based login, logout, and protected
routes ([#14](https://github.com/borhanst/fastapi-admin-kit/pull/14)).

### Fixed
- Resolved a documentation build failure
([#15](https://github.com/borhanst/fastapi-admin-kit/pull/15)).

## [0.1.2] - 2026-07-09

### Added
- Zero-config auto-discovery of SQLAlchemy models
- Built-in authentication with session-based cookies
- Role-based access control (RBAC) with per-model permissions
- Direct per-user permission overrides
- Audit logging with full change diffs
- Modern UI with Tailwind CSS, HTMX, and Alpine.js
- Global search / command palette (`Cmd+K` / `Ctrl+K`)
- Inline editing from list view with 3-dot action menu
- CLI tools (`fak-admin` / `fak`) for user management
- Async-first architecture with PostgreSQL, MySQL, and SQLite support
- SQLModel support via optional extra
- Custom widgets, themes, and templates
- Search and filtering with relation field lookups
- Bulk operations
- Dark mode with theme presets
- Pagination strategies (offset, cursor, dynamic)
- File uploads with local storage backend
- Plugin system for extensibility
- CSRF protection on all state-changing requests
- Rate limiting on authentication endpoints
- Environment badge for staging/production identification

### Security
- SQL injection prevention via identifier validation in CLI migrate and auto-migrate
- Secure session cookies with `SameSite=Strict` and `Secure` by default
- CSRF protection on all state-changing requests
- Rate limiting on authentication endpoints
- bcrypt password hashing
- Secret key validated to be >= 32 characters at startup
- Removed weak default credentials from examples
- CLI commands for project scaffolding and user management
([#10](https://github.com/borhanst/fastapi-admin-kit/pull/10)).

### Fixed
- Added support for UUID primary keys on models
([#12](https://github.com/borhanst/fastapi-admin-kit/pull/12)).

## [0.1.1] - 2026-07-09

### Added
- Database configuration and connection handling
([#1](https://github.com/borhanst/fastapi-admin-kit/pull/1)).
- Inline editing — edit records directly from the list view
([#9](https://github.com/borhanst/fastapi-admin-kit/pull/9)).

### Changed
- `uvicorn` and `pyjwt` moved to optional `[full]` extra (no longer hard dependencies)
- All library code uses `logging` instead of `print()` statements
- Silent exception blocks now log at debug level instead of silently swallowing
- Renamed the CLI from `fastapi-admin-kit` to `fak-admin`
([#3](https://github.com/borhanst/fastapi-admin-kit/pull/3)).

### Fixed
- `__all__` in `views/__init__.py` no longer references undefined symbols
- Debug print statement removed from `cli/helpers.py`
- Line length violations in `admin/builtin_models.py`
- Import sorting in `admin/admin_database.py` and `cli/migrate.py`
- Use `StrEnum` for `DatabaseType` for safer, string-compatible enums
([#4](https://github.com/borhanst/fastapi-admin-kit/pull/4)).
- Updated emoji configuration in the markdown extensions
([#5](https://github.com/borhanst/fastapi-admin-kit/pull/5)).

## [0.1.0] - 2026-07-08

### Added
- Initial release of FastAPI Admin Kit: a drop-in admin panel for FastAPI +
SQLAlchemy + SQLModel applications with auto-discovery, RBAC, audit logging,
and a modern UI.
2 changes: 0 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -187,7 +187,6 @@ All commands accept `-d DATABASE_URL` or read the `DATABASE_URL` environment var

```python
from fastapi_admin_kit import Admin
from fastapi_admin_kit.config import ThemeConfig

admin = Admin(
app=app,
Expand All @@ -196,7 +195,6 @@ admin = Admin(
secret_key=SECRET_KEY,
title="My Admin", # Admin panel title
admin_path="/admin", # URL prefix
dark_mode_default=False, # Dark mode on by default
# Auth
auth_backend=BuiltinAuthBackend(),
# Environment badge
Expand Down
Loading
Loading