emichaud/django-smallstack

A django starter for internal apps that leverages the include admin theme and components.

v0.20.1 2 1 forks 12 issues

Unreleased

1 commit
507cf6f release: v0.20.1 — make lint runs mypy; typed-code convention

v0.20.1

2 commits
f64c662 build: make lint run mypy; document the typed-code convention
df189fc v0.20.0: telemetry becomes machine-drivable, and a read-only token stops being able to write

v0.20.0

8 commits
8235f05 feat(telemetry): make the logs readable by machines, not just people
80282ba fix(telemetry): close the gaps a seven-round verification found
92d8f38 fix(api): read-only tokens could write through any custom endpoint
9674fc9 feat(telemetry): staff log viewer at /smallstack/logs/
bac6001 docs: close the gaps left by the telemetry and JSON-logging work
6be0ef6 feat(telemetry): write logs to the database so a deployment can be debugged from inside it
a41046b fix(logging): emit real JSON and stamp request IDs on every line
dcbd0f8 release: v0.19.0 — operator-grade webhook event selection

v0.19.0

2 commits
a7724c2 feat(webhooks): operator-grade event selection for pairing + endpoints
956779e release: v0.18.0 — scheduler job control console

v0.18.0

2 commits
3d7735a feat(scheduler): redesign the job edit page as a control console
1520fce release: v0.17.0 — alphabetical admin navigation

v0.17.0

2 commits
d19be79 feat(nav): list the admin section A–Z instead of by hand-assigned order
775f0b1 release: v0.16.2 — empty states no longer leak raw template source

v0.16.2

2 commits
18fd550 fix(templates): empty states rendered raw template source to users
38bb679 release: v0.16.1 — timezone-correct calendar bounds + AST opt-in detection

v0.16.1

3 commits
2a92a0a fix(doctor): detect enable_api opt-ins by AST, matching mcp_doctor
472420a fix(calendar): compare DateTimeFields against aware month boundaries
9d7dcd2 release: v0.16.0 — calendar volume guard + related-tab and doctor fixes

v0.16.0

4 commits
9b8a3b0 fix(doctor): stop reporting test-module CRUDViews as unregistered opt-ins
9ee4a88 feat(calendar): cap events rendered per day, with a "+N more" drill-down
450f00e fix(crud): related tabs 500 without DETAIL, and rendered child rows via parent hooks
68a56f8 release: v0.15.2 — palette-correct light mode + invisible-control fixes

v0.15.2

9 commits
7304b42 fix(palettes): give django a light block and set --link-fg on every palette
f93a9e5 fix(theme): make invisible controls palette-correct on gold + high-contrast
6564c25 build: add pre-commit hook running ruff + mypy
87b6521 chore(typecheck): widen mypy scope to all remaining apps
07afe77 chore(typecheck): widen mypy scope to apps/smallstack (framework core)
4b3f513 chore(typecheck): widen mypy scope to usermanager + tokenmgr + explorer
c2f3303 chore(typecheck): widen mypy scope to scheduler + webhooks
9d14e9c fix(datasets): typecheck under mypy + fix offset string-coercion bug
d12b0ff release: v0.15.1 — F4 test-coverage backfill

v0.15.1

5 commits
6a04d69 test(crud): cover HTML bulk views — update/delete/form (review F4)
ba815d3 test: cover REST bulk-update + MCP write handlers (review F4)
7e21c49 test(api): cover auth endpoints — register, password change, admin reset (review F4)
b58c096 test(search): cover PostgresFTSBackend 0%->83% (review F4)
f92281a release: v0.15.0 — secure-by-default CRUDView auth, make typecheck, drop debug-toolbar

v0.15.0

3 commits
4325c27 feat(crud)!: secure-by-default auth — CRUDViews require login unless public
672501f feat(dev): add mypy type-checking (make typecheck); remove django-debug-toolbar
2c715ae release: v0.14.3 — codebase-review fixes (XSS, PKCE, deploy-check, dead-code)

v0.14.3

6 commits
586b8ae review(round-2): fix fresh-clone check --deploy (F9) + restore examples tests (F10)
9694cd4 fix(search): remove obsolete test_phase2_integration (imports deleted modules)
9db54da review(round-1): fix XSS + PKCE timing, delete dead search layer, test integrity
ebbfc41 docs(readme): bump version badge to 0.14.2
990f74c docs: remove quality report-card system; refresh bundled README
4e99be7 release: v0.14.2 — https absolute URLs behind kamal-proxy

v0.14.2

4 commits
7c1c236 fix(production): trust X-Forwarded-Proto behind the proxy → https absolute URLs
05b9d4b docs(readme): reframe around "one backend, many roles"; drop report-card section
b7c69db docs(help): add Webhooks and RSS/Atom Feeds reference pages
5771491 release: v0.14.1 — reproducible Docker builds + mcp_doctor AST fix

