Skip to content

Commit d9daa66

Browse files
committed
fix: the brand is Bunmaska with a capital b in prose - revert the lowercase sweep and update the schema, about page, and wordmarks
1 parent 93d09e1 commit d9daa66

48 files changed

Lines changed: 235 additions & 234 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

website/src/components/Compare.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const rows: { label: string; electron: string; bunmaska: string }[] = [
2020
<section class="section-border reveal">
2121
<div class="wrap py-16 sm:py-20">
2222
<div class="mx-auto max-w-[46ch] text-center">
23-
<p class="eyebrow mb-4">bunmaska vs Electron</p>
23+
<p class="eyebrow mb-4">Bunmaska vs Electron</p>
2424
<h2 class={HEAD}>
2525
Same shape.
2626
<span class="serif-accent text-accent-text">a tenth of the weight.</span>
@@ -36,7 +36,7 @@ const rows: { label: string; electron: string; bunmaska: string }[] = [
3636
<div class="px-4 py-3 sm:px-5"></div>
3737
<div class="px-4 py-3 font-medium text-text-muted sm:px-5">Electron</div>
3838
<div class="border-l border-border px-4 py-3 font-medium text-accent-text sm:px-5">
39-
bunmaska
39+
Bunmaska
4040
</div>
4141
</div>
4242
{

website/src/components/Footer.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const cols = [
4545
<div class="max-w-6xl mx-auto grid gap-10 py-14 sm:grid-cols-2 md:grid-cols-3 lg:grid-cols-5">
4646
<div>
4747
<div class="flex items-baseline gap-2">
48-
<span class="text-base font-medium tracking-tight">bunmaska</span>
48+
<span class="text-base font-medium tracking-tight">Bunmaska</span>
4949
<a
5050
href="/docs/changelog"
5151
class="tag font-mono hover:text-text"
@@ -87,7 +87,7 @@ const cols = [
8787
class="wrap flex flex-col items-start justify-between gap-2 py-5 text-sm text-text-faint sm:flex-row sm:items-center"
8888
>
8989
<span
90-
>© 2026 bunmaska, named after the <a href="/about" class="underline decoration-border underline-offset-2 hover:text-text">bun maska</a> at an Irani cafe near
90+
>© 2026 Bunmaska, named after the <a href="/about" class="underline decoration-border underline-offset-2 hover:text-text">bun maska</a> at an Irani cafe near
9191
you. No Chromium was shipped in the making of this.</span
9292
>
9393
<span><span class="font-mono">v{VERSION}</span> · MIT. Go wild.</span>

website/src/components/Hero.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,14 +30,14 @@ import HeroPixels from "./ui/HeroPixels.tsx";
3030
class="mx-auto max-w-[24ch] font-serif leading-[1.08] text-balance text-[clamp(2.25rem,4.5vw,3rem)]"
3131
>
3232
Build an app before you finish your <span
33-
class="italic text-accent-text">bunmaska &amp; chai.</span
33+
class="italic text-accent-text">Bunmaska &amp; chai.</span
3434
>
3535
</h1>
3636
</div>
3737
<div class="relative">
3838
<Image
3939
src={codeblock}
40-
alt="A minimal bunmaska app - a few lines of TypeScript that open a native window"
40+
alt="A minimal Bunmaska app - a few lines of TypeScript that open a native window"
4141
class="w-full max-w-[37.5rem] h-auto"
4242
/>
4343
</div>

website/src/components/Nav.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ const LINKS = [
1919
<a
2020
href="/"
2121
class="text-base font-medium tracking-tight uppercase"
22-
aria-label="bunmaska home">bunmaska</a
22+
aria-label="Bunmaska home">Bunmaska</a
2323
>
2424
<a
2525
href="/docs/changelog"
@@ -51,7 +51,7 @@ const LINKS = [
5151
href={GITHUB}
5252
target="_blank"
5353
rel="noopener noreferrer"
54-
aria-label="bunmaska on GitHub"
54+
aria-label="Bunmaska on GitHub"
5555
>
5656
<Icon
5757
name="mdi:github"

website/src/components/SizeStory.astro

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ const stats = [
2121
</span>
2222
</h2>
2323
<p class="mt-4 text-text-muted">
24-
Electron asks for 150 MB+ before it's done anything. bunmaska is the
24+
Electron asks for 150 MB+ before it's done anything. Bunmaska is the
2525
download you won't notice and the app you can't hear running.
2626
</p>
2727
</div>
@@ -38,7 +38,7 @@ const stats = [
3838
<div>
3939
<div class="mb-2 flex items-baseline justify-between">
4040
<span class="text-sm text-text"
41-
>The same app, on bunmaska</span
41+
>The same app, on Bunmaska</span
4242
>
4343
<span class="font-mono text-sm text-accent-text">~16-23 MB</span>
4444
</div>

website/src/content/docs/api/app.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
---
22
title: "app"
3-
description: "The application lifecycle controller in bunmaska - a drop-in equivalent of Electron's app for managing readiness, quitting, paths, locale, the single-instance lock, and macOS desktop integration."
3+
description: "The application lifecycle controller in Bunmaska - a drop-in equivalent of Electron's app for managing readiness, quitting, paths, locale, the single-instance lock, and macOS desktop integration."
44
order: 1
55
---
66

77
Process: Main
88

9-
The `app` module controls your application's event lifecycle. In bunmaska it is the drop-in equivalent of Electron's `app`: it tracks readiness, coordinates a clean quit, resolves the standard special directories, reports name/version/locale, manages the single-instance lock, and exposes the macOS desktop bits (dock, hide/show, about panel, badge). It extends Node's `EventEmitter`, so the full listener API (`on` / `once` / `addListener` / `removeListener` / `emit` / …) matches Electron's contract.
9+
The `app` module controls your application's event lifecycle. In Bunmaska it is the drop-in equivalent of Electron's `app`: it tracks readiness, coordinates a clean quit, resolves the standard special directories, reports name/version/locale, manages the single-instance lock, and exposes the macOS desktop bits (dock, hide/show, about panel, badge). It extends Node's `EventEmitter`, so the full listener API (`on` / `once` / `addListener` / `removeListener` / `emit` / …) matches Electron's contract.
1010

1111
`app` is a singleton - import it; do not construct it.
1212

@@ -49,7 +49,7 @@ if (!app.isReady()) {
4949

5050
Begins shutting the app down. Emits the cancelable `before-quit` event, then `will-quit`; if a listener calls `preventDefault()` on either, the quit is aborted. If neither vetoes, emits `quit` with the exit code and exits the process. Idempotent - a second call while already quitting is ignored.
5151

52-
Note: unlike Electron, bunmaska's `quit()` does not run web-page `beforeunload`/`unload` handlers as a veto path; the veto comes from your main-process `before-quit` / `will-quit` listeners.
52+
Note: unlike Electron, Bunmaska's `quit()` does not run web-page `beforeunload`/`unload` handlers as a veto path; the veto comes from your main-process `before-quit` / `will-quit` listeners.
5353

5454
```ts
5555
import { app } from 'bunmaska'
@@ -106,7 +106,7 @@ console.log(app.getAppPath())
106106

107107
Returns `string` - a path to the special directory associated with `name`, honoring any override set via `setPath`.
108108

109-
bunmaska supports the common subset of Electron's names. It does **not** support `recent` (Windows-only in Electron anyway) or `assets`.
109+
Bunmaska supports the common subset of Electron's names. It does **not** support `recent` (Windows-only in Electron anyway) or `assets`.
110110

111111
```ts
112112
import { app } from 'bunmaska'
@@ -120,7 +120,7 @@ const dbFile = join(app.getPath('userData'), 'app.db')
120120
* `name` string - one of the names accepted by `getPath`.
121121
* `path` string
122122

123-
Overrides the path returned by `getPath` for a given name. Unlike Electron, bunmaska does not validate that the directory exists - create it yourself if needed.
123+
Overrides the path returned by `getPath` for a given name. Unlike Electron, Bunmaska does not validate that the directory exists - create it yourself if needed.
124124

125125
```ts
126126
import { app } from 'bunmaska'
@@ -184,7 +184,7 @@ console.log(app.getLocale()) // e.g. 'en-US'
184184

185185
### `app.getSystemLocale()`
186186

187-
Returns `string` - the system locale. In bunmaska this matches `getLocale()` (there is a single resolved host locale rather than Electron's separate Chromium/OS sources).
187+
Returns `string` - the system locale. In Bunmaska this matches `getLocale()` (there is a single resolved host locale rather than Electron's separate Chromium/OS sources).
188188

189189
```ts
190190
import { app } from 'bunmaska'
@@ -274,7 +274,7 @@ import { app } from 'bunmaska'
274274
app.showAboutPanel()
275275
```
276276

277-
bunmaska does not implement `setAboutPanelOptions` - the panel uses platform defaults.
277+
Bunmaska does not implement `setAboutPanelOptions` - the panel uses platform defaults.
278278

279279
### `app.setBadgeCount([count])` _macOS_
280280

@@ -354,9 +354,9 @@ Returns:
354354

355355
* `event` Event
356356

357-
Emitted once, when bunmaska has finished initializing and is ready to create windows. Fires at most once. You can also call `isReady()` or use `whenReady()`.
357+
Emitted once, when Bunmaska has finished initializing and is ready to create windows. Fires at most once. You can also call `isReady()` or use `whenReady()`.
358358

359-
Note: unlike Electron, bunmaska's `ready` does not carry a `launchInfo` argument.
359+
Note: unlike Electron, Bunmaska's `ready` does not carry a `launchInfo` argument.
360360

361361
```ts
362362
import { app } from 'bunmaska'
@@ -494,7 +494,7 @@ app.userAgentFallback = 'MyApp/1.0'
494494

495495
### `app.dock` _macOS_ _Readonly_
496496

497-
A `Dock | undefined` property - the macOS dock object, or `undefined` on other platforms. The bunmaska `Dock` is a small object with:
497+
A `Dock | undefined` property - the macOS dock object, or `undefined` on other platforms. The Bunmaska `Dock` is a small object with:
498498

499499
* `setBadge(text: string): void` - set the dock badge text (`''` clears it).
500500
* `getBadge(): string` - the current dock badge text.
@@ -509,15 +509,15 @@ app.dock?.setBadge('!')
509509
app.dock?.bounce('critical')
510510
```
511511

512-
## Not in bunmaska (yet)
512+
## Not in Bunmaska (yet)
513513

514-
bunmaska implements the lifecycle, paths, metadata, locale, single-instance, and macOS desktop core of Electron's `app`. The following notable Electron members are **not** implemented:
514+
Bunmaska implements the lifecycle, paths, metadata, locale, single-instance, and macOS desktop core of Electron's `app`. The following notable Electron members are **not** implemented:
515515

516516
- **`app.focus()`** - no programmatic app/window focus from the `app` module.
517517
- **`app.getFileIcon()`** - no file-icon lookup.
518518
- **Protocol-client APIs** - `setAsDefaultProtocolClient`, `removeAsDefaultProtocolClient`, `isDefaultProtocolClient`, `getApplicationNameForProtocol`, `getApplicationInfoForProtocol` are all absent.
519519
- **Recent-documents APIs** - `addRecentDocument`, `clearRecentDocuments`, `getRecentDocuments`.
520-
- **GPU / hardware APIs** - `disableHardwareAcceleration`, `isHardwareAccelerationEnabled`, `disableDomainBlockingFor3DAPIs`, `getGPUFeatureStatus`, `getGPUInfo`, `getAppMetrics`. (bunmaska runs on system WebKit, not Chromium, so the `chrome://gpu`-shaped surface does not exist.)
520+
- **GPU / hardware APIs** - `disableHardwareAcceleration`, `isHardwareAccelerationEnabled`, `disableDomainBlockingFor3DAPIs`, `getGPUFeatureStatus`, `getGPUInfo`, `getAppMetrics`. (Bunmaska runs on system WebKit, not Chromium, so the `chrome://gpu`-shaped surface does not exist.)
521521
- **Networking** - `configureHostResolver`, `setProxy`, `resolveProxy`, `importCertificate`, `setClientCertRequestPasswordHandler`, `configureWebAuthn`.
522522
- **Login items** - `getLoginItemSettings` / `setLoginItemSettings`.
523523
- **Accessibility APIs** - `isAccessibilitySupportEnabled`, `setAccessibilitySupportEnabled`, `getAccessibilitySupportFeatures`, `setAccessibilitySupportFeatures`, and the `accessibilitySupportEnabled` property.
@@ -526,5 +526,5 @@ bunmaska implements the lifecycle, paths, metadata, locale, single-instance, and
526526
- **macOS app-relocation / security APIs** - `isInApplicationsFolder`, `moveToApplicationsFolder`, `isSecureKeyboardEntryEnabled`, `setSecureKeyboardEntryEnabled`, `startAccessingSecurityScopedResource`, `enableSandbox`.
527527
- **`getPath` names** - `recent` and `assets` are not supported.
528528
- **Properties** - `commandLine`, `runningUnderARM64Translation`, and `accessibilitySupportEnabled` are not exposed.
529-
- **Windows taskbar/jump-list APIs** - `setUserTasks`, `getJumpListSettings`, `setJumpList`, `setAppUserModelId`, `setToastActivatorCLSID`, and the `toastActivatorCLSID` property. (bunmaska runs on Windows, but these jump-list/taskbar extras are not wired on any platform yet.)
529+
- **Windows taskbar/jump-list APIs** - `setUserTasks`, `getJumpListSettings`, `setJumpList`, `setAppUserModelId`, `setToastActivatorCLSID`, and the `toastActivatorCLSID` property. (Bunmaska runs on Windows, but these jump-list/taskbar extras are not wired on any platform yet.)
530530
- **Events** - many Electron `app` events are not emitted by this module, including `will-finish-launching`, `certificate-error`, `select-client-certificate`, `login`, `gpu-info-update`, `render-process-gone`, `child-process-gone`, `accessibility-support-changed`, `session-created`, and the macOS `did-become-active` / `did-resign-active` / `new-window-for-tab` events. Some cross-cutting events that Electron raises on `app` (e.g. `activate`, `open-url`, `open-file`, `browser-window-created`/`-focus`/`-blur`, `web-contents-created`) are reserved as listenable names but are emitted by the window/web-contents subsystems rather than by this module - consult those modules' docs for current coverage.

website/src/content/docs/api/auto-updater.md

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
---
22
title: "autoUpdater"
3-
description: "Application self-update for bunmaska on macOS, Linux, and Windows: an explicit check/download/verify flow over a version.json feed, with no Squirrel and an experimental install step everywhere."
3+
description: "Application self-update for Bunmaska on macOS, Linux, and Windows: an explicit check/download/verify flow over a version.json feed, with no Squirrel and an experimental install step everywhere."
44
order: 23
55
---
66

7-
Enables bunmaska apps to update themselves from a channel feed that `bunmaska build` produces. It is a drop-in subset of Electron's `autoUpdater`, but built on plain Bun rather than Squirrel: it reads an `update.json` manifest, compares versions, downloads + integrity-checks the artifact (size and wyhash), decompresses (zstd) and stages a `.tar`, then relaunches via an installer seam.
7+
Enables Bunmaska apps to update themselves from a channel feed that `bunmaska build` produces. It is a drop-in subset of Electron's `autoUpdater`, but built on plain Bun rather than Squirrel: it reads an `update.json` manifest, compares versions, downloads + integrity-checks the artifact (size and wyhash), decompresses (zstd) and stages a `.tar`, then relaunches via an installer seam.
88

99
Process: Main. The `autoUpdater` singleton is a Node.js [`EventEmitter`](https://nodejs.org/api/events.html). Two things that differ from Electron up front, so you don't get surprised:
1010

1111
- The flow is **electron-updater style**, not Electron-core style. `checkForUpdates()` does *not* download automatically - you call `downloadUpdate()` yourself once an update is available.
12-
- The check/download/verify/stage pipeline works on **all three platforms bunmaska targets - macOS, Linux, and Windows**. There is no Squirrel anywhere in this module. The one caveat is the final **install** step: it is an **experimental stub on every platform** (no Squirrel.Mac, no Squirrel.Windows), so apps are expected to supply their own installer for deterministic results (see _Replacing the installer_).
12+
- The check/download/verify/stage pipeline works on **all three platforms Bunmaska targets - macOS, Linux, and Windows**. There is no Squirrel anywhere in this module. The one caveat is the final **install** step: it is an **experimental stub on every platform** (no Squirrel.Mac, no Squirrel.Windows), so apps are expected to supply their own installer for deterministic results (see _Replacing the installer_).
1313

1414
```ts
1515
import { autoUpdater } from 'bunmaska';
@@ -31,7 +31,7 @@ await autoUpdater.checkForUpdates();
3131

3232
Sets the base URL of the channel feed - the directory where `update.json` and the build artifacts live. Accepts either an options object or a bare string. Throws if the URL is missing or empty.
3333

34-
Note the shape: bunmaska accepts only a `url`. Electron's `headers`, `serverType`, and `allowAnyVersion` options are not implemented (the feed is a static directory + JSON, so there's nothing to authenticate or negotiate).
34+
Note the shape: Bunmaska accepts only a `url`. Electron's `headers`, `serverType`, and `allowAnyVersion` options are not implemented (the feed is a static directory + JSON, so there's nothing to authenticate or negotiate).
3535

3636
```ts
3737
import { autoUpdater } from 'bunmaska';
@@ -104,7 +104,7 @@ autoUpdater.on('update-available', async () => {
104104

105105
Installs the staged update and relaunches, via the installer seam. Throws if nothing has been downloaded - call `downloadUpdate()` first. Should only be called after `update-downloaded` has been emitted.
106106

107-
> **Note:** the default installer is **EXPERIMENTAL on every platform** (macOS, Linux, and Windows alike). It hands the staged tar to a best-effort, platform-specific swap-and-relaunch and is the one step not exercised by bunmaska's test suite. Apps that need deterministic installs should inject their own installer (see _Replacing the installer_ below). _macOS_, _Linux_, and _Windows_ bundle layouts differ, which is exactly why this step is fenced off.
107+
> **Note:** the default installer is **EXPERIMENTAL on every platform** (macOS, Linux, and Windows alike). It hands the staged tar to a best-effort, platform-specific swap-and-relaunch and is the one step not exercised by Bunmaska's test suite. Apps that need deterministic installs should inject their own installer (see _Replacing the installer_ below). _macOS_, _Linux_, and _Windows_ bundle layouts differ, which is exactly why this step is fenced off.
108108
109109
```ts
110110
import { autoUpdater } from 'bunmaska';
@@ -168,7 +168,7 @@ Returns:
168168

169169
Emitted after `downloadUpdate()` has fetched, verified, and staged the update. Call `quitAndInstall()` to apply it.
170170

171-
Note the payload differs from Electron: bunmaska emits a single `UpdateInfo` object. Electron's `releaseNotes`, `releaseDate`, and `updateURL` fields are not present, because the `version.json` manifest does not carry them.
171+
Note the payload differs from Electron: Bunmaska emits a single `UpdateInfo` object. Electron's `releaseNotes`, `releaseDate`, and `updateURL` fields are not present, because the `version.json` manifest does not carry them.
172172

173173
```ts
174174
import { autoUpdater } from 'bunmaska';
@@ -224,13 +224,13 @@ const updater = new AutoUpdaterImpl({
224224

225225
`setDepsForTesting()` exists too, but as the name says, it is for tests - don't reach for it in app code.
226226

227-
## Not in bunmaska (yet)
227+
## Not in Bunmaska (yet)
228228

229229
Compared to Electron's `autoUpdater`, the following are intentionally absent:
230230

231-
- **Squirrel.Windows / MSIX** - bunmaska runs the same plain tar + zstd pipeline on Windows as elsewhere, so there is no Squirrel.Windows, no MSIX detection, no `allowAnyVersion` downgrade option, and no `--squirrel-firstrun` handling. The check/download/verify/stage steps work on Windows; only the final install is the experimental cross-platform stub.
231+
- **Squirrel.Windows / MSIX** - Bunmaska runs the same plain tar + zstd pipeline on Windows as elsewhere, so there is no Squirrel.Windows, no MSIX detection, no `allowAnyVersion` downgrade option, and no `--squirrel-firstrun` handling. The check/download/verify/stage steps work on Windows; only the final install is the experimental cross-platform stub.
232232
- **Squirrel.Mac** - even on macOS there is no Squirrel. Integrity is a wyhash content hash + byte-length check against the manifest, and you are responsible for code-signing the swapped bundle yourself.
233233
- **Event: `before-quit-for-update`** - not emitted. `quitAndInstall()` goes straight through the installer seam (the default calls `app.quit()`).
234-
- **Automatic download** - Electron downloads as soon as an update is available; bunmaska makes it an explicit `downloadUpdate()` call (electron-updater style). This is a deliberate behavioral difference, not a missing feature.
234+
- **Automatic download** - Electron downloads as soon as an update is available; Bunmaska makes it an explicit `downloadUpdate()` call (electron-updater style). This is a deliberate behavioral difference, not a missing feature.
235235
- **`setFeedURL` options `headers`, `serverType`, `allowAnyVersion`** - only `{ url }` (or a bare string) is accepted. The feed is a static directory, so there's nothing to send headers to or negotiate a server type with.
236236
- **Rich `update-downloaded` payload** - `releaseNotes`, `releaseName` as a standalone arg, `releaseDate`, and `updateURL` are not provided. You get a single `UpdateInfo` (`version`, `releaseName`); the `version.json` manifest carries nothing more.

0 commit comments

Comments
 (0)