Skip to content

Releases

moonlet 0.1.39

Choose a tag to compare

@github-actions github-actions released this 08 Nov 19:17
627eb3b

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

What's new

  • Search the board (X93). Find a task moved from the Tasks sidebar into the board header, and ⌘F focuses it. It no longer hides cards. It lists what matches by key, title, a session's name or its branch:
    • On this board: picking one marks its card Found and scrolls to it, opening a folded column such as Done for the moment.
    • Not on this board: tasks on your other boards and what a search in each board's tracker finds (Linear, Jira and GitHub; ClickUp by task id). Picking one opens a preview with Open in …, Switch to or Reopen, and New session.
    • With no match, Create “…” opens the column's new-issue form with that title.

Fixes

  • Recent activity lists live agents first, with fresh activity times (#577).
  • The base-branch chip clears when another host pulls this host's copy (X13, #578).

moonlet 0.1.38

Choose a tag to compare

@github-actions github-actions released this 07 Nov 20:57
412c87f

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

What's new

  • Every host runs heavy commands for every other host (X89). A session on your MacBook can now run a heavy command such as pnpm check on your central host, on another Mac or Linux host linked to it, or on the project's cloud machines. Each host's Takes heavy commands from other hosts switch and its Run at most N at once are set from Settings › Machines › Workers in any Mac's app, and the switch is off until you turn it on. A project's heavy commands are approved once for the whole account. Update every host to this version: a host on an older version runs its own sessions' commands only.
  • Heavy commands in practice (X90). The list of heavy commands is read from the project's main checkout, so a .moonlet/config.toml kept out of git counts. Background Bash calls are routed too, past Claude Code's 10-minute limit, and moonlet exec ends with the path of the command's whole output.
  • Archived sessions stay on their task (X86). They open read only, and Restore brings back their tabs and chats. The central host's app lists the sessions other members run, and opens them from its copy.
  • Copy a code block in agent messages with its corner icon (X87).
  • The user's own messages show as Markdown, on the desktop and the phone (X92).
  • One Keychain prompt per start for tracker tokens (X91).
  • Run only on in a session's menu (X73), and pulling a project's base branch pulls it on every host that has it (X13).
  • The moonlet website and docs (X85).

moonlet 0.1.37

Choose a tag to compare

@github-actions github-actions released this 05 Nov 08:00
7373fc7

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.36

Choose a tag to compare

@github-actions github-actions released this 02 Nov 22:08
7e515a1

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.35

Choose a tag to compare

@github-actions github-actions released this 01 Nov 00:10
9900463

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.34

Choose a tag to compare

@github-actions github-actions released this 28 Oct 11:11
def410f

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.33

Choose a tag to compare

@github-actions github-actions released this 27 Oct 11:13

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.32

Choose a tag to compare

@github-actions github-actions released this 26 Oct 13:49

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

moonlet 0.1.31

Choose a tag to compare

@github-actions github-actions released this 25 Oct 19:08

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

Cloud workers, after the first real test

0.1.30's cloud workers have now run on a real Hetzner account. A machine was ready about 50 seconds after the request, ran a heavy command and was removed again. The test turned up these fixes.

  • Location and Image are dropdowns, filled from the provider, as Machine type already was. Locations show as "Falkenstein, DE (fsn1)". Images include your Hetzner project's own snapshots, and only those for the picked machine type's architecture (x86 or Arm) are offered.
  • Each dropdown waits for the one before it: Machine type until a location is picked, Image until a machine type is. Disabled fields now look disabled.
  • Only machine types a location still makes. Hetzner is retiring the cpx11–cpx51 types in Europe, and moonlet still offered them, so making a machine failed with "unsupported location for server type". A saved type that the provider has since retired now shows an error, and the project page asks for another type before saving a changed cloud setting.
  • A removed machine leaves your tailnet at once. Its logout was refused before, so a removed machine stayed in the tailnet until Tailscale removed it as an offline ephemeral node. The machine is now allowed exactly that one Tailscale command, nothing more.
  • Clearer tailnet policy setup. Settings › Machines › Cloud workers says where each part of the policy goes, and warns when a rule letting everything reach everything would let cloud machines reach your whole tailnet. The snippet now names the central host's real Tailscale address, also when you set it up from another Mac, and shows in full.

Fixes

  • A terminal test that failed now and then on CI waits for the output it checks.

Before you update

The protocol has not changed since 0.1.30: Macs, Linux hosts and phones on 0.1.30 keep working with this release. Cloud machines get the moonlet version of the central host that makes them, so update the central host to use the fixes above.

moonlet 0.1.30

Choose a tag to compare

@github-actions github-actions released this 25 Oct 14:32

Apple Silicon build, signed with a Developer ID and notarized by Apple. Installed apps update themselves from Settings › Updates.

Heavy commands run on a free machine

An agent's test suites and builds no longer have to run on the machine the agent is on. List a project's heavy commands in .moonlet/config.toml:

[heavy]
commands = ["pnpm test", "pnpm build"]
outputs = ["coverage"]

Once you approve the list, moonlet runs each one on the least busy machine you've lent: a Mac with Use this Mac for heavy commands on, a remote host, the central host itself, or a cloud machine. The agent stays where it is and doesn't notice the difference.

  • Approve once. Settings › Projects lists a project's heavy commands. Agents run approved commands without asking, on the machines you approved them for. A command you add or change runs where the agent is until you approve it.
  • The session's files, exactly. The machine runs the command in a copy that holds exactly the session's files. Every change the command makes, such as snapshots or coverage/, is back in the session before the agent reads the result.
  • Nothing gets lost. If the machine goes away mid-run (a lid closes), the command runs again on the central host, and the agent gets that run's result.
  • Jobs tab. Every routed command is a job of its session. The Jobs tab lists them: where each ran, how long it took, its exit status and its full output. The chat's Bash row shows where the command ran.
  • Workers page. Settings › Machines › Workers shows each machine's load, slots, round trip and what it is running.
  • Remote hosts can help too. Every connected tailnet host in Settings › Machines › Hosts, such as a Linux build box, has its own Use for heavy commands switch. The first time, it asks for a pairing code from the central host (moonletd pair there).

Cloud workers

The central host can rent machines from Hetzner Cloud when every worker is busy, or when you ask for one, and removes them once they are idle.

  • Set it up in Settings › Machines › Cloud workers. Add a Hetzner API token. For Tailscale, either set up an OAuth client (guided, with a Check button) or paste an auth key. Limits: at most N machines, and machine-hours a month.
  • Per project: a project's settings page turns cloud machines on and picks the machine type and location. [heavy] machine_setup installs what its commands need.
  • Billed time counts. Hetzner bills every started hour, so an idle machine stays until just before its paid hour runs out, ready for the next command. Set the idle time to 0 to remove a machine as soon as its command ends.
  • Ask for the cloud: the new-session composer has Run heavy commands in the cloud, and moonlet worker up starts a machine ahead of a long build.
  • What a machine gets: the project's files and the variables you approved in [heavy] env. It never gets your git credentials, your provider token or your Tailscale secret.

This is new and has been tested against the providers' published API examples, not yet against a real Hetzner account. Set the limits low until you have seen it work.

Also new

  • Task comments. The Task detail in Tasks mode and a session's Task tab show the task's comments, for Linear, Jira, ClickUp and GitHub issues, and take a new one (⌘↵ posts it).
  • Every toast has a Dismiss button.

Fixes

  • Pairing is tied to what is pairing. A pairing code from Settings › Phones pairs only a phone, and one from Hosts or moonletd pair pairs only a Mac. Before, a device could pair as a Mac with a phone's code and get a Mac's rights.
  • The app no longer shows a Back, Forward and Reload menu on right-click.
  • On the phone, sheets cover the tab bar on iOS.

Before you update

This release changes the protocol between the app, the daemon and other machines. Update everything that connects:

  • Remote Macs: update moonlet on each one too. Until then their host row reads "Update moonlet on …".
  • Linux hosts: run the install command again: curl -fsSL https://github.com/1devstudio/moonlet/releases/latest/download/install.sh | sh
  • The phone app: a phone build older than this release can no longer connect. Install a build made from this version.

Routed commands and remote hosts have been tested with daemons on one machine, not yet between two real machines.