diff --git a/CHANGELOG.md b/CHANGELOG.md index 801f2a6..651b123 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,19 +8,6 @@ the git tags (`vX.Y.Z`) and `daybook_project.__version__`. _Nothing yet._ -## [0.2.1] — 2026-09-04 - -### Added -- Top-bar **avatar**: a round initials badge (deterministic per-user color) - replaces the gear/username button; lays the groundwork for profile photos. -- Django admin now registers `ApiKey` and `TagColor`, so `/admin/` is complete - as an operator break-glass tool (key value shown read-only). - -### Changed -- Settings nav regrouped into **You** (Account, API Keys, Storage, Demo Data) - and a superuser-only **Admin** (Users) section, with About on its own — the - personal/admin split now mirrors who each setting affects. - ## [0.2.0] — 2026-09-04 ### Added @@ -98,8 +85,7 @@ First tagged release. - Dockerised (Gunicorn + whitenoise), SQLite, `git`-based deploy with a runbook (`deploy/cloud_agent_deploy.md`) and health check. -[Unreleased]: https://git.cygnus.systems/peter/daybook/compare/v0.2.1...HEAD -[0.2.1]: https://git.cygnus.systems/peter/daybook/compare/v0.2.0...v0.2.1 +[Unreleased]: https://git.cygnus.systems/peter/daybook/compare/v0.2.0...HEAD [0.2.0]: https://git.cygnus.systems/peter/daybook/compare/v0.1.1...v0.2.0 [0.1.1]: https://git.cygnus.systems/peter/daybook/compare/v0.1.0...v0.1.1 [0.1.0]: https://git.cygnus.systems/peter/daybook/releases/tag/v0.1.0 diff --git a/artifacts/admin.py b/artifacts/admin.py index 347749d..0a0d7f2 100644 --- a/artifacts/admin.py +++ b/artifacts/admin.py @@ -1,6 +1,6 @@ from django.contrib import admin -from .models import ApiKey, Artifact, Asset, TagColor, UserProfile +from .models import Artifact, Asset, UserProfile @admin.register(Artifact) @@ -21,18 +21,3 @@ class AssetAdmin(admin.ModelAdmin): list_display = ("id", "owner", "artifact", "content_type", "size_bytes", "created_at") list_filter = ("owner", "content_type") search_fields = ("id",) - - -@admin.register(ApiKey) -class ApiKeyAdmin(admin.ModelAdmin): - list_display = ("name", "user", "key", "created_at", "last_used_at") - list_filter = ("user",) - search_fields = ("name", "key", "user__username") - # The key value and timestamps are system-managed; show but don't hand-edit. - readonly_fields = ("key", "created_at", "last_used_at") - - -@admin.register(TagColor) -class TagColorAdmin(admin.ModelAdmin): - list_display = ("name", "color") - search_fields = ("name",) diff --git a/artifacts/templatetags/__init__.py b/artifacts/templatetags/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/artifacts/templatetags/daybook_extras.py b/artifacts/templatetags/daybook_extras.py deleted file mode 100644 index bb27bde..0000000 --- a/artifacts/templatetags/daybook_extras.py +++ /dev/null @@ -1,30 +0,0 @@ -from django import template - -register = template.Library() - -# A small fixed palette. A user's avatar color is picked deterministically from -# their username, so it stays stable across sessions and page loads. -_AVATAR_COLORS = [ - "#4a6ea8", - "#3f8f7b", - "#a3712a", - "#8a4f9e", - "#a3312a", - "#2f7d95", - "#6b7280", - "#7b6a3f", -] - - -@register.filter -def avatar_color(value): - text = str(value or "") - if not text: - return _AVATAR_COLORS[0] - return _AVATAR_COLORS[sum(ord(c) for c in text) % len(_AVATAR_COLORS)] - - -@register.filter -def avatar_initial(value): - text = str(value or "").strip() - return text[0].upper() if text else "?" diff --git a/daybook_project/__init__.py b/daybook_project/__init__.py index f7e7251..b5b7a6a 100644 --- a/daybook_project/__init__.py +++ b/daybook_project/__init__.py @@ -1,4 +1,4 @@ # Single source of truth for the app version. Bump this, commit, then tag the # commit `vX.Y.Z` and deploy. Surfaced on Settings -> About and in # GET /api/capabilities ("version"). -__version__ = "0.2.1" +__version__ = "0.2.0" diff --git a/static/daybook.css b/static/daybook.css index 805b76b..203eacf 100644 --- a/static/daybook.css +++ b/static/daybook.css @@ -128,42 +128,6 @@ body { border-color: var(--control-border); } -.avatar-button { - background: transparent; - border: 0; - border-radius: 50%; - cursor: pointer; - line-height: 0; - padding: 2px; -} - -.avatar-button:hover .avatar, -.avatar-button:focus-visible .avatar { - box-shadow: 0 0 0 2px var(--content-bg), 0 0 0 4px var(--control-border); -} - -.avatar { - align-items: center; - border-radius: 50%; - color: #fff; - display: inline-flex; - font-size: 0.9rem; - font-weight: 600; - height: 2rem; - justify-content: center; - line-height: 1; - width: 2rem; -} - -.user-menu-name { - border-bottom: 1px solid var(--control-border); - color: var(--muted); - font-size: 0.8rem; - font-weight: 600; - margin-bottom: 0.25rem; - padding: 0.5rem 0.8rem; -} - .user-menu-dropdown { background: var(--surface); border: 1px solid var(--control-border); @@ -1004,21 +968,6 @@ kbd { padding-bottom: 0.7rem !important; } -.settings-nav-group { - display: flex; - flex-direction: column; - margin-bottom: 0.9rem; -} - -.settings-nav-heading { - color: var(--muted); - font-size: 0.7rem; - font-weight: 700; - letter-spacing: 0.06em; - padding: 0.3rem 0.7rem; - text-transform: uppercase; -} - .settings-panel { max-width: 42rem; padding: 1.6rem 2rem; diff --git a/templates/artifacts/_topbar.html b/templates/artifacts/_topbar.html index c63dfe7..5dbcde5 100644 --- a/templates/artifacts/_topbar.html +++ b/templates/artifacts/_topbar.html @@ -1,4 +1,3 @@ -{% load daybook_extras %}

AgentFeed

@@ -7,12 +6,12 @@ {% if topbar_toolbar %}{% include topbar_toolbar %}{% endif %}
-