Changelog

Recent product updates

2026-02-22

Features

  • ui: consolidate toast notifications
  • auth: log sign-in errors for debugging and monitoring
  • profile: continue issue 43 ban notice and appeal flow
  • moderation: hide active banned user content
  • profile: show ban status notice on user's own profile page

Fixes

  • admin: stabilize dashboard fetch hook effect dependencies
  • toasts: avoid global toast pre-dismiss race
  • toasts: address PR review feedback
  • auth: address all PR #65 review comments
  • api: address new pr review comments
  • auth: address pr review hardening feedback
  • auth: redirect to profile only for banned users
  • auth: allow banned sign-in with restricted account access
  • moderation: honor admin override in comment visibility counts
  • auth: bypass cached roles for authorization
  • cache: align following feed counts and invalidations
  • cache: address remaining review thread issues
  • cache: address PR review follow-up comments
  • cache: adjust comment count cache invalidation to use batch function

2026-02-21

Features

  • layout: add admin-only hamburger menu in header
  • admin: add resilient widget refresh status indicators
  • bot: implement specific issue flag (pnpm bot:issue <number>)
  • bot: add production-ready autonomous implementation system
  • admin: add react-datepicker for ban end date
  • admin: add datepicker to ban end date
  • admin: add role-based protection for ban/disable actions
  • bans: add ban appeal UI on home page for banned users
  • comments: add graceful error handling with toast messages
  • ui: hide post/comment engagement UI for banned/disabled users
  • posts: prevent banned/disabled users from post engagement actions
  • admin: hide ban button for already-banned users and show banned status badge
  • admin: add ban management UI and environment validation
  • admin: add site administration for bans, appeals, and content moderation

Fixes

  • admin: address widget refresh review feedback
  • account: support Escape cancel in public name editor
  • account: save public name edits on Enter key
  • admin: sync dashboard time-window labels with selected filter
  • pr-review: address GitHub Copilot PR review comments
  • api: standardize 4xx error payloads
  • api: standardize ban validation errors
  • admin: handle ban errors without throw
  • ui: make datepicker visible above dialog
  • ui: render datepicker outside dialog
  • ui: restore datepicker icon click
  • ui: match datepicker icon to input text
  • ui: improve datepicker icon contrast
  • admin: hide unavailable user actions
  • bans: prevent resubmission of appeals after denial
  • admin: correct request body field for appeal grant/deny API
  • posts: add HTTP status to delete errors and close dialog on failure
  • comments: close delete dialog on both success and error
  • admin: add DELETE handler for removing user bans
  • bans: respect unique constraint on userId by updating existing bans instead of creating new ones
  • api: prevent duplicate bans and improve error logging in ban endpoint
  • ui: change TextPromptDialog description container from p to div to support nested JSX elements
  • api: correct ban response format to match BanManagementWidget interface expectations
  • admin: allow empty end date in ban dialog since it is optional
  • admin: render ban duration dialog description with proper HTML line breaks instead of literal \n characters
  • tests: resolve TypeScript errors for process.env assignments
  • build: correct instrumentation import path and remove deprecated config

2026-02-20

Features

  • admin: Add real-time dashboard with analytics widgets
  • admin: implement privilege-based role assignment
  • admin: add role assignment API endpoints
  • error-handling: add global error pages and admin route with friendly messages
  • auth: add user roles and auditing

Fixes

  • admin: Add missing timeWindow prop to test component renders
  • Add comprehensive test coverage for admin dashboard API routes and fix data exposure
  • admin: Address all PR review issues - complete dashboard implementation
  • admin: address all PR review comments
  • tests: wrap async state updates in waitFor to eliminate act() warnings
  • auth: address PR feedback for roles

2026-02-17

Features

  • social: add profile pictures to FollowListModal
  • social: add inline follow buttons with icon variant
  • social: implement user following system
  • profile: add authored post feed to profile pages
  • home: remove 'Welcome to Down In A Hole' title
  • layout: move Create Post button to header

Fixes

  • follow: normalize handle to lowercase in follow endpoints
  • api: address PR review feedback on user posts endpoint
  • posts: ensure feed refreshes when post created in header
  • posts: handle PostFeedRefresh context outside provider

2026-02-15

Features

  • posts: add author-only analytics details section on post detail
  • layout: make header sticky
  • comments: animate reply editor transitions
  • comments: cancel reply editor on Escape
  • posts: add unique view counts with tooltip
  • comments: sync parent counts and improve count labels
  • comments: submit comments on enter and remove post buttons
  • account: reorganize profile sections and enforce edit focus behavior
  • layout: add changelog footer link and two-column grouping
  • changelog: add public changelog page from generated history
  • users: add editable public name with handle fallback
  • comments: add owner-only soft delete with continuity placeholder
  • posts: add owner-only soft delete with dialog confirmation
  • comments: add signed-in comment and reply inputs
  • comments: add expandable comments tray with nested replies
  • ui: add SVG favicon and header brand icon
  • track post views from feed cards
  • implement post view tracking analytics
  • auto-refresh feed when posts are created

Fixes

  • posts: address copilot review feedback for analytics
  • views: exclude post owner from view tracking
  • changelog: remove commit hashes from public entries
  • comments: place reply cursor at end of prefilled mention
  • markdown: auto-link @handle mentions in posts and comments
  • comments: animate comments tray open/close before unmount
  • move view count to bottom left of post card

2026-02-14

Features

  • Add post detail page
  • Add post feed with infinite scrolling
  • Add create post feature with responsive modal dialog
  • conditional sign-out redirect based on route protection status
  • issue-15: implement posts, comments, likes, and views schema
  • add about page with mission statement and link from footer
  • profile: add public handle route
  • account: edit markdown description
  • account: edit handle with validation
  • account: show handle and markdown bio
  • user: add handle and description fields
  • account: add pagination to sign-in history
  • ui: improve AuthStatus visibility and add profile image link
  • app: share layout chrome
  • add account page and sign-in history
  • auth: add prisma auth schema

Fixes

  • Add missing 'beforeEach' import in AuthStatus.test.tsx
  • Replace 'as never' with 'as Response' in fetch mock tests
  • Add proper type annotation for 'this' in HTMLDialogElement mock
  • markdown: enforce https-only links and add mailto support
  • link account email and await params
  • test: correct coverage thresholds and typings
  • resolve auth build errors

2026-02-13

Features

  • add Google OAuth authentication with NextAuth.js

Fixes

  • allow Node 22+ in engines field