Manifest V3 Is Here — And It Broke Everything Google's Manifest V3 migration deadline has come and gone. After migrating 17 Chrome extensions from MV2 to MV3, I've compiled every pitfall, workaround, and lesson learned. If you're still migrating — or building new extensions — this guide will save you weeks of debugging. The problem: MV3 replaces persistent background pages with service workers.
Keyboard Shortcuts in Firefox Extensions: A Complete Guide Good keyboard support separates a great extension from a mediocre one. Here's everything you need to know. For global keyboard shortcuts (accessible even when the extension isn't focused): { "commands": { "_execute_action": { "suggested_key": { "default": "Ctrl+Shift+W" }, "description": "Open Weather & Cl
Comments
The text mode lie: why modern TUIs are a nightmare for accessibility
Search Bar in a Firefox New Tab Extension: Which Engine, How to Handle Adding a search bar to a new tab extension sounds simple — it's just a text input and a redirect. But there are enough details to get right that it's worth writing down. <form id="search-form" role="search"> <input type="search" id="search-input" placeholder="Search..." autocomplete="off" autofocus />
A story about building Clock-Tani — 9 free time-management tools in a single PWA, written with Next.js 16 App Router. Live at https://clock-tani.com I needed a pomodoro timer at work, but every option was either ad-heavy, app-only, or just ugly. Same story for world clocks, countdown timers, and interval timers. So I built them all into one place. That place is now Clock-Tani — 9 small but useful
Dark Mode in Firefox Extensions: Respecting System Preferences Firefox users who prefer dark mode shouldn't have to manually toggle it in every extension. Here's how to automatically respect the system preference. /* Default: light mode */ :root { --bg: #ffffff; --text: #1a1a1a; --card-bg: #f5f5f5; --border: #e0e0e0; } /* Auto dark mode from system */ @media (prefers-color-scheme: dark)
A website today has two layers that work completely independently of each other. The AI-Ready layer is universal. It makes your site readable for ChatGPT, Perplexity, Claude and Bing Copilot, no matter where the bot comes from. The hosting layer is regional. It decides who gets to touch your data, how fast the site loads for your customers, and which legal jurisdiction your business sits in. We bu