Skip to content

Releases: cjse/solarmorph

Solarmorph 0.4.1

Choose a tag to compare

@cjse cjse released this 24 Sep 18:18

The helper recovers better when the Bluetooth of the lamp stops working correctly, and the log of the background process keeps its history.

Changes

  • When the lamp accepts the connection but answers that it has no resources or cannot find its own characteristics, the error says to remove the power of the lamp for ten seconds. The helper stops after the first such answer. Before, it tried up to five connections and a scan, and then showed a general connection error.
  • The helper turns off its notifications before it disconnects. The lamp must forget them at the end of the link, but it possibly keeps some state for each one.
  • The log of the background process, ~/.config/solarmorph/daemon.log, keeps the earlier runs. Each run starts with a line that has the date, and the log shows each disconnect. When the log is larger than 1 MB, the background process moves it to daemon.log.1.

If the lamp stops responding again, remove its power for ten seconds, and open an issue with daemon.log attached.

Install or update

xattr -dr com.apple.quarantine solarmorph-0.4.1
cd solarmorph-0.4.1
npm install
npm run dev

Stop npm run dev with Ctrl-C when the commands show in Raycast. Your pairing stays valid. See the README.

Tested with one Solarcycle Morph desk lamp on one Mac with Apple silicon. The Intel build is not tested. The stuck-lamp path is tested only with unit tests.

SHA-256 of the zip: ba361397639e6515808a6317de1a21b1eb27d9667588c31875bfde03849f7b8c

This project is not affiliated with Dyson.

Solarmorph 0.4.0

Choose a tag to compare

@cjse cjse released this 22 Sep 17:32

Fixes from a full review: the live state, the background process, and Lamp Controls are more reliable.

Changes

  • The live state is correct from the start. Before, a change in the first seconds of the background process, for example the end of a brightness ramp, could stay out of the live copy.
  • A daylight or preset change goes into the live state as soon as the lamp acknowledges it.
  • The preference Keep the Connection Open → Never works while a background process is active. Before, the commands failed until that process stopped. A changed idle time applies to the next command.
  • Lamp Controls shows "Could not reach the lamp" with a Refresh action when the first load fails, and says when the list no longer follows the lamp. The power action switches the lamp to the state that its title shows.
  • The background process is more robust. A client that stops reading cannot block it. It does not stop in the middle of a command at its idle limit. It skips a command whose client gave up, so a command that timed out in Raycast does not change the lamp later.
  • morph from the terminal and the helper in Raycast share one background process when they are the same build.
  • The pairing sends a real locale to Dyson (for example en-GB). morph pair suggests the region of the Mac.
  • Smaller fixes: a failed scan stops, a lost Bluetooth fragment makes the handshake try again, and the configuration file is written atomically.

Install or update

xattr -dr com.apple.quarantine solarmorph-0.4.0
cd solarmorph-0.4.0
npm install
npm run dev

Stop npm run dev with Ctrl-C when the commands show in Raycast. Your pairing stays valid. See the README.

Tested with one Solarcycle Morph desk lamp on one Mac with Apple silicon. The Intel build is not tested.

SHA-256 of the zip: 2a9ccb7ee2a9349e91a25ee9ebc6d66754e4e01b25891155b7ce0249c4743a1a

This project is not affiliated with Dyson.

Solarmorph 0.3.0

Choose a tag to compare

@cjse cjse released this 21 Sep 20:17

The Lamp Controls list is live now. The background process follows the notifications of the lamp.

Changes

  • The Lamp Controls list shows each change immediately: from a command, from the buttons on the lamp, or from the MyDyson app. While the lamp ramps to a new brightness, the list shows the values on the way.
  • status answers from a live copy of the state in approximately 0.01 seconds, not 0.8 seconds. on, off, and toggle take approximately 0.3 to 0.4 seconds.
  • ⌘R in the list reads the lamp itself, and not the live copy.
  • The background process does not stop while a Lamp Controls list is open. The idle limit of 1 minute starts when the list closes.
  • morph: the new command watch, and the new option status --fresh.

Install or update

xattr -dr com.apple.quarantine solarmorph-0.3.0
cd solarmorph-0.3.0
npm install
npm run dev

Stop npm run dev with Ctrl-C when the commands show in Raycast. Your pairing stays valid. See the README.

Tested with one Solarcycle Morph desk lamp on one Mac with Apple silicon. The Intel build is not tested.

SHA-256 of the zip: e0308f67d367fbee9e412fce73b6aba20a421951c0068cfa2796bd88be81892b

This project is not affiliated with Dyson.

Solarmorph 0.2.0

Choose a tag to compare

@cjse cjse released this 21 Sep 20:04

Commands are fast now. A background process holds the Bluetooth connection between commands.

Changes

  • The first command takes approximately 3 seconds. A subsequent command takes approximately 0.6 seconds, not 2.5 seconds.
  • The background process starts with the first command and stops after 1 minute without a command. No launchd service and no install step are necessary.
  • New command Disconnect Lamp. The lamp accepts one session at a time, so the MyDyson app cannot connect while the background process holds the lamp.
  • New preference Keep the Connection Open: 1 minute to 1 hour, or never.
  • Two commands at the same time now run one after the other. Before, the second one failed.
  • A lamp that does not answer the handshake fails after approximately 20 seconds with a message that names the probable cause. Before, this took more than 2 minutes.
  • morph: the new commands daemon, daemon stop, and daemon status, and the --direct flag.

Install or update

xattr -dr com.apple.quarantine solarmorph-0.2.0
cd solarmorph-0.2.0
npm install
npm run dev

Stop npm run dev with Ctrl-C when the commands show in Raycast. The update has a new command and a new preference, so npm run dev is necessary: Raycast reads the manifest again only then. Your pairing stays valid. See the README.

Tested with one Solarcycle Morph desk lamp on one Mac with Apple silicon. The Intel build is not tested.

SHA-256 of the zip: 51713e7edfc0f2bdae7333e400196e5fb50c86af204de8217fb0d04f42f88b9c

This project is not affiliated with Dyson.

Solarmorph 0.1.0

Choose a tag to compare

@cjse cjse released this 21 Sep 19:28

The first release. Control a Dyson Solarcycle Morph desk lamp from a Mac.

  • morph, a command-line tool that talks to the lamp over Bluetooth LE.
  • A Raycast extension: Lamp Controls, Toggle Lamp, Turn Lamp on, Turn Lamp off, Set Lamp Brightness, Set Lamp Colour Temperature, and Pair Lamp.

Install

solarmorph-0.1.0.zip contains the extension and a helper binary for Apple silicon and Intel, so Swift is not necessary.

xattr -dr com.apple.quarantine solarmorph-0.1.0
cd solarmorph-0.1.0
npm install
npm run dev

The helper is not notarized, which is why the first line is there. See the README for the details, the pairing, and the risks.

Status

Tested with one Solarcycle Morph desk lamp on one Mac with Apple silicon. The Intel build is not tested.

SHA-256 of the zip: 198eab79b8d8bcb4fd6ae159150a34ee34bf4e055ee45ab7cc02f13185839f9b

This project is not affiliated with Dyson.