github.com/simpleiot/simpleiot@v0.18.3/CHANGELOG.md (about)

     1  # Changelog
     2  
     3  All notable changes to this project will be documented in this file.
     4  
     5  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
     6  and this project adheres to
     7  [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
     8  
     9  For more details or to discuss releases, please visit the
    10  [Simple IoT community forum](https://community.tmpdir.org/c/simple-iot/5)
    11  
    12  ## [Unreleased]
    13  
    14  - fix bug where export/import displayed no nodes (#749). Fixed in (#753)
    15  
    16  ## [[0.18.1] - 2024-11-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.18.1)
    17  
    18  - fix bug where Shelly IO Enable Control option was not working (#739)
    19  
    20  ## [[0.18.0] - 2024-11-07](https://github.com/simpleiot/simpleiot/releases/tag/v0.18.0)
    21  
    22  - change default login to `admin`/`admin` (used to be `admin@admin.com`, but
    23    there was is reason to have a bogus email address). (#730)
    24  - file client/node
    25    - option to store binary files
    26    - display filename, file size, and stored size
    27    - create file client backend code that runs for file nodes
    28    - calculate and populate md5sum when file contents change
    29    - display md5sum in file node UI
    30  - serial client/node
    31    - add serial file download -- can be used for MCU updates
    32    - fix issues with populate node ID for high rate data
    33  - db client
    34    - fix crash if node ID is not populated correctly in data
    35  - client (BREAKING API CHANGE)
    36    - renamed client.Group -> client.RunGroup. This is so we don't conflict with
    37      the client that manages group nodes
    38  - fix issue with user login when moving users to different groups (#713)
    39  
    40  ## [[0.17.0] - 2024-08-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.17.0)
    41  
    42  - add rule/condition/action disable flag (#352)
    43  - rule action: add point key field (#714)
    44  
    45  ## [[0.16.2] - 2024-06-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.2)
    46  
    47  - db client: Improve Influx history query functionality
    48    - If history query response fails, try responding again with ErrorMessage
    49    - TagFilters values can now be empty string or a slice of strings
    50  
    51  ## [[0.16.1] - 2024-05-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.1)
    52  
    53  - Modbus API: add an option to validate the input when a client writes to a
    54    register.
    55  - Update client:
    56    - improve autodownload logic
    57    - check for updates when URI is changed
    58    - improve error handling and reporting
    59    - fix bug when reducing update list
    60  - expand documentation on
    61    [creating a client](https://docs.simpleiot.org/docs/ref/client.html#creating-new-clients).
    62  
    63  ## [[0.16.0] - 2024-05-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.16.0)
    64  
    65  - add Update client -- currently supports system updates
    66    [docs](https://docs.simpleiot.org/docs/user/update.html).
    67  - update elm-tooling
    68  - api: Added `history.<nodeId>` NATS endpoint to send Influx history queries to
    69    an Influx DB client node.
    70  
    71  ## [[0.15.3] - 2024-03-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.15.3)
    72  
    73  - UI: add tag UI to metrics client UI
    74  
    75  ## [[0.15.0] - 2024-03-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.15.0)
    76  
    77  - NTP client: Do not set configuration if servers are not specified. This allows
    78    timesyncd to use the default configuration if no servers are specified.
    79  - server: Args now accepts a `*FlagSet` to allow flags to be extended
    80  - Influx client when writing points from a given node also adds additional tags
    81    based on the node that emitted the point. Previously, `nodeID` tag was added,
    82    but this has been renamed to `node.id`. Also added is `node.type` and
    83    `node.description` (populated with the value of a point of type
    84    "description").
    85  - For each Influx DB client, the user can specify an array of tag point types
    86    (via point type "tagPointType"). These point types are also copied as tags for
    87    each point emitted by the node. For example, if node A has two points tag:city
    88    (i.e. Point.Type is "tag" and Point.Key is "city") and tag:state, then these
    89    point values are appended to every single point emitted by node A. In Influx,
    90    each point would have a tag `node.tag.city` and `node.tag.state` with their
    91    respective Point.Text values.
    92  - BREAKING CHANGE: Influx DB tag `nodeID` is now `node.id`
    93  - update frontend dependencies and fix various build issues
    94  - UI: add tag UI most clients so that custom tags can be added to each node.
    95  
    96  ## [[0.14.10] - 2024-02-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.10)
    97  
    98  - store: Improved performance when loading many nodes and edges
    99  - serial: Fixed bug: do not write points over closed serial port
   100  
   101  ## [[0.14.9] - 2024-01-18](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.9)
   102  
   103  - require custom UI assets to be rooted and not be public directory
   104  - add `-UIAssetsDebug` cmdline flag. This will dump all the UI assets file and
   105    is useful in debugging to make sure your assets files are correct -- it can
   106    get a little tricky with embedding, etc.
   107  
   108  ## [[0.14.8] - 2024-01-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.8)
   109  
   110  - support passing in a custom UI (fs.FS or directory name) to the SIOT server.
   111    This allows you to replace the SIOT UI with a custom version.
   112  
   113  ## [[0.14.7] - 2024-01-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.7)
   114  
   115  - add modbus swap words for Int32/Uint32 writes
   116  
   117  ## [[0.14.6] - 2024-01-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.6)
   118  
   119  - verb -> adjective changes in several types. This is more consistent and
   120    accurate with how things are done in this industry (HTML, etc). This is a
   121    breaking change in that nodes with disable or control flag set will need to be
   122    reconfigured.
   123    - disable -> disabled
   124    - control -> controlled
   125  - add modbus Float32ToRegsSwapWords()
   126  
   127  ## [[0.14.5] - 2024-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.5)
   128  
   129  - simpleiot-js: Fixed bugs and improved README
   130  - Replace deprecated `io/ioutil` functions (#680)
   131  - fixed frontend bug where only custom node types could be added
   132  
   133  ## [[0.14.4] - 2023-12-19](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.4)
   134  
   135  - UI: in node raw view, you can now edit/add/delete points (#676)
   136  - UI: add custom node types
   137  
   138  ## [[0.14.3] - 2023-12-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.3)
   139  
   140  - UI: display unknown nodes as raw type and points
   141  - UI: add raw view button to node expanded view. This allows us to view the raw
   142    points in any node which is useful for debugging and development. (see
   143    [docs](https://docs.simpleiot.org/docs/user/ui.html#raw-node-view) for more
   144    information)
   145  
   146  ## [[0.14.2] - 2023-11-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.2)
   147  
   148  - Signal generator client: replaced "Sync Parent" option with "Destination" to
   149    indicate the destination node and point type for generated points
   150  - update gonetworkmanager to v2.1.0 and fix sync bugs
   151  - network-manager client: Now supports better connection sync via connection
   152    `Managed` flag; fixed a few bugs; WiFiConfig sync now works
   153  
   154  ## [[0.14.1] - 2023-11-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.1)
   155  
   156  - update frontend assets (missed that in v0.14.0)
   157  
   158  ## [[0.14.0] - 2023-11-14](https://github.com/simpleiot/simpleiot/releases/tag/v0.14.0)
   159  
   160  - update to nats-server to v2.10.4
   161  - update to nats client package to v1.31.0
   162  - development: `envsetup.sh` sources `local.sh` if it exists
   163  - Go client API for export/import nodes to/from YAML
   164  - `siot` CLI export and import commands
   165  - simpleiot-js improvements
   166  - Network Manager Client (WIP)
   167  - NTP Client
   168  - serial client: allow configuration of HR point destination
   169  - serial client: add "Sync Parent" option
   170  - Signal generator client: add support for square, triangle, and random walk
   171    patterns
   172  - fix issue with batched points of the same type/key (#658)
   173  
   174  ## [[0.13.1] - 2023-10-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.13.1)
   175  
   176  - update client manager API to include list of parent node types
   177  - fix issue with duplicating nodes where there were two copies of Description
   178    points
   179  - display decode error count for high-rate serial packets
   180  - display rate for high-rate serial packets
   181  
   182  ## [[0.13.0] - 2023-09-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.13.0)
   183  
   184  - implement `siot install` command (#527)
   185  - update frontend poll rate from 3s to 4s
   186  - fix `siot store` (was crashing due to Opened not being defined)
   187  
   188  ## [[0.12.7] - 2023-09-14](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.7)
   189  
   190  - serial client decoding improvements
   191  
   192  ## [[0.12.6] - 2023-09-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.6)
   193  
   194  - fix issue with email in user node UI (#609)
   195  
   196  ## [[0.12.5] - 2023-08-25](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.5)
   197  
   198  - add supported for Linux temp sensors (#607)
   199  
   200  ## [[0.12.4] - 2023-08-25](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.4)
   201  
   202  - Reworked and simplified decode and merge routines (#589). See
   203    [documentation](https://docs.simpleiot.org/docs/ref/data.html?#converting-nodes-to-other-data-structures)
   204  - UI: fixed issue with with paste node rule condition/actions (#600)
   205  - Can client: fixed various issues (#498)
   206  - Rule client: fix issue with error reporting (#599)
   207  - switch to forked mdns package to get rid of closing messages (#558)
   208  - update nats.go package from v1.20.0 => v1.28.0
   209  - update nats-server package from v2.9.6 => v2.9.21
   210  - default NATS server to 127.0.0.1 instead of localhost
   211  
   212  ## [[0.12.3] - 2023-08-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.3)
   213  
   214  - switch to elm-tooling to enable building on Linux and MacOS ARM machines
   215  - enable riscv builds in release
   216  
   217  ## [[0.12.2] - 2023-08-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.2)
   218  
   219  - fix login
   220  
   221  ## [[0.12.1] - 2023-07-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.1)
   222  
   223  - fix control of Shelly lights
   224  - required that `Point:Key` field always be set (#580)
   225  - improvements in point decode and merge with arrays (not finished)
   226  
   227  ## [[0.12.0] - 2023-07-21](https://github.com/simpleiot/simpleiot/releases/tag/v0.12.0)
   228  
   229  - support Dates in Rule schedule conditions
   230  - Rules are re-run if any rule configuration changes
   231  - Display error conditions in Rule nodes
   232  - hide schedule weekday entry when dates are active
   233  - hide schedule date entry when weekdays are active
   234  - support deleting (tombstone points) in NodeDecode and NodeMerge functions
   235  
   236  ## [[0.11.4] - 2023-06-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.4)
   237  
   238  - remove index field from Point data structure. See #565
   239  - add support for Shelly Plus2PM
   240  - change Shelly client to use Shelly API
   241    [Component model](https://shelly-api-docs.shelly.cloud/gen2/ComponentsAndServices/Introduction)
   242  
   243  ## [[0.11.3] - 2023-06-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.3)
   244  
   245  - serial client: add high rate rx count for debugging
   246  
   247  ## [[0.11.2] - 2023-06-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.2)
   248  
   249  - fix race condition in Client Manager client startup (#552). This fixes a crash
   250    when detecting Shelly devices.
   251  
   252  ## [[0.11.1] - 2023-05-30](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.1)
   253  
   254  - update point merge code to handle complex types
   255  - more fixes for rule condition schedule processing (#547)
   256  - fix issue with Shelly device discovery duplicating devices (#552)
   257  - client manager: fix race condition with subscriptions and deleting client
   258    states
   259  
   260  ## [[0.11.0] - 2023-05-23](https://github.com/simpleiot/simpleiot/releases/tag/v0.11.0)
   261  
   262  - fix rule condition schedule processing (#547)
   263  - support high rate serial MCU data (#517)
   264  
   265  ## [[0.10.3] - 2023-05-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.3)
   266  
   267  - use mDNS responses to set shelly IO back online
   268  - Client Manager: improve filtering of points -- see
   269    [Message echo](https://docs.simpleiot.org/docs/ref/client.html#message-echo)
   270  
   271  ## [[0.10.2] - 2023-05-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.2)
   272  
   273  - default to control being disabled for shelly devices and add UI to enable
   274    control (#544)
   275  
   276  ## [[0.10.1] - 2023-05-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.1)
   277  
   278  - fix issues with Shelly devices appearing offline when first discovered
   279  - disable IPv6 in Shelly mDNS (does not seem to fix all issues on some machines)
   280  
   281  ## [[0.10.0] - 2023-04-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.10.0)
   282  
   283  - support for Shelly Home Automation devices (#189) (see
   284    [docs](https://docs.simpleiot.org/docs/user/shelly.html))
   285  - switch Linting/CI to use golangci-lint and fix issues in codebase
   286  - point encode/decode functions now support arrays and maps. Thanks @bminer!
   287  
   288  ## [[0.9.0] - 2023-02-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.9.0)
   289  
   290  - change default HTTP port from 8080 to 8118. This should reduce conflicts with
   291    other apps and require us to configure the HTTP port less often. (#495)
   292  - BREAKING CHANGE: change protobuf point.value encoding from float to double
   293    (#291) This change introduces a protocol change so all instances in a system
   294    will need to be updated. If this is a problem, let us know and we can work out
   295    a migration.
   296  - sqlite schema: change time storage from two fields (time_s, time_ns) to single
   297    time that contains NS since Unix epoch.
   298  - documentation cleanup (#509)
   299  - move particle code to client and add UI (#503). See
   300    [Particle client docs](https://docs.simpleiot.org/docs/user/particle.html).
   301  - simplify serial MCU encoding (#517)
   302  - improve serial MCU UI point display
   303  - use Go crypto/rand API instead of /dev/random. May fix windows issues (#517)
   304  
   305  ## [[0.8.0] - 2023-01-23](https://github.com/simpleiot/simpleiot/releases/tag/v0.8.0)
   306  
   307  - update elm-watch to v1.1.2
   308  - add system, application, and process
   309    [metrics](https://docs.simpleiot.org/docs/user/metrics.html) (#256, #255)
   310  
   311  ## [[0.7.2] - 2023-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.2)
   312  
   313  - fix race condition with clients that have multi-level nodes (ex Rule client)
   314    #487
   315  
   316  ## [[0.7.1] - 2023-01-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.1)
   317  
   318  (DO NOT USE, THIS VERSION HAS PROBLEMS WITH FRONTEND ASSETS)
   319  
   320  - upgrade frontend to elm-spa 6 (#197)
   321  - apply elm-review rules to frontend code and integrate with CI (#222)
   322  - changes so user does not have to log in if backend or browser is restarted
   323    (#474)
   324    - frontend: store JWT Auth token in browser storage
   325    - frontend: store JWT key in db
   326  - use [air](github.com/cosmtrek/air) instead of entr for watching Go files
   327    during development. This allows `siot_watch` to work on MacOS, and should also
   328    be userful in a Windows dev setup.
   329  
   330  See the [Hot reloading the Simple IoT UI](https://youtu.be/_Nrs2_l62_Q) for a
   331  demo of these changes.
   332  
   333  ## [[0.7.0] - 2022-12-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.7.0)
   334  
   335  - add [CAN bus client](https://docs.simpleiot.org/docs/user/can.html)
   336  
   337  ## [[0.6.2] - 2022-12-07](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.2)
   338  
   339  - moved the node type from node point to edge field. This allows us to index
   340    this and make queries that search the node tree more efficient.
   341  - support for processing clients in groups. Previously, client nodes had to be a
   342    child of the root device node.
   343  - fix issue with `siot log` due to previous NATS API change
   344  
   345  ## [[0.6.1] - 2022-12-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.1)
   346  
   347  - fix bug in influx db client due to recent API changes
   348  - fix bug in client manager where Stop() hangs if Start() has already exitted
   349  - don't allow deleting of root node
   350  - allow configuring of root node ID, otherwise UUID is used
   351  - sync:
   352    - add option to configure sync period (defaults to 20s).
   353    - if upstream node is deleted on the upstream, it is restored
   354    - don't include edge points of root node in hash calculation. This allows node
   355      to be moved around in the upstream instance and other changes.
   356  
   357  ## [[0.6.0] - 2022-11-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.6.0)
   358  
   359  - improve error handling in serial client cobs decoder
   360  - rename upstream -> sync
   361    - re-implement node hash using CRC-32 and XOR hash
   362    - re-implement upstream sync using new hash mechanism
   363    - write tests for sync
   364  - implement `siot log` subcommand -- this dumps SIOT messages
   365  - implement `siot store` subcommand -- used to check and fix store
   366  - simpleiot-js frontend library changes
   367    - re-worked to use updated NATS API
   368    - added `sendEdgePoints` API function
   369    - added unit tests, linting, etc.
   370  
   371  Note, there have been some database changes. To update, do the following:
   372  
   373  - `sqlite3 siot.sqlite`
   374    - `update set up="root" from edges where up="none";`
   375  - start simpleiot
   376    - in another terminal, run: `siot store -fix`. Do this several times until the
   377      original siot process does not show any fixes.
   378  
   379  ## [[0.5.5] - 2022-10-31](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.5)
   380  
   381  - fix population of AppVersion in server
   382  - serial client
   383    - add configuration of max message length
   384    - improve error handling and port resets
   385  
   386  ## [[0.5.4] - 2022-10-28](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.4)
   387  
   388  - clean up SIOT main to allow callers to have their own set of flags at the top
   389    level before calling SIOT server.
   390  
   391  NOTE, to run siot with flags, you must do something like:
   392  
   393  `siot serve -debugHttp`
   394  
   395  The server flags are now part of the serve subcommand.
   396  
   397  ## [[0.5.3] - 2022-10-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.3)
   398  
   399  - add serial client debug level 9 to dump raw serial data before COBS processing
   400  
   401  ## [[0.5.2] - 2022-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.2)
   402  
   403  - **Breaking change**: the node hash type has changed from a string to an int,
   404    which requires deleting the database and starting over.
   405  - switch from Genesis to go-embed for embedding frontend assets
   406  - add embedded assets FS wrapper to allow embedding compressed assets and we
   407    decompress them on the fly if requested.
   408  - add `elm.js.gz` to repo. This will allow us to run SIOT without building the
   409    frontend first. Should enable stuff like
   410    `go run github.com/simpleiot/simpleiot/cmd/siot` and allow using SIOT server
   411    as a Go package in other projects.
   412  - add server API to add clients. This will allow customization of what clients
   413    are used in the system, as well as easily adding custom ones.
   414  - fix version in SIOT app to be Git version (was always printing development)
   415  
   416  You can now do things like:
   417  `go run github.com/simpleiot/simpleiot/cmd/siot@latest`
   418  
   419  ## [[0.5.1] - 2022-10-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.1)
   420  
   421  - handle config changes in influx db client
   422  - lifecycle improvements
   423    - fix race condition in http api shutdown
   424    - shutdown nats client after the rest of the apps
   425    - store: close nats subscriptions on shutdown
   426  - Addeed Signal generator -- can be used to generate arbitrary signals
   427    (currently, high rate Sine waves only)
   428  - add NATS subjects for high rate data (see [API](docs/ref/api.md))
   429  - add [test app](cmd/point-size/main.go) to determine point protobuf sizes
   430  - fix syncronization problem on shutdown -- need to wait for clients to close
   431    before closing store, otherwise we can experience delays on node fetch
   432    timeouts.
   433  - fix issue when updating multiple points in one NATS message (only the first
   434    got written) (introduced in v0.5.0)
   435  - Serial MCU Client:
   436    - added debug level for logging points and
   437      [updated what logging levels mean](https://docs.simpleiot.org/docs/user/mcu.html).
   438    - don't send rx/tx stats reset points to MCU
   439    - support high-rate MCU data (set message subject to `phr`).
   440  
   441  ## [[0.5.0] - 2022-09-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.5.0)
   442  
   443  **NOTE, this is a testing release where we are still in the middle of reworking
   444  the store and various clients. Upstream functionality does not work in this
   445  release. If you need upstream support, use a 0.4.x release.**
   446  
   447  The big news for this release is switching the store to SQLite and moving rule
   448  and db functionality out of the store and into clients.
   449  
   450  - switch store to sqlite (#320)
   451  - rebroadcast messages at each upstream node (#390)
   452  - extensive work on client manager. It is now much easier to keep your local
   453    client config synchronized with ongoing point changes. Client manager also now
   454    supports client configurations with two levels of nodes, such as is used in
   455    rules where you have a rule node and child condition/action nodes.
   456  - fix bug with fast changes in UI do not always stick (#414)
   457  - move rules engine from store to siot client (#409)
   458  - move influxdb code from store to client package (#410)
   459  - replace all NatsRequest payloads with array of points (#406)
   460  
   461  ## [[0.4.5] - 2022-09-02](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.5)
   462  
   463  - set time on points received from serial MCU if not set
   464  - display key in points if set
   465  
   466  ## [[0.4.4] - 2022-09-01](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.4)
   467  
   468  - switch serial CRC algorithm to CRC-16/KERMIT
   469  
   470  ## [[0.4.3] - 2022-08-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.3)
   471  
   472  - serial MCU: display rx/tx stats and any extra points in UI
   473  
   474  ## [[0.4.1] - 2022-08-24](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.1)
   475  
   476  - docs: add
   477    [Modbus user documentation](https://docs.simpleiot.org/docs/user/modbus.html).
   478  - docs: add
   479    [Notification user documentation](https://docs.simpleiot.org/docs/user/notifications.html)
   480  - data/merge.go: fix bug if text and value are both 0
   481  - support Debug levels in serial MCU client: 0=no messages, 1=ascii log, 2=dump
   482    rx data
   483  - serial MCU client: fix issue where reset error count was not working
   484  
   485  ## [[0.4.0] - 2022-07-29](https://github.com/simpleiot/simpleiot/releases/tag/v0.4.0)
   486  
   487  - serial [MCU client](https://docs.simpleiot.org/docs/ref/serial.html) support
   488    (#380)
   489  - add
   490    [origin field](https://docs.simpleiot.org/docs/ref/data.html#tracking-who-made-changes)
   491    to point type (#391).
   492  
   493  ## [[0.3.0] - 2022-07-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.3.0)
   494  
   495  This release has a few bug fixes and contains new client code that will make
   496  creating new functionality easier.
   497  
   498  - Fix invalid users causes panic in Go code #365
   499  - implement data.Decode/Encode for converting nodes to user structs #384
   500  - improve startup/shutdown lifecycle #389
   501  - implemented struct <-> type
   502    [encode/decode](https://github.com/simpleiot/simpleiot/blob/master/data/encode_decode_test.go)
   503    functions.
   504  - improved the lifecycle management of the application so we can cleanly shut it
   505    down. This allows us to test the application more easily (spin up version for
   506    test, shutdown, repeat).
   507  - implemented a test.Server() function to create a test server to be used in
   508    tests.
   509  - Go API Change: the `nats` package has been renamed to `client`.
   510  - defined a new Client interface and a client Manager that watches for node
   511    changes and creates/updates clients and sends any points changes.
   512  
   513  ## [[0.2.0] - 2022-05-31](https://github.com/simpleiot/simpleiot/releases/tag/v0.2.0)
   514  
   515  (implemented in PR #362)
   516  
   517  - UI: fix sorting of Rule child nodes
   518  - highlight rule actions when active #266
   519  - better linking of nodes for rules #251
   520  - display clipboard contents at top of screen
   521  - update elm/virtual-dom to 1.0.3 (helps
   522    [prevent xss attacks](https://jfmengels.net/virtual-dom-security-patch/))
   523  
   524  This release improves the process of linking nodes to rule actions or
   525  conditions. In the past, the system clipboard was used and you had to paste the
   526  system clipboard contents into the Node ID field of rule conditions and actions.
   527  Now, when you a copy a node, the SIOT frontend has its own clipboard and a past
   528  button is displayed below the Node ID fields for easy pasting the node ID.
   529  Additionally, the node description is displayed below the Node ID field so you
   530  can easily tell which node the ID is referring to.
   531  
   532  A [video is available](https://youtu.be/tqbLZ9CSzRU) which illustrates how node
   533  IDs can now be copied and pasted.
   534  [docs](https://docs.simpleiot.org/docs/user/rules.html) are also updated.
   535  
   536  ## [[0.1.0] - 2022-05-13](https://github.com/simpleiot/simpleiot/releases/tag/v0.1.0)
   537  
   538  - docs: add list of supported devices to install
   539  - docs: add upstream documentation
   540  - add support for 1-wire buses, and DS18B20 temp sensor #230 #361
   541  
   542  ## [[0.0.45] - 2022-04-30](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.45)
   543  
   544  - add DeleteNode, MoveNode, and MirrorNode to
   545    [nats package](https://pkg.go.dev/github.com/simpleiot/simpleiot@v0.0.44/nats).
   546    #344, #347
   547  - store and display App Version in root node (see screenshot below). This value
   548    is extracted by the SIOT build using the `git describe` command. See
   549    `envsetup.sh`. #192, #349
   550  - store and display OS version in root node (see screenshot below). On Linux,
   551    this value is extracted from the `VERSION` field in `/etc/os-release`. The
   552    field can be
   553    [changed](https://docs.simpleiot.org/docs/user/configuration.html) using the
   554    OS_VERSION_FIELD environment variable. #324, #353
   555  - update go.bug.st/serial from v1.1.3 -> v1.3.5
   556  - sort nodes in UI a little nicer, conditions before actions, move more often
   557    used nodes to the top, etc. #355, #337
   558  - add NATS user auth API and change HTTP auth to use that. #326, #356
   559  - fix bug where deleted nodes where still considered for user auth
   560  - add SIOT JS library using NATS over WebSockets (#357)
   561  
   562  ![os/app version](https://user-images.githubusercontent.com/402813/163829093-14c0d644-243d-49e0-9c83-acc3c642c9ab.png)
   563  
   564  ## [[0.0.44] - 2022-04-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.44)
   565  
   566  - UI: fix bug where copy node crashes UI if no on secure URL or localhost (#341)
   567  - support clone/duplicate node (as well as mirror) operation (#312). Now when
   568    you copy and paste a node, you will be presented with a list of options as
   569    shown below. The new duplicate option allows you to easily replicate complex
   570    setups (for instance a bunch of modbus points) from an existing site to a new
   571    site.
   572  
   573  ![copy options](https://user-images.githubusercontent.com/402813/153455487-66bc2699-1026-40de-9ca6-4f30f91aeff9.png)
   574  
   575  See
   576  [documenation](https://docs.simpleiot.org/docs/user/ui.html#deleting-moving-mirroring-and-duplicating-nodes)
   577  or a [demo video](https://youtu.be/ZII9pzx9akY) for more information.
   578  
   579  ## [[0.0.43] - 2022-03-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.43)
   580  
   581  - improvement in UI to fix collapsing nodes #259
   582  - implemented functionality to duplicate nodes and refactored
   583    copy/move/mirror/duplicate UI (#312)
   584  - update nats-server from v2.6.6 -> v2.7.4 (and associated dependencies)
   585  
   586  ## [[0.0.42] - 2022-02-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.42)
   587  
   588  - move HTTP API to get nodes for user to use NATS instead of direct call into
   589    database (#327)
   590  - **BREAKING API CHANGE**: the Nats `node.<id>` subject now returns an array of
   591    `data.NodeEdge` structs instead of a single node. Both instances of an
   592    upstream connection must be upgraded.
   593  - don't send deleted nodes to frontend -- may fix #259
   594  - default to nats/websocket being enabled on port 9222
   595  
   596  ## [[0.0.41] - 2022-01-05](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.41)
   597  
   598  - with v0.0.40, if upstream URI was specified as ws://myserver.com without the
   599    port being specified, the NATS Go client assumed the port was 4222. If this
   600    port is not specified for ws or wss protocols, SIOT now sets the port to :80
   601    or :443. This makes the behavior more predictable, as these kinds of problems
   602    are very hard to debug. #315
   603  - if upstream config changes, restart upstream connection. #258
   604  
   605  ## [[0.0.40] - 2022-01-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.40)
   606  
   607  - support for NATS over WS connections to upstream. This is handy for cases
   608    where the edge network may block outgoing connections on the port NATS is
   609    using. HTTP(s) almost always works. In the upstream config, simply change the
   610    URL to something like: `ws://my.service.com`.
   611  
   612  ## [[0.0.39] - 2021-12-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.39)
   613  
   614  - fix issue where app exits if upstream auth is incorrect (#298)
   615  - fix issues with orphaned device nodes in upstreams. We now make sure devices
   616    in upstream have upstream edges or are not deleted if the device is still
   617    receiving points. (#299)
   618  - only report nats stats every 1m. This makes upstream work better as these
   619    currently are run in sync.
   620  
   621  ## [[0.0.38] - 2021-11-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.38)
   622  
   623  - fix population of version when building with envsetup.sh
   624  - changes to point data structure to make it more flexible
   625    ([ADR-1](https://github.com/simpleiot/simpleiot/pull/279))
   626  
   627  ## [[0.0.37] - 2021-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.37)
   628  
   629  - fix issue with setup where you sometimes get error: elm: Text file busy
   630  - cleanup simpleiot.Start() so it actually returns
   631  
   632  ## [[0.0.36] - 2021-10-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.36)
   633  
   634  - rename `db` package to `store`
   635  - factor out siot server startup code into simpleiot package
   636  - change `siot_run` in `envsetup.sh` to `go build` instead of `go run`
   637  
   638  ## [[0.0.35] - 2021-10-04](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.35)
   639  
   640  - add placeholders for some UI forms
   641  - add disable for Modbus and Modbus client nodes (#250)
   642  - clean up locking issues and simplify DB code
   643  
   644  ## [[0.0.34] - 2021-09-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.34)
   645  
   646  - handle audio playback where file bitrate does not match default of audio
   647    device (#240)
   648  - support rule actions that trigger when rule goes inactive (instead of active).
   649    This allows a rule to do something with the run goes active as well as
   650    inactive and in some cases saves us from writing two rules (#241).
   651  - re-enable indexes on edge up/down fields (#219)
   652  - add point min/max to NATS packets
   653  - add NATS api metrics (as points to root device node) (#244)
   654  - don't color root node grey for now
   655  - update influxdb client to 2.5.0
   656  - switch to async influx DB API (batches data, retries, etc)
   657  - implement caching of nodes and edges to speed up read access
   658  - add point processing cycle time and nats client pending messages metrics
   659  - modbus loglevel 1 only prints errors, 2 now prints transactions
   660  - web UI auth expires in 24hr instead of 30m -- still not ideal, but one step at
   661    a time (#249)
   662  - update front tar package to fix security warnings
   663  
   664  ## [[0.0.33] - 2021-08-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.33)
   665  
   666  - fix frontend build issue with last two releases
   667  - add rule audio playback action functionality for Linux (requires alsa-utils)
   668  - fix various bugs with rule schedule condition functionality
   669  - all using rule active in rule conditions (allows chaining rules)
   670  - improve rule condition processing to process all conditions/points rather than
   671    just first match
   672  - implement schedule conditions for rules
   673  - switch from github.com/dgrijalva/jwt-go to github.com/golang-jwt/jwt/v4
   674  - update frontend dependencies to satisify github security checks
   675  
   676  ## [[0.0.32] - 2021-08-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.32)
   677  
   678  - DO NOT USE, FRONTEND BUILD ISSUE
   679  
   680  ## [[0.0.31] - 2021-08-10](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.31)
   681  
   682  - DO NOT USE, FRONTEND BUILD ISSUE
   683  
   684  ## [[0.0.30] - 2021-07-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.30)
   685  
   686  - fix using SIOT_AUTH_TOKEN for -logNats command line option
   687  - upgrade to NATS 2.2.2. Increases SIOT binary by about 2MB (uncompressed), 1MB
   688    (compressed)
   689  - disable badger for now -- can be re-enabled in db/genji.go. Bolt seems to work
   690    better for the current SIOT use cases and Badger just adds bloat to the
   691    binary.
   692  - implement upstream synronization support
   693    [#109](https://github.com/simpleiot/simpleiot/issues/109)
   694  - update to Genji v0.13.0
   695  
   696  ## [[0.0.29] - 2021-04-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.29)
   697  
   698  - fix sending notifications to a single user through UI
   699  
   700  ## [[0.0.28] - 2021-04-22](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.28)
   701  
   702  - modbus: don't require poll period to be set for modbus server
   703  - modbus: fix issue with reg values being sent every poll period, even if not
   704    changing
   705  - modbus: add timestamp to points being sent out
   706  - support storing Point data in Influxdb 2.0
   707  
   708  ## [[0.0.27] - 2021-04-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.27)
   709  
   710  - slow down manual scanning to reduce background CPU usage
   711  
   712  ## [[0.0.26] - 2021-04-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.26)
   713  
   714  - make description in nats logger and notification messages smarter
   715  - allow modbus busses to be added to groups as well as devices
   716  - UI:
   717    - don't show node + operation for nodes that can't have child-nodes
   718    - force email entry to always be lowercase
   719  
   720  ## [[0.0.25] - 2021-04-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.25)
   721  
   722  - track user parent when messaging. This eliminates duplicate messages if a user
   723    is part of different groups with different messaging services -- we only want
   724    to message the group the user is a part of.
   725  
   726  ## [[0.0.24] - 2021-04-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.24)
   727  
   728  - UI
   729    - display copy/move node messages for 2-3s when clicking copy/move node button
   730    - support multiple top level nodes -- for instance a user that is a member of
   731      multiple groups but not the root node
   732    - automatically expand node children when moving/copying a node
   733  - Implement rule notifications
   734  
   735  ## [[0.0.23] - 2021-04-10](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.23)
   736  
   737  - Modbus: TCP listen on all interfaces instead of just localhost
   738  - UI
   739    - add dot for nodes that don't have children
   740    - don't sort nodes while editting, only on fetch
   741    - sort nodes by group, then desc, then firstname, then lastname
   742    - move/copy node can use node ID or description
   743    - add node icons to add node descriptions
   744    - replace edit/collapse with dot and color exp nodes
   745  - support copying nodes
   746  - remove remnants of Sample types (we now use Point)
   747  - create notification and message data types and NATS/Db support
   748  - implement node messaging (notifies all node and upstream users)
   749  - BUILD: simplify protobuf generation
   750  - implement Twilio SMS messaging
   751  
   752  ## [[0.0.22] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.22)
   753  
   754  - UI: change node min/max button to edit/close
   755  - Modbus: suppress TCP conn/disc messages at debug level 0
   756  - siot: add cmdline option (-logNats) to trace all node points. This can be run
   757    in parallel to the siot application to trace points flowing through the system
   758  - genji db: update to v0.11.0 release
   759  - rules: can now write rules that set nodes based on other nodes
   760  
   761  ## [[0.0.21] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.21)
   762  
   763  - modbus: fix server issue with requests not free resources
   764  
   765  ## [[0.0.20] - 2021-03-17](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.20)
   766  
   767  - UI: add Form.onEnter utility function for adding enter handling
   768  - UI: enter can now be used to enter sign-in form
   769  - support for Modbus TCP, both client and server
   770  
   771  ## [[0.0.19] - 2021-02-27](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.19)
   772  
   773  - revert Genji update as there are problems saving nodes
   774  
   775  ## [[0.0.18] - 2021-02-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.18)
   776  
   777  - update go.bug.st/serial to support RiscV
   778  - update Genji dependencies
   779  
   780  ## [[0.0.17] - 2021-02-12](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.17)
   781  
   782  - modbus
   783    - fix bug in setting modbus baud rate
   784    - include ID in modbus logging messages
   785    - support for read-only coils and holding regs
   786  - UI
   787    - add nodeCheckboxInput widget
   788    - round numbers in places
   789    - color digital values blue when ON
   790    - sort nodes by description
   791  - fix windows build
   792  
   793  ## [[0.0.16] - 2021-02-08](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.16)
   794  
   795  - UI
   796    - expand child nodes and add default description when adding a new node
   797  - modbus improvements
   798    - send all writes to DB over NATS -- this allows system to be more responsive,
   799      as well as simplifies code
   800    - lots of cleanup and error handling
   801  
   802  ## [[0.0.15] - 2020-12-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.15)
   803  
   804  - Implementation of tree based UI -- see demo: https://youtu.be/0ktVCPU74mw
   805  
   806  ## [[0.0.14] - 2020-11-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.14)
   807  
   808  - fix 32bit binary build
   809  
   810  ## [[0.0.13] - 2020-11-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.13)
   811  
   812  - edge:
   813    - fixed issue with backoff algorith not adhearing to max
   814  - backend:
   815    - switched data structure name from device -> node -- see
   816    - this issue for dicussion
   817    - add page to message (currently SMS only) all users
   818    - UI simplification and cleanup
   819    - sort users on users page
   820    - port frontend to elm-spa.dev v5 (this really cleans up the frontend code and
   821      makes it more idomatic Elm)
   822    - changing backing store from bolthold to genji (this gives us the flexibility
   823      to use memory, bbolt, or badger backing stores as well as robust indexing)
   824    - fix bug with not support Point::Text field in Nats/Protobuf
   825    - fix up examples for sending device version info to portal
   826  - frontend:
   827    - only show version information if available
   828    - don't display special points (description, version, etc) in general node
   829      points.
   830    - add -importDb command line option
   831  
   832  Note, the database format has changed. To migrate, dump the database with the
   833  old version of SIOT and them import with the new version.
   834  
   835  ## [[0.0.12] - 2020-11-03](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.12)
   836  
   837  - backend:
   838    - switched data structure name from device -> node -- see
   839      [this issue](https://github.com/simpleiot/simpleiot/issues/91) for dicussion
   840    - add page to message (currently SMS only) all users
   841    - UI simplification and cleanup
   842    - sort users on users page
   843    - port frontend to elm-spa.dev v5 (this really cleans up the frontend code and
   844      makes it more idomatic Elm)
   845    - changing backing store from bolthold to genji (this gives us the flexibility
   846      to use memory, bbolt, or badger backing stores as well as robust indexing)
   847    - fix bug with not support Point::Text field in Nats/Protobuf
   848    - fix up examples for sending device version info to portal
   849  - frontend:
   850    - only show version information if available
   851    - don't display special points (description, version, etc) in general node
   852      points.
   853    - add -importDb command line option
   854  
   855  Note, the database format has changed. To migrate, dump the database with the
   856  old version of SIOT and them import with the new version.
   857  
   858  ## [[0.0.11] - 2020-09-09](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.11)
   859  
   860  ### Changed
   861  
   862  - switched data storage to
   863    [points](https://github.com/simpleiot/simpleiot/blob/master/docs/development.md#flexible-data-structures)
   864    vs sensor data and config
   865  - add token auth for device HTTP communication
   866  - documentation improvements
   867  
   868  ## [[0.0.10] - 2020-08-20](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.10)
   869  
   870  ### Changed
   871  
   872  - documentation improvements
   873  - specify TLS certs using variables instead of embedding
   874  - code cleanup around NATS integration
   875  - NATS don't force TLS 1.2 in client
   876  - remove siotutil functionality and fold into siot exe
   877  
   878  ## [[0.0.9] - 2020-08-15](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.9)
   879  
   880  ### Added
   881  
   882  - NATS integration for device communication
   883  
   884  ### Changed
   885  
   886  - documentation improvements
   887    - moved API documentation to simple Markdown
   888    - better organization
   889    - add list of guiding principles to the [README](./README.md)
   890  
   891  ## [[0.0.8] - 2020-08-11](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.8)
   892  
   893  ### Added
   894  
   895  - moved influxDb operations to db package so they are common for all samples
   896  - added env variable to specify Influx database SIOT_INFLUX_DB
   897  - added device ID tag to sample data stored in influx
   898  - add rules engine
   899  - add SMS notifications using Twilio
   900  
   901  ### Changed
   902  
   903  - clean up documentation organization
   904  
   905  ## [[0.0.7] - 2020-07-04](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.7)
   906  
   907  ### Added
   908  
   909  - display device last update time
   910  - display time since last update
   911  
   912  ## [[0.0.6] - 2020-06-26](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.6)
   913  
   914  ### Added
   915  
   916  - add modbus API to change debug level at runtime
   917  - add cloud/cloud off icon to indicate connection status of devices
   918  - grey out devices that are not currently connected
   919  - added background process to determine if devices are offline
   920  
   921  ### Fixed
   922  
   923  - workaround for issue where group key in database does not match ID in struct
   924  
   925  ## [[0.0.5] - 2020-06-16](https://github.com/simpleiot/simpleiot/releases/tag/v0.0.5)
   926  
   927  ### Fixed
   928  
   929  - fixed critical bug where new devices were not showing up in UI
   930  
   931  ### Added
   932  
   933  - add support in modbus pkg for decoding 32-bit int and floating point values
   934  - started general command line modbus utility (cmd/modbus) to interactively read
   935    modbus devices