Changelog

Everything
we’ve shipped.

Pulled live from the public GitHub history. 100 changes across 13 releases. Scroll to travel through time.

v1.12

June 12, 2026
9 changes
  • NewAdd Vercel Analytics
    • Installs @vercel/analytics and mounts the <Analytics /> component in the
    • root layout to collect page views and visitor counts on deploy.
    c7812b3 · izhan0102Details
  • UpdateKeyword landing pages, blog content hub, richer structured data
    • Adds a real content layer to compete for high-intent terms instead of
    • relying on the homepage alone.
    • Landing pages (statically generated at root URLs, each with unique copy,
    • exact-match title/H1/meta, FAQ, CTAs, and internal links):
    • /free-ppt-maker, /ai-presentation-maker, /ai-ppt-maker,
    • /text-to-ppt, /powerpoint-generator, /presentation-maker-online
    b63bfbb · izhan0102Details

v1.11

June 11, 2026
10 changes
  • FixEscape units before SVG text rendering
    • Chart units supplied by users or AI-generated content were
    • concatenated directly into SVG text nodes without XML escaping.
    • This could produce invalid SVG markup when units contained
    • special characters such as <, >, or &, causing chart rendering
    • failures and export issues in PDF/PPTX workflows.
    • Changes:
    ce54204 · CodesWithSubhamDetails
  • FixPreserve trailing punctuation in AI slide editor bullet points
    • Removed punctuation-stripping logic from `cleanList()` in the
    • slide-level AI editor.
    • Preserved legitimate AI-generated punctuation such as `!`, `?`, `:`,
    • and `.` at the end of bullet points.
    • Retained whitespace normalization and empty-item filtering behavior.
    • Aligned bullet cleanup behavior with the deck-level editor
    9ca5ea3 · CodesWithSubhamDetails

v1.10

June 10, 2026
7 changes
  • FixImprove delete modal accessibility
    ef33d43 · Tamcodes4Details
  • Update14-day refund policy (Paddle Buyer Terms compliance)
    • Change the refund window from 7 to 14 days and reference Paddle as the
    • Merchant of Record, so the policy meets Paddle's 14-day minimum.
    513541f · izhan0102Details

v1.9

June 9, 2026
2 changes

v1.8

June 8, 2026
12 changes
  • FixDistinguish generated speaker notes; declutter editor toolbar
    • Add Deck.speakerNotesGenerated flag, set only when notes are created
    • via the Generate notes button. The editor now shows "Generate notes"
    • on a fresh deck (which ships with short draft notes) and only switches
    • to "Show notes" once the user generates them, instead of treating the
    • draft notes as generated.
    • Remove the "Add image" button from the top toolbar; it stays in the
    8c829f2 · izhan0102Details
  • FixClear presenter jump buffer on navigation actions
    • Clear pending slide jump input whenever presenter navigation or
    • non-jump actions occur to prevent the jump overlay from remaining
    • visible on screen.
    • Changes:
    • Clear jumpBuffer in goNext, goPrev, and goTo navigation helpers
    • Clear jumpBuffer when handling Escape
    6f8f6df · CodesWithSubhamDetails

v1.7

June 7, 2026
9 changes
  • MergedMerge PR #71: preserve nested formatting when unwrapping disallowed tags in rich-text sanitizer
    c81d3c8 · izhan0102Details
  • UpdateCustom template designer, mobile mode, in-canvas drag/resize
    • Custom templates
    • Add "Design your own template" flow: TemplateDesigner full-screen
    • editor with live SlideCanvas preview, color rows + native color
    • picker, per-role fonts (title/subtitle/kicker/body), background
    • pattern/graphic/image with opacity, and addable icons/images that
    • drag + resize on canvas.
    55b13dc · izhan0102Details

v1.6

June 6, 2026
10 changes

v1.5

June 5, 2026
5 changes
  • FixCorrect mix() blend factor from (1-t) to t in export route
    • The mix() function in the PPTX export route was using (1 - t) instead of t
    • for color interpolation, which inverted the blend direction. This affected
    • column header labels (mix(accent, bg, 0.12) → 88% toward bg instead of 12%)
    • and table row stripes (mix(accent, bg, 0.06) → barely visible).
    • The same function in lib/charts.ts correctly uses t directly. This fix
    • aligns the export route with the correct implementation.
    8b77a31 · Siddh2024Details
  • UpdateMake EZdeck free: remove payments, gate first export behind a review
    • Product is now fully free. Removed all payment/pricing/Razorpay logic and
    • replaced the export paywall with a mandatory one-time review.
    • DeckPreview: replace payment gate with a ReviewGate dialog shown once
    • before the first export (persisted via localStorage); exports are free
    • Dashboard: drop paid/unlock state and filter chips; add a polished
    • "EZdeck is now free" popup (session dismiss + "don't show again" opt-out),
    148195e · izhan0102Details

v1.4

June 4, 2026
2 changes

v1.3

June 3, 2026
8 changes
  • NewAdd public reviews/feedback + changelog show-more fixes
    • Reviews:
    • New /feedback form (no auth): name, what-you-do, 1-5 star picker, capped
    • 240-char review, submit. Writes to RTDB /reviews via lib/reviews.ts
    • (client-validated; create-only, public-read).
    • New /reviews owner viewer (no auth, unlisted + robots-disallowed):
    • lists every submission newest-first with average rating, and a "Copy"
    1ac3843 · izhan0102Details
  • UpdateHarden the rate limiter from PR #39
    • Builds on the merged IP rate limiting (#6):
    • Per-route buckets keyed `route:ip` so the editor's frequent edit-slide
    • and export calls no longer share one budget with heavy generate calls.
    • Limits: generate 8/min, edit-slide 30/min, export 20/min.
    • clientIp() parses x-forwarded-for as a comma list (first entry = real
    • client) with an x-real-ip fallback.
    cae586c · izhan0102Details

v1.2

June 1, 2026
9 changes

v1.1

May 31, 2026
14 changes
  • NewSupport/donate flow, prompt + dashboard polish, quota popup
    • Support the project:
    • New components/SupportDialog.tsx: a "Support EZdeck" flow. Donate opens
    • razorpay.me/@muhammadizhan in a new tab, then asks "Did you donate?" —
    • Yes shows a warm thank-you, No closes. Portal-rendered to body so it
    • never anchors to the blurred navbar. Added to the nav (contained pill)
    • and the footer.
    b2abd20 · izhan0102Details
  • NewAdd live changelog page + app follows theme + fixes
    • Changelog (new):
    • lib/changelog.ts fetches the repo's PUBLIC GitHub commit history (no
    • API key/SDK), classifies each commit (New/Fix/Improved/Docs/Merged),
    • strips conventional-commit prefixes, pulls body bullets, and groups by
    • day into ascending versions (oldest day = v1.0, newest = highest).
    • ISR-cached 1h so it never trips the 60/hr public rate limit; returns
    23903dd · izhan0102Details

v1.0

May 30, 2026
3 changes
  • MergedMerge pull request #24 from shreyasfegade/issue-21-prompt-injection
    • fix(security): cap instruction length and escape quotes in edit routes
    0dc9d4b · izhan0102Details
  • FixRe-throw AuthError so 403 (email not verified) reaches the client
    • PR #23 added the email_verified check inside the try block, so the catch re-wrapped its 403 as a 401 with message 'Token verification failed (Email not verified)'. The client only redirects on a literal 403, so the bounce to /verify-email never fired. Re-throw AuthError as-is and only wrap genuine SDK verification failures.
    822d082 · izhan0102Details
That’s the story so far.

EXdeck is open source and ships often. Read the full commit history on GitHub.

Back to home