## 2026-06-19 🟢

- Block and mute user relations with API endpoints, CLI emoji-sync command, and content filtering


## 2026-06-18 🟢

- News service with image dedup, AI grading, featured/landing auto-rotation and admin lock
- Server-rendered content pipeline with Telegram pairing, response timing, and admin user index
- AI Markdown reformatting for news articles with usage metering and sidebar cleanup


## 2026-06-17 🟢

- Backup download restricted to primary admin, admin-hidden projects invisible to other admins
- Access token system with CLI management and wildcard file type support
- Access token issuance with JSON/form login endpoint and token lifecycle management


## 2026-06-16 🔥 Big day!

- Gateway admin UI with provider and model routing for OpenAI gateway
- Backup management CLI commands and service layer with configurable data directories
- Audit logging for admin trash restore/purge and notification clear, plus SEO noindex for private projects and sitemap docs page refactor
- Instance lookup by name in addition to uid and slug, new terminal session service
- Keyboard-aware input visibility with ResizeObserver fallback for mobile message layout
- E2E comment hierarchy seed helpers for gists, news and projects
- Optimistic message insertion disabled to prevent duplicate bubbles
- Router tree documented in AGENTS.md with 14 new route entries
- Add dpc binary to container image and set executable permissions
- Remove .html and .svg from allowed upload types and MIME mappings


## 2026-06-15 🟢

- ASGI lifespan handler with background service orchestration and lock-based worker coordination
- Message chunking with sentence-aware splitting and configurable character limits
- Enforce hard test-coverage standard across DevPlace workflows and agents
- Audio file support with inline player and expanded allowed upload types
- Gist comment form integration with card-scoped comment targeting
- Bot account API key adoption for per-user gateway spend attribution


## 2026-06-14 🔥 Massive day!

- Admin/internal database API with CRUD, natural-language query, and read-only SQL execution
- DeepSearch research job queue with CLI prune/clear, Chroma vector store, and date-aware system message composition
- DeepSearch multi-agent researcher with grounded RAG chat and per-session vector store
- SEO Diagnostics tool with CLI management, live WebSocket progress, and static asset cache-busting
- OpenAI-compatible embeddings endpoint with model mapping and usage tracking
- Stealth HTTP client with curl_cffi transport adapter replacing raw httpx for outbound requests
- Bot monitor with live age badges and zoomable screenshots
- Author-interleaved feed ordering across all feed views and tabs
- Author diversity via interleaving (no per-author cap) for home and feed
- devRant API client library and example scripts in Python and JavaScript
- TTLCache-backed cache version reads with invalidation on bump
- Random client IP spoofing for load-testing traffic
- Deepsearch chat component attribute naming from data-* to direct properties
- Replace `python -m agents.validator` with `hawk` across all agent markdown files


## 2026-06-13 🔥 Massive day!

- Three-tier test suite with unit, API, and E2E directories mirroring source and endpoint paths
- Soft-delete audit for bookmarks, comments, follows, polls, project files, reactions, and bug create request event
- Notification preferences with per-user per-channel toggles and admin defaults
- Author diversity enforcement across home page and feed with personalized landing for authenticated users
- Shared free-text search across feed, gists, and projects listings
- Docs search with agent-powered Docii chat and admin-configurable search mode
- Devii agent audit log query action with filterable paginated endpoint
- Router directory-tree convention with admin audit log, AI quota, and container management endpoints
- Initial maintenance agent fleet with per-dimension code quality enforcers
- Unified blob sharding on uuid7 random tail across attachments, project files, and zip service
- Consolidated runtime data directory layout with migration CLI command
- Context-aware window control button visibility with font size boundary detection and minimize/normalize size presets
- Overflow-managed profile tabs with a "more" dropdown for narrow screens
- Startup jitter, randomized browser fingerprinting, and short comment styles for bot realism
- Sidebar search form with hidden field support and configurable placeholder
- Prevent titlebar double-click maximize when clicking buttons in FloatingWindow and DeviiTerminal
- Pin test server to single worker and use upsert for rate-limit settings to prevent spurious 429s
- DEVPLACE_DISABLE_RATE_LIMIT env var to bypass rate limiter in tests and middleware
- Fallback to location.origin when DEVPLACE_DOCS.base is missing
- Add claude-manual task-oriented guide page with cross-reference from claude.html
- Remove PWA install button and associated installer module
- Removed stale test files and fixed Gitea env teardown and ingress proxy test cleanup
- Locustfile seed data expansion and route exclusion documentation


## 2026-06-12 🔥 Massive day!

