<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Clivy Changelog Changelog</title>
    <link>https://clivy-one.vercel.app/changelog/clivy</link>
    <description>Latest updates for Clivy Changelog</description>
    <language>en</language>
    
    <item>
      <title>v13.0 - Landing Page</title>
      <description><![CDATA[Clivy now has a proper marketing page at the root URL.

### What's included

- Hero section with animated entrance and gradient headline
- Interactive product mockup showing a fake dashboard with sidebar and entry cards
- "How it works" — three numbered steps: Create → Write → Publish
- Feature grid covering all six core features
- Animated stats counter triggered on scroll
- "Also included" section for secondary features (RSS, reactions, header images, etc.)
- Tech stack strip and final call-to-action
- Responsive design with full dark mode support

The page uses `IntersectionObserver` for scroll-triggered reveal animations and a custom `useCountUp` hook for the stats section. All transitions use `cubic-bezier(.22,1,.36,1)` easing.]]></description>
      <pubDate>Tue, 24 Feb 2026 13:51:01 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nyhlk000304l2y2wmv3at</guid>
    </item>
    <item>
      <title>v12.0 - Email Notifications</title>
      <description><![CDATA[Subscribers now receive automatic email notifications when you publish a new entry.

### How it works

- When an entry status changes to `published`, all active email subscribers for that project receive a notification
- Emails are sent via [Resend](https://resend.com) with a clean, branded HTML template
- Each email includes the project name, entry title, version badge, a markdown snippet, and a direct link to the full changelog
- Emails are sent in batches of 100 to respect API limits
- A `emailNotificationSent` flag on each entry prevents duplicate sends

### Guard rails

- Only fires for entries transitioning *to* published (not re-saves of already-published entries)
- Scheduled entries trigger notifications when the cron job publishes them
- If sending fails, the flag stays `false` so it can be retried]]></description>
      <pubDate>Tue, 24 Feb 2026 13:47:41 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nu79e000004kzb533jy00</guid>
    </item>
    <item>
      <title>v11.0 - Complete UI Redesign</title>
      <description><![CDATA[Every screen in Clivy has been redesigned from scratch. The dashboard and public changelog pages now follow a cohesive design language inspired by Loom, Vercel, and Headway.

### Dashboard

- Persistent sidebar with logo, navigation (Projects / Settings), and user section at the bottom
- Project cards with entry count, subscriber count, and view stats
- Sort projects by last modified, newest, or oldest
- Tabbed project detail view: Entries (table), Subscribers (table), Analytics (bar chart)
- Framer Motion animations on every tab transition and table row

### Public Changelog

- Timeline layout with a vertical line, date separators, and version badges
- Sticky entry headers that attach to the top of the viewport on scroll — with a shadow that fades in when stuck
- Responsive: 3-column grid on desktop (date | timeline | content), stacked on mobile
- Pagination with "Show more" button (5 entries initially, +5 per click)
- Lenis smooth scrolling + scroll-to-top button

### Navigation

- Changelog pages now have their own navbar with a hamburger dropdown
- Links to Home, Dashboard (if signed in), or Sign up / Log in (if signed out)
- Sign-out option with toast confirmation

### Other design touches

- Project settings page accessible per-project
- Website URL field on projects — displayed as a clickable link on the public changelog header
- Animated card entrances throughout the dashboard]]></description>
      <pubDate>Tue, 24 Feb 2026 13:46:48 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nr8ej000104jsps977bwf</guid>
    </item>
    <item>
      <title>v10.0 - Deployed to Vercel</title>
      <description><![CDATA[Clivy is now live on Vercel.

### What it took

Getting Prisma 7 to work with Next.js 16 on Vercel's Turbopack required a few specific fixes:

- Switched from `prisma-client` to the `prisma-client-js` generator for Turbopack compatibility
- Added `postinstall` script (`npx prisma generate`) to `package.json` so the Prisma client generates during Vercel's build step
- Configured `serverExternalPackages: ["@prisma/client", "pg"]` in `next.config.ts`
- Adjusted the cron schedule from every 5 minutes to once daily (`0 0 * * *`) to stay within Vercel's free tier limits

The app is deployed with automatic deploys from the `main` branch.]]></description>
      <pubDate>Tue, 24 Feb 2026 13:44:43 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nqe3h000d04jrda2jk18e</guid>
    </item>
    <item>
      <title>v9.0 - Settings Page</title>
      <description><![CDATA[A unified settings page is now available from the dashboard sidebar.

### Three tabs

- **Account** — Update your name and email, change your password, or permanently delete your account (with a typed "DELETE" confirmation)
- **Projects** — View all projects in a table with inline editing for name, slug, and website URL. Delete projects directly from here
- **Subscribers** — Select a project from a dropdown to view its subscriber list. Remove individual subscribers with one click

### How it connects

- The Projects tab in Settings and the per-project Settings page both edit the same data via the same API routes
- The `?tab=` query parameter lets other parts of the app deep-link to a specific settings tab (e.g., "Project Settings" button in the project detail view links to `?tab=projects`)]]></description>
      <pubDate>Tue, 24 Feb 2026 13:43:19 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nokqd000204lgz76kuqsi</guid>
    </item>
    <item>
      <title>v8.0 - RSS Feed</title>
      <description><![CDATA[Every project now has an auto-generated RSS feed.

Available at `/changelog/{slug}/rss` — standard RSS 2.0 format. Each item includes the entry title with version prefix, the full markdown body wrapped in CDATA, the publication date, and a permalink.

An RSS icon link appears next to the subscribe form on every public changelog page.]]></description>
      <pubDate>Tue, 24 Feb 2026 13:41:46 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nmlac000304l7eaik6ekj</guid>
    </item>
    <item>
      <title>v7.0 - Scheduled Publishing</title>
      <description><![CDATA[You can now write entries and schedule them to publish at a future date and time.

### How it works

- In the entry editor, click "Schedule" to reveal a datetime picker
- Set the date and time, then hit the Schedule button
- The entry is saved with `status: "scheduled"` and `publishedAt` set to your chosen datetime
- A Vercel cron job runs daily at midnight UTC, finds all scheduled entries where `publishedAt <= now`, and flips them to `published`

### In the dashboard

- Scheduled entries show an amber "scheduled" badge in the entries table
- Editing a scheduled entry preserves the scheduled datetime
- You can change a scheduled entry to draft or publish it immediately at any time]]></description>
      <pubDate>Tue, 24 Feb 2026 13:41:16 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nlxwx000204l7rg8hjbn9</guid>
    </item>
    <item>
      <title>v6.0 - Page View Analytics</title>
      <description><![CDATA[Clivy now tracks page views on your public changelog.

### Tracking

- When a visitor loads your public changelog page, a single API call sends all visible entry IDs
- Views are deduplicated by IP address — refreshing the page won't inflate your numbers
- Uses a `PageView` model with a unique constraint on `[entryId, ip]`

### Dashboard analytics

The project detail page now has an **Analytics** tab showing:

- **Total views** across all entries
- **Subscriber count** for the project
- **Top entry** by views
- A horizontal bar chart ranking every entry by view count, with animated bars that fill on scroll]]></description>
      <pubDate>Tue, 24 Feb 2026 13:36:17 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nfjpu000004l7fdyamxrw</guid>
    </item>
    <item>
      <title>v5.0 - Added Subscriber System</title>
      <description><![CDATA[Your public changelog pages now include an email subscription form.

### For visitors

- Enter an email and click Subscribe
- Success state shows a green confirmation banner with a checkmark
- If already subscribed, shows an error message
- Re-subscribing after a previous unsubscribe reactivates the record instead of creating a duplicate

### For project owners

- View all active subscribers in the project detail's Subscribers tab
- Remove individual subscribers directly from the table
- Subscriber data is also accessible from the global Settings page under the Subscribers tab
- The `channel` field tracks how someone subscribed (currently `email`, designed for future SMS support via Twilio)]]></description>
      <pubDate>Tue, 24 Feb 2026 13:33:43 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmm0nc8kp000004l8mc806bhm</guid>
    </item>
    <item>
      <title>v4.2 - Reactions</title>
      <description><![CDATA[Changelog entries now support emoji reactions.

### Three reactions

- ❤️ **Heart** — red when active
- 👎 **Downvote** — orange when active
- ❓ **Question** — blue when active

Each uses a Lucide icon with per-reaction active colors and background tints.

### Rules

- One reaction per visitor per entry (tracked by IP)
- Clicking the same reaction toggles it off
- Clicking a different reaction swaps (deletes the old one, creates the new one)
- Reaction counts update immediately after each click
- No authentication required — works for anonymous visitors]]></description>
      <pubDate>Mon, 23 Feb 2026 18:23:00 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmlw8lfq200225drr2cgtzev1</guid>
    </item>
    <item>
      <title>v4.1 - Color-Coded Tags</title>
      <description><![CDATA[Entries can now be categorized with custom color-coded tags.

### Creating tags

- Type a name (max 16 characters, auto-uppercased) and pick a color from 8 preset swatches: Blue, Green, Red, Yellow, Purple, Pink, Orange, Teal
- Tags are created per-project, so different projects can have different tag sets
- Duplicate names within the same project are rejected

### Using tags

- Toggle up to 4 tags per entry by clicking them
- Selected tags get a ring highlight; unselected tags appear at reduced opacity
- Hover over any tag to reveal a delete button
- Tags display on the entries table, the entry editor, and the public changelog

Tags are stored with a many-to-many relationship to entries via Prisma's implicit join table.]]></description>
      <pubDate>Fri, 20 Feb 2026 16:14:07 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmlv3b3kc00010xrr3r3g5r83</guid>
    </item>
    <item>
      <title>v4.0 - Public Changelog Page</title>
      <description><![CDATA[Each project now has a public-facing changelog at `/changelog/{slug}`.

### What visitors see

- Project name as a large header
- All published entries in reverse chronological order
- Each entry shows its version, title, tags, and full markdown body rendered as HTML
- Only entries with `status: "published"` appear — drafts and scheduled entries stay hidden

This is a server component that queries Prisma directly with no API call, making the initial load fast and SEO-friendly.]]></description>
      <pubDate>Fri, 20 Feb 2026 14:44:30 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmlv03qpx00031urrochh4fh4</guid>
    </item>
    <item>
      <title>v3.0 - Entry Editor with Markdown Preview</title>
      <description><![CDATA[The core entry management system is complete.

### Creating entries

- Title and version fields at the top (with version auto-hint from the previous entry)
- Full-height markdown textarea with monospace font
- Write/Preview toggle — switches between raw markdown editing and rendered preview using `react-markdown`
- Save as Draft or Publish Now buttons

### Editing entries

- Same form, pre-filled with existing data fetched from the API
- All fields are editable: title, version, body, status, tags
- Delete button with `window.confirm()` safety prompt

### API routes

- `POST /api/entries` — create a new entry linked to a project
- `GET /api/entries/[entryId]` — fetch a single entry with ownership verification
- `PATCH /api/entries/[entryId]` — update any field
- `DELETE /api/entries/[entryId]` — permanent deletion
- `GET /api/entries/latest-version` — returns the most recent version string for a project

All routes verify that the entry's project belongs to the authenticated user.]]></description>
      <pubDate>Fri, 20 Feb 2026 09:35:00 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmlup1tpx0000v1rrohhjsnlm</guid>
    </item>
    <item>
      <title>v2.0 - Dashboard & Project Management</title>
      <description><![CDATA[The authenticated dashboard is live.

### What's included

- **Projects list** — all your projects displayed as cards with entry counts
- **New project form** — enter a name, auto-generated slug (editable), and optional website URL
- **Project detail page** — lists all entries for a project in a table with title, version, status, and date
- **Protected routes** — the entire `/dashboard` layout checks for an active session and redirects to `/login` if not authenticated

### API routes

- `GET /api/projects` — list all projects for the current user
- `POST /api/projects` — create a new project with slug uniqueness check
- `GET /api/projects/[projectId]` — fetch a single project
- `PATCH /api/projects/[projectId]` — update name, slug, or website
- `DELETE /api/projects/[projectId]` — cascade delete (entries, tags, subscribers)]]></description>
      <pubDate>Thu, 19 Feb 2026 19:59:50 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmltvxgko0001qlrrqcjhb3ro</guid>
    </item>
    <item>
      <title>v1.0 - Project Setup & Authentication</title>
      <description><![CDATA[Foundation laid. The project is set up and user authentication is working end to end.

### Stack

- Next.js 16 with App Router and TypeScript
- Prisma 7 with the `pg` adapter connecting to a PostgreSQL database on Neon
- NextAuth 4 with a Credentials provider and JWT session strategy
- Tailwind CSS 4 with shadcn/ui components

### Database schema

Seven models: User, Project, Entry, Tag, Reaction, Subscriber, and PageView — all with cascading deletes from User down to the leaf models.

### Auth flow

- **Sign up** — name, email, password. Passwords hashed with bcrypt before storage. Duplicate email check returns a 409
- **Log in** — email + password verified against the database. JWT token carries the user ID. Session callback injects `user.id` into the session object
- **Session** — `SessionProvider` wraps the app. `getServerSession()` protects server components and API routes. `callbackUrl` query param preserves the user's intended destination after login]]></description>
      <pubDate>Thu, 19 Feb 2026 19:53:42 GMT</pubDate>
      <link>https://clivy-one.vercel.app/changelog/clivy</link>
      <guid>https://clivy-one.vercel.app/entry/cmltvpmwp00006yrrwvsos1mc</guid>
    </item>
  </channel>
</rss>