backend_and_cms/release-notes.md

55 KiB
Raw Blame History

Release Notes

Latest Changes

  • 👷 Do not sync labels as it overrides manually added labels. PR #1307 by @tiangolo.

Refactors

  • ♻️ Remove duplicate information in the ItemCreate model. PR #1287 by @jjaakko.

Docs

  • 📝 Add Email Templates to backend/README.md. PR #1311 by @alejsdev.

Internal

0.7.0

Lots of new things! 🎁

  • E2E tests with Playwright.
  • Mailcatcher configuration, to develop and test email handling.
  • Pagination.
  • UUIDs for database keys.
  • New user sign up.
  • Support for deploying to multiple environments (staging, prod).
  • Many refactors and improvements.
  • Several dependency upgrades.

Features

  • Add User Settings e2e tests. PR #1271 by @alejsdev.
  • Add Reset Password e2e tests. PR #1270 by @alejsdev.
  • Add Sign Up e2e tests. PR #1268 by @alejsdev.
  • Add Sign Up and make OPEN_USER_REGISTRATION=True by default. PR #1265 by @alejsdev.
  • Add Login e2e tests. PR #1264 by @alejsdev.
  • Add initial setup for frontend / end-to-end tests with Playwright. PR #1261 by @alejsdev.
  • Add mailcatcher configuration. PR #1244 by @patrick91.
  • Introduce pagination in items. PR #1239 by @patrick91.
  • 🗃️ Add max_length validation for database models and input data. PR #1233 by @estebanx64.
  • Add TanStack React Query devtools in dev build. PR #1217 by @tomerb.
  • Add support for deploying multiple environments (staging, production) to the same server. PR #1128 by @tiangolo.
  • 👷 Update CI GitHub Actions to allow running in private repos. PR #1125 by @tiangolo.

Fixes

  • 🐛 Fix welcome page to show logged-in user. PR #1218 by @tomerb.
  • 🐛 Fix local Traefik proxy network config to fix Gateway Timeouts. PR #1184 by @JoelGotsch.
  • ♻️ Fix tests when first superuser password is changed in .env. PR #1165 by @billzhong.
  • 🐛 Fix bug when resetting password. PR #1171 by @alejsdev.
  • 🐛 Fix 403 when the frontend has a directory without an index.html. PR #1094 by @tiangolo.