- Agent report system with codenames, timestamped output streams, and write-budget enforcement
- Tool-scoped payload filtering for worker agents with orchestration tool isolation
- Agent isolation and result caching in Maestro review sweep
- Concurrent read-only fleet check mode with per-agent cost tracking and contextvar-isolated findings
- Admin analytics and AI usage API response keys renamed, password change toggle added
- Gitea-backed bug tracker with list/detail/comment/status and AI-enhanced filing
- Bug detail page with admin/member role rendering and viewer_is_admin context flag
- Changed-files fast mode for maintenance agents with write-allowlist guard
- Partial config save with error reporting and password manager suppression
- Admin route cache-disabling headers via Cache-Control, Pragma and Expires
- Dirty-field tracking and server-side value sync for service config forms
- Rename `is_admin` to `viewer_is_admin` in bug detail schema, router, and template
- Bug tracker unavailable page with JSON and HTML 503 error responses
- Bot comments avoid repeating sibling opinions via thread-aware distinctness prompt
- Default Gitea repository changed from pydevplace to devplacepy
- Remove pytest-xdist parallel test execution, switch to serial single-process test runner


## 2026-06-11 🔥 Massive day!

- Platform-wide soft delete with deleted_at/deleted_by columns and admin trash management
- Owner-or-admin soft-delete enforcement on all content endpoints
- Unified image lightbox with attribute-wired opening and per-user media tab with soft delete
- Autonomous maintenance agent fleet with CLI entry point, Makefile targets, and dependency-free validator
- Seed-finding guided fix mode for maintenance agents with incomplete report tracking
- Audit log tables with CLI recording hooks
- Resolve merge conflict in pagination template and add admin-audit-log endpoint to docs API
- Bots documentation pages and session stop/reset commands
- Reduced nested comment indentation from 1.5rem to 0.25rem per depth level
- Reduce comment indentation multiplier and padding for nested replies
- Switch to dynamic viewport height and remove autofocus from message input
- Inline message layout with responsive height and auto-scroll
- Optional label attribute with hidden empty state for dp-upload component
- Mandatory retoor header added to all devplacepy source files


## 2026-06-10 🟢

- Port conflict detection and test isolation hardening across admin, avatar, bugs, landing, messages, and customization tests
- Container proxy routing via container IP instead of host port, with fake backend network simulation
- XDG-compliant devii tasks database path with DEVII_HOME override
- Project editing endpoint with 125k char body limit and remote URL attachment guard


## 2026-06-09 🔥 Big day!

- Container manager with Dockerfile CRUD, image builds, instance lifecycle, ingress proxy, and CLI commands
- Async project fork service with job queue, CLI management, and shared container image build
- Parallel test execution with per-worker isolated databases, data dirs, and uvicorn subprocesses via pytest-xdist
- Per-user customization suppression toggles with profile UI and Devii tool
- Customization toggle UI with enable/disable state management
- Unified shared Http and Poller utilities across all frontend modules, replacing inline fetch and setInterval patterns
- Responsive refinements for sub-360px screens, touch targets, safe-area insets, and mobile window controls
- Click-to-open profile dropdown with keyboard and outside-click dismissal
- Migrate hardcoded spacing values to CSS custom properties across multiple stylesheets
- Unicode escape normalization for emoji constants across codebase
- Consolidated upload ignore rules into a single directory-level gitignore entry
- Removed unused imports across routers, database, and services
- Remove project_set_private from confirmation-required actions and fix async test helpers


## 2026-06-08 🟢

- Admin AI quota management with CLI and admin panel reset controls
- API key management CLI with backfill command and auth support across session, API key, and HTTP Basic
- Per-project filesystem with directory and file CRUD, upload, and inline editing
- Async zip job framework with CLI management and zip archive download endpoints
- Add mistune dependency to project


## 2026-06-06 🟢

- Reactions, bookmarks, polls, extended sessions, and operational settings


## 2026-06-05 🔥 Massive day!

- Batch attachment linking, deduplicated mention notifications, and idempotent badge milestone checks
- Cursor-based load-more pagination across feed, gists, news and projects
- Canonical slug redirects, cursor-based next-page links, and OG image extraction across feed, gists, news, posts, projects, and profile
- TTLCache with LRU eviction, CLI role management, content unit helpers, database query functions, follow API with XP rewards, and news service with AI grading
- Unified comment form component with mobile touch optimizations across all CSS
- Inline comment previews on post cards with per-comment reply forms
- Comment template with threaded voting, author display, and attachment support
- Post-login redirect with `next` parameter and unauthenticated comment redirect to login
- Login redirect for unauthenticated admin, next parameter support with external URL rejection, and inline comment reply forms
- Seed comments created for all posts instead of only the first
- Replace uuid4 with uuid7 via uuid_utils for push notification JWT jti claims
- Coverage instrumentation for CI and local test runs with HTML report artifact
- Coverage configuration with subprocess measurement support
- Sitemap TTL configurable via environment variable and news_images schema migration
- Kill stale server process and add startup failure detection for Locust targets


## 2026-06-02 🟢

- Multi-worker service lock with cascading vote/comment cleanup on content deletion


## 2026-05-30 🟢

- Leaderboard route with gamification system (XP, levels, badges, stars) and content creation refactor


## 2026-05-28 🟢

- Cursor-based pagination for feed, notifications, and votes with thumbnail extension fallback
- Push registration returns creation flag and only sends welcome notification on first registration


## 2026-05-27 🟢

- AJAX vote buttons with live count updates across posts, gists, projects, and comments
- CSS-only card-link overlay replacing JS-driven data-href navigation


