StoriesNewsroomAboutPricing
Ask GaganGet started
  1. Release Notes

Explore

  • Home
  • About
  • Stories
  • Newsroom
  • Newsroom archive
  • Pricing

Connect

  • Ask
  • Book a call
  • Send an email

Resources

  • Documentation
  • Media Kit
  • Release Notes
  • Site Map
  • RSS Feed

Legal

  • Privacy
  • Terms of Use
AI site summary·AI full corpus

Copyright © 2026 Gagan Malik. All rights reserved.

Privacy|Terms of Use|Site Map

On this page

  • v1.22.22
  • v1.21.21
  • v1.20.20
  • v1.19.19
  • v1.18.18
  • v1.17.17
  • v1.16.16
  • v1.14.14
  • v1.13.13
  • v1.12.1

Release Notes

v1.22.22

July 23, 2026

Newsroom that feels like a media app—ambient colour, carousel rails, and pick-up-where-you-left-off.

The newsroom hub is now carousel-first: Recently added, category rails, Updates, Videos, and Clips scroll sideways like a media library. Articles pick up a Plex-style wash from the cover colour, and the end-of-article CTAs stay translucent so that wash still shows through.

If you have cookie consent, Continue reading remembers writings, videos, stories, and clips in progress. Release notes live on their own page with a sticky on-this-page nav—changelog posts no longer compete with announcements in the Updates rail.

Added

  • Newsroom hub carousel rails (Recently added, Design / Technology / Business / Culture, Updates, Videos, Clips, Stories)
  • Continue reading rail (consent-gated local progress for writings, videos, stories, clips)
  • Cover-derived ambient page wash on article detail (light + dark)
  • Dedicated /release-notes page with sticky mobile TOC
  • Sticky on-this-page nav on Docs, Privacy, and Terms
  • Ambient colour extract script for cover → wash map

Changed

  • Writings and story cards: title and meta below the media frame (Plex-style)
  • Article end CTA and RSS subscribe cards: translucent over ambient wash
  • Hub and article loading skeletons aligned to the new chrome
  • Techstars restored as an UPDATE; versioned release-* posts stay on /release-notes only
  • Google Cloud Translation removed from the default build/CI path

Fixed

  • Cookie banner behaviour and home carousel polish
  • Dark-mode ambient wash reading as flat grey (lifted chroma + stronger mixes)

v1.21.21

June 13, 2026

Better for AI crawlers, faster to load, cleaner shares.

I split the llms corpus into smaller files, added ai.txt, and opened a public /api/knowledge/summary endpoint so agents can pull canonical site data without scraping everything.

Pages should load quicker on repeat visits, WhatsApp and Instagram previews should work again, and iOS visitors get a gentle Add to Home Screen nudge after a few visits—not on first load.

Added

  • Tiered llms files (stories, newsroom, full corpus) plus hi/ar/es indexes and ai.txt
  • GET /api/knowledge/summary — public JSON for AI agents
  • Linked JSON-LD (@id URIs) across Person, Article, FAQ, Speakable, ProfilePage, HowTo
  • Pricing FAQ + Speakable + HowTo schema; hidden pricing summary for voice/search
  • IndexNow ping on deploy (when INDEXNOW_API_KEY is set)
  • Essay: Minimum Viable Movement
  • iOS Add to Home Screen hint (after 5 sessions + engagement)
  • AEO monitoring doc in project-documentation

Changed

  • robots.txt lists llms/ai URLs; expanded AI crawler allowlist
  • Slimmed llms-full.txt (~6 KB index); bodies moved to tiered files
  • OG images normalised to 1200×630 PNG
  • Article JSON-LD uses share description instead of subtitle
  • Speed Insights v2; 1-hour ISR on pricing, about, stories

Fixed

  • React hooks lint in iOS install hint
  • Broken WhatsApp/Instagram previews (wrong OG size/description)

v1.20.20

May 11, 2026

Structured data and language tags that match the URL you're on.

JSON-LD URLs now follow the active locale (en/hi/ar/es) instead of defaulting to English paths on translated pages.