Refactors

  • 🚨 Fix Docker build warning. PR #1283 by @erip.
  • ♻️ Regenerate client to use UUID instead of id integers and update frontend. PR #1281 by @rehanabdul.
  • ♻️ Tweaks in frontend. PR #1273 by @alejsdev.
  • ♻️ Add random password util and refactor tests. PR #1277 by @alejsdev.
  • ♻️ Refactor models to use cascade delete relationships . PR #1276 by @alejsdev.
  • 🔥 Remove USERS_OPEN_REGISTRATION config, make registration enabled by default. PR #1274 by @alejsdev.
  • 🔧 Reuse database url from config in alembic setup. PR #1229 by @patrick91.
  • 🔧 Update Playwright config and tests to use env variables. PR #1266 by @alejsdev.
  • ♻️ Edit refactor db models to use UUID's instead of integer ID's. PR #1259 by @estebanx64.
  • ♻️ Update form inputs width. PR #1263 by @alejsdev.
  • ♻️ Replace deprecated utcnow() with now(timezone.utc) in utils module. PR #1247 by @jalvarezz13.
  • 🎨 Format frontend. PR #1262 by @alejsdev.
  • ♻️ Abstraction of specific AddModal component out of the Navbar. PR #1246 by @ajbloureiro.
  • ♻️ Update login.tsx to prevent error if username or password are empty. PR #1257 by @jmondaud.
  • ♻️ Refactor recover password. PR #1242 by @alejsdev.
  • 🎨 Format and lint . PR #1243 by @alejsdev.
  • 🎨 Run biome after OpenAPI client generation. PR #1226 by @tomerb.
  • ♻️ Update DeleteConfirmation component to use new service. PR #1224 by @alejsdev.
  • ♻️ Update client services. PR #1223 by @alejsdev.
  • ⚒️ Add minor frontend tweaks. PR #1210 by @alejsdev.
  • 🚚 Move assets to public folder. PR #1206 by @alejsdev.
  • ♻️ Refactor redirect labels to simplify removing the frontend. PR #1208 by @tiangolo.
  • 🔒 Refactor migrate from python-jose to PyJWT. PR #1203 by @estebanx64.
  • 🔥 Remove duplicated code. PR #1185 by @alejsdev.
  • ♻️ Add delete_user_me endpoint and corresponding test cases. PR #1179 by @alejsdev.
  • Update test to add verification database records. PR #1178 by @estebanx64.
  • 🚸 Use useSuspenseQuery to fetch members and show skeleton. PR #1174 by @patrick91.
  • 🎨 Format Utils. PR #1173 by @alejsdev.
  • Use suspense for items page. PR #1167 by @patrick91.
  • 🚸 Mark login field as required. PR #1166 by @patrick91.
  • 🚸 Improve login. PR #1163 by @patrick91.
  • 🥅 Handle AxiosErrors in Login page. PR #1162 by @patrick91.
  • 🎨 Format frontend. PR #1161 by @alejsdev.
  • ♻️ Regenerate frontend client. PR #1156 by @alejsdev.
  • ♻️ Refactor rename ModelsOut to ModelsPublic. PR #1154 by @estebanx64.
  • ♻️ Migrate frontend client generation from openapi-typescript-codegen to @hey-api/openapi-ts. PR #1151 by @alejsdev.
  • 🔥 Remove unused exports and update dependencies. PR #1146 by @alejsdev.
  • 🔧 Update sentry dns initialization following the environment settings. PR #1145 by @estebanx64.
  • ♻️ Refactor and tweaks, rename UserCreateOpen to UserRegister and others. PR #1143 by @alejsdev.
  • 🎨 Format imports. PR #1140 by @alejsdev.
  • ♻️ Refactor and remove React.FC. PR #1139 by @alejsdev.
  • ♻️ Add email pattern and refactor in frontend. PR #1138 by @alejsdev.
  • 🥅 Set up Sentry for FastAPI applications. PR #1136 by @estebanx64.
  • 🔥 Remove deprecated Docker Compose version key. PR #1129 by @tiangolo.
  • 🎨 Format with Biome . PR #1097 by @alejsdev.
  • 🎨 Update quote style in biome formatter. PR #1095 by @alejsdev.
  • ♻️ Replace ESLint and Prettier with Biome to format and lint frontend. PR #719 by @santigandolfo.
  • 🎨 Replace buttons styling for variants for consistency. PR #722 by @alejsdev.
  • 🛠️ Improve modify-openapi-operationids.js. PR #720 by @alejsdev.
  • ♻️ Replace pytest-mock with unittest.mock and remove pytest-cov. PR #717 by @estebanx64.
  • 🛠️ Minor changes in frontend. PR #715 by @alejsdev.
  • ♻ Update Docker image to prevent errors in M1 Macs. PR #710 by @dudil.
  • ✏ Fix typo in variable names in backend/app/api/routes/items.py and backend/app/api/routes/users.py. PR #711 by @disrupted.

Upgrades

Docs

  • 📝 Update links from tiangolo repo to fastapi org repo. PR #1285 by @tiangolo.
  • 📝 Add End-to-End Testing with Playwright to frontend README.md. PR #1279 by @alejsdev.
  • 📝 Update release-notes.md. PR #1220 by @alejsdev.
  • ✏️ Update README.md. PR #1205 by @Craz1k0ek.
  • ✏️ Fix Adminer URL in deployment.md. PR #1194 by @PhilippWu.
  • 📝 Add Enabling Open User Registration to backend docs. PR #1191 by @alejsdev.
  • 📝 Update release-notes.md. PR #1164 by @alejsdev.
  • 📝 Update README.md. PR #716 by @alejsdev.
  • 📝 Update instructions to clone for a private repo, including updates. PR #1127 by @tiangolo.
  • 📝 Add docs about CI keys, LATEST_CHANGES and SMOKESHOW_AUTH_KEY. PR #1126 by @tiangolo.
  • ✏️ Fix file path in backend/README.md when not wanting to use migrations. PR #1116 by @leonlowitzki.
  • 📝 Add documentation for pre-commit and code linting. PR #718 by @estebanx64.
  • 📝 Fix localhost URLs in development.md. PR #1099 by @efonte.
  • ✏ Update header titles for consistency. PR #708 by @codesmith-emmy.
  • 📝 Update README.md, dark mode screenshot position. PR #706 by @alejsdev.

