Skip to content

v1.1.0

Latest

Choose a tag to compare

@mikeckennedy mikeckennedy released this 07 Nov 04:09
· 1 commit to main since this release

[1.1.0] - 2026-11-06

Fixed

  • websites() / websites_async() returned only the first page of Umami's paged /api/websites listing, silently truncating the list for accounts with more websites than one page. They now follow the page parameter until the reported count is reached (or a page adds nothing new, so a server that ignores page cannot loop) and return the complete list. Single-page accounts still make one request.
  • Self-hosted sends (new_event(), new_page_view(), new_revenue_event() and async twins) sent the literal header Authorization: Bearer None when nobody had called login(). The header is now omitted unless a token is present; Umami's /api/send ignores it either way, so recorded data is unchanged.
  • login() / login_async() now reject whitespace-only usernames and passwords with ValidationError, matching set_url_base() and set_cloud_api_key(); before, they went to the server and came back as a 401. The empty-username message also now says Username cannot be empty instead of Email.

Documentation

  • New user guide on the docs site: Getting started, Sending events, Authentication, Querying stats, Troubleshooting, Testing and CI, Configuration, How it works, and FAQ. The guide pages are also appended to llms-full.txt.
  • The agent skill (skill.md, .well-known/agent-skills/umami-analytics/SKILL.md, .well-known/skills/default/SKILL.md) is now hand-written from umami/skills/umami-analytics/SKILL.md and teaches the rules of the package (setup order, self-hosted vs Cloud, what disable() silences, distinct_id, the bot filter, what each error means) instead of listing API names. The skill is renamed from umami to umami-analytics, so its .well-known path changed. umami/skill_extra_body.md is folded into it and removed.
  • Every public function, model, and exception now has an Example: section in its docstring, rendered on the reference pages and in llms-full.txt. The package docstring states that there is no CLI and no environment variables are read, and names the three exception types callers see.
  • Docstring Raises: sections for new_event(), new_revenue_event(), and their async twins now list a blank event_name as a ValidationError cause.
  • README: install shows uv add and pip install and warns about the unrelated umami package; the Documentation section links each guide page; the tracking-disabled bullets say exactly what still contacts the server and that the send functions return {}; the Cloud section says the two modes are exclusive; the "Login" feature bullet no longer implies username/password login works on Cloud.
  • scripts/build_docs.py now fails the build when llms.txt, llms-full.txt, skill.md, the .well-known skill copies, the user guide, sitemap.xml, robots.txt, or search.json are missing from the output, or when llms-full.txt lacks a guide page. The post-build patch of the generated skill's install command is removed; Great Docs fixed that in 0.16.0 and the skill is hand-written now. The great-docs dev dependency is floored at 0.17.0, the version the build was verified on, in both the [dev] extra and a new umami/requirements-dev.txt that mirrors it.