Skip to content

Commit

Permalink
Release 0.4.0
Browse files Browse the repository at this point in the history
  • Loading branch information
mitskevich committed Jan 31, 2024
1 parent 4df2a2b commit 515bbce
Show file tree
Hide file tree
Showing 2,355 changed files with 154,180 additions and 101,394 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,5 +9,6 @@
/opcb-runner/node_modules/@overvis/opcb-linux-operator/src/
/opcb-runner/node_modules/@overvis/opcb-ts-shared/src/
/opcb-runner/node_modules/@overvis/opcb-virtual-device/src/
/opcb-runner/node_modules/@overvis/opcb-tasks/src/
/opcb-runner/node_modules/@overvis/server-tools/src/
/opcb-runner/src/
48 changes: 48 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,53 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

### Security

## [0.4.0] - 2024-01-31

### Added

- _Runtime_: Runtime and API for running user-created tasks. Tasks are JS scripts that are executed
in worker threads and running on background. OPCB provides helper library, allowing user tasks
communicate with OPCB runtime via Redis/Sqlite. Tasks project is initialized in user folder from
the template by API request. Tasks project includes tools to compile JS from TypeScript and a set
of helper function to interact with other OPCB runtime modules.
- _Runtime_: Added Modbus library, allowing to easily encode/decode Modbus RTU/ASCII/TCP requests
and responses. Useful for Modbus-related tasks.
- _Runtime:_ Reporting `ttyUSB0` as available TTY if no interfaces were found, to provide a chance
to set up TTY connection without an inserted USB device.
- _Runtime:_ Automatic filesystem check on boot. Helpful in cases when FS was corrupted due to
power loss or incorrect shutdown. Can be disabled in config.

### Changed

- _Runtime_: Updated NodeJS to v20.9.0.
- _Runtime:_ Centralized schemas and sqlite procedures.
- _Runtime:_ RS-485 port open error log message moved to debug log.
- _UI:_ Since WiFi password is randomized and set after finalizing manufacture process,
finalization UI doesn't attempt to connect browser to the API, and just displays a success
message after receiving confirmation from API, losing the connection and waiting for 10s delay.
- _UI:_ Displaying LAN/WiFi IP addresses as links in "Internet" section.
- _UI:_ Additional information icons in form fields are now marked with blue color to accentuate
the interactibility.
- _UI:_ Displaying a list of connected command files in the footer.
- _UI:_ Displaying username in the header for non-admin users.

### Fixed

- _UI:_ Modbus TCP Server logs were not displayed properly.
- _UI:_ Cloud actions (unbind and access from the cloud) are hidden when UI is proxied through
cloud.
- _UI:_ Fixed multiple "success" messages being displayed during firmware update process.
- _Runtime:_ RS-485 TTY stop and parity bit option "1N" was not working.
- _Runtime:_ RS-485 port was waiting forever to send a message if there is noise present on the
TTY.
- _UI:_ Message about firmware version update was displayed incorrectly after factory settings
reset and also for newly manufactured devices.
- _UI:_ Debug log interface was incorrectly resized for logs containing long lines.
- _Runtime:_ Runtime failed with error if the list of TTYs, available Wi-Fi's or timezones was
empty during processing.
- _UI:_ Added non-caching headers to some static files (changelog, label) to fix the issue of
displaying old version of the file after it was updated.

## [0.3.7] - 2023-11-09