Internal

0.6.0

Latest FastAPI, Pydantic, SQLModel 🚀

Brand new frontend with React, TS, Vite, Chakra UI, TanStack Query/Router, generated client/SDK 🎨

CI/CD - GitHub Actions 🤖

Test cov > 90%

Features

  • Adopt SQLModel, create models, start using it. PR #559 by @tiangolo.
  • Upgrade items router with new SQLModel models, simplified logic, and new FastAPI Annotated dependencies. PR #560 by @tiangolo.
  • Migrate from pgAdmin to Adminer. PR #692 by @tiangolo.
  • Add support for setting POSTGRES_PORT. PR #333 by @uepoch.
  • ⬆ Upgrade Flower version and command. PR #447 by @maurob.
  • 🎨 Improve styles. PR #673 by @alejsdev.
  • 🎨 Update theme. PR #666 by @alejsdev.
  • 👷 Add continuous deployment and refactors needed for it. PR #667 by @tiangolo.
  • Create endpoint to show password recovery email content and update email template. PR #664 by @alejsdev.
  • 🎨 Format with Prettier. PR #646 by @alejsdev.
  • Add tests to raise coverage to at least 90% and fix recover password logic. PR #632 by @estebanx64.
  • ⚙️ Add Prettier and ESLint config with pre-commit. PR #640 by @alejsdev.
  • 👷 Add coverage with Smokeshow to CI and badge. PR #638 by @estebanx64.
  • Migrate to TanStack Query (React Query) and TanStack Router. PR #637 by @alejsdev.
  • Add setup and teardown database for tests. PR #626 by @estebanx64.
  • Update new-frontend client. PR #625 by @alejsdev.
  • Add password reset functionality. PR #624 by @alejsdev.
  • Add private/public routing. PR #621 by @alejsdev.
  • 🔧 Add VS Code debug configs. PR #620 by @tiangolo.
  • Add Not Found page. PR #595 by @alejsdev.
  • Add new pages, components, panels, modals, and theme; refactor and improvements in existing components. PR #593 by @alejsdev.
  • Support delete own account and other tweaks. PR #614 by @alejsdev.
  • Restructure folders, allow editing of users/items, and implement other refactors and improvements. PR #603 by @alejsdev.
  • Add Copier, migrate from Cookiecutter, in a way that supports using the project as is, forking or cloning it. PR #612 by @tiangolo.
  • Replace black, isort, flake8, autoflake with ruff and upgrade mypy. PR #610 by @tiangolo.
  • ♻ Refactor items and services endpoints to return count and data, and add CI tests. PR #599 by @estebanx64.
  • Add support for updating items and upgrade SQLModel to 0.0.16 (which supports model object updates). PR #601 by @tiangolo.
  • Add dark mode to new-frontend and conditional sidebar items. PR #600 by @alejsdev.
  • Migrate to RouterProvider and other refactors . PR #598 by @alejsdev.
  • Add delete_user; refactor delete_item. PR #594 by @alejsdev.
  • Add state store to new frontend. PR #592 by @alejsdev.
  • Add form validation to Admin, Items and Login. PR #616 by @alejsdev.
  • Add Sidebar to new frontend. PR #587 by @alejsdev.
  • Add Login to new frontend. PR #585 by @alejsdev.
  • Include schemas in generated frontend client. PR #584 by @alejsdev.
  • Regenerate frontend client with recent changes. PR #575 by @alejsdev.
  • ♻️ Refactor API in utils.py. PR #573 by @alejsdev.
  • Update code for login API. PR #571 by @tiangolo.
  • Add client in frontend and client generation. PR #569 by @alejsdev.
  • 🐳 Set up Docker config for new-frontend. PR #564 by @alejsdev.
  • Set up new frontend with Vite, TypeScript and React. PR #563 by @alejsdev.
  • 📌 Add NodeJS version management and instructions. PR #551 by @alejsdev.
  • Add consistent errors for env vars not set. PR #200.
  • Upgrade Traefik to version 2, keeping in sync with DockerSwarm.rocks. PR #199.
  • Run tests with TestClient. PR #160.

