Skip to content

0.4.1

Reference. What this release does, what it does not, and what is simulated.

Not yet tagged. This page is written before the tag so that the release body is reviewed rather than typed on release night. The date below is filled in when the maintainer tags it.

Released: on tagging. Previous: 0.4.0, on PyPI 2026-10-17.


What 0.4.1 is

An evening on a Windows PC that goes cleanly. Three small things, words and waiting rather than new machinery, found by a first-time Windows user on a PC of his own. Nothing in the plant changed, so this is a patch.

fsmes demo bottling stop ; fsmes demo bottling   # used to refuse :8010
fsmes demo bottling stop --force                 # a sentence, then it stops
py -m fsmes --version                            # which copy that was

A stop and a start in the next breath. On Windows a listening socket outlives the process that owned it by about two seconds, and a start inside them refused the port, naming a program that no longer existed. stop now waits until its ports are free and says so only when it waited — 127.0.0.1:8010 … was still closing; it is free after 0.7 s. Linux is unchanged.

A wrong flag answered in a sentence. fsmes fleet stop names --force, so that is the word people arrive with, and on the demo command it printed typer's bare No such option: --force and stopped nothing. It is accepted now and answered — stop needs no --force here … it is an option of fsmes fleet stop. Carrying on without it. The plant stops either way; the fleet's gate is unmoved.

Which Python owns your fsmes. After an upgrade fsmes --version can still print the old number: a PC holds more than one Python and pipx keeps its own. Three pages now say how to tell — py -m fsmes --version against fsmes --version, where fsmes — and the rule: upgrade the one you type.

What 0.4.1 does not do, and what is simulated

Nothing in the plant is new, so everything 0.4.0 does not do stands word for word — no PLC write path, no redundant SQLite, no database failover, no chat across a takeover, the kill proven on Linux only, no real plant anywhere — and a number still comes from the line simulator in src/fsmes/sim/ over OPC UA.

Upgrading from 0.4.0

pipx upgrade factorysemantics-mes   # or py -m pip install --upgrade
fsmes --version                     # 0.4.1

No migrations — b6f0c2a71d58 is head on both versions, so no init-db step, and nothing changes what a number means. The procedure, and what to do when fsmes --version prints the old number, are on upgrading between versions.