emichaud/django-smallstack

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

v0.29.0 2 1 forks 12 issues

Unreleased

3 commits
a722177 fix(blog): /smallstack/blog/ lands on the posts list instead of 404
9b74682 fix(datasets): one form for Apply + Roll up; dark native date pickers
7ea2c2c release: v0.29.0 — calendar entry pages, in-place day selection, .ics subscriptions

v0.29.0

3 commits
d75caf5 feat(calendar): own design for the entry and view pages; .ics subscriptions work
a5a5b05 feat(calendar): day selection keeps your place; picker matches the grid height
552bfa4 release: v0.28.0 — calendar app, agent discovery, starter-site pages

v0.28.0

14 commits
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

v0.27.1

2 commits
17062e9 feat(datasets): page the browser index, 10 per page by default
326ebeb release: v0.27.0 — bundled datasets, a dataset browser, and row links

v0.27.0

3 commits
b05c276 fix(activity,api,datasets): distinct() that wasn't, and the one staff table that didn't resize
a176b2d feat(datasets): bundled framework datasets, a staff browser, and row links
c822faf release: v0.26.0 — activity drilldowns, probing detection, resizable tables

v0.26.0

3 commits
4385d4e feat(activity): user + resource drilldowns, time windows, and a probing warning area
b24babb feat(crud): resizable table columns + type-derived default widths
a920b08 release: v0.25.2 — a per-app typing ratchet

v0.25.2

3 commits
52f03e0 chore(utils): remove two stray phone-import stubs
012bebe chore(types): finish the signatures and add a per-app typing ratchet
4d1cf0d release: v0.25.1 — enable_rss removed; feeds are a publishing surface

v0.25.1

2 commits
75c525f feat(feeds)!: remove enable_rss; feeds are a publishing surface
d3e7915 release: v0.25.0 — blogs + newsletters, and SmallStack framed as a platform

v0.25.0

13 commits
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

v0.24.0

2 commits
1d9fee4 feat(skills): generate the skill index, and gate it in lint
6b7d34b release: v0.23.1 — readable --worker-id labels on the shipped workers

v0.23.1

2 commits
187be26 fix(tasks): give the shipped workers a readable --worker-id label
6253541 release: v0.23.0 — background tasks survive a dead worker, and can retry

v0.23.0

10 commits
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

v0.22.0

4 commits
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

v0.21.11

2 commits
f6adad0 fix(datasets): apply filters to computed (annotated) columns
74658a1 release: v0.21.10 — help count perf on Postgres + downstream-friendly tests

v0.21.10

6 commits
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)

v0.21.9

7 commits
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

v0.21.8

6 commits
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

v0.21.7

9 commits
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

v0.21.6

2 commits
ab8837d fix: two Postgres-only failures hidden by SQLite's forgiving semantics
e7a773b release: v0.21.5 — mid-fold day false-outage fix on the 90-day timeline

v0.21.5

2 commits
ddbd0cb fix(heartbeat): sum a mid-fold day's summary and raw halves, never choose
a630ec8 release: v0.21.4 — status-page accuracy (prorated summaries) + config ergonomics

v0.21.4

2 commits
7c63113 fix(heartbeat): prorate daily expected checks; SLA-scope the summary counts
8546681 fix(emails): one host setting satisfies email links and webhooks alike

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.