From 5e4ceac80a170a4a38cbdebb04f73ca7eb90bd0a Mon Sep 17 00:00:00 2001 From: Martin Castro Laminrs Date: Thu, 28 May 2026 15:44:43 +0200 Subject: [PATCH 1/3] =?UTF-8?q?chore(release):=20v1.0.0=20=E2=80=94=20the?= =?UTF-8?q?=20React-super-layer=20release?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Owner directive 2026-05-28: "ship the v1 release to pypi." The repo has been collapsed to a pure React SPA super-layer over `django-admin-rest-api ^1.0.1` (the published v1 API package). The 14 commits since v0.2.0a8 cover the entire 3-repo split, the API/MCP sibling dependencies, the API_URL_PREFIX setting (#559), the React-rendered login as the default (replaces admin URLs end-to-end, #167), the docs prune, and four user-facing feature fixes (#554, #555, #556-via-#529, #557-via-#527). This bump: - `version` `0.2.0a8` → **`1.0.0`**. - `Development Status :: 2 - Pre-Alpha` → `Development Status :: 4 - Beta`. - `README.md` "Pre-alpha" banner replaced with the v1 / three-package shipping note. ## Verification - `poetry run pytest` clean (42 passed on the now-minimal SPA-side suite). - Wheel build & content audit already done in the #550 collapse PR: ships the pre-built React bundle + LICENSE, no `node_modules`, no source maps, no local `api/` tree. - The `release.yml` OIDC workflow handles the publish — the owner cuts a GitHub Release at `v1.0.0` and the wheel + sdist ship to PyPI automatically (no stored token). After this merges: 1. Tag `v1.0.0` on `main`. 2. Publish the GitHub Release with the tag. 3. The OIDC workflow uploads to PyPI under the `pypi` environment. Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 7 +++++-- pyproject.toml | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e04b817..d1db95f 100644 --- a/README.md +++ b/README.md @@ -20,8 +20,11 @@ urlpatterns = [ ] ``` -> **Pre-alpha.** Available on PyPI as an alpha. Pin tightly; expect -> breaking changes between alpha releases. Track progress on the +> **Beta — v1.0.0.** Available on PyPI; the SPA + the API +> ([`django-admin-rest-api`](https://pypi.org/project/django-admin-rest-api/)) +> + the MCP adapter +> ([`django-admin-mcp-api`](https://pypi.org/project/django-admin-mcp-api/)) +> all share the v1 wire contract. Track progress on the > [Project board](https://github.com/users/MartinCastroAlvarez/projects/3) > and the [Issues list](https://github.com/MartinCastroAlvarez/django-admin-react/issues). diff --git a/pyproject.toml b/pyproject.toml index 59311d3..d8bd143 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "django-admin-react" -version = "0.2.0a8" +version = "1.0.0" description = "A drop-in React single-page admin for Django, driven entirely by ModelAdmin." authors = ["django-admin-react contributors"] license = "MIT" @@ -10,7 +10,7 @@ repository = "https://github.com/MartinCastroAlvarez/django-admin-react" documentation = "https://github.com/MartinCastroAlvarez/django-admin-react#readme" keywords = ["django", "admin", "react", "spa", "tailwind"] classifiers = [ - "Development Status :: 2 - Pre-Alpha", + "Development Status :: 4 - Beta", "Environment :: Web Environment", "Framework :: Django", "Framework :: Django :: 5.0", From 1372d221e84065544d166bde1543bf6c7b0c1cb0 Mon Sep 17 00:00:00 2001 From: Martin Castro Laminrs Date: Thu, 28 May 2026 16:11:14 +0200 Subject: [PATCH 2/3] chore(release): de-duplicate the README Install section (v1 polish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The README had two `## Install` snippets: the top (correct, two `INSTALLED_APPS` entries + one URL include) and a later one that was stale (only `django_admin_react`, mounted at `/admin/` which would collide with `django.contrib.admin`). Replaced the lower section with a short pointer back to the top — fewer divergent paths, no collision-inducing example. --- README.md | 38 ++++++++++---------------------------- 1 file changed, 10 insertions(+), 28 deletions(-) diff --git a/README.md b/README.md index d1db95f..2b644fa 100644 --- a/README.md +++ b/README.md @@ -103,34 +103,16 @@ emails, account numbers, or PII). pip install django-admin-react ``` -```python -# settings.py -INSTALLED_APPS = [ - "django.contrib.admin", - "django.contrib.auth", - "django.contrib.contenttypes", - "django.contrib.sessions", - "django.contrib.messages", - "django.contrib.staticfiles", - "django_admin_react", # ← add this - # ... your own apps -] -``` - -```python -# urls.py -from django.urls import include, path - -urlpatterns = [ - path("admin/", include("django_admin_react.urls")), - # any prefix is fine: - # path("admin-react/", include("django_admin_react.urls")), - # path("staff/", include("django_admin_react.urls")), -] -``` - -That is the entire integration. Log in as a staff user → modern, -Tailwind-styled SPA driven by your existing `ModelAdmin` classes. +This pulls in the JSON API ([`django-admin-rest-api`](https://pypi.org/project/django-admin-rest-api/)) +and the MCP adapter ([`django-admin-mcp-api`](https://pypi.org/project/django-admin-mcp-api/)) +as transitive dependencies. The **two-line `INSTALLED_APPS` + one-line +URL include** at the top of this README is the *entire* integration. +Mount at any prefix you like — `/admin-react/`, `/staff/`, +`/back-office/` — just don't collide with `django.contrib.admin`'s +own mount. + +Log in as a staff user → modern, Tailwind-styled SPA driven by your +existing `ModelAdmin` classes. The wheel ships the **pre-built React bundle**. You do **not** need Node, pnpm, or any frontend toolchain to install or run. From 13439953c331bea82cd4a0904ea927a360419f2d Mon Sep 17 00:00:00 2001 From: Martin Castro Laminrs Date: Thu, 28 May 2026 16:13:14 +0200 Subject: [PATCH 3/3] docs(release): document REACT_LOGIN + API_URL_PREFIX in the README config block (v1 polish) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The two settings that landed this release window aren't visible in the README's optional-configuration snippet — add them with one-line inline docs so consumers landing on the PyPI page see the full v1 surface at a glance: - `REACT_LOGIN` — True by default (post-#561); set False to opt back into the legacy admin HTML login. - `API_URL_PREFIX` — None by default; point the SPA at a separately- mounted django-admin-rest-api when the consumer doesn't want the inline include (#559). --- README.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/README.md b/README.md index 2b644fa..51bd9fe 100644 --- a/README.md +++ b/README.md @@ -141,6 +141,16 @@ DJANGO_ADMIN_REACT = { # active states. Hex only (validated); # injected as the --dar-primary CSS var, so # rebranding needs no React rebuild. + + # Auth + API mount + "REACT_LOGIN": True, # bool — React-rendered login is the default; + # the SPA shell is served to anonymous users + # and posts to /api/v1/login/. Set False to + # opt back into the legacy admin HTML login. + "API_URL_PREFIX": None, # str | None — point the SPA at a separately- + # mounted django-admin-rest-api (e.g. + # "/api/api/v1/"). Default None keeps the + # inline include the package ships today. } ```