Fixes

  • 🐛 Fix copier to handle string vars with spaces in quotes. PR #631 by @estebanx64.
  • 🐛 Fix allowing a user to update the email to the same email they already have. PR #696 by @alejsdev.
  • 🐛 Set up Sentry only when used. PR #671 by @tiangolo.
  • 🔥 Remove unnecessary validation. PR #662 by @alejsdev.
  • 🐛 Fix bug when editing own user. PR #651 by @alejsdev.
  • 🐛 Add onClose to SidebarItems. PR #589 by @alejsdev.
  • 🐛 Fix positional argument bug in init_db.py. PR #562 by @alejsdev.
  • 📌 Fix flower Docker image, pin version. PR #396 by @sanggusti.
  • 🐛 Fix Celery worker command. PR #443 by @bechtold.
  • 🐛 Fix Poetry installation in Dockerfile and upgrade Python version and packages to fix Docker build. PR #480 by @little7Li.

Refactors

  • 🔧 Add missing dotenv variables. PR #554 by @tiangolo.
  • Revert "⚙️ Add Prettier and ESLint config with pre-commit". PR #644 by @alejsdev.
  • 🙈 Add .prettierignore and include client folder. PR #648 by @alejsdev.
  • 🏷️ Add mypy to the GitHub Action for tests and fixed types in the whole project. PR #655 by @estebanx64.
  • 🔒 Ensure the default values of "changethis" are not deployed. PR #698 by @tiangolo.
  • ◀ Revert "📸 Rename Dashboard to Home and update screenshots". PR #697 by @alejsdev.
  • 📸 Rename Dashboard to Home and update screenshots. PR #693 by @alejsdev.
  • 🐛 Fixed items count when retrieving data for all items by user. PR #695 by @estebanx64.
  • 🔥 Remove Celery and Flower, they are currently not used nor recommended. PR #694 by @tiangolo.
  • Add test for deleting user without privileges. PR #690 by @alejsdev.
  • ♻️ Refactor user update. PR #689 by @alejsdev.
  • 📌 Add Poetry lock to git. PR #685 by @tiangolo.
  • 🎨 Adjust color and spacing. PR #684 by @alejsdev.
  • 👷 Avoid creating unnecessary *.pyc files with PYTHONDONTWRITEBYTECODE=1. PR #677 by @estebanx64.
  • 🔧 Add SMTP_SSL option for older SMTP servers. PR #365 by @Metrea.
  • ♻️ Refactor logic to allow running pytest tests locally. PR #683 by @tiangolo.
  • ♻ Update error messages. PR #417 by @qu3vipon.
  • 🔧 Add a default Flower password. PR #682 by @tiangolo.
  • 🔧 Update VS Code debug config. PR #676 by @tiangolo.
  • ♻️ Refactor code structure for tests. PR #674 by @tiangolo.
  • 🔧 Set TanStack Router devtools only in dev mode. PR #668 by @alejsdev.
  • ♻️ Refactor email logic to allow re-using util functions for testing and development. PR #663 by @tiangolo.
  • 💬 Improve Delete Account description and confirmation. PR #661 by @alejsdev.
  • ♻️ Refactor email templates. PR #659 by @alejsdev.
  • 📝 Update deployment files and docs. PR #660 by @tiangolo.
  • 🔥 Remove unused schemas. PR #656 by @alejsdev.
  • 🔥 Remove old frontend. PR #649 by @tiangolo.
  • ♻ Move project source files to top level from src, update Sentry dependency. PR #630 by @estebanx64.
  • ♻ Refactor Python folder tree. PR #629 by @estebanx64.
  • ♻️ Refactor old CRUD utils and tests. PR #622 by @alejsdev.
  • 🔧 Update .env to allow local debug for the backend. PR #618 by @tiangolo.
  • ♻️ Refactor and update CORS, remove trailing slash from new Pydantic v2. PR #617 by @tiangolo.
  • 🎨 Format files with pre-commit and Ruff. PR #611 by @tiangolo.
  • 🚚 Refactor and simplify backend file structure. PR #609 by @tiangolo.
  • 🔥 Clean up old files no longer relevant. PR #608 by @tiangolo.
  • ♻ Re-structure Docker Compose files, discard Docker Swarm specific logic. PR #607 by @tiangolo.
  • ♻️ Refactor update endpoints and regenerate client for new-frontend. PR #602 by @alejsdev.
  • Add Layout to App. PR #588 by @alejsdev.
  • ♻️ Re-enable user update path operations for frontend client generation. PR #574 by @alejsdev.
  • ♻️ Remove type ignores and add response_model. PR #572 by @alejsdev.
  • ♻️ Refactor Users API and dependencies. PR #561 by @alejsdev.
  • ♻️ Refactor frontend Docker build setup, use plain NodeJS, use custom Nginx config, fix build for old Vue. PR #555 by @tiangolo.
  • ♻️ Refactor project generation, discard cookiecutter, use plain git/clone/fork. PR #553 by @tiangolo.
  • Refactor backend:
    • Simplify configs for tools and format to better support editor integration.
    • Add mypy configurations and plugins.
    • Add types to all the codebase.
    • Update types for SQLAlchemy models with plugin.
    • Update and refactor CRUD utils.
    • Refactor DB sessions to use dependencies with yield.
    • Refactor dependencies, security, CRUD, models, schemas, etc. To simplify code and improve autocompletion.
    • Change from PyJWT to Python-JOSE as it supports additional use cases.
    • Fix JWT tokens using user email/ID as the subject in sub.
    • PR #158.
  • Simplify docker-compose.*.yml files, refactor deployment to reduce config files. PR #153.
  • Simplify env var files, merge to a single .env file. PR #151.