v0.14.1

3 commits
480f579 fix(mcp): detect enable_mcp opt-ins via AST, not substring match
ce5187c fix(docker): install from the frozen uv.lock for reproducible prod builds
fd5cef0 release: v0.14.0 — Django 6.1 + email MAILERS migration

v0.14.0

6 commits
54a4fb2 test: silence pre-existing naive-datetime + ResourceWarning noise
1f31eb6 refactor(email): migrate to Django 6.1 MAILERS + drop deprecated fail_silently
97bc84b chore(deps): upgrade Django 6.0 → 6.1
2446ec0 fix(a11y): WCAG 2.1 AA follow-ups across theme, CRUD, feeds surfaces
c39ed1e fix(feeds): enforce master switch, Django-6 enclosure, consume-side auth
a856272 release: v0.13.13 — accessibility foundation + RSS/Atom feeds surface

v0.13.13

3 commits
bffe35a feat(feeds): first-party RSS/Atom publish + consume surface (apps.feeds)
cfa976d feat(a11y): accessibility primitives + WCAG-AA fixes across the theme
229f6fe release: v0.13.12 — Postgres search hardening + search diagnostics

v0.13.12

5 commits
229c731 fix(api): api_view no longer force-parses multipart/form bodies as JSON
984940d fix(theme): make bare-button styling truly zero-specificity in all states
0fb70c3 perf(api): restrict list-endpoint SELECT to serialized columns via .only()
a3bc253 feat(search): Postgres out-of-the-box hardening + search diagnostics
ccb261f release: v0.13.11 — datasets bucketed grouping + drilldown (R8)

v0.13.11

2 commits
8d21257 feat(datasets): R8 — bucketed grouping in series() + bucket drilldown
1f92b4f release: v0.13.10 — datasets hardening (filterable, paging, ratio measures, date ranges)

v0.13.10

2 commits
5d98f0a feat(datasets): downstream hardening — filterable, queryset seam, paging, ratio measures, date ranges
3105566 release: v0.13.9 — datasets @dataset primitive + help RAG

v0.13.9

6 commits
e426f80 feat(datasets): scalar mode, FK expansion, and hardened API/MCP surfaces
9bbf05a chore(datasets): complete type annotations on the datasets module
004d6a9 docs(datasets): add datasets.md skill — schema introspection for UI builders
a9f1112 feat(datasets): @dataset primitive — filtered querysets as typed rows/columns
b86573c feat(help): lexical RAG passage index + search_help_docs MCP tool
bc68644 release: v0.13.8 — webhooks foundation

v0.13.8

20 commits
a67d69d Merge webhooks foundation into main (v0.13.8)
38ce43d docs(webhooks): update AI-skill routing + refs for the reshape
c763ea2 feat(webhooks): strict is_paired key so pairing never adopts a hand-made object [F-031]
22b10ad fix(webhooks): harden sc webhook pair — stable slug, two secrets, honest UX [F-031]
5e93347 Integrate acceptance-verified webhooks foundation reshape
dfd45c0 docs(webhooks): add 'Recipes per service' matrix to webhooks.md
90ffe01 fix(webhooks): surface pair + bulk replay in the webhook command help [F-030]
07d6f9a fix(webhooks): doctor WARN + docs for unresolved webhook origin [F-029]
84870a6 feat(webhooks): DX + docs — filter picker, doctor hints, webhooks.md [F-015][F-017][F-018][F-024][F-013]
c5dc716 feat(webhooks): Azure Event Grid reference adapter — all four seams, zero core edits [F-028]
a3902b5 feat(webhooks): one-step S2S pairing + backward-compat envelope upgrade [F-027][F-014]
aa4e03e feat(webhooks): expose + prove the four extension seams [F-019][F-025][F-016][F-026]
3527fe1 feat(webhooks): stable event_id, Retry-After, bulk dead-letter replay [F-021][F-022][F-023]
2157deb feat(webhooks): loop guard + seam scaffolding foundation [F-020]
a5693c7 fix(lint,tests): drop unused QueryDict import + order-independent MCP tool tests [F-012]
093a27a docs(webhooks): flag-table rows + no-retry/REST-path/gotcha fixes [F-007,F-009]
2eecf16 fix(webhooks): ops polish — doctor WARN, sc flags, monitor drill-down, disabled hints [F-003,F-008,F-010,F-011]
44bed28 feat(webhooks): secret write-path + detail-page actions [F-004,F-005]
c14611e fix(crud): native-value form bridge for scripted surfaces [F-001,F-002,F-003,F-006]
261745c docs(changelog): backfill compare-link refs for v0.13.3–v0.13.6

Theme Settings

Choose the color mode for your app.

The accent color for your app.

Choose the font family that fits your app.

Choose the gray shade for your app.

Choose the border radius factor for your app.

Choose the page layout for your app.