56 lines
3.0 KiB
Markdown
56 lines
3.0 KiB
Markdown
# Changelog
|
|
|
|
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.0.0/),
|
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
|
|
## [2.0.1] - 2025-04-08
|
|
|
|
### Fixed
|
|
- `JsonDumpsEncoder` now handles `NaTType` (pandas NaT) without throwing TypeError
|
|
- CORS `Access-Control-Allow-Origin` now defaults to `"*"` instead of echoing the request Origin header (security fix)
|
|
- `RbacUser.can()` correctly handles empty permission list
|
|
- Fixed race condition in `aio_pool.py` when task queue is full under high concurrency
|
|
|
|
### Changed
|
|
- Refactored `config.py` — `get_config()` now consistently returns `None` instead of raising on missing optional keys (use `default` parameter for fallback)
|
|
- Upgraded minimum Python version from 3.9 to 3.11
|
|
- `pyproject.toml` dependencies cleaned up — core dependencies slimmed down; pandas/numpy/matplotlib/opencv moved to `[project.optional-dependencies]`
|
|
|
|
### Removed
|
|
- Deprecated `web/legacy_session.py` — use JWT-based `@auth_token` decorator instead
|
|
|
|
## [2.0.0] - 2025-03-15
|
|
|
|
### Added
|
|
- **Swagger UI auto-generation** (`ApplicationSwagger`) — fully inferred from handler route patterns and decorators
|
|
- **Redis StreamActor** — consumer-group-based message processing with automatic zombie task recovery
|
|
- **ParamAwareUIModule** — async data pre-loading for Tornado UIModules
|
|
- **RBAC with dynamic rules** — rules are serialized Python classes stored in DB, supporting time-based, IP-based, and custom rule chains
|
|
- **Snowflake ID generator** (`snow_id.py`) — thread-safe, no external dependency, 10K+ IDs/sec
|
|
- **Auto-loading handlers** — `Application.load_handlers()` discovers all handlers in a package via `route_pattern` attribute
|
|
- **BaseX encoder/decoder** (`encoder.py`) — auto-detect Base16/32/64/85 + zlib decompression
|
|
- **Async DB engine** — SQLAlchemy async session factory with `aiomysql` / `aiosqlite` support
|
|
- **Task service with daemonization** — `TaskService` with PID file, start/stop/status commands, and graceful shutdown
|
|
- **5 complete examples** under `examples/` — HelloWorld, background tasks, Redis streams, scheduled services, model generation
|
|
- **pytest test suite** — unit tests (mocked) + integration tests for DB, Redis, RBAC
|
|
|
|
### Changed
|
|
- Complete project restructuring: introduced `web/`, `core/`, `db/`, `rbac/`, `util/`, `service/` package layout
|
|
- `Application` now inherits from `tornado.web.Application` — backward-incompatible refactor from v1.x
|
|
- `RequestHandler.response_ok()` and `response_error()` now use `JsonDumpsEncoder` by default
|
|
- Logging system rewritten — supports rotating file handlers, per-module loggers, console output
|
|
|
|
### Removed
|
|
- All v1.x code — this is a ground-up rewrite
|
|
|
|
## [1.0.0] - 2024-01-01
|
|
|
|
### Added
|
|
- Initial release with basic Tornado wrapper
|
|
- Basic JWT auth and password hashing
|
|
- Simple `config.json` loader
|
|
- Minimal utility functions
|
|
|
|
> ⚠️ **Note:** v1.0.0 is deprecated and no longer maintained. Please upgrade to v2.0.0+. |