All notable changes to this project will be documented in this file.
This project adheres to Semantic Versioning.
- Article share on article detail pages — Web Share or copy on small screens; on
md+, a menu with copy link, system share when available, and Twitter / Facebook share links. New Bengali strings for Share and copy errors.
- Remove unused OpenGraph image generation component.
- ClickHouse resource analytics — view/impression tracking for published articles and public gists, dashboard overview, per-article/gist analytics pages, optional custom date ranges.
- Resource analytics plan documentation (
docs/resource-analytics-plan.md).
- Reading time estimate at 200 wpm with i18n support.
- Improve Open Graph image handling for profile pages.
- Tag article feed layout and styling updates in
TagArticleFeed.
- Profile page Open Graph image for richer link previews.
- Correct TechDiary brand capitalization on profile OG image.
- Add
docs/job-listing.md— master plan for the embedded job board (companies, roles, routes, schema, implementation order).
- Article feed loading skeleton mirrors
ArticleCardlayout and width (author row, text placeholders,aspect-videomedia, action row). - Article card cover uses
aspect-videofor a consistent aspect ratio with the skeleton.
- Markdown-backed pages at
/pages/[slug](e.g./pages/privacy,/pages/terms-and-conditions) with content insrc/content/, restoring those URLs that previously returned 404. - Frontmatter for page metadata via gray-matter.
- Restore working privacy and terms pages backed by markdown.
- Replace separate legal page routes with a single dynamic
/pages/[slug]route. - Derive page title from the slug; remove a static
PAGE_TITLESmap.
- Remove legacy Cloudflare Worker used for article cleanup (
src/workers/cron-worker.ts). Scheduled cleanup stays on Inngest.
- Add sorter to the dashboard article list.
- Use full queryKey in
cancelQueriesfor dashboard article mutations so cache invalidation matches TanStack Query keys.
- Remove obsolete configuration and type definition files (Wrangler / worker leftovers,
skills-lock.json).
- Articles RSS feed at
/rss/articles(Open Graph–style HTML in descriptions; feature image when present); sidebar “RSS” points at the feed instead of the sitemap. - Navbar notifications open a scrollable popover with the same feed as the dashboard; full page remains available from the popover and sidebar.
- Markdown: bare URLs become links via a shared Markdoc tokenizer (
linkify), aligned with RSS HTML rendering (markdoc-html-string).
- Refactor dashboard notifications page to use shared
MyNotificationsFeed. - Remove deprecated Cloudflare cron documentation; assorted README / release-note docs; remove stray
issue93-body.md. - Chore: drop unused Markdoc import in
ArticleEditor.
- Realtime UI updates via Pusher/Soketi + TanStack Query invalidation (Phase 1 & 2) (
3338a22) - Migrate article cleanup cron from Cloudflare Worker to Inngest (
1795485) - Enhance reaction and comment handling with unique IDs (notification / event idempotency) (
c306fea)
- Add missing comma in
ArticleFeedfor array splicing (329bc8a) - Make article drafted when scheduled for deletion (
8a83b92)
- Improve error handling in notification persistence and publishing (
9f59d15) - Update
publishMessageusage for consistency and error handling (802dbb3) - Standardize Pusher event handling with
REALTIME_PUSHER_EVENTS(46fb559) - Refine
listenChanneland notification handling (50fa1d0) - Update Pusher integration and environment variable validation (
ce13cb8) - Remove Pusher auth endpoint and adjust client configuration (
311c7f2) - Remove unused import from article cleanup service (
603fa3c) - Update article deletion logic to use
ltefor date comparison (972dcce)
- feat: enhance notification display with actor profile images (c3db2ac)
- feat: update documentation and agent rules for Next.js and file storage strategy (3ef4213)
- fix: update profile photo handling in notifications (2d4f4be)
- refactor: simplify Notification model's actor property (1d94a84)
- refactor: improve formatting and structure in comment section component (2744811)
- refactor: streamline get_comments function definition (a3d0512)
- feat: add in-app notifications with Inngest queue integration (d70acd2)
- feat: enhance notification system with improved display and payload handling (1f2b650)
- feat: integrate unread notification count in sidebars and navbar (b21f7c0)
- fix: address code review — actor guard, article author username in payload, correct deep links (1f5fe25)
- refactor: clean up and standardize WorkOS skill documentation (b49acae)
- feat: enhance NavbarActions with dropdown menu for creating new entries (eb652b2)
- feat: add unpublished article notice and draft byline support (4528d1a)
- feat: enhance profile page with additional user information and improved article loading states (2458ad7)
- feat: improve user profile experience with enhanced data display and loading states (3dedc30)
- feat: enhance user profile with additional fields and improved loading states (2db6598)
- feat: improve user avatar handling and display in LatestUsers component (ea1fe57)
- refactor: update theme handling and improve layout structure (524ebc4)
- feat: extend resource type support to include GIST across comments and reactions (e4e6a86)
- feat: enhance CommentSection with loading states and improved layout (eaf6639)
- feat: implement resolveArticleExcerpt utility for improved excerpt handling (bccf312)
- fix: enhance comment functionality with update and delete actions (c80f529)
- refactor: improve comment item layout and transition effects (9268b61)
- refactor: adjust layout and styling in ArticleCard and UserInformationCard components (a9caafc)
- feat: add footer with attribution to techdiary.dev in GistCodeImageDialog (b7c15b9)
- feat: add clipboard copy functionality to GistCodeImageDialog (01831a8)
- feat: add image export functionality to GistViewer (f9c31ba)
- fix: improve error handling in bookmark and reaction services (6199497)
- refactor: streamline Gist retrieval logic and enhance error handling (062cac5)
- refactor: enhance bookmarks handling and improve state management (6368aaa)
- docs: update CLAUDE.md to reflect authentication and Gist enhancements (14c7236)
- feat: add Gists navigation links to HomeLeftSidebar and AuthenticatedUserMenu (753074b)
- feat: enhance GistViewer with improved code and markdown rendering (81551e0)
- feat: enhance Gist functionality and navigation (9bd333c)
- feat: enable Partial Prerendering and ISR via cacheComponents (ecf3a6f)
- feat: configure Next.js for standalone output (de04b18)
- feat: enhance HomeLeftSidebar with dynamic tag fetching and user session handling (dde7f7a)
- feat: improve SEO across metadata, sitemaps, and structured data (e8a0f0b)
- feat: integrate WorkOS authentication and update user model to include auth_id (90ab3c6)
- feat: make article title optional and generate unique untitled-{random} fallback (cd33107)
- feat: add LivecodeTag component for interactive code examples and integrate Sandpack support (508a013)
- feat: add gallery image support in ArticleCard and extract image URLs from markdown (eb01f71)
- fix: handle edge case for bookmark status retrieval when user is authenticated (40b26f3)
- fix: return bookmarked false for unauthenticated users in bookmarkStatus (6b3068f)
- fix: update link text in ProfileNavigation from "My articles" to "Articles" (7b47c3e)
- fix: limit gallery images to a maximum of 4 in ArticleFeed component (a1db74c)
- fix: update avatar placeholder URL to use initials instead of personas (7cb7210)
- fix: update avatar utility function for consistency (f70e1bb)
- refactor: remove next.config.mjs and update file path handling in opengraph-image.tsx (5be4650)
- chore: update dependencies and improve TypeScript configuration (517e709)
- chore: update next dependency to ^16.1.6 (5051235)
- refactor: update authentication links and streamline logout process in Navbar (56926e9)
- chore: update zod to 3.25.0 and refactor imports to zod/v4 (434d72e)
- refactor: replace AlertDialog with Dialog component (25a5804 / c0f89c0)