Major routes emit hreflang alternates, the HTML lang/dir attributes align from the edge before hydration, and case studies get proper Open Graph cards.

Added

  • alternates.languages (with x-default) on major public routes
  • x-gm-locale header from proxy → correct html lang and RTL for Arabic
  • BreadcrumbList JSON-LD on newsroom articles and case studies
  • Open Graph + Twitter metadata on case study detail pages

Changed

  • Newsroom Article JSON-LD URLs use active locale
  • About Person + Speakable JSON-LD URLs use active locale
  • Home services and Pricing provider URLs use active locale
  • Root layout Person/WebSite nav links use explicit en where intended
  • About meta description trimmed for SERP display

Fixed

  • React hooks lint in stories carousel (deferred scroll-edge updates)

v1.19.19

April 12, 2026

Voice mode polish plus a security pass on Ask APIs.

Ask voice fullscreen got proper screen-reader labels, clearer status text, reduced-motion support, and focus returns to the voice button when you close.

Optional Upstash rate limits protect chat, transcribe, and feedback when Redis env vars are set; response headers tightened; client errors stay generic while details stay in logs.

Added

  • Voice fullscreen: sr-only title/description, trust line under collapsed sources
  • Type with keyboard instead link; focus return after close
  • Analytics for voice session end and fullscreen close
  • Optional per-IP rate limiting (chat, transcribe, feedback) via Upstash
  • Security headers: X-Frame-Options, X-Content-Type-Options, Referrer-Policy

Changed

  • Voice status line copy (listening, speaking, follow-up hints)
  • TTS aria-live strategy during word highlight; scroll respects reduced motion
  • Waveform animation pauses when tab is hidden
  • Chat/transcribe return generic errors to clients
  • Billing portal validates Stripe customer IDs
  • Web Push subscribe payload validated with Zod

Fixed

  • Ask feedback GitHub issues filed to correct repo

v1.18.18

April 6, 2026

Voice input, richer case studies, and a table of contents that jumps playback.

Ask now has a transcribe API and speech-to-text hooks; the Presto case study got a screenshot gallery with ZIP download; Meta portfolio page was refactored with hero metadata and skeletons.

Articles and case studies share a table of contents that seeks listen playback to the right section; newsroom hub and cover art updated.

Added

  • Ask transcribe API, STT hooks, voice UI updates
  • Presto gallery with screenshots and ZIP download
  • Meta portfolio case study refactor; hero row (read time, listen, share); loading skeletons
  • Article TOC (mobile sheet + popover); TOC seeks listen via char offsets
  • Custom v1.18.18 release cover art

Changed

  • Stories mobile share sheet; listen dock and toolbar spacing
  • Speed sheet preset-only; popover z-index above fixed chrome
  • Newsroom hub: bento contrast, transparent hub, media kit nav
  • Analytics locale prioritisation report updates
  • llms.txt and media kit ZIP regenerate after production build

Fixed

  • Shared gallery ZIP filenames; Presto hero uses card cover; five gallery screenshots

v1.17.17

March 22, 2026

Brand assets to download, push notifications, and cleaner mobile nav.

New media kit page with downloadable brand assets (generated ZIP). Android users can opt into newsroom digest push; Privacy and Terms updated accordingly.

PWA gets app badges and a clearer iOS install path. Ask shows up to eight source updates per answer; voice mode bugs fixed across TTS and fullscreen.

Added

  • Media kit page with brand assets and generated ZIP
  • Web Push on Android for newsroom digests
  • PWA app badges via service worker; iOS Add to Home Screen hint
  • Ask: up to eight source updates with Show more
  • Essays: No Download Required, Diplomatic Immunity, Someone Designed That Button

Changed

  • Media kit download UX; safer forced-save for asset files
  • Nav: mobile sheet, loading skeletons, snappier menu
  • Stories: mobile logo sizing, CTA visibility, stats layout
  • Archive filters desktop layout

Fixed

  • Ask voice: TTS loop, voices API, fullscreen canvas refs, error UX
  • E2E/integration tests for Ask, home, What's New flows

