Skip to content

Releases: Titanium-Devops/titanium-bot-lite

titanium-tiiny-bot 0.1.19

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 24 Sep 17:52

Titanium Bot Lite 0.1.19

Adds account_auth_key() to lite/device.py: the device's own account API
can hand over a working gateway key directly, no TiinyOS needed. Not wired
into find() automatically -- this is a web server whose settings page,
not a terminal, is the right place to ask for a password, and that page
lives in a vendored directory out of scope for this change. Plain
capability for an operator's own one-off use in the meantime.

Also moves CI onto Blacksmith runners.

Titanium Tiiny Bot 0.1.18

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 17 Sep 00:49

Titan starts on a machine where no Tiiny answers. In 0.1.17 it did not: the search found nothing, and the app exited saying "Cannot read configuration; check config.json and your command-line settings." config.json was fine. The real reason was a refusal that said no Tiiny was found, and the sentence about config.json was printed over it.

That was a dead end with no way out. Settings > Model is where you type your device's address, and you cannot reach Settings if the console never comes up. Titan now starts anyway and says so, in the terminal and in the farm's log:

No Tiiny found on this machine, its USB links or its network. Titan is
starting anyway. Open Settings > Model to enter the address, or run
farm device and start it again.

A device that was never set up is no longer told to "check its address", which is no help to somebody who has never given one, and it is never called: nothing is sent to an address nobody chose.

A refusal now says its own sentence. Only a configuration that genuinely cannot be read gets the sentence about configuration.

This was found by the farm's own field check on Windows and it was never a Windows bug. It is what happens anywhere no Tiiny answers, and every check this project had ran the app through the selfcheck, which uses the echo model and never looks for a device. There is now a test that starts the app exactly the way the farm starts it, with a data directory in the environment, a port on the command line and no device, and waits for it to answer. Run against 0.1.17 it fails with the same line the tester saw.

Verified on GitHub's ubuntu, macOS and Windows runners: 167 tests, the farm's start path and the offline selfcheck pass on all three.

Titanium Tiiny Bot 0.1.17

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 16 Sep 23:44

Titanium Tiiny Bot now runs on Windows. 0.1.16 stopped at its first import there, on import fcntl, which is POSIX only, so a person who installed it through the launcher got a traceback instead of an app. Both file locks now go through a small shim: flock on POSIX, msvcrt on Windows, with a refused lock looking the same to every caller.

Four more things behind it would have failed next: the memory reading in Settings, the O_NOFOLLOW flag on six file opens, the lock file's permissions, and a liveness probe that on Windows would have killed the process it was asking about.

The app had never been run on Windows by anything, so this release also adds CI on Linux, macOS and Windows, which found three more:

  • Text files were read with the machine's own encoding. On Windows that is cp1252, which cannot decode the seed files, so the app crashed again as soon as the lock fix let it get that far.
  • Memory recall returned nothing at all on Windows, silently. Saved facts were recorded with a backslash path that the code matching on "memory/log/" could never match, so every fact fell out of the prompt while the console still listed them.
  • Starting up waited on a reverse DNS lookup of the address being bound. That measured 35 seconds on one machine, against a 5 second budget, and it was never a Windows problem: a laptop on a slow network is the same machine.

Verified on GitHub's ubuntu, macOS and Windows runners: 162 tests and the offline selfcheck pass on all three. The Windows selfcheck starts in 2.1 seconds and answers a turn. Nobody has yet run this on a real Windows machine beside a real Tiiny.

Titanium Tiiny Bot 0.1.16

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 14 Sep 22:11

A Tiiny that is reachable and simply has no chat model loaded is no longer reported as unreachable. When a device request fails, Titan asks the device what it has loaded and says what is true: no chat model loaded, with what to do about it, or the old sentence when the device really did not answer. The same for the voice routes, and Settings > Model carries the same state. Verified against a real Tiiny on TiinyOS 0.1.34.

Titanium Tiiny Bot 0.1.15

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 14 Sep 09:55

Voice finds the speech model the device really reports (type ASR). The selfcheck runs offline from a read-only folder with its data under the home directory, so the farm's own submission check passes. Verified against a real Tiiny z01 on TiinyOS 0.1.34.

Titanium Tiiny Bot 0.1.14

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 14 Sep 09:51

Voice finds the speech model the device really reports (type ASR), so Talk works on TiinyOS 0.1.34. First release verified against a real Tiiny: chat turn 0.62 s, tool call, TTS 1.3 s, STT 0.88 s, a full spoken turn in 7.9 s.

Titanium Tiiny Bot 0.1.13

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 13 Sep 19:22

The Model section starts and stops device models and can point Titan at another computer. Titan writes facts after a memorable turn on its own and recalls the ones that match. Voice reachable from the Talk button, files open when pressed, a microphone chooser, pip and farm install paths, 44 px controls.

Titanium Tiiny Bot 0.1.11

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 13 Sep 17:42

Finds the Tiiny instead of shipping a hostname that resolves on one Mac.

The default model address was http://openai.api.tiiny/v1, a name the TiinyOS desktop app writes into /etc/resolver. It resolved on that Mac and nowhere else, and on that Mac the voice lifecycle path's Host: p8800.api.tiiny header reached the local proxy and came back 502.

  • base now defaults to empty, meaning find the device. TIINY_BASE, then ~/.tiinyapps/device.json, then a search of every attached USB /30 peer and this machine's own /24 on :39218, which is unauthenticated and carries the serial so a box answering on both Wi-Fi and USB is recognised as one box. Then it asks the box which port serves the gateway: 1.0 refuses 8800 from another machine, older firmware serves it there. Empty stays empty in config.json, because writing today's DHCP address into a file is how this breaks next week.
  • No subprocess, which the farm's scanner and tests/test_server.py both enforce: local addresses come from a UDP connect that sends no packet, and from bind(), which succeeds only on an address this host owns.
  • lite/onelane.py replaced with the current OneLane library. The vendored copy predated the 1.0 port fix and hardcoded 8800.
  • Device hands the lane its port, instead of letting the library spend two HTTP probes rediscovering it.
  • voice.py sends the vhost header only when the gateway is on port 80, so lifecycle calls do not point at the wrong service on older firmware.
  • Docs and scripts/probe-device.sh no longer tell you to use :8800.

Proved read-only against serial TNYM26072400300011Q at 192.168.100.94, TiinyOS 0.1.34: the search found it in 1.7s by serial, picked port 80, and both the /v1 surface and a management route answered over the discovered base. No model was started or stopped and no device setting was changed. Full suite: 101 tests, OK.

PR: #1

🤖 Generated with Claude Code

Titanium Tiiny Bot 0.1.10

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 12 Sep 10:52

No subprocess anywhere, so the farm's scanner passes it. Config file, port 7788, routines, voice through the device.

Titanium Tiiny Bot 0.1.9

Choose a tag to compare

@webdevtodayjason webdevtodayjason released this 12 Sep 10:16

First release for tinyapp.farm. Chat, memory, skills, routines and voice on the Tiiny, beside the device.