A django starter for internal apps that leverages the include admin theme and components.
| 57cf053 | feat(website): Datasets & Calendars, Blogs & Newsletters, and Prompts pages |
| 08c2d8e | feat: agent discovery (AGENTS.md, Agent Skills, llms.txt) + the write-hook safety net |
| 8ea1200 | docs(help): "Prompting a coding agent" — copy-ready prompts for the first tasks |
| bdba82e | feat(calendar): the Events calendar — the one a person types into |
| 5d89d35 | feat(calendar): provider-backed calendars, cancelled/image, colour pins, work-week default |
| 1fd3e37 | chore(deps): Pillow floor 13.0 (fifteen 12.x CVEs), refresh the lockfile |
| c052276 | feat(scheduler): the day-range board on the jobs page |
| e918b2f | feat(blog,runbook): the day-range board on posts, issues and runbook documents |
| 82a7e62 | feat(calendar): reusable components — template tags, partials, RangeBoardDisplay |
| 1854e3a | docs(changelog): record the ICS UID fix carried in 3188819 |
| 3188819 | feat(calendar): 30/60/90-day board, weekends toggle, grouped day column, views dropdown |
| db577f6 | fix(api,mcp,openapi): advertise MultipleChoiceField as an array of choice keys |
| 65546d4 | feat(calendar): calendar datasets, a merged month grid, saved views, events + ICS API |
| 74a6661 | release: v0.27.1 — paged dataset browser index |
| d2e391e | test(blog): three tests asserted the enumeration oracle; update the contract |
| f801700 | fix(blog): close the enumeration leak for ALL tiers, not two of three |
| 5b990cb | fix(blog): close the remaining MINOR/NOTE findings from the test programme |
| 77bcac5 | fix(blog): make the feature switches and --dry-run mean what they say |
| 8bfa8cc | fix(api,webhooks): serialize() must emit JSON primitives; isolate fan-out |
| bdfd74e | fix(api): walk the MRO when deciding whether a form takes user= |
| e373de3 | fix(api): scope generated writes to the user, and stop 500ing on FileFields |
| dec05b9 | docs(blog): help page for showing posts in a project's own pages |
| 5747377 | fix(tests): restore the MCP tool registries after every test |
| 5b7d224 | feat(search): a worked SearchBuilder example — blog posts render as article cards |
| 2f7a0ac | docs(site): frame SmallStack as a platform to build on, across the shipped pages |
| 93e5726 | feat(blog): blogs + newsletters, with a writing studio and runbook publishing |
| 3103393 | release: v0.24.0 — the skill index agents read is generated, and checked |
| da2fb8f | fix(smallstack): W001's remedy must be the command that works here |
| 3a9b743 | docs: anchor the migration list to migration ids, not a version (N2) |
| d32b623 | feat(tasks): tasks.W005 + the ordering contract for the log takeover (Finding B) |
| 8a7e78b | fix(tasks): widen worker_id, and validate the id on the path tests use (R5b, R5c) |
| 8d1dc65 | fix(tasks): only a reaped child is evidence of a late completion (R5a) |
| a496f68 | fix(tasks): the 0.13 signal filter must not lie by silence or by severity |
| 210a297 | build: pin django-tasks-db to one minor (>=0.13,<0.14) |
| 480fa80 | fix(tasks): run on django-tasks-db 0.13; stop safe_reap closing a caller's connection |
| 6d6f94c | Merge branch 'main' into feat/task-reliability |
| 44f01a9 | release: v0.22.0 — Django security update, dependency refresh, mcp SDK removed |
| 7ce5c56 | chore(mcp): drop the mcp SDK dependency — the protocol is implemented in-tree |
| cb70e6f | chore(deps): refresh dependencies; Django 6.1.2 security update |
| 590274b | feat(datasets): advertise filter widgets for computed columns |
| a2e0229 | release: v0.21.11 — computed-column filters apply instead of returning every row |
| 26032ce | fix(help): count articles without re-parsing the markdown corpus on Postgres |
| a66a971 | test(smallstack): de-couple the W001 tests from the repo's own version |
| 87472c3 | Merge branch 'main' into feat/task-reliability |
| 570e187 | docs(tasks): backoff is the delay's ceiling; two scoping corrections (T4, T5, U5) |
| 2c59dc1 | fix(tasks): a cancelled retry must not be retry input, or hide its resurrection (U4) |
| c0579d3 | release: v0.21.9 — Postgres green across the board (verified on PG 16) |
| 866b865 | fix: three more Postgres-only faults, found by running the suite on PG 16 |
| 0b11c0e | feat(smallstack): warn when the reported version is a stale build artifact (V1b) |
| 596ad3e | docs: UPGRADING states four migrations, its from-version, and the destructive one |
| 11d82b4 | Merge branch 'main' into feat/task-reliability |
| 26e28bf | fix(tasks): silence W001 on a documented opt-out, correct the startup-reap claim (U1, U2) |
| 207fcf3 | fix(tasks): remove the MCP dispatch change swept into feeed7e (U3) |
| 3dca885 | release: v0.21.8 — Postgres test-teardown fix + tokenization docs |
| 4558b3f | test(tasks): pin the T3 guarantee on the shipped email task and its query cost |
| 6848cdf | fix(tests): test-only MCP tables must not FK-constrain accounts_user |
| 82b50cd | docs(tasks): make the double-execution guarantee discoverable (T3) |
| 70a019e | fix(tasks): record a reaped-then-completed task instead of losing the fact (T3) |
| 24eb9e5 | fix(scheduler): advertise the max_retries cap, don't just enforce it (T6, D2) |
| c9dfe33 | release: v0.21.7 — MCP async dispatch keeps ORM work on the request connection |
| afe6adb | feat(tasks): system checks for three silent reliability misconfigurations |
| a212a8c | fix(mcp): dispatch async tools with async_to_sync, not asyncio.run |
| feeed7e | fix(tasks): a worker must not reap the task it is itself running (T2) |
| 76496c4 | fix(tasks): key worker liveness on the process, not the --worker-id (W1, W2) |
| 7ffc466 | docs(tasks): three reaper claims that only held on the defaults (D4, D5, D6) |
| 63b73ed | fix(scheduler): max_retries must not be more aggressive than @retry_policy (D3, D1) |
| 49f3301 | fix(tasks): measure heartbeat staleness on the database clock (W4) |
| c3f0ca5 | feat(tasks): lost-task reaper, opt-in retries, scheduler max_retries |
| a5a538c | release: v0.21.6 — Postgres correctness: search-in-migrations + telemetry connection ownership |
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.