v1.16.16

March 16, 2026

Readwise feeds the knowledge base; Ask and PWA got touch-ups.

Knowledge base syncs from Readwise via API and GitHub Action, with incremental embedding upserts so deploys don't re-embed everything.

Ask mobile sheet UX improved; voice mode sphere and layout fixes; archive filters cleaned up; PWA toast restyled.

Added

  • Knowledge base with Readwise sync (POST /api/knowledge, GitHub Action, OpenAI embed fallback)
  • Seed embeddings upsert for incremental updates

Changed

  • Ask: mobile sheet UX, read-aloud highlighting, New conversation fix
  • Voice mode: sphere visibility, layout, follow-up, animation fixes
  • Archive filters: Reset first, hide scrollbar, fix cropped text
  • Listen mode word highlight colours
  • UPDATE posts hide Media section
  • Anthropic model bump; checkout v6 in GitHub Actions

Fixed

  • PWA toast: pill buttons, Maia styling, cancel handling, service worker state

v1.14.14

March 14, 2026

The current word lights up and stays in view while TTS plays.

Newsroom articles now highlight the spoken word and scroll to keep it visible during listen mode. Uses Speech Synthesis boundary events with a fallback when the browser doesn't support them (e.g. Firefox)—playback still works.

Added

  • Word-level highlight + scroll-follow during TTS on article pages
  • ListenModeContext shared between listen bar and article body
  • ArticleBodyWithListen: word spans, throttled scroll, reduced-motion support
  • getArticleCharRanges for char-offset mapping
  • Unit tests for char ranges, listen bar, and body component

Changed

  • ArticleListenBar wires boundary handler and 2.5s unsupported detection
  • Article pages use ListenModeProvider wrapper

v1.13.13

March 11, 2026

Voice on Ask finally feels like a deliberate flow, not a hidden feature.

Ask voice got a proper state machine: Idle → Connecting → Listening → Submitting → AI speaking, with push-to-talk, first-time voice picker, and an optional fullscreen view with particle sphere and live transcript.

Category dropdown, dual voice/text toggle, and sources/follow-ups appear when streaming finishes.

Added

  • Voice session state machine; voice button always visible when supported
  • Connecting state with spinner, cancel, timeout, retry
  • Push-to-talk (pointer/touch + Space)
  • First-time voice picker with preview
  • Gagan is speaking strip with stop/exit
  • Error card with Try again / Open settings
  • Optional fullscreen voice view (particle sphere, sources, transcript)
  • Category dropdown; suggestion chips; follow-up filtering

Changed

  • Gear icon only in voice mode (removed from idle form)
  • Voice ring shown only when active; softer waveform animation
  • Follow-up chips left-aligned; citations on same line as numbers

Fixed

  • Connecting state display (voiceConnecting flag)
  • API error body parsed as JSON; missing i18n keys for production

v1.12.1

March 7, 2026

Every post can be listened to or shared from the header.

All newsroom posts (not just Writings) get a listen bar with speed control and a share popover. Byline row shows even when subtitle is empty.

Added

  • Article Listen bar: play/pause, progress, speed 0.5×–3.0×
  • Share popover: LinkedIn, X, Facebook, WhatsApp, Reddit, email, copy link
  • Unit tests for listen bar empty/play states

Changed

  • Listen bar primes voices on user gesture for reliable Chrome/Safari playback
  • Share button icon-only to match listen bar
  • Byline: By Gagan Malik + Listen + Share on every post detail page

Fixed

  • Playback error state when synthesis fails
  • Speed changes apply to active utterance mid-playback
  • Byline visible when subtitle is empty/whitespace

v1.12.0

February 26, 2026

Billing self-service, About page update, and cleaner URLs for case studies.

Stripe Customer Portal for subscription management; llms.txt generated at build time; About page refreshed with LBS education and Techstars mention.

Person JSON-LD disambiguation, PWA service worker serves fresh HTML to crawlers, old story slugs redirect with 301s.

