Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: deva55/codu
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: develop
Choose a base ref
...
head repository: codu-code/codu
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: develop
Choose a head ref
Checking mergeability… Don’t worry, you can still create the pull request.
  • 11 commits
  • 259 files changed
  • 5 contributors

Commits on Oct 18, 2025

  1. Fix: Hotkeys stop working after switching between preview and edit mo…

    …des codu-code#1298 (codu-code#1300)
    
    * hotkey fix for the editor
    
    * Fix hotkeys not working after preview mode toggle
    
    ---------
    
    Co-authored-by: Niall Maher <nialljoemaher@gmail.com>
    ai-engineer-devansh-singh and NiallJoeMaher authored Oct 18, 2025
    Configuration menu
    Copy the full SHA
    4a1228d View commit details
    Browse the repository at this point in the history
  2. fix(sponsorship): open sponsor links in a new tab (codu-code#1307)

    * fix(sponsorship): open sponsor links in a new tab
    
    * Update app/(app)/sponsorship/page.tsx
    
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    
    ---------
    
    Co-authored-by: Niall Maher <nialljoemaher@gmail.com>
    Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
    3 people authored Oct 18, 2025
    Configuration menu
    Copy the full SHA
    f9d5809 View commit details
    Browse the repository at this point in the history
  3. Upgraded @aws-sdk packages from 3.669.0 to 3.740 (codu-code#1308)

    Co-authored-by: Niall Maher <nialljoemaher@gmail.com>
    darrenomight and NiallJoeMaher authored Oct 18, 2025
    Configuration menu
    Copy the full SHA
    5e5e007 View commit details
    Browse the repository at this point in the history

Commits on Dec 16, 2025

  1. Upgrade to Next.js 16, React 19, and modernize dependencies (codu-cod…

    …e#1312)
    
    * feat: Upgrade to Next.js 16, React 19, and modernize dependencies
    
      - Upgrade Next.js from 14.2.21 to 16.0.7
      - Upgrade React/React-DOM from 18.3.1 to 19.2.1
      - Upgrade next-auth from 4.x to 5.0.0-beta.30 (Auth.js)
      - Upgrade tRPC from v10 to v11.7.2
      - Upgrade TanStack React Query from v4 to v5.90.12
      - Upgrade Zod from 3.x to 4.1.13
      - Upgrade Sentry from 8.x to 10.29.0
      - Upgrade Framer Motion from 11.x to 12.23.25
    
      Breaking changes addressed:
      - Convert all page params to async (Next.js 16 requirement)
      - Migrate headers() to async function calls
      - Update next-auth to new Auth.js v5 API with handlers export
      - Replace 'loading' status with 'pending' (React Query v5)
      - Migrate ESLint from .eslintrc to flat config (eslint.config.mjs)
      - Update Zod error API (error.errors → error.issues)
      - Fix React 19 type changes (ChildNode → React.ReactNode)
      - Update TRPCReactProvider to accept serialized headers object
    
    * feat: Upgrade to Node.js 24 and modernize welcome email
    
      - Update Node.js from v20 to v24 (.nvmrc and volta config)
      - Migrate nodemailer to v7 with AWS SESv2 API
      - Update dependencies for React 19 compatibility (@t3-oss/env-nextjs,
        next-themes, react-highlight-words)
      - Configure GitHub Actions to use .nvmrc for Node version
      - Separate newsletter subscription and welcome email error handling
      - Redesign welcome email template with modern styling (no images for
        better deliverability)
    
    * fix: Add error handling and fix typos in auth flow
    
      - Add try/catch for banned user check with fail-closed security pattern
      - Fix "Excluisve" typo to "Exclusive" in welcome email subject
      - Fix passwordless email recipient (remove hardcoded debug name)
    
    * fix: Resolve React 19 compiler ESLint errors
    
      - Replace useState+useEffect patterns with useSyncExternalStore for
        client-side detection (auth, ThemeToggle, Search)
      - Rewrite useLocalStorage hook to use useSyncExternalStore
      - Convert setState-in-effect patterns to useMemo where applicable
      - Move Placeholder component outside render to fix "cannot create
        components during render" error
      - Replace <a> with <Link> in company page
      - Simplify CustomTextareaAutosize to avoid mutating prop refs
      - Restructure settings page to avoid JSX in try/catch
      - Add eslint-disable comments for intentional patterns
      - Ignore cdk/ directory in ESLint config
    
      Reduces ESLint errors from 23 to 0 for deployment compatibility.
    
    * style: Apply Prettier formatting and fix MDX syntax
    
    Format code with Prettier across multiple files and fix markdown
    bold/italic syntax in MDX content to use proper triple-asterisk notation.
    
    * Update next to 16.10
    
    * Update article tests
    
    * Fix types
    NiallJoeMaher authored Dec 16, 2025
    Configuration menu
    Copy the full SHA
    672bd65 View commit details
    Browse the repository at this point in the history

Commits on Dec 28, 2025

  1. Add jsdom to external packages (codu-code#1315)

    * refactor: replace Children.toArray with Array.from for loading components
    
    Add jsdom to external packages
    
    * fix: update import path in next-env.d.ts and standardize quotes in next.config.js
    
    * fix: streamline loading component rendering in Articles, Notifications, and SavedPosts pages
    NiallJoeMaher authored Dec 28, 2025
    Configuration menu
    Copy the full SHA
    775b5c8 View commit details
    Browse the repository at this point in the history
  2. Remove isomorphic-dompurify and add sanitize-html with types (codu-co…

    …de#1316)
    
    * chore: remove isomorphic-dompurify and add sanitize-html with types
    
    * fix: replace TiptapExtensions with RenderExtensions for server-safe HTML generation
    NiallJoeMaher authored Dec 28, 2025
    Configuration menu
    Copy the full SHA
    ead81ed View commit details
    Browse the repository at this point in the history

Commits on Jan 2, 2026

  1. feat(newsletter): migrate to Beehiiv API for subscription management (c…

    …odu-code#1321)
    
    * feat(newsletter): migrate to Beehiiv API for subscription management and update privacy policy
    
    * fix(tou): add missing line breaks for improved readability in Terms of Use
    
    * fix: update last updated date to January 02, 2026 in Privacy Policy and Newsletter Terms of Use
    NiallJoeMaher authored Jan 2, 2026
    Configuration menu
    Copy the full SHA
    1bdefc7 View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2026

  1. Feat/aggregator (codu-code#1322)

    * feat(db): add content aggregator schema and Reddit-style voting
    
      - Add feed_source, aggregated_article, and aggregated_article_vote tables
      - Add ContentReport table for moderation with reason tags
      - Add post_vote table for Reddit-style upvote/downvote on posts
      - Add upvotes/downvotes columns to Post table
      - Migrate existing post likes to upvotes with data migration SQL
      - Update seed data for new content types
    
    * feat(api): add feed, content, and voting API routers
    
      - Add feed router with getFeed, vote, bookmark, getCategories procedures
      - Add content router for unified content management
      - Add discussion router with Reddit-style upvote/downvote
      - Add report router for content moderation queue
      - Update admin router with getStats, getUsers, getBannedUsers
      - Update post router with vote mutation and trending algorithm
      - Add hot score calculation for trending sort (recency + votes)
      - Update sidebarData to return upvotes/downvotes instead of likes
    
    * feat(feed): add curated developer content feed with RSS aggregation
    
      - Add FeedFilters, FeedItemAggregated, FeedItemLoading components
      - Add feed pages with source profiles and article detail views
      - Add RSS fetcher Lambda for content aggregation
      - Update Algolia indexer for feed content
      - Add og-image utility for Open Graph metadata
      - Support upvote/downvote, bookmarking, and external link tracking
    
    * feat(components): add unified Content card and Discussion voting
    
      - Add ContentCard component for rendering all content types
      - Add ContentMenu with report, share, and edit options
      - Update Discussion component with  upvote/downvote
      - Update ReportModal with reason tag selector (spam, harassment, etc.)
      - Add loading skeletons for content cards
    
    * feat(admin): add admin dashboard, moderation queue, and user management
    
      - Add admin dashboard with platform stats overview
      - Add moderation queue for reviewing reported content
      - Add user management with search, ban/unban functionality
      - Display ban reasons and reviewer info
      - Filter reports by status (pending, actioned, dismissed)
    
    * feat(articles): unify filters and add Reddit-style voting UX
    
      - Replace article page sidebar with bottom action bar
      - Add ArticleActionBar with upvote/downvote, bookmark, share, report
      - Update articles list to use FeedFilters component
      - Add trending sort option with hot score algorithm
      - Unify filter dropdowns between feed and articles pages
      - Map sort options: recent/trending/popular
    
    * fix(seo): update branding from Codu to Codú in metadata
    
    * chore(deps): update dependencies and Next.js types
    
    * chore(deps): update dependencies and add RSS fetch utility
    
      - Update package dependencies
      - Add local fetch-rss.ts script for testing RSS feeds without Lambda
    
    * feat(db): add unified content system and sponsor inquiry schemas
    
      Consolidate migrations into unified content table supporting posts and
      aggregated links. Add sponsor inquiry schema for advertiser contact form.
    
    * feat(api): update routers for unified content and voting system
    
      Add sponsor inquiry router, update content/feed routers for unified
      content table, and add Reddit-style voting endpoints.
    
    * feat(components): add content detail, sponsorship, and unified content components
    
      Add ContentDetail components for article/link display, DiscussionEditor
      for rich text discussions, SavedItemCard, Sponsorship page sections,
      and UnifiedContentCard for the feed.
    
    * refactor(components): update components for unified content system
    
      Update existing components to support unified content table, add voting
      UI to feed items, and update sidebar/trending posts for new data model.
    
    * feat(pages): update pages for unified content and sponsorship
    
      Add advertise page, content detail pages for links/articles, update feed
      and article pages for unified content system, remove alpha sponsorship.
    
    * feat(utils): add content sync script and sponsor email template
    
      Add sync-content-table script for migrating data to unified content
      table, useCreateContent hook, and sponsor inquiry email template.
    
    * chore(config): update site config, sitemap, and RSS feed for unified content
    
    * feat(cdk): update lambdas for unified content indexing
    
      Update Algolia indexer and RSS fetcher lambdas to support unified
      content table structure.
    
    * chore(db): remove old incremental migrations
    
    * refactor: simplify component file names by removing redundant prefixes
    
      Rename verbose component files where folder context already provides clarity:
      - ContentDetail/: Layout, TypeBadge, MetaHeader, ActionBar
      - DiscussionEditor/: Editor, Toolbar, useEditor
      - Feed/: AggregatedItem, ItemLoading, Filters
    
    * feat: enhance article and source profile components with inline source info and author bios
    
    * refactor(votes): remove manual count updates, rely on DB triggers
    
      Database triggers (tr_post_vote_counts, tr_comment_vote_counts) now
      handle all vote count updates. Removing duplicate manual updates
      eliminates double-counting risk.
    
    * fix(votes): migrate components from feed.vote to content.vote
    
      Components were using api.feed.vote which lacked proper count updates.
      Migrated to api.content.vote for consistent behavior.
    
    * feat(scripts): add vote count reconciliation script
    
      Adds safety net script to verify and fix vote count discrepancies.
      Run with: npm run votes:reconcile (or votes:reconcile:dry for dry run)
    
    * feat(cdk): add daily vote reconciliation Lambda
    
      Scheduled Lambda runs at 5 AM UTC daily to reconcile vote counts,
      ensuring DB triggers are working correctly. Runs before Algolia
      indexing to ensure accurate counts before re-indexing.
    
    * feat(auth): auto-grant admin role based on ADMIN_EMAILS env var
    
    * feat(db): link feed sources to user profiles for author attribution
    
    * feat(db): add migrations for legacy Post/Comment data to new schema
    
    * refactor(feed): update RSS fetchers and sitemap to use source user profiles
    
    * chore: remove redundant inline comments from vote mutations
    
    * test(e2e): comprehensive test coverage for unified content system
    
      - Update articles.spec.ts for new feed URLs and voting UI
      - Create feed.spec.ts with 15 tests for filters, voting, bookmarks
      - Create saved.spec.ts with 6 tests for bookmark management
      - Create admin.spec.ts with 13 tests for admin dashboard
      - Add data-testid attributes to VoteButtons, Filters, ContentCard, DiscussionArea
      - Update e2e setup with admin user and new posts table schema
      - Add loggedInAsAdmin utility for admin test authentication
    
      Total: 63 passing e2e tests
    
    * Fixes for linting/prettier
    
    * chore: remove console logs and unused success messages from content creation hooks
    
    * refactor: optimize state management and error handling across components
    
    * fix: update redirect method and adjust sitemap routes for consistency
    
    * fix: update slug handling in metadata generation and comments area styling
    
    * fix: handle potential migration issues for feed sources and articles in sitemap generation
    
    * fix: adjust class order for HeartIcon in CommentsArea component
    
    * fix: add revalidation period for sitemap regeneration
    NiallJoeMaher authored Jan 6, 2026
    Configuration menu
    Copy the full SHA
    72f84be View commit details
    Browse the repository at this point in the history
  2. chore: update next and drizzle-kit dependencies to latest versions (c…

    …odu-code#1323)
    
    * chore: update next and drizzle-kit dependencies to latest versions
    
    * fix: add missing newline at end of _journal.json
    NiallJoeMaher authored Jan 6, 2026
    Configuration menu
    Copy the full SHA
    8dfe296 View commit details
    Browse the repository at this point in the history

Commits on Jan 8, 2026

  1. Feat/layout updates (codu-code#1324)

    * feat(sidebar): add collapsible sidebar with smooth animation
    
      - Add SidebarContext for managing collapsed state
      - Create MinimalHeader with hamburger toggle aligned to sidebar icons
      - Implement AppSidebar component with navigation items
      - Update sidebar-layout with animated width transitions and clipping
      - Adjust sidebar padding to p-3 and hover containment with max-w-9
      - Add pink accent for current page indicator
    
    * feat(layout): integrate collapsible sidebar into app layout
    
    * feat(config): add sidebar navigation items and social link
    
    * refactor(pages): update feed, home, and articles layout styling
    
    * feat(settings): update settings page styling
    
    * refactor(theme): simplify theme provider and remove unused nav code
    
    * refactor(ui): update link component and trending posts loading styles
    
    * chore(assets): add LinkedIn icon and Codú logo
    
    * chore(deps): add new script for sources
    
    * chore(db): update migration and add seed sources script
    
    * refactor(ui): add aria-labels and update layout components
    
      - Add aria-label to header elements for accessibility
      - Update sidebar and navbar layout components
      - Refactor editor navigation styling
      - Minor layout adjustments across page components
    
    * fix(e2e): update test expectations to match current UI
    
      - Update home test to check for "Trending" heading instead of h1
      - Update login test button text to match OAuth buttons
      - Fix articles test to use Create button and correct modal text
      - Add loading state wait and exact matching in my-posts test
      - Remove flaky footer Events link check
    
    * feat(api): add getUserLinkBySlug endpoint and fix myScheduled query
    
      - Add getUserLinkBySlug endpoint for fetching user link posts by slug
      - Fix myScheduled to filter by status="scheduled" instead of "published"
      - Remove unused gt import from drizzle-orm
    
    * feat(editor): add new PostEditor component and E2E test infrastructure
    
      - Add PostEditor with WriteTab and LinkTab for article/link creation
      - Add URL metadata fetching for link posts
      - Add article toolbar with formatting options
      - Add E2E editor tests and test utilities
      - Update E2E setup with link post test data
      - Update slash command and image upload extensions
    
    * feat: add link post support and UI improvements
    
      - Add user link detail page and fetch-metadata API route
      - Add NewsletterCTA component
      - Update draft preview page with improved layout
      - Update feed, articles, and homepage clients
      - Improve header, sidebar, and content layout components
      - Update comments area and unified content card
      - Minor fixes to Search, listbox, and fallback media components
    
    * chore: misc updates and cleanup
    
      - Update auth.ts and next-auth types
      - Add SidebarContext for collapsible sidebar state
      - Add drizzle seed-sources script
      - Update comment router and posts lib
      - Update markdoc editor shortcuts and example tags
      - Remove unused CoduChallenge component
    
    * feat(e2e): enhance publish flow tests with improved wait conditions and selectors
    
    * style: standardize formatting and clean up whitespace across multiple files
    
    * feat(editor): enhance CreateContent component with improved data handling and state management
    NiallJoeMaher authored Jan 8, 2026
    Configuration menu
    Copy the full SHA
    08775f8 View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2026

  1. Fixes to responsive styling (codu-code#1325)

    * feat(editor): add new PostEditor component and E2E test infrastructure
    
      - Add PostEditor with WriteTab and LinkTab for article/link creation
      - Add URL metadata fetching for link posts
      - Add article toolbar with formatting options
      - Add E2E editor tests and test utilities
      - Update E2E setup with link post test data
      - Update slash command and image upload extensions
    
    * style: standardize formatting and clean up whitespace across multiple files
    
    * feat(editor): enhance CreateContent component with improved data handling and state management
    
    * feat: update UnifiedContentCard to display author username conditionally and prevent layout shift with scrollbar-gutter in globals.css
    
    * feat: update layout and styling for ArticlesPage, FeedPage, Home, and Filters components
    
    * style: refine layout and styling for FeedFilters component
    
    * test: enhance article sorting and visibility checks in e2e tests
    
    * fix: resolve ESLint errors and E2E test
       issues
    
       - Remove unused imports from layout.tsx (headers, ThemeProvider, etc.)
       - Remove unused sortAPIToUI mapping from articles/_client.tsx
       - Fix type parameter naming in Filters.tsx (prefix with underscore)
       - Fix networkidle usage in saved.spec.ts (use domcontentloaded)
       - Use platform-aware keyboard modifier in editor.spec.ts (Meta on Mac,
       Control on Linux)
    
    * Add journal entry for lowly gunslinger migration (version 7)
    
    * style: format JSON structure in 0017_snapshot.json and _journal.json for consistency
    
    * fix: make migration 0017 idempotent for CI compatibility
    NiallJoeMaher authored Jan 10, 2026
    Configuration menu
    Copy the full SHA
    d8add79 View commit details
    Browse the repository at this point in the history
Loading