Skip to content

Latest commit

 

History

History
100 lines (68 loc) · 3.66 KB

File metadata and controls

100 lines (68 loc) · 3.66 KB

endelito — tiny macOS menu bar app and CLI for playing Endel without Electron.

Endelito

endelito is a small Go CLI plus a native Swift menu bar app for playing Endel from the website without the Electron desktop wrapper.

The shape is intentionally boring: one WebKit session, one menu bar app, one CLI.

  • The Swift app is a menu bar-only WKWebView wrapper for https://play.endel.io/en.
  • WebKit uses the default website data store, so the site session persists on this Mac.
  • The Go CLI launches the app, sends endelito:// commands, and reads a tiny local state file.
  • There are no charts, dashboards, visualizations, or background provider scans.
  • The app opens the Focus soundscape by default and can switch across 17 known Focus, Relax, and Sleep soundscapes.

Install

Install the signed and notarized release from the uinaf Homebrew tap:

brew tap uinaf/tap
brew install --cask endelito

The cask installs both Endelito.app and the endelito CLI from the latest GitHub Release.

To build and install from source instead:

make build
make install

This copies build/Endelito.app to /Applications/Endelito.app and installs bin/endelito to $(brew --prefix)/bin/endelito when Homebrew is present (otherwise /usr/local/bin). Override with PREFIX= / APPLICATIONS_DIR=.

Use

endelito launch
endelito status
endelito show
endelito hide
endelito sources
endelito source focus
endelito source "nature elements"
endelito play dynamic-focus
endelito play
endelito pause
endelito toggle
endelito reload
endelito debug
endelito deeplink "https://play.endel.io/en/soundscape/focus"
endelito quit

Open the player once with endelito show to sign in or pick content. After that, the app can stay in the menu bar and the CLI can control playback. The menu bar item includes a Source submenu with the known Focus, Relax, and Sleep soundscapes. Use endelito sources to list known source IDs. Use endelito source <id-or-name> to load a source without starting playback, or endelito play <id-or-name> to load and start it. Use endelito deeplink <url> to forward a URL into the web player's deeplink handlers.

Sign-in persists across app restarts through WebKit's default website data store for Endelito.app. Rebuilding the app with the same bundle identifier keeps using the same WebKit session storage.

How It Works

The app registers the endelito:// URL scheme. Commands like endelito play send endelito://play; the Swift app receives the URL and forwards the action into the WebView.

See Architecture for the current control model and limitations.

Build and Verify

make build

Build outputs are written to bin/endelito and build/Endelito.app. The app bundle includes generated Finder and menu bar icons.

make verify

make verify syntax-checks the WebKit bridge, runs bridge contract tests, formats/vets Go, runs Go tests, builds the CLI and app, and checks the app bundle, URL scheme, icons, and CLI help.

For a quick machine-readable environment and runtime snapshot:

make doctor

See Contributing for local validation and Distribution for CI and release details.

Docs

Contributing

See Contributing for setup, validation, and pull request expectations. Agent-specific repository rules are in the agent guide.

License

Endelito is available under the MIT License.