Added

  • llms.txt generator at build time
  • Stripe Customer Portal
  • Essay: The $725 Million Bug Hunt
  • Video cards pagination in archive
  • Static PWA icons for Newsroom, Ask, docs

Changed

  • About redesign with Lessons learnt section
  • Person JSON-LD with mainEntityOfPage disambiguation
  • Hero heading hierarchy; nav Ask Gagan; Who/What/How consolidated to About
  • Metadata aligned with LinkedIn
  • Analytics moved to locale layout
  • Story slugs cleaned with 301 redirects from old URLs
  • Docs: removed Introduction and Related docs sections

Fixed

  • PWA service worker bypasses cache for crawler requests (fresh HTML for SEO)
  • About page chunk load error
  • Favicon via Next.js app icon convention
  • Video card overflow on small screens
  • Ask integration test

v1.11.11

February 23, 2026

v1.11.11

Channel videos show up in newsroom; Ask can cite transcript content.

YouTube videos from @gagan_malik appear in the newsroom via Data API at build time. Transcripts feed into Ask RAG so the chat can reference video content.

Added

  • YouTube videos section (Data API v3 at build; optional YOUTUBE_API_KEY)
  • Video transcripts in RAG (EMBED_VIDEO_TRANSCRIPTS=false to disable)
  • Videos filter in archive (?type=video)
  • External link handling on video cards (new tab, aria-label, icon)

Changed

  • YouTube hrefs use <a target="_blank"> instead of Next Link
  • YouTube thumbnail domains added to Next.js image config
  • seed:embeddings fetches video transcripts by default

v1.10.0

Subscribe via RSS; installed PWA shows when there's new stuff.

RSS feed at /feed.xml. Home page shows a What's New banner for updates since your last newsroom visit; installed PWA gets an app badge with the count.

Added

  • RSS feed (/feed.xml) with alternate link in layout
  • What's New banner on home (dismiss stores count in localStorage)
  • PWA app badge for new content; clears on newsroom visit
  • Preview route /preview/whats-new-banner
  • localStorage keys documented in Privacy

Changed

  • Newsroom archive/stories buttons use ghost style
  • Footer RSS link in Resources

v1.9.0

February 20, 2026

The site speaks four languages now.

Full translations for hi, ar, es. Footer region/language selector, FAQ accordion on About, and RTL layout for Arabic. Checkout accepts region codes for locale-specific Stripe prices.

Added

  • Hindi, Arabic, Spanish locales with full translations
  • Footer region/language selector (grouped by geography)
  • Legal locale notice on Privacy/Terms for non-English
  • RTL support for Arabic
  • Region-specific pricing via checkout regionCode + optional Stripe price env vars
  • FAQ accordion on About page
  • Pricing sticky bar pins below nav

Changed

  • Footer: Privacy | Terms | Site Map row; trimmed Connect links
  • Sitemap includes all locales (en, hi, ar, es)

v1.8.0

February 18, 2026

Loading states everywhere; archive filters stop breaking the nav.

Skeleton screens on major pages while content loads. Archive filter dropdown no longer makes the sticky nav disappear. Newsroom header stays visible on index, articles, and archive.

Added

  • Skeleton screens: Home, Newsroom, Site Map, Docs, Legal, Ask preview, Stories, Archive
  • Skeleton preview route for QA (/newsroom/skeleton-preview)
  • Sticky header on all newsroom pages

Changed

  • Archive filters: DropdownMenu instead of Radix Select (fixes sticky nav bug)
  • Nav visibility rules on newsroom and archive
  • Mobile Writings/Stories hero cards match other cards
  • /portfolio redirects to /stories

v1.7.0

February 17, 2026

Easier to tap things and use Ask on a phone.

Mobile audit across the site: 44pt minimum touch targets, Ask history opens as a right-side sheet on small screens, responsive typography and layout fixes on hero, pricing, stories, newsroom.

Added

  • Floating history toggle on Ask (mobile)
  • Ask conversation history in right-side Sheet below lg breakpoint
  • 16px horizontal padding on Ask chat content (mobile)

