docs: ultra README (icon, badges, features, screenshots, install/build), LICENSE, macOS/Xcode .gitignore, product screenshots
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Showing 8 changed files with +391 and −41
modified
.gitignore
+40 −8
@@ -1,21 +1,53 @@ | ||
| 1 | −# Secrets — never commit API keys | |
| 1 | +# ─── Secrets — never commit API keys or vault data ─── | |
| 2 | 2 | .env.keys |
| 3 | 3 | *.env |
| 4 | +*.key | |
| 5 | +vault.zq | |
| 4 | 6 | |
| 5 | −# Swift Package Manager | |
| 7 | +# ─── Swift Package Manager ─── | |
| 6 | 8 | .build/ |
| 7 | 9 | .swiftpm/ |
| 8 | 10 | |
| 9 | −# Build products & distribution | |
| 11 | +# ─── Xcode ─── | |
| 12 | +DerivedData/ | |
| 13 | +build/ | |
| 14 | +xcuserdata/ | |
| 15 | +*.xcuserstate | |
| 16 | +*.xcscmblueprint | |
| 17 | +*.xccheckout | |
| 18 | +*.moved-aside | |
| 19 | +*.hmap | |
| 20 | +*.ipa | |
| 21 | +*.dSYM.zip | |
| 22 | +*.dSYM | |
| 23 | +*.pbxuser | |
| 24 | +*.mode1v3 | |
| 25 | +*.mode2v3 | |
| 26 | +*.perspectivev3 | |
| 27 | + | |
| 28 | +# ─── CocoaPods / Carthage (defensive) ─── | |
| 29 | +Pods/ | |
| 30 | +Carthage/Build/ | |
| 31 | +Carthage/Checkouts/ | |
| 32 | + | |
| 33 | +# ─── Build products & distribution artifacts ─── | |
| 10 | 34 | dist/ |
| 11 | 35 | *.zip |
| 12 | 36 | *.dmg |
| 37 | +*.app | |
| 38 | +*.icns.tmp | |
| 13 | 39 | |
| 14 | −# macOS | |
| 40 | +# ─── macOS ─── | |
| 15 | 41 | .DS_Store |
| 42 | +.AppleDouble | |
| 43 | +.LSOverride | |
| 44 | +Icon? | |
| 45 | +._* | |
| 46 | +.Spotlight-V100 | |
| 47 | +.Trashes | |
| 48 | +.fseventsd | |
| 16 | 49 | |
| 17 | −# Temporary | |
| 50 | +# ─── Temporary ─── | |
| 18 | 51 | *.log |
| 19 | − | |
| 20 | −# SwiftPM | |
| 21 | −.swiftpm/ | |
| 52 | +*.swp | |
| 53 | +*~ | |
added
LICENSE
+26 −0
@@ -0,0 +1,26 @@ | ||
| 1 | +Zyquo Atlas — License | |
| 2 | + | |
| 3 | +Copyright © 2026 Simon-Pierre Boucher. All rights reserved. | |
| 4 | + | |
| 5 | +This source code is made publicly available for reference, evaluation, and | |
| 6 | +transparency. It is NOT released under an open-source license. No permission is | |
| 7 | +granted to copy, modify, redistribute, sublicense, or create derivative works | |
| 8 | +from this software or its source code, in whole or in part, without the prior | |
| 9 | +written permission of the copyright holder. | |
| 10 | + | |
| 11 | +The compiled application (including the notarized .dmg attached to GitHub | |
| 12 | +Releases) is provided free of charge for personal use. | |
| 13 | + | |
| 14 | +Third-party components retain their own licenses: | |
| 15 | + • Mozilla Readability (Sources/ZyquoAtlas/Content/Readability.js, | |
| 16 | + Readability-readerable.js) — Apache License 2.0, Copyright (c) 2010 Arc90 | |
| 17 | + Inc. See Sources/ZyquoAtlas/Content/LICENSE-Readability.txt. | |
| 18 | + • swift-markdown (Swift Package dependency) — Apache License 2.0. | |
| 19 | + | |
| 20 | +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | |
| 21 | +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS | |
| 22 | +FOR A PARTICULAR PURPOSE, AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHOR BE | |
| 23 | +LIABLE FOR ANY CLAIM, DAMAGES, OR OTHER LIABILITY ARISING FROM THE USE OF THE | |
| 24 | +SOFTWARE. | |
| 25 | + | |
| 26 | +Contact: contact@spboucher.ai | |
modified
README.md
+325 −33
@@ -5,48 +5,340 @@ | ||
| 5 | 5 | Mail: contact@spboucher.ai |
| 6 | 6 | --> |
| 7 | 7 | |
| 8 | +<div align="center"> | |
| 9 | + | |
| 10 | +<img src="assets/app-icon.png" width="168" height="168" alt="Zyquo Atlas app icon" /> | |
| 11 | + | |
| 8 | 12 | # Zyquo Atlas |
| 9 | 13 | |
| 10 | −A legendary, native macOS **web browser** written in Swift + SwiftUI on WebKit | |
| 11 | −(`WKWebView`), built **without the Xcode IDE** (Swift Package Manager + the | |
| 12 | −command-line toolchain). Part of the **Zyquo** family. AI is woven into every | |
| 13 | −surface, powered by the same providers/models and encrypted key vault as | |
| 14 | −**Zyquo Cloud**. | |
| 14 | +### The AI-native macOS web browser — every surface, intelligent. | |
| 15 | + | |
| 16 | +*A fast, radically customizable, privacy-first browser where AI is woven into the omnibox, | |
| 17 | +the page, your selection, and your tabs — powered by **your** keys across **12 providers** and **169 models**.* | |
| 18 | + | |
| 19 | +<br/> | |
| 20 | + | |
| 21 | +[](https://github.com/spboucher-ai/zyquo-atlas/releases/latest) | |
| 22 | +[](https://www.apple.com/macos/) | |
| 23 | +[](https://swift.org) | |
| 24 | +[-1FA9A0)](https://webkit.org) | |
| 25 | +[-4E63E0)](#-building-from-source) | |
| 26 | +[](#-installation) | |
| 27 | +[](https://github.com/spboucher-ai/zyquo-atlas/releases) | |
| 28 | +[](LICENSE) | |
| 29 | + | |
| 30 | +<br/> | |
| 31 | + | |
| 32 | +[**⬇︎ Download the latest .dmg**](https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg) · [Features](#-features) · [Screenshots](#-screenshots) · [Install](#-installation) · [Build](#-building-from-source) | |
| 33 | + | |
| 34 | +</div> | |
| 35 | + | |
| 36 | +--- | |
| 37 | + | |
| 38 | +## 📑 Table of Contents | |
| 39 | + | |
| 40 | +- [Overview](#-overview) | |
| 41 | +- [Screenshots](#-screenshots) | |
| 42 | +- [Features](#-features) | |
| 43 | + - [Browser core](#browser-core) | |
| 44 | + - [AI everywhere](#ai-everywhere) | |
| 45 | + - [Massive customization](#massive-customization) | |
| 46 | + - [Privacy & security](#privacy--security) | |
| 47 | + - [Keyboard shortcuts](#keyboard-shortcuts) | |
| 48 | +- [Supported AI providers & models](#-supported-ai-providers--models) | |
| 49 | +- [Requirements](#-requirements) | |
| 50 | +- [Installation](#-installation) | |
| 51 | +- [Usage](#-usage) | |
| 52 | +- [Building from source](#-building-from-source) | |
| 53 | +- [Architecture](#-architecture) | |
| 54 | +- [Verification](#-verification) | |
| 55 | +- [Roadmap](#-roadmap) | |
| 56 | +- [Contributing](#-contributing) | |
| 57 | +- [License](#-license) | |
| 58 | +- [Author](#-author) | |
| 59 | + | |
| 60 | +--- | |
| 61 | + | |
| 62 | +## 🧭 Overview | |
| 63 | + | |
| 64 | +**Zyquo Atlas** is a native macOS web browser built in **Swift + SwiftUI** on Apple's | |
| 65 | +**WebKit (`WKWebView`)** engine — compiled entirely with the Swift Package Manager and the | |
| 66 | +command-line toolchain, **without the Xcode IDE**. It is the web-browser member of the | |
| 67 | +**Zyquo** family. | |
| 68 | + | |
| 69 | +Unlike browsers that bolt a chatbot onto a sidebar, Atlas weaves AI into every surface — | |
| 70 | +the omnibox, the current page, your text selection, and across your open tabs — and it does | |
| 71 | +so on **your** terms: you bring your own API keys, stored in a machine-bound, AES-256-GCM | |
| 72 | +encrypted vault (no Keychain), and page content is sent to a provider **only** when you | |
| 73 | +invoke an AI action. | |
| 74 | + | |
| 75 | +- **~8,300 lines** of Swift across **58 files**, zero build warnings. | |
| 76 | +- **12 AI providers · 169 models** — the same catalog and provider layer as Zyquo Cloud. | |
| 77 | +- **Universal** (Apple Silicon + Intel), **Developer ID–signed, notarized, and stapled**. | |
| 78 | + | |
| 79 | +--- | |
| 80 | + | |
| 81 | +## 📸 Screenshots | |
| 82 | + | |
| 83 | +<div align="center"> | |
| 84 | + | |
| 85 | +**Customizable start page — flagship light theme** | |
| 86 | + | |
| 87 | +<img src="assets/screenshot-startpage.png" width="820" alt="Zyquo Atlas start page (light theme)" /> | |
| 88 | + | |
| 89 | +<br/><br/> | |
| 90 | + | |
| 91 | +**Live browsing with the bookmarks bar** | |
| 92 | + | |
| 93 | +<img src="assets/screenshot-browsing.png" width="820" alt="Zyquo Atlas rendering a web page with the bookmarks bar" /> | |
| 94 | + | |
| 95 | +<br/><br/> | |
| 96 | + | |
| 97 | +**Midnight dark theme with left vertical tabs** | |
| 98 | + | |
| 99 | +<img src="assets/screenshot-dark.png" width="820" alt="Zyquo Atlas dark theme with left vertical tab sidebar" /> | |
| 100 | + | |
| 101 | +</div> | |
| 102 | + | |
| 103 | +--- | |
| 104 | + | |
| 105 | +## ✨ Features | |
| 106 | + | |
| 107 | +Every feature below is implemented in this repository — nothing aspirational. | |
| 108 | + | |
| 109 | +### Browser core | |
| 110 | + | |
| 111 | +- 🗂️ **Real multi-tab WKWebView browsing** — each tab owns its web view and navigation | |
| 112 | + state, with a determinate progress bar, back/forward/reload/stop, and links that open in | |
| 113 | + new tabs (`target=_blank`, ⌘-click, `window.open`). | |
| 114 | +- 📌 **Tab pinning**, **background-tab suspension** (dims + frees memory), and **session | |
| 115 | + restore** per profile on relaunch. | |
| 116 | +- ↕️ **Top horizontal tabs OR a left vertical tab sidebar** (Arc-style) — switch live. | |
| 117 | +- 🧭 **Smart omnibox** — resolves your input into **navigate** (URL), **web search**, or | |
| 118 | + **Ask AI**, with a security indicator and reader toggle. | |
| 119 | +- 🕵️ **Private windows** (⌘⇧N) using a non-persistent data store — no history, no session, | |
| 120 | + no saved data. | |
| 121 | +- 📖 **Reader mode** — a clean, themeable article view with an optional AI summary at the top. | |
| 122 | +- ⬇️ **Downloads** — routed to `~/Downloads` with live progress, reveal-in-Finder, and open. | |
| 123 | +- 🔎 **Find-in-page** (⌘F) — native WebKit find with next/previous and wrap. | |
| 124 | +- ⭐ **Favorites** — a toggleable bookmarks bar, a full manager (edit title/URL/tags/notes, | |
| 125 | + show-on-bar), search, and **Netscape HTML import/export** (interchange with other browsers). | |
| 126 | +- 🕘 **Full-text history** — searchable, grouped by day, with delete-range/clear controls. | |
| 127 | +- 👤 **Profiles** — a persistent personal profile and a private profile, each with isolated | |
| 128 | + WebKit data stores. | |
| 129 | + | |
| 130 | +### AI everywhere | |
| 131 | + | |
| 132 | +- 💬 **Chat-with-page sidebar** — a per-tab, multi-turn conversation grounded in the page's | |
| 133 | + extracted content, with an in-panel **model picker across all 169 models**. | |
| 134 | +- ⚡ **Quick actions** — one-click **Summarize**, **Key points**, and **Translate**, plus | |
| 135 | + long-page **map-reduce** summarization for articles that exceed the model's context. | |
| 136 | +- 🖱️ **Selection floating toolbar** — select any text on a page and get **Explain / | |
| 137 | + Summarize / Translate / Rewrite / Ask** right at the cursor. | |
| 138 | +- 🔮 **Ask AI from the omnibox** — get a streamed, grounded answer without leaving the page. | |
| 139 | +- 🪟 **Multi-tab reasoning** — "compare these open tabs" gathers several pages and answers | |
| 140 | + across them. | |
| 141 | +- 🎚️ **Per-action model tiers** — pick a fast/cheap model for quick actions and a strong one | |
| 142 | + for deep chat; choices persist. | |
| 143 | +- 🧱 **Grounded & injection-safe** — page content is extracted with Mozilla Readability in | |
| 144 | + an isolated JavaScript world (visible text only), wrapped as untrusted data in every | |
| 145 | + prompt, and streamed responses **cancel automatically on navigation**. | |
| 146 | + | |
| 147 | +### Massive customization | |
| 148 | + | |
| 149 | +- 🎨 **Theming engine** — **10 built-in themes** (light & dark, including the flagship | |
| 150 | + teal-indigo *Atlas Light* and *Midnight*), plus a **custom theme editor** (native color | |
| 151 | + wells for accent / background / chrome) that applies **live**. | |
| 152 | +- 🖼️ **Backgrounds** — solid, gradient, or image behind the chrome and start page. | |
| 153 | +- 🧩 **Layout** — top or left tabs, **compact/comfortable density**, bookmarks-bar toggle, | |
| 154 | + and a **UI-size slider**. | |
| 155 | +- 🏠 **Customizable start page** — greeting, a prominent search / Ask-AI box, and a favorites | |
| 156 | + grid. | |
| 157 | +- 💾 **Per-profile persistence** and **theme import/export** as small JSON files. | |
| 158 | + | |
| 159 | +### Privacy & security | |
| 160 | + | |
| 161 | +- 🔐 **Encrypted key vault** — API keys are stored with **AES-256-GCM** (CryptoKit), | |
| 162 | + bound to the machine via `IOPlatformUUID` + HKDF, in `~/Library/Application | |
| 163 | + Support/ZyquoAtlas/vault.zq` — **not** the Keychain, decrypted on demand and never logged. | |
| 164 | +- 🛡️ **Content leaves the device only on a user-invoked AI action**, always to the provider | |
| 165 | + you chose, via your own key — **never to Zyquo**. | |
| 166 | +- 🧯 **Prompt-injection hardening** — extraction drops hidden/`aria-hidden`/off-screen text; | |
| 167 | + page content is delimited and labelled untrusted; the AI layer has no navigation or tool | |
| 168 | + access, so even a hostile page can only produce a bad summary, never an action. | |
| 169 | +- 🍎 **Hardened Runtime, Developer ID–signed, notarized & stapled** — `spctl` reports | |
| 170 | + *Notarized Developer ID*. | |
| 171 | + | |
| 172 | +### Keyboard shortcuts | |
| 173 | + | |
| 174 | +| Shortcut | Action | Shortcut | Action | | |
| 175 | +|---|---|---|---| | |
| 176 | +| `⌘T` | New tab | `⌘Y` | History | | |
| 177 | +| `⌘W` | Close tab | `⌥⌘B` | Bookmarks manager | | |
| 178 | +| `⌘L` | Focus omnibox | `⌘⇧J` | Downloads | | |
| 179 | +| `⌘⇧A` | Toggle AI sidebar | `⌘⇧N` | Private window | | |
| 180 | +| `⌘F` | Find in page | `⌘1`–`⌘8`, `⌘9` | Switch tab / last tab | | |
| 181 | +| `⌘D` | Bookmark page | `⌥Space` | Quick AI ask | | |
| 182 | +| `⌘R` | Reload | `⌘[` / `⌘]` | Back / forward | | |
| 183 | +| `⌘,` | Customize | | | | |
| 184 | + | |
| 185 | +--- | |
| 15 | 186 | |
| 16 | −## Build | |
| 187 | +## 🤖 Supported AI providers & models | |
| 188 | + | |
| 189 | +Atlas speaks to **12 providers** and ships a catalog of **169 chat models**, calling each | |
| 190 | +provider exactly as Zyquo Cloud does (OpenAI-compatible or native Anthropic Messages API, | |
| 191 | +streaming SSE, reasoning-token aware). Bring your own key per provider. | |
| 192 | + | |
| 193 | +| Provider | Provider | Provider | | |
| 194 | +|---|---|---| | |
| 195 | +| OpenAI | Anthropic (Claude) | xAI (Grok) | | |
| 196 | +| Mistral | Google Gemini | Alibaba Qwen (DashScope) | | |
| 197 | +| DeepSeek | Kimi (Moonshot) | Perplexity | | |
| 198 | +| Together AI | DeepInfra | Cerebras | | |
| 199 | + | |
| 200 | +Every provider/model was live-verified end-to-end — see [Verification](#-verification). | |
| 201 | + | |
| 202 | +--- | |
| 203 | + | |
| 204 | +## 💻 Requirements | |
| 205 | + | |
| 206 | +- **macOS 13.0 (Ventura) or later** — Apple Silicon or Intel. | |
| 207 | +- An **API key** for at least one supported provider to use the AI features (browsing works | |
| 208 | + without any key). | |
| 209 | +- To build from source: the **Swift 5.9+ toolchain** (Command Line Tools or Xcode). | |
| 210 | + | |
| 211 | +--- | |
| 212 | + | |
| 213 | +## 📦 Installation | |
| 214 | + | |
| 215 | +1. **[Download `ZyquoAtlas.dmg`](https://github.com/spboucher-ai/zyquo-atlas/releases/latest/download/ZyquoAtlas.dmg)** from the latest release. | |
| 216 | +2. Open the DMG and **drag *Zyquo Atlas* into Applications**. | |
| 217 | +3. Launch it. The app is **notarized by Apple**, so Gatekeeper opens it without warnings. | |
| 218 | +4. Add your API keys in **Customize / Settings** (or import them) to enable AI features. | |
| 219 | + | |
| 220 | +> Verify authenticity yourself: `spctl -a -vv "/Applications/Zyquo Atlas.app"` → | |
| 221 | +> `source=Notarized Developer ID`. | |
| 222 | + | |
| 223 | +--- | |
| 224 | + | |
| 225 | +## 🚀 Usage | |
| 226 | + | |
| 227 | +- **Browse** — type a URL or search terms in the omnibox; press Enter. | |
| 228 | +- **Ask AI** — click **Ask AI** in the omnibox, or open the sidebar with `⌘⇧A`, to ask about | |
| 229 | + the current page with cited, grounded answers. | |
| 230 | +- **Summarize** — open the AI sidebar and hit **Summarize** (works on long articles via | |
| 231 | + map-reduce), or use **Reader mode** for a clean read + summary. | |
| 232 | +- **Selection actions** — select text on any page and choose **Explain / Translate / Rewrite | |
| 233 | + / Ask** from the floating toolbar. | |
| 234 | +- **Compare tabs** — open several pages and click **Compare tabs** in the sidebar. | |
| 235 | +- **Customize** — press `⌘,` to switch themes, move tabs to a left sidebar, tune density, and | |
| 236 | + edit a custom theme with live preview. | |
| 237 | + | |
| 238 | +--- | |
| 239 | + | |
| 240 | +## 🛠️ Building from source | |
| 241 | + | |
| 242 | +Zyquo Atlas builds with the Swift Package Manager — **no Xcode project required**. | |
| 17 | 243 | |
| 18 | 244 | ```sh |
| 19 | −make dev # release build → dist/Zyquo Atlas.app, ad-hoc signed (local iteration) | |
| 20 | −make run # make dev, then launch the app | |
| 21 | −make test # run the test suite | |
| 22 | −make release # universal (arm64+x86_64), Developer ID signed, notarized, stapled | |
| 23 | −make dmg # signed + notarized + stapled dist/ZyquoAtlas.dmg (run after make release) | |
| 24 | −make icon # regenerate AppIcon.icns from assets/icon/zyquo-atlas.svg | |
| 25 | −make verify # API verification with real keys (source .env.keys) | |
| 26 | −make clean | |
| 245 | +git clone https://github.com/spboucher-ai/zyquo-atlas.git | |
| 246 | +cd zyquo-atlas | |
| 247 | + | |
| 248 | +make dev # release build → dist/Zyquo Atlas.app (ad-hoc signed), for local iteration | |
| 249 | +make run # build + launch | |
| 250 | +make test # run the test suite | |
| 251 | +make icon # regenerate AppIcon.icns from assets/icon/zyquo-atlas.svg | |
| 252 | + | |
| 253 | +# Distribution (requires a Developer ID certificate + notarytool profile): | |
| 254 | +make release # universal (arm64 + x86_64), Developer ID signed, notarized, stapled | |
| 255 | +make dmg # signed + notarized + stapled dist/ZyquoAtlas.dmg | |
| 256 | +``` | |
| 257 | + | |
| 258 | +Dependencies: Apple frameworks only — **SwiftUI, WebKit, CryptoKit, AppKit, Foundation, | |
| 259 | +Combine, Security, IOKit** — plus Apple's **swift-markdown**. Mozilla **Readability** | |
| 260 | +(Apache-2.0) is vendored for content extraction. No third-party HTTP libraries. | |
| 261 | + | |
| 262 | +--- | |
| 263 | + | |
| 264 | +## 🏗️ Architecture | |
| 265 | + | |
| 266 | +``` | |
| 267 | +Sources/ZyquoAtlas/ | |
| 268 | +├── App/ @main entry, scene + commands, per-window state, app environment | |
| 269 | +├── DesignSystem/ ZyquoTheme tokens · AtlasTheme + 10 built-in themes · ThemeEngine | |
| 270 | +├── Models/ Tab · Profile · Bookmark · HistoryEntry · AIModel · Message · … | |
| 271 | +├── Browser/ WebView (WKWebView wrapper) · TabManager · ProfileStore · | |
| 272 | +│ OmniIntent · DownloadManager | |
| 273 | +├── Content/ ContentExtractor + Readability.js + AtlasExtractor.js · PageContext · | |
| 274 | +│ Chunker (isolated WKContentWorld, visible-text-only) | |
| 275 | +├── AI/ AIService (streaming, cancel-on-nav) · AIActions · Summarizer | |
| 276 | +├── Providers/ ProviderProtocol · OpenAICompatibleClient · AnthropicClient · Registry | |
| 277 | +├── Services/ ModelCatalog (169) · SecureKeyStore (AES-256-GCM) · StreamingService (SSE) | |
| 278 | +├── Features/ BookmarksService · HistoryService | |
| 279 | +├── ViewModels/ KeyVaultStore | |
| 280 | +└── Views/ Browser chrome, AI sidebar + selection toolbar, feature panels | |
| 27 | 281 | ``` |
| 28 | 282 | |
| 29 | −`make release` produces a **Notarized Developer ID** `Zyquo Atlas.app` (verified: | |
| 30 | −`spctl -a -vv` → `source=Notarized Developer ID`), universal, built without the | |
| 31 | −Xcode IDE. Signing identity, Team ID, and the `notarytool` keychain profile are | |
| 32 | −reused from the Zyquo family pipeline; no secrets live in this repo. | |
| 283 | +--- | |
| 284 | + | |
| 285 | +## ✅ Verification | |
| 286 | + | |
| 287 | +A built-in harness (`--verify`) exercises the real stack — content extraction, then a | |
| 288 | +grounded summarize across **every one of the 169 models**, the full AI-action matrix, and | |
| 289 | +cancel-on-navigation / privacy invariants — against live APIs. | |
| 290 | + | |
| 291 | +**Latest result: 183 / 183 checks green.** Full table in | |
| 292 | +[`docs/VERIFICATION.md`](docs/VERIFICATION.md). | |
| 293 | + | |
| 294 | +--- | |
| 295 | + | |
| 296 | +## 🗺️ Roadmap | |
| 297 | + | |
| 298 | +Planned enhancements (tracked in [`docs/PLAN.md`](docs/PLAN.md)): | |
| 299 | + | |
| 300 | +- Tab groups / "spaces" and drag-to-reorder | |
| 301 | +- Hover thumbnail previews for tabs and links | |
| 302 | +- AI writing assist that types back into web text fields | |
| 303 | +- Opt-in auto-summaries and link hover-summaries | |
| 304 | +- Inline source-link and section-citation chips in answers | |
| 305 | +- A menu-bar quick-ask extra | |
| 306 | + | |
| 307 | +--- | |
| 308 | + | |
| 309 | +## 🤝 Contributing | |
| 310 | + | |
| 311 | +Issues and feature suggestions are welcome via | |
| 312 | +[GitHub Issues](https://github.com/spboucher-ai/zyquo-atlas/issues). This is a source-available | |
| 313 | +project (see [License](#-license)); please open an issue to discuss substantial changes before | |
| 314 | +submitting a pull request. | |
| 315 | + | |
| 316 | +Engineering standards: Swift 5.9+, zero warnings, every source file carries the project | |
| 317 | +header, design tokens over magic numbers, and the provider layer stays byte-compatible with | |
| 318 | +the Zyquo family. | |
| 319 | + | |
| 320 | +--- | |
| 321 | + | |
| 322 | +## 📄 License | |
| 323 | + | |
| 324 | +Copyright © 2026 Simon-Pierre Boucher. **All rights reserved.** The source is public for | |
| 325 | +reference and transparency; the compiled app (the notarized `.dmg`) is free for personal use. | |
| 326 | +See [`LICENSE`](LICENSE). Vendored Mozilla Readability and swift-markdown are Apache-2.0. | |
| 327 | + | |
| 328 | +--- | |
| 329 | + | |
| 330 | +## 👤 Author | |
| 331 | + | |
| 332 | +<div align="center"> | |
| 333 | + | |
| 334 | +**Simon-Pierre Boucher** | |
| 33 | 335 | |
| 34 | −### Toolchain note | |
| 336 | +📧 [contact@spboucher.ai](mailto:contact@spboucher.ai) | |
| 35 | 337 | |
| 36 | −The Command Line Tools' default SDK (macOS 27 beta) declares SwiftUI's `@State` | |
| 37 | −& co. as macros whose `SwiftUIMacros` plugin ships only with Xcode, so every | |
| 38 | −SwiftUI build fails against it. All builds therefore pin | |
| 39 | −`SDKROOT=/Library/Developer/CommandLineTools/SDKs/MacOSX26.sdk` (set in the | |
| 40 | −`Makefile`). Build directly with `swift build -c release` only if you export the | |
| 41 | −same `SDKROOT`. | |
| 338 | +<br/> | |
| 42 | 339 | |
| 43 | −## Layout | |
| 340 | +*Part of the **Zyquo** family — Cloud · Local · Agent · Atlas.* | |
| 44 | 341 | |
| 45 | −- `Sources/ZyquoAtlas/` — the app (App, DesignSystem, Models, Browser, Content, | |
| 46 | − AI, Providers, Features, Services, ViewModels, Views). | |
| 47 | −- `Sources/ZyquoVerify/` — thin launcher that execs the app's `--verify` harness. | |
| 48 | −- `docs/` — `PLAN.md` (phase progress), `AI-BROWSER-RESEARCH.md` (Phase 0.A), | |
| 49 | − `PROVIDER-REUSE.md` (Phase 0.B). | |
| 50 | −- `Resources/`, `scripts/`, `assets/` — bundle resources, build scripts, icon source. | |
| 342 | +<sub>Built with Swift, SwiftUI & WebKit — no Xcode IDE. 🗺️</sub> | |
| 51 | 343 | |
| 52 | −Requires macOS 13.0+. | |
| 344 | +</div> | |
added
assets/app-icon.png
+0 −0
Binary file not shown.
added
assets/app-icon@512.png
+0 −0
Binary file not shown.
added
assets/screenshot-browsing.png
+0 −0
Binary file not shown.
added
assets/screenshot-dark.png
+0 −0
Binary file not shown.
added
assets/screenshot-startpage.png
+0 −0
Binary file not shown.