| @@ -28,7 +28,7 @@ A copy of the license has been provided in the file documentation/API/LICENSE. | |||||
| = New Session Manager - API | = New Session Manager - API | ||||
| IMPORTANT: "New Session Manager" is community version of the | |||||
| IMPORTANT: "New Session Manager" is a community version of the | |||||
| link:http://non.tuxfamily.org/nsm/API.html["Non Session Manager" by Jonathan Moore Liles], who also | link:http://non.tuxfamily.org/nsm/API.html["Non Session Manager" by Jonathan Moore Liles], who also | ||||
| wrote the majority of this API document, especially the API itself. *The API is the same*. Any | wrote the majority of this API document, especially the API itself. *The API is the same*. Any | ||||
| technical changes or differences in behaviour are described in <<API Versions and Behaviour Changes>>. | technical changes or differences in behaviour are described in <<API Versions and Behaviour Changes>>. | ||||
| @@ -49,9 +49,11 @@ The API comprises a simple Open Sound Control (OSC) based protocol, along with s | |||||
| guidelines, which can easily be implemented by various applications. | guidelines, which can easily be implemented by various applications. | ||||
| This project contains a program called `nsmd` which is an implementation of the server side of | This project contains a program called `nsmd` which is an implementation of the server side of | ||||
| the NSM API. `nsmd` can be controlled by direct OSC messages, or (more commone) a GUI: | |||||
| the NSM API. `nsmd` can be controlled by direct OSC messages, or (more commonly) a GUI: | |||||
| Included in this package is the `nsm-legacy-gui`, which gets symlinked to "non-session-manager`. | Included in this package is the `nsm-legacy-gui`, which gets symlinked to "non-session-manager`. | ||||
| Another GUI is "Argodejo". | |||||
| Another GUI is "Argodejo". Other applications exist that (partially) support the NSM API and are able | |||||
| to load clients, but they do not use the New-Session-Manager (or Non-Session-Manager) implementation | |||||
| and are therefore out of scope for this document. | |||||
| However, the same server-side API can also be implemented by other programs (such as Carla), | However, the same server-side API can also be implemented by other programs (such as Carla), | ||||
| although consistency and robustness will likely suffer if non-NSM compliant clients are allowed to | although consistency and robustness will likely suffer if non-NSM compliant clients are allowed to | ||||
| @@ -772,7 +774,7 @@ misbehaves and sends too-new messages outside of announced :capabilites: | |||||
| Rewritten API document without code changes to adapt to existing code or existing client behaviour: | Rewritten API document without code changes to adapt to existing code or existing client behaviour: | ||||
| * Changed versioning scheme to Semantic Versioning with three positions Major.Minor.Patch | * Changed versioning scheme to Semantic Versioning with three positions Major.Minor.Patch | ||||
| * <<Quit or Exit>> SHOULD hide instead or exiting when :optional-gui: is supported and MAY not | |||||
| * <<Quit or Exit>> SHOULD hide instead of exiting when :optional-gui: is supported and MAY not | |||||
| act on the quit through menu otherwise. | act on the quit through menu otherwise. | ||||
| * <<#server-to-client-control-messages-open,Open>>: Make clear that there are only certain | * <<#server-to-client-control-messages-open,Open>>: Make clear that there are only certain | ||||
| possibilities for save paths. We added MUST because the rule was just implied before. | possibilities for save paths. We added MUST because the rule was just implied before. | ||||
| @@ -792,7 +794,14 @@ Code changes: | |||||
| is now finalized with sending and empty string "" as session name. Previously this was just | is now finalized with sending and empty string "" as session name. Previously this was just | ||||
| a symbolically irrelevant console message `"Done."` | a symbolically irrelevant console message `"Done."` | ||||
| * unstable `/nsm/gui` protocol: Send client status after a GUI attaches to running server. This | * unstable `/nsm/gui` protocol: Send client status after a GUI attaches to running server. This | ||||
| was not happening before, but it was the intention. It was just broken in nsmd.cpp. This alone would only require API_VERSION_PATCH increment, but we are already incrementing minor. | |||||
| * unstable `/nsm/gui` protocol: Send label "launch error!" when a program is added (or loaded) that does not exist in $PATH. This requires no adaptation of any client, server or GUI because labels are arbitrary already and this is not meant for automatic parsing, but as user information. | |||||
| * Replies to `/nsm/server/save` etc. will now be sent back to the sender and not falsely to the last client who replied to `/nsm/client/save`. This alone would only require API_VERSION_PATCH increment, but we are already incrementing minor. | |||||
| * <<Server Control API>>: `/nsm/server/add` was replying with an undocumented error code on success. Instead, as this document already stated, it now sends `"/reply", path, "Launched."`. Again, this would have been just API_VERSION_PATCH on its own. | |||||
| was not happening before, but it was the intention. It was just broken in nsmd.cpp. This alone | |||||
| would only require API_VERSION_PATCH increment, but we are already incrementing minor. | |||||
| * unstable `/nsm/gui` protocol: Send label "launch error!" when a program is added (or loaded) that | |||||
| does not exist in $PATH. This requires no adaptation of any client, server or GUI because labels | |||||
| are arbitrary already and this is not meant for automatic parsing, but as user information. | |||||
| * Replies to `/nsm/server/save` etc. will now be sent back to the sender and not falsely to the last | |||||
| client who replied to `/nsm/client/save`. This alone would only require API_VERSION_PATCH | |||||
| increment, but we are already incrementing minor. | |||||
| * <<Server Control API>>: `/nsm/server/add` was replying with an undocumented error code on success. | |||||
| Instead, as this document always specificed, it now sends `"/reply", path, "Launched."`. | |||||
| Again, this would have been just API_VERSION_PATCH on its own. | |||||