## 2026-05-25 🟢

- Unified notification click-to-navigate with comment anchor highlighting and dismiss refactor


## 2026-05-23 🔥 Massive day!

- Web push notifications with PWA manifest and service worker registration
- Web push notifications with PWA offline shell and install prompt
- Unified badge, notification, and content enrichment system with star tracking helpers
- Aggregate star counts across posts, projects and gists for profile and top-author ranking
- Content editing and deletion with cascading cleanup, avatar image helper, HTTP form POST, text input cursor management, and toast flash utility
- Share button with clipboard copy across detail pages, structured data schemas for gists and news articles, configurable site URL and rate limit, and production proxy headers support
- Production deployment workflow via git merge master into production
- Automatic production deployment on successful master push
- Removed automatic production deployment from CI pipeline
- Admin settings form with Pydantic validation and model-driven save
- Pydantic form models with validation for signup, login, password reset, comments, bugs, admin actions, and posts
- Type-safe integer settings with empty-value skip on admin save
- Input validation tests for votes, posts, profile, and signup endpoints
- Rate-limit environment variable and expanded Locust seed data for gists, notifications, and uploads
- TTLCache with ETag-based HTTP caching for avatar endpoint
- Dynamic language sidebar filtering based on existing gist language codes
- Vendor static assets for CodeMirror, highlight.js, marked, and emoji picker
- Test server log capture via tempfile with reduced log verbosity
- DOMPurify XSS sanitization for client-side rendered markdown content
- Add mobile-web-app-capable meta tag for PWA support
- Topnav notification bell selector scoped to /notifications href
- Fix notification bell icon locator to use explicit href selector instead of first match
- Remove stale import of get_users_by_uids from project_detail endpoint


## 2026-05-22 🟢

- News article HTML sanitization CLI command and database migration


## 2026-05-19 🟢

- Avatar generation exception logging with full traceback
- Fix multiavatar import path and add required arguments to function call


## 2026-05-16 🟢

- Clickable post titles and content with downvote support on feed and detail pages
- Interactive vote buttons and clickable post titles on profile page
- Handle @-mention with preceding text in content rendering
- Unread notification cache invalidation across comments, follows, messages, votes, and mentions
- Compact send button, attachment upload container, and auto-scroll on message thread load
- GistEditor lazy init with modal observer, CodeMirror Rust mode removed, emoji picker module type, source textarea required removed, projects tab spacing and settings button removed
- Add space between icon and label in feed navigation tabs


## 2026-05-15 🟢

- Python 3.13 base image, default port 10500, and nginx template to conf.d migration
- Responsive mobile navigation and messages layout with hamburger menu and back button
- Responsive breakpoint widened from 768px to 1024px for topnav, breadcrumb and page layouts


## 2026-05-14 🟢

- Migrate from deprecated `datetime.utcnow()` to timezone-aware `datetime.now(timezone.utc)` across the entire codebase
- Wait-for-url stabilization in noindex tests for messages and notifications pages
- Disable parallel test execution in CI pipeline


## 2026-05-13 🟢

- Migrate all TemplateResponse calls to pass request as first positional argument
- Attachment linking and deletion refactored into dedicated module with batch support
- Parallelised integration test suite with xdist worker port isolation
- Remove deprecated imghdr dependency and fix icon spacing in bug report buttons
- Replace hardcoded pytest.BASE_URL with conftest BASE_URL in attachment tests
- CI trigger branch from main to master


## 2026-05-12 🟢

- News service with admin curation, landing page articles, and comment support
- Mention notification system across bugs, comments, messages, posts, and projects with user search API
- Gists page with code snippet sharing, voting, and comment integration


## 2026-05-11 🔥 Big day!

- Unified threaded comment system with polymorphic target support across posts, projects, and bugs
- News management system with admin panel, pagination, and SEO sitemap integration
- News background service framework with CLI management, bug reports router, and admin services monitoring
- Admin panel with user management CLI, SEO metadata, and production deployment config
- Multiavatar local SVG generation with WAL mode SQLite and Locust load testing
- CI branch target renamed from main to master and test fixtures refactored for explicit login and seeded database
- Test fixture improvements with debug logging, stderr capture, and extended startup timeout
- Remove hawk static analysis step from CI test workflow


## 2026-05-10 🚀 First commit!

- Initial project scaffold with FastAPI SSR app, auth, feed, posts, comments, projects, profile, messages, notifications, and voting
- DiceBear avatar proxy with style picker on signup and profile, threaded comments
- Image upload support for posts with daily topic display on landing and feed

────────────────────────────────────────────────────────────

Summary: 194 commits over 29 active days. The project launched on May 10 with the initial FastAPI scaffold, auth, feed, and core content features. The biggest pushes came on June 13 (23 commits) delivering the three-tier test suite, soft-delete audit system, notification preferences, and author diversity enforcement; June 23 (23 commits) adding web push notifications, PWA support, content editing/deletion, and production deployment workflows; and June 14 (14 commits) introducing the admin database API, DeepSearch research system, SEO diagnostics, and the stealth HTTP client.

