Devlog #1 — OmniTab: one bar that does everything
Date: July 2026
Project: OmniTab — custom new-tab command center
AI disclosure: under 25%. Cursor helped scaffold Vite/Tailwind and wire the Gemini proxy / key rotation. Omni-Bar mode detection, typo redirects, setup wizard, layout prefs, engines, news RSS, calc/easter eggs, and most of the UI/CSS I wrote or heavily edited. No website builder, no “generate whole app” dump.
What I wanted
A new tab that isn’t just bookmarks + a clock. One input that can:
- search (pick your engine)
- open a URL (including my usual typos)
- talk to Gemini (
/ask, /explain, /fix, /translate)
- do quick local stuff (
/calc, /weather, /rickroll, /67)
Plus the ambient junk I actually look at when I open a tab: weather, focus list, headlines, a quote.
What shipped in this chunk
Core
- Omni-Bar with mode detection (search / URL / AI)
- Engine dropdown +
@google cats one-shots
- Autocomplete suggestions (Google first, DDG fallback)
- Speed dial (drag reorder, HTML bookmarks import, Ctrl+1–9)
- Scratchpad side panel (same Gemini endpoint)
- First-time 5-step setup, later settings as a normal form
Ambient / widgets
- Clock + calendar popup
- Weather via Open-Meteo
- Quote + note of the day
- Focus todos
- BBC news (World / Tech / Science) via RSS proxy — no news API key
- Layout menu: toggle widgets, move clock side, reorder the center stack
- Glass cards so text stays readable on random wallpapers
Pain points that ate time
-
Gemini free tier — hardcoded
gemini-2.0-flash returned limit: 0 even with valid keys. Fixed by listing models + rotating keys the same way as my old Python tester.
-
Random animal photos — dog.ceo / thecatapi were often tiny/ugly. Switched cats/dogs to Wikimedia Commons HD.
-
Busy backgrounds — floating white text died on forests/sunsets. Had to put header stuff in frosted cards and bump contrast.
Stack
Vite · React · TypeScript · Tailwind · Gemini (serverless /api/gemini) · Open-Meteo · BBC RSS
Prefs live in localStorage. No accounts.