### Added
Expand Down Expand Up @@ -211,3 +258,4 @@ OPCB package in its current version supports the following:
[0.3.5]: https://github.com/overvis/opcb-release/releases/tag/opcb%2F0.3.5
[0.3.6]: https://github.com/overvis/opcb-release/releases/tag/opcb%2F0.3.6
[0.3.7]: https://github.com/overvis/opcb-release/releases/tag/opcb%2F0.3.7
[0.4.0]: https://github.com/overvis/opcb-release/releases/tag/opcb%2F0.4.0
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.3.7
0.4.0
Binary file modified bin/better_sqlite3.node
Binary file not shown.
Binary file modified bin/opcb-rs485-tty-operator
Binary file not shown.
2 changes: 1 addition & 1 deletion http-static/ui/404.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" nomodule="" src="/_next/static/chunks/polyfills-78c92fac7aa8fdd8.js"></script><script src="/_next/static/chunks/webpack-62c02dad1a6a4cb4.js" defer=""></script><script src="/_next/static/chunks/framework-17481eba47812f18.js" defer=""></script><script src="/_next/static/chunks/main-6ac08fdcd6170f15.js" defer=""></script><script src="/_next/static/chunks/pages/_app-89b31930feda6203.js" defer=""></script><script src="/_next/static/chunks/pages/_error-edbe7910e6df0710.js" defer=""></script><script src="/_next/static/cy6TSXBgRvYTRkW3UeFYy/_buildManifest.js" defer=""></script><script src="/_next/static/cy6TSXBgRvYTRkW3UeFYy/_ssgManifest.js" defer=""></script><style data-emotion="mantine "></style></head><body><div id="__next"><style data-emotion="css-global 1w883ez">html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;}body{margin:0;}article,aside,footer,header,nav,section,figcaption,figure,main{display:block;}h1{font-size:2em;}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace,monospace;font-size:1em;}a{background:transparent;text-decoration-skip:objects;}a:active,a:hover{outline-width:0;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;}b,strong{font-weight:bolder;}code,kbp,samp{font-family:monospace,monospace;font-size:1em;}dfn{font-style:italic;}mark{background-color:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}audio,video{display:inline-block;}audio:not([controls]){display:none;height:0;}img{border-style:none;vertical-align:middle;}svg:not(:root){overflow:hidden;}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible;}button,select{text-transform:none;}button,[type=reset],[type=submit]{-webkit-appearance:button;}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0;}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:0.0625rem dotted ButtonText;}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{display:inline-block;vertical-align:baseline;}textarea{overflow:auto;}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto;}[type=search]{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;-ms-appearance:button;appearance:button;font:inherit;}details,menu{display:block;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}canvas{display:inline-block;}template{display:none;}</style><style data-emotion="css-global 1kvm0ug">*,*::before,*::after{box-sizing:border-box;}html{-webkit-print-color-scheme:light;color-scheme:light;}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;background-color:#fff;color:#000;line-height:1.55;font-size:1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}</style><style data-emotion="css-global hfkw1q">.optimized-log.log-error{color:#fa5252;}.optimized-log.log-unimportant{color:#868e96;}.optimized-log.log-device-id{color:#5c7cfa;}.optimized-log.log-func-code{color:#339af0;}.optimized-log.log-payload{color:#40c057;}.optimized-log.log-rx{color:#fd7e14;}.optimized-log.log-tx{color:#e64980;}.optimized-log.log-row-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;white-space:nowrap;}.optimized-log.connection-open{color:#40c057;}.optimized-log.event-msg{margin-top:10px;margin-bottom:10px;}.optimized-log.log-date{margin-right:10px;}</style><div style="display:block"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"cy6TSXBgRvYTRkW3UeFYy","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
<!DOCTYPE html><html><head><meta charSet="utf-8"/><meta name="viewport" content="minimum-scale=1, initial-scale=1, width=device-width"/><title>404: This page could not be found</title><meta name="next-head-count" content="3"/><noscript data-n-css=""></noscript><script defer="" crossorigin="" nomodule="" src="/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js"></script><script src="/_next/static/chunks/webpack-a06fe140fe7e8fac.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/framework-3695eca3eb7f3a21.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/main-80ab6f226b155cad.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_app-73af0278d15c31c2.js" defer="" crossorigin=""></script><script src="/_next/static/chunks/pages/_error-dfd0cf242cb40c94.js" defer="" crossorigin=""></script><script src="/_next/static/ue-q1qm2sHXbSqSdq2wAm/_buildManifest.js" defer="" crossorigin=""></script><script src="/_next/static/ue-q1qm2sHXbSqSdq2wAm/_ssgManifest.js" defer="" crossorigin=""></script><style data-emotion="mantine "></style></head><body><div id="__next"><style data-emotion="css-global 1w883ez">html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-moz-text-size-adjust:100%;-ms-text-size-adjust:100%;text-size-adjust:100%;}body{margin:0;}article,aside,footer,header,nav,section,figcaption,figure,main{display:block;}h1{font-size:2em;}hr{box-sizing:content-box;height:0;overflow:visible;}pre{font-family:monospace,monospace;font-size:1em;}a{background:transparent;text-decoration-skip:objects;}a:active,a:hover{outline-width:0;}abbr[title]{border-bottom:none;-webkit-text-decoration:underline;text-decoration:underline;}b,strong{font-weight:bolder;}code,kbp,samp{font-family:monospace,monospace;font-size:1em;}dfn{font-style:italic;}mark{background-color:#ff0;color:#000;}small{font-size:80%;}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline;}sup{top:-0.5em;}sub{bottom:-0.25em;}audio,video{display:inline-block;}audio:not([controls]){display:none;height:0;}img{border-style:none;vertical-align:middle;}svg:not(:root){overflow:hidden;}button,input,optgroup,select,textarea{font-family:sans-serif;font-size:100%;line-height:1.15;margin:0;}button,input{overflow:visible;}button,select{text-transform:none;}button,[type=reset],[type=submit]{-webkit-appearance:button;}button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0;}button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:0.0625rem dotted ButtonText;}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal;}progress{display:inline-block;vertical-align:baseline;}textarea{overflow:auto;}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0;}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto;}[type=search]{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none;-moz-appearance:none;-ms-appearance:none;appearance:none;}::-webkit-file-upload-button{-webkit-appearance:button;-moz-appearance:button;-ms-appearance:button;appearance:button;font:inherit;}details,menu{display:block;}summary{display:-webkit-box;display:-webkit-list-item;display:-ms-list-itembox;display:list-item;}canvas{display:inline-block;}template{display:none;}</style><style data-emotion="css-global 1kvm0ug">*,*::before,*::after{box-sizing:border-box;}html{-webkit-print-color-scheme:light;color-scheme:light;}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;background-color:#fff;color:#000;line-height:1.55;font-size:1rem;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;}</style><style data-emotion="css-global hfkw1q">.optimized-log.log-error{color:#fa5252;}.optimized-log.log-unimportant{color:#868e96;}.optimized-log.log-device-id{color:#5c7cfa;}.optimized-log.log-func-code{color:#339af0;}.optimized-log.log-payload{color:#40c057;}.optimized-log.log-rx{color:#fd7e14;}.optimized-log.log-tx{color:#e64980;}.optimized-log.log-row-container{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;white-space:nowrap;}.optimized-log.connection-open{color:#40c057;}.optimized-log.event-msg{margin-top:10px;margin-bottom:10px;}.optimized-log.log-date{margin-right:10px;}</style><div style="display:block"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">This page could not be found<!-- -->.</h2></div></div></div></div></div><script id="__NEXT_DATA__" type="application/json" crossorigin="">{"props":{"pageProps":{"statusCode":404}},"page":"/_error","query":{},"buildId":"ue-q1qm2sHXbSqSdq2wAm","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
6 changes: 0 additions & 6 deletions http-static/ui/_next/static/chunks/105-f586587b77ad8ea0.js

This file was deleted.

1 change: 0 additions & 1 deletion http-static/ui/_next/static/chunks/125-4b6fb3792a4cbc53.js

This file was deleted.

Loading

0 comments on commit 515bbce

Please sign in to comment.