[{"data":1,"prerenderedAt":459},["ShallowReactive",2],{"products-list":3},[4,123,218],{"id":5,"title":6,"author":-1,"body":7,"date":-1,"description":111,"extension":112,"heroMedia":-1,"link":-1,"meta":113,"navigation":117,"path":118,"seo":119,"status":120,"stem":121,"version":-1,"__hash__":122,"homeImage":114,"tickerTop":115,"tickerBottom":116},"content\u002Fproducts\u002Fbubbles-mail.md","BUBBLES.MAIL",{"type":8,"value":9,"toc":104},"minimark",[10,17,22,25,28,32,41,48,51,79,83,89],[11,12,13],"p",{},[14,15,16],"strong",{},"We are building an intelligent mail client for people drowning in their own inboxes — one that takes the raw chaos of email and turns it into something you can actually act on.",[18,19,21],"h2",{"id":20},"the-problem","The Problem",[11,23,24],{},"Email wasn't designed for the volume we put through it today. What started as a simple way to send messages has quietly become one of the heaviest cognitive loads in a working person's life. You open your inbox, and instead of information, you get noise — newsletters, automated alerts, thread replies from three weeks ago, urgent-sounding things that aren't, and actually urgent things buried under everything else.",[11,26,27],{},"The frustrating part isn't that email is broken. It's that we've been handed the tools to fix it and nothing has actually fixed it. Smart folders. Filters. Snooze. Labels. We've been asked to become systems administrators of our own attention, and most of us are losing.",[18,29,31],{"id":30},"the-solution","The Solution",[11,33,34,35,40],{},"Bubbles.mail is part of the ",[36,37,39],"a",{"href":38},"\u002Fproducts\u002Fbubbles-space","Bubbles ecosystem"," — a family of AI-agent-first applications built around the idea that software should do the hard work for you, not teach you new workflows.",[11,42,43,44,47],{},"The idea is simple but the execution is everything: Bubbles.mail takes your raw inbox and converts it into an ",[14,45,46],{},"information report",". Not a filtered inbox. Not a sorted list. An actual distillation of what's happening, what needs your attention, what can wait, and what you can delegate. Then it helps you act on it.",[11,49,50],{},"You don't ask Bubbles.mail for a summary. It already knows. You don't configure rules for what's important. It figures that out. It's progressive — it learns from what you do, what you skip, what you respond to — and gets sharper over time.",[52,53,54,61,67,73],"ul",{},[55,56,57,60],"li",{},[14,58,59],{},"Raw Data → Information",": Your inbox is input. Bubbles.mail processes it and gives you something you can actually think with.",[55,62,63,66],{},[14,64,65],{},"Proactive, Not Reactive",": It doesn't wait for you to ask. By the time you open the app, the thinking is already done.",[55,68,69,72],{},[14,70,71],{},"Delegation-Ready",": The output is designed to help you decide fast — what to act on, what to forward, what to drop.",[55,74,75,78],{},[14,76,77],{},"Native macOS",": Built to feel like it belongs on your machine, not like a web app that got installed.",[18,80,82],{"id":81},"part-of-something-bigger","Part of Something Bigger",[11,84,85,86,88],{},"Bubbles.mail isn't a standalone app. It's one expression of a broader belief — that AI should quietly make your life easier, not add another thing to manage. Every app in the ",[36,87,39],{"href":38}," is built around this same principle: practical, sensible, AI-agent-first.",[11,90,91,92,98,99,103],{},"We're still building this. If the idea resonates, follow our progress on ",[36,93,97],{"href":94,"rel":95},"https:\u002F\u002Ftwitter.com\u002FTheNormVg",[96],"nofollow","X (Twitter)"," or read more about the thinking behind Bubbles in our ",[36,100,102],{"href":101},"\u002Fwriting","writing",".",{"title":105,"searchDepth":106,"depth":106,"links":107},"",2,[108,109,110],{"id":20,"depth":106,"text":21},{"id":30,"depth":106,"text":31},{"id":81,"depth":106,"text":82},"An intelligent mail client from the Bubbles ecosystem. It reads your inbox so you don't have to.","md",{"homeImage":114,"tickerTop":115,"tickerBottom":116},"skull-arrow.png","101010110100101010100100101010101001110101","010010111010010100110101001011101001010",true,"\u002Fproducts\u002Fbubbles-mail",{"title":6,"description":111},"IN DEVELOPMENT","products\u002Fbubbles-mail","OKd_dk9ecgRP7nKWaJoR1YbymNZFKJcqyAkWxWVnEmg",{"id":124,"title":125,"author":-1,"body":126,"date":-1,"description":210,"extension":112,"heroMedia":-1,"link":-1,"meta":211,"navigation":117,"path":38,"seo":215,"status":120,"stem":216,"version":-1,"__hash__":217,"homeImage":212,"tickerTop":213,"tickerBottom":214},"content\u002Fproducts\u002Fbubbles-space.md","BUBBLES.SPACE",{"type":8,"value":127,"toc":205},[128,133,135,138,141,143,146,149,175,179,182,191,194],[11,129,130],{},[14,131,132],{},"We are building a personal AI workspace OS for people who want to stop managing tools and start actually thinking — a space where Bubbles, your AI assistant, lives and works alongside you.",[18,134,21],{"id":20},[11,136,137],{},"Most of us have developed a strange relationship with our tools. We open fifteen tabs, jump between apps, copy-paste the same note four times, and by the time we've organized everything, we've forgotten what we were actually trying to do. The irony is painful — the tools meant to help us focus have become the very things fragmenting our attention.",[11,139,140],{},"And AI hasn't really fixed this. We've just added a sixteenth tab: a chatbox you have to go visit, ask a question, and then carry the answer back yourself. That's not intelligence. That's a slightly smarter search engine.",[18,142,31],{"id":30},[11,144,145],{},"Bubbles.space is the environment where Bubbles — your personal AI assistant — lives. It's not an app you open when you need something. It's a space you exist in while you work.",[11,147,148],{},"Think of it less like a productivity tool and more like a workspace that genuinely understands what you're trying to get done. A spatial canvas where your notes, your projects, your data, and your AI all occupy the same room. You arrange your thinking visually, and Bubbles quietly does the heavy lifting around it.",[52,150,151,157,163,169],{},[55,152,153,156],{},[14,154,155],{},"A Canvas, Not a Feed",": Bubbles.space gives you a zoomable, spatial environment to organize your thinking the way your brain actually works — not in a linear list, but in clusters, connections, and proximity.",[55,158,159,162],{},[14,160,161],{},"Bubbles Lives Here",": Your AI assistant isn't a popup. It's a native presence in the workspace, recalling context from past sessions, understanding what you're working on, and moving things forward without waiting to be asked.",[55,164,165,168],{},[14,166,167],{},"Your Tools, In One Place",": Documents, graphs, diagrams, timers, web content — all as widgets on the canvas, where they belong, not scattered across a dozen apps.",[55,170,171,174],{},[14,172,173],{},"Work With Others Naturally",": People can co-exist in the same workspace. Not because it's a \"collaboration feature\" — just because that's how real work happens.",[18,176,178],{"id":177},"what-were-building-toward","What We're Building Toward",[11,180,181],{},"We think the future of AI is proactive. Not a chatbox, but a thinking partner that already knows your context and acts on it. Bubbles.space is the environment where that becomes real.",[11,183,184,185,190],{},"It's built on a deeply integrated stack — Nuxt 4, Neon Postgres, Ably for real-time sync, and ",[36,186,189],{"href":187,"rel":188},"https:\u002F\u002Fsdk.vercel.ai\u002F",[96],"Eve",", Vercel's agent development framework — designed to keep everything fast, persistent, and always in sync across your devices.",[11,192,193],{},"This isn't just a productivity app. We're trying to create a lifestyle — a new way of relating to your work and your tools, powered by AI that actually respects your intelligence.",[11,195,196,197,200,201,204],{},"Follow along with what we're building on ",[36,198,97],{"href":94,"rel":199},[96],", or read more about our thinking in our ",[36,202,203],{"href":101},"Writing"," section.",{"title":105,"searchDepth":106,"depth":106,"links":206},[207,208,209],{"id":20,"depth":106,"text":21},{"id":30,"depth":106,"text":31},{"id":177,"depth":106,"text":178},"Your AI assistant's home. A workspace OS built for the way you actually think.",{"homeImage":212,"tickerTop":213,"tickerBottom":214},"flower-moon.png","110010101110010010101001100101010010110111","101101001010001011001010100101101010010",{"title":125,"description":210},"products\u002Fbubbles-space","A5On5UTTknOGP3l2xaqhj2IizUSZantYNxoTaPSTlik",{"id":219,"title":220,"author":-1,"body":221,"date":-1,"description":449,"extension":112,"heroMedia":-1,"link":425,"meta":450,"navigation":117,"path":454,"seo":455,"status":456,"stem":457,"version":-1,"__hash__":458,"homeImage":451,"tickerTop":452,"tickerBottom":453},"content\u002Fproducts\u002Fweb-have-sounds.md","WEB-HAVE-SOUNDS",{"type":8,"value":222,"toc":443},[223,228,230,242,249,252,254,260,318,322,325,349,352,387,394,398,406,436,439],[11,224,225],{},[14,226,227],{},"We are building a sound library for web developers who want interactive audio feedback without the payload — pure math, native APIs, zero compromise.",[18,229,21],{"id":20},[11,231,232,233,237,238,241],{},"Adding sound to a web app has always felt like a slightly embarrassing trade-off. You either load a bunch of ",[234,235,236],"code",{},".wav"," or ",[234,239,240],{},".mp3"," files that bloat your bundle, introduce network latency, and sometimes just don't play at all — or you skip audio entirely and ship an interface that feels a little quieter than it should.",[11,243,244,245,103],{},"The Web Audio API has been sitting in browsers for years, capable of generating rich sound entirely through code. But the mental overhead of working with it directly is real. Oscillators, gain nodes, buffer sources, timing — it's a lot to learn just to make a button go ",[246,247,248],"em",{},"click",[11,250,251],{},"We wanted a better path.",[18,253,31],{"id":30},[11,255,256,259],{},[234,257,258],{},"@thenormvg\u002Fweb-have-sounds"," is a professional, open-source JavaScript and TypeScript library that generates UI sound effects entirely through mathematics. No audio files. No CDN. No network requests. Just the Web Audio API doing what it was always capable of, wrapped in a clean, minimal interface.",[52,261,262,268,274,295,312],{},[55,263,264,267],{},[14,265,266],{},"Zero Dependencies",": Extremely lightweight. Nothing to install beyond the library itself.",[55,269,270,273],{},[14,271,272],{},"Instant Playback",": Because the sound is generated in real-time, there's no buffering, no decoding delay. It plays the moment you call it.",[55,275,276,279,280,282,283,286,287,290,291,294],{},[14,277,278],{},"Nine Sound Types",": From crisp ",[234,281,248],{},"s to ascending ",[234,284,285],{},"success"," chimes, to bubbling ",[234,288,289],{},"pop","s and descending ",[234,292,293],{},"drop","s — tailored to fit real interaction contexts, not just demos.",[55,296,297,300,301,304,305,304,308,311],{},[14,298,299],{},"Themeable",": Nine distinct sonic palettes — ",[246,302,303],{},"aero",", ",[246,306,307],{},"arcade",[246,309,310],{},"glass",", and more — so the sound matches the feeling of your interface.",[55,313,314,317],{},[14,315,316],{},"Framework Agnostic",": Works with React, Vue, Svelte, Vanilla JS. If it runs in a browser, this library runs in it.",[18,319,321],{"id":320},"getting-started","Getting Started",[11,323,324],{},"Install via your package manager of choice:",[326,327,331],"pre",{"className":328,"code":329,"language":330,"meta":105,"style":105},"language-bash shiki shiki-themes github-light github-dark","npm install @thenormvg\u002Fweb-have-sounds\n","bash",[234,332,333],{"__ignoreMap":105},[334,335,338,342,346],"span",{"class":336,"line":337},"line",1,[334,339,341],{"class":340},"sScJk","npm",[334,343,345],{"class":344},"sZZnC"," install",[334,347,348],{"class":344}," @thenormvg\u002Fweb-have-sounds\n",[11,350,351],{},"Then attach it to any user interaction:",[326,353,357],{"className":354,"code":355,"language":356,"meta":105,"style":105},"language-javascript shiki shiki-themes github-light github-dark","import { playUISound } from '@thenormvg\u002Fweb-have-sounds';\n\ndocument.querySelector('#submit-btn').addEventListener('click', () => {\n  playUISound('pop');\n});\n","javascript",[234,358,359,364,369,375,381],{"__ignoreMap":105},[334,360,361],{"class":336,"line":337},[334,362,363],{},"import { playUISound } from '@thenormvg\u002Fweb-have-sounds';\n",[334,365,366],{"class":336,"line":106},[334,367,368],{"emptyLinePlaceholder":117},"\n",[334,370,372],{"class":336,"line":371},3,[334,373,374],{},"document.querySelector('#submit-btn').addEventListener('click', () => {\n",[334,376,378],{"class":336,"line":377},4,[334,379,380],{},"  playUISound('pop');\n",[334,382,384],{"class":336,"line":383},5,[334,385,386],{},"});\n",[11,388,389,390,393],{},"One thing worth knowing: browsers require a user gesture before the Web Audio API will play anything. Call ",[234,391,392],{},"playUISound"," inside a click or keypress handler and you'll be fine. More details in the docs.",[18,395,397],{"id":396},"where-to-find-it","Where to Find It",[11,399,400,401,405],{},"This is one of the first open-source tools we've shipped as ",[36,402,404],{"href":403},"\u002Forganization\u002Fabout","TheAlphaOnes",". We believe in building in the open — not just for visibility, but because the best tools get sharper when more people use them.",[52,407,408,418,428],{},[55,409,410,412,413],{},[14,411,341],{},": ",[36,414,417],{"href":415,"rel":416},"https:\u002F\u002Fwww.npmjs.com\u002Fpackage\u002F@thenormvg\u002Fweb-have-sounds",[96],"npmjs.com\u002Fpackage\u002F@thenormvg\u002Fweb-have-sounds",[55,419,420,412,423],{},[14,421,422],{},"GitHub",[36,424,427],{"href":425,"rel":426},"https:\u002F\u002Fgithub.com\u002FNormVg\u002Fweb-have-sound",[96],"github.com\u002FNormVg\u002Fweb-have-sound",[55,429,430,412,433],{},[14,431,432],{},"Updates",[36,434,97],{"href":94,"rel":435},[96],[11,437,438],{},"If you use it in a project, we'd genuinely love to hear about it.",[440,441,442],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}",{"title":105,"searchDepth":106,"depth":106,"links":444},[445,446,447,448],{"id":20,"depth":106,"text":21},{"id":30,"depth":106,"text":31},{"id":320,"depth":106,"text":321},{"id":396,"depth":106,"text":397},"A zero-dependency JavaScript library for generating UI sound effects through math. No audio files. No network requests.",{"homeImage":451,"tickerTop":452,"tickerBottom":453},"skull-book.png","011010010101011101001010010110101011010101","111010100010110100101010110100010101011","\u002Fproducts\u002Fweb-have-sounds",{"title":220,"description":449},"OSS","products\u002Fweb-have-sounds","-A2NxMIEjneLGWrpFHJlrd2_Hy8wxHKqtR86CmwEmUo",1784632984312]