Changed

  • root overflow-x-hidden; responsive hero typography; pricing table scroll
  • Touch targets: footer icons, hamburger, theme toggle, testimonials controls, Ask buttons
  • Stories Work with logos CTA visible on mobile (not hover-only)
  • Design impact stats: 2-column grid on mobile
  • Newsroom responsive hero and bento min-heights
  • Archive Reset button touch target

v1.5.0

February 16, 2026

v1.5.0

Social previews work; Ask knowledge stays fresh after deploys.

Proper favicon and OG images on newsroom articles (cover image, logo fallback). Embeddings reseed automatically on every Vercel deploy.

Added

  • Favicon from site logo
  • Open Graph images on newsroom articles
  • postbuild embedding seed on deploy
  • Cursor rule reminder to seed after content changes
  • Release 1.4.1 update post

Changed

  • RAG system prompt extended for vibe-coding and writing queries
  • Seed script skips gracefully without DATABASE_URL; supports AI Gateway key
  • Social previews use correct cover images

v1.4.1

New long read plus nicer citation links.

Published Against One-Click Coding (replacing the migration article). Citation links are now pills with favicons on newsroom and Ask. Writings cards show publication date instead of 3 days ago.

Added

  • Essay: Against One-Click Coding: Reclaiming Craft for Personal Projects
  • Citation pills with favicons (newsroom + Ask)
  • New cover image for the essay

Changed

  • Writings bento cards show publication date
  • Citation links styled as pills with Globe fallback

v1.4.0

Ask answers link to case studies with previews.

Ask list queries return one citation per case study with thumbnail linking to /stories/[slug]. Suggestion chips expand with Show more/less. Button got xl and icon-xl sizes (fixes About and Rolex pages).

Added

  • Ask case study citations with thumbnails
  • Show more/less toggle for suggestion chips
  • ASSISTANT_QUESTIONS.md prompt catalogue

Changed

  • Helper text: Here's what you can ask me
  • Button xl and icon-xl size variants

v1.3.0

February 10, 2026

GDPR cookie banner; GA4 only loads after consent.

Cookie consent banner with Necessary only / Accept all; GA4 loads only after consent (3s delay or first scroll). Release plan documented; Ask page integration tests added.

Added

  • Cookie consent banner; links to Privacy
  • RELEASE_PLAN.md and doc cross-references
  • Ask page integration tests

v1.1.0

January 30, 2026

Case studies go deep; homepage gets out of the way.

Simpler homepage. Seven full case studies (Apple, Google, Presto, Aviva, Lloyds, EE, John Lewis) with template, takeaways, and hero quote. Stories hero leads with Ask Gagan.

Added

  • Basic homepage (hero, trusted by, selected work, about teaser)
  • Case study template with takeaways, company sidebar, hero quote
  • Article JSON-LD on story detail pages
  • Stories hero with Ask Gagan CTA

Changed

  • Home primary CTA points to /stories
  • Story detail TrackedLink on CTA strip and next-slug navigation

v1.0.0

January 15, 2026

Initial launch of gaganmalik.io.

First shipped version of the personal site.

Added

  • Home (hero, work carousel, principles)
  • About (How I Lead, case studies, testimonials)
  • Stories / case study pages
  • Newsroom
  • Pricing with Stripe checkout
  • Ask (AI chat with RAG)
  • Analytics (Vercel, GA4), SEO (metadata, sitemap, canonicals, JSON-LD)
  • Dark mode and responsive layout

We got accepted into Techstars

June 15, 2023

My cofounders Ghassan Alabdulgader, Taranvir Singh, Dauren Shaikhin and I have been accepted into the Techstars Accelerator Program. Techstars Riyadh 2023 program.

At Permitech, we're building AI-powered industrial workplace safety solutions that improve risk detection, incident prevention, and compliance in high-hazard environments. It's a validation of the problem we're solving and the team we've built, and a real opportunity to accelerate our path in one of the Middle East's most active startup ecosystems. Techstars Portfolio · Permitech.