Vane:一款开源原生 Mac 浏览器
Show HN: Vane – An open-source native Mac browser
Vane 是一款用 Swift、SwiftUI、AppKit 和 WebKit 构建的开源原生 macOS 浏览器,由 WKWebView 渲染页面,并加入侧边栏标签、Spaces、配置文件、阅读工具等浏览器控制功能,要求 macOS 26 或更高版本。
Vane is a native macOS browser built with Swift, SwiftUI, AppKit, and WebKit.
Apple’s WKWebView renders pages; Vane adds sidebar tabs, Spaces, profiles,
reading tools, and browser controls around it.
Requires macOS 26 or later. Vane is in active development. Read the limitations before relying on it as your only browser.
Download and install
- Open the latest GitHub release and read its notes and known issues.
- Download
Vane.dmg, open it, and drag Vane to Applications. - Open Vane from Applications. The first-run welcome is skippable.
Published releases are built through the signing and notarization workflow. That does not establish compatibility with every site or complete clean-Mac installation/upgrade coverage. See release validation.
Use Vane → Check for Updates… to check manually. The updater offers stable
releases; tags containing a hyphen are prereleases and are not offered.
Merging to main does not publish a release.
Stable release bundles packaged with a Developer ID offer the default-browser prompt once. Local, debug, and prerelease builds skip it. The manual Make Vane Default… action remains available in Settings.
Build and run
Use macOS 26 or later and Xcode 26 or later with its included Swift toolchain. From a checkout:
git clone https://github.com/notnaki/vane.git
cd vane
./make-app.sh
open Vane.appmake-app.sh builds the release executable, assembles the app and its helpers,
adds resources and icons, and signs the bundle ad hoc for local development.
Use ./make-app.sh debug for a faster development build.
To build the executable and run checks that need no Keychain or window server:
swift build -c release ./.build/release/vane selfcheck --pure
Use the assembled app for bundled icons and native sandbox/signing behavior. Xcode 27 plus macOS 27 is needed for Vane-managed location decisions; the minimum runtime remains macOS 26. See development setup and release procedures for testing and distribution.
Feature overview
| Area | What is implemented |
|---|---|
| Browsing | Sidebar tabs, Favourites, pinned tabs, folders, multiple windows, private windows, Split View, Peek, and Little Vane. |
| Organization | Spaces, reusable Space templates, Tidy Tabs with review/undo, bulk tab organization, bookmarks, history search, and Library. |
| Reading | Reader preferences, an offline article queue, find on page, and page capture. |
| Media | Custom Picture in Picture, a minimized sidebar player, and embedded-player controls with native PiP fallback. |
| Visual tools | Easels with notes, drawing, captures, live web views, and editable JSON or PNG export; per-site Boosts for styles, Zap, and opt-in scripts. |
| Data | Separate profiles, local Keychain passwords and account chooser, browser imports, exports, complete library backups, and local recovery points. |
| Controls | Custom search engines and site-search shortcuts, keyboard bindings, themes, app icons, Battery Saver, and site controls. |
| Integrations | Unpacked WebExtensions, EasyList-subset blocking and HTTPS subscriptions, GitHub Live Folders, and optional AI providers using your own keys. |
“Implemented” describes available behavior. Verification is scoped to the revision, macOS version, signing, and fixture or service recorded in each audit. It is not a guarantee of general website or extension compatibility.
Start browsing
- ⌘T opens search for a new tab; ⌘L opens the address bar.
- ⇧⌘T reopens a closed tab; ⌘F finds text on the page.
- ⇧⌘L opens Library; ⌘Y opens History.
- Click a Space button or swipe horizontally over the sidebar to switch Spaces.
- Use F6 / ⇧F6 to move between the page and browser controls.
Shortcuts can be changed in Settings; the menu bar shows current bindings. Everyday browsing explains tab organization, shared windows, site search, keyboard navigation, downloads, and media.
The screenshot notes describe the isolated demo captures.
Documentation
The documentation index is the starting point for guides, troubleshooting, specialist audits, and recorded validation.
| Guide | Covers |
|---|---|
| Everyday browsing | Tabs, Spaces, windows, search, shortcuts, Library, downloads, and media. |
| Reading and customization | Reader, offline articles, Easels, capture, Boosts, templates, appearance, and Battery Saver. |
| Profiles, data, and privacy | Passwords, imports/exports, website data, backups, folder locks, and recovery boundaries. |
| Extensions and integrations | Extension consent/diagnostics, content blocking, permissions, AI keys, and GitHub Live Folders. |
| Development | Setup, CLI, focused tests, graphical smoke checks, project structure, and contribution workflow. |
| Releases and distribution | Publishing, signing/notarization, updater checks, and candidate validation. |
The website field guide provides a visual introduction. The Markdown guides above contain detailed current controls and caveats; the website keeps its existing layout and navigation.
Limitations
Vane uses the system WebKit engine. Support depends on the installed macOS and WebKit version, the website, and sometimes signing or Apple-managed capabilities.
- Compatibility is incomplete. Scoped macOS 27 public-demo and local-fixture passes do not establish provider sign-ins, subscription streaming, cross-network calls, all hardware permissions, or minimum-macOS/notarized-candidate coverage. See the compatibility matrix.
- Passkeys are pending Apple managed browser entitlement approval, matching provisioning, and registration/sign-in validation. Developer ID alone is insufficient.
- Folder uploads are blocked on macOS 27.0.x because a standalone WebKit probe reproduced a guard fault before submission. Ordinary files remain available; directory submission on other versions is unverified. See the matrix’s directory investigation.
- Passwords and extensions have compatibility limits. Autofill is heuristic; unpacked MV2/MV3 support does not guarantee Chrome Web Store or arbitrary API support.
- Blocking supports part of EasyList. Unsupported rules are reported; local disk lists do not update automatically. URL subscriptions do.
- Data does not sync between Macs. Backups are unencrypted and exclude Keychain secrets, cookies/site storage, downloaded files, and external extension code. General browser imports exclude sessions; the dedicated Arc flow supports some.
- Live drafts are not recoverable backups. Suspension protects detected or uncertain drafts, but crashes, page closure, or locking can lose volatile work. Draft protection and crash recovery describe what is preserved and what cannot be restored.
- Permissions and reliability remain bounded. Embedded device requests fail closed; location controls require Xcode/macOS 27; screen sharing stays managed by WebKit/macOS. Resume, physical storage failure, and every navigation failure are not guaranteed by synthetic checks.
- Some features use private WebKit APIs, including inspector integration and a guarded page-shutdown fallback, which can change with macOS releases.
Detailed evidence lives in the audit index. Browser readiness separates completed work from remaining validation and engineering tasks. A real notarized candidate and clean-Mac install/upgrade checks are still required for distribution claims.
Contributing
Follow AGENTS.md for isolated branches, relevant validation, independent PR review, required CI, and squash-merging. Use focused local checks for the affected behavior; documentation changes do not need the full app suite.
Report issues with the macOS version, Vane version, steps, and expected behavior in the issue tracker. Avoid including passwords, tokens, personal browsing data, or private documents in reports.
License
Vane is released under the MIT License. See LICENSE. Bundled font attribution and licenses are in Sources/Vane/EaselFonts.
来源:Hacker News · github.com