Upgrades

Docs

  • 🦇 Add dark mode to README.md. PR #703 by @alejsdev.
  • 🍱 Update GitHub image. PR #701 by @tiangolo.
  • 🍱 Add GitHub image. PR #700 by @tiangolo.
  • 🚚 Rename project to Full Stack FastAPI Template. PR #699 by @tiangolo.
  • 📝 Update README.md. PR #691 by @alejsdev.
  • ✏ Fix typo in development.md. PR #309 by @graue70.
  • 📝 Add docs for wildcard domains. PR #681 by @tiangolo.
  • 📝 Add the required GitHub Actions secrets to docs. PR #679 by @tiangolo.
  • 📝 Update README.md and deployment.md. PR #678 by @alejsdev.
  • 📝 Update frontend README.md. PR #675 by @alejsdev.
  • 📝 Update deployment docs to use a different directory for traefik-public. PR #670 by @tiangolo.
  • 📸 Add new screenshots . PR #657 by @alejsdev.
  • 📝 Refactor README into separate README.md files for backend, frontend, deployment, development. PR #639 by @tiangolo.
  • 📝 Update README. PR #628 by @tiangolo.
  • 👷 Update GitHub Action latest-changes and move release notes to independent file. PR #619 by @tiangolo.
  • 📝 Update internal README and referred files. PR #613 by @tiangolo.
  • 📝 Update README with in construction notice. PR #552 by @tiangolo.
  • Add docs about reporting test coverage in HTML. PR #161.
  • Add docs about removing the frontend, for an API-only app. PR #156.

Internal

