Open Source on GitHub
A django starter for internal apps that leverages the include admin theme and components.
v0.29.0
2 stars
1 forks
12 issues
Changelog
Unreleased
- 7ea2c2c: release: v0.29.0 — calendar entry pages, in-place day selection, .ics subscriptions
v0.29.0
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 7c63113: fix(heartbeat): prorate daily expected checks; SLA-scope the summary counts
- 8546681: fix(emails): one host setting satisfies email links and webhooks alike
- 79053c4: test(heartbeat): stop pinning brand name and one theme's boolean glyphs
- 9a9b082: release: v0.21.3 — heartbeat summary corruption fix + help-docs gap closure