0.5.0

  • Make the Traefik public network a fixed default of traefik-public as done in DockerSwarm.rocks, to simplify development and iteration of the project generator. PR #150.
  • Update to PostgreSQL 12. PR #148. by @RCheese.
  • Use Poetry for package management. Initial PR #144 by @RCheese.
  • Fix Windows line endings for shell scripts after project generation with Cookiecutter hooks. PR #149.
  • Upgrade Vue CLI to version 4. PR #120 by @br3ndonland.
  • Remove duplicate login tag. PR #135 by @Nonameentered.
  • Fix showing email in dashboard when there's no user's full name. PR #129 by @rlonka.
  • Format code with Black and Flake8. PR #121 by @br3ndonland.
  • Simplify SQLAlchemy Base class. PR #117 by @airibarne.
  • Update CRUD utils for users, handling password hashing. PR #106 by @mocsar.
  • Use . instead of source for interoperability. PR #98 by @gucharbon.
  • Use Pydantic's BaseSettings for settings/configs and env vars. PR #87 by @StephenBrown2.
  • Remove package-lock.json to let everyone lock their own versions (depending on OS, etc).
  • Simplify Traefik service labels PR #139.
  • Add email validation. PR #40 by @kedod.
  • Fix typo in README. PR #83 by @ashears.
  • Fix typo in README. PR #80 by @abjoker.
  • Fix function name read_item and response code. PR #74 by @jcaguirre89.
  • Fix typo in comment. PR #70 by @daniel-butler.
  • Fix Flower Docker configuration. PR #37 by @dmontagu.
  • Add new CRUD utils based on DB and Pydantic models. Initial PR #23 by @ebreton.
  • Add normal user testing Pytest fixture. PR #20 by @ebreton.

0.4.0

  • Fix security on resetting a password. Receive token as body, not query. PR #34.

  • Fix security on resetting a password. Receive it as body, not query. PR #33 by @dmontagu.

  • Fix SQLAlchemy class lookup on initialization. PR #29 by @ebreton.

  • Fix SQLAlchemy operation errors on database restart. PR #32 by @ebreton.

  • Fix locations of scripts in generated README. PR #19 by @ebreton.

  • Forward arguments from script to pytest inside container. PR #17 by @ebreton.

  • Update development scripts.

  • Read Alembic configs from env vars. PR #9 by @ebreton.

  • Create DB Item objects from all Pydantic model's fields.

  • Update Jupyter Lab installation and util script/environment variable for local development.

0.3.0

  • PR #14:

    • Update CRUD utils to use types better.
    • Simplify Pydantic model names, from UserInCreate to UserCreate, etc.
    • Upgrade packages.
    • Add new generic "Items" models, crud utils, endpoints, and tests. To facilitate re-using them to create new functionality. As they are simple and generic (not like Users), it's easier to copy-paste and adapt them to each use case.
    • Update endpoints/path operations to simplify code and use new utilities, prefix and tags in include_router.
    • Update testing utils.
    • Update linting rules, relax vulture to reduce false positives.
    • Update migrations to include new Items.
    • Update project README.md with tips about how to start with backend.
  • Upgrade Python to 3.7 as Celery is now compatible too. PR #10 by @ebreton.

0.2.2

0.2.1

  • Fix documentation for path operation to get user by ID. PR #4 by @mpclarkson in FastAPI.

  • Set /start-reload.sh as a command override for development by default.

  • Update generated README.

0.2.0

PR #2:

  • Simplify and update backend Dockerfiles.
  • Refactor and simplify backend code, improve naming, imports, modules and "namespaces".
  • Improve and simplify Vuex integration with TypeScript accessors.
  • Standardize frontend components layout, buttons order, etc.
  • Add local development scripts (to develop this project generator itself).
  • Add logs to startup modules to detect errors early.
  • Improve FastAPI dependency utilities, to simplify and reduce code (to require a superuser).

0.1.2

  • Fix path operation to update self-user, set parameters as body payload.

0.1.1

Several bug fixes since initial publication, including:

  • Order of path operations for users.
  • Frontend sending login data in the correct format.
  • Add https://localhost variants to CORS.