diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..d765b0a6 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,2 @@ +# Ensure all text files use LF line endings +* text=auto eol=lf diff --git a/.github/workflows/build-with-docker.yml b/.github/workflows/build-with-docker.yml new file mode 100644 index 00000000..8ad97526 --- /dev/null +++ b/.github/workflows/build-with-docker.yml @@ -0,0 +1,42 @@ +name: Install, Lint, Test and Build with docker + +on: [push, pull_request] + +jobs: + build: + runs-on: ubuntu-latest + container: + image: debian-latest + + strategy: + fail-fast: false + matrix: + node-version: [18.x, 20.x, 21.x] + + steps: + - uses: actions/checkout@v4 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v4 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: npm install + + - name: Lint the project + run: npm run lint + + - name: Test the project + run: npm run test + + - name: Build the project + run: npm run build + + - name: List, audit, fix outdated dependencies and build again + run: | + npm list --outdated + npm audit || true # ignore failures + npm audit fix || true + npm list --outdated + npm run build diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4a21463a..9cc66af2 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -4,13 +4,12 @@ on: [push, pull_request] jobs: build: - runs-on: ubuntu-latest + runs-on: ${{ matrix.os }} strategy: fail-fast: false matrix: - # the Node.js versions to build on - node-version: [18.x, 20.x] + node-version: [18.x, 20.x, 21.x] os: [ubuntu-latest, windows-latest, macos-latest] steps: diff --git a/.github/workflows/docker-buildx-main.yml b/.github/workflows/docker-buildx-main.yml index 61063534..6bfe9334 100644 --- a/.github/workflows/docker-buildx-main.yml +++ b/.github/workflows/docker-buildx-main.yml @@ -1,4 +1,4 @@ -name: Build and Push Docker image to Docker Hub with buildx +name: Build main and Push Docker image to Docker Hub with buildx on: push: @@ -39,7 +39,7 @@ jobs: --platform linux/amd64,linux/arm64,linux/arm/v7 \ -f docker/Dockerfile.main \ -t luligu/matterbridge:latest \ - -t luligu/matterbridge:1.3.11 \ + -t luligu/matterbridge:1.3.12 \ --push . docker manifest inspect luligu/matterbridge:latest timeout-minutes: 60 diff --git a/CHANGELOG.md b/CHANGELOG.md index 59d31951..71143687 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,23 @@ All notable changes to this project will be documented in this file. If you like this project and find it useful, please consider giving it a star on GitHub at https://github.com/Luligu/matterbridge and sponsoring it. +## [1.3.12] - 2024-07-10 + +### Added + +### Changed + +- [frontend]: The Logs in Home page has the same filter as the Logs page. +- [matterbridge]: The plugins debug is now indipendent from matterbridge debug and matter.js log level. It can be set from the plugin config. + +### Fixed + +- [frontend]: Fix Home for mobile. + + + + + ## [1.3.11] - 2024-07-08 ### Added @@ -16,6 +33,10 @@ If you like this project and find it useful, please consider giving it a star on - [frontend]: Update to 1.2.0 (initial optimization for mobile) - [dependencies]: Update dependencies. + + + + ## [1.3.10] - 2024-07-05 ### Added diff --git a/README.md b/README.md index 31c5b518..56dc3bbf 100644 --- a/README.md +++ b/README.md @@ -107,16 +107,16 @@ matterbridge -childbridge -frontend [port number] ``` Home page: -![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/Screenshot%20home.jpg) +![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/screenshot/Screenshot%20home.jpg) Devices page: -![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/Screenshot%20devices.jpg) +![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/screenshot/Screenshot%20devices.jpg) Logs page: -![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/Screenshot%20logs.jpg) +![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/screenshot/Screenshot%20logs.jpg) Config editor: -![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/Screenshot%20config%20editor.jpg) +![See the screenshot here](https://github.com/Luligu/matterbridge/blob/main/screenshot/Screenshot%20config%20editor.jpg) ## Plugins diff --git a/Screenshot config editor.jpg b/Screenshot config editor.jpg deleted file mode 100644 index 82ad304a..00000000 Binary files a/Screenshot config editor.jpg and /dev/null differ diff --git a/Screenshot devices.jpg b/Screenshot devices.jpg deleted file mode 100644 index 971658bd..00000000 Binary files a/Screenshot devices.jpg and /dev/null differ diff --git a/Screenshot home.jpg b/Screenshot home.jpg deleted file mode 100644 index 040c279f..00000000 Binary files a/Screenshot home.jpg and /dev/null differ diff --git a/Screenshot logs.jpg b/Screenshot logs.jpg deleted file mode 100644 index a3faa218..00000000 Binary files a/Screenshot logs.jpg and /dev/null differ diff --git a/frontend/build/asset-manifest.json b/frontend/build/asset-manifest.json index 285a6f5c..78783a8f 100644 --- a/frontend/build/asset-manifest.json +++ b/frontend/build/asset-manifest.json @@ -1,15 +1,15 @@ { "files": { - "main.css": "/static/css/main.3986966b.css", - "main.js": "/static/js/main.c9f97470.js", + "main.css": "/static/css/main.b4d28450.css", + "main.js": "/static/js/main.3105733e.js", "static/js/453.d855a71b.chunk.js": "/static/js/453.d855a71b.chunk.js", "index.html": "/index.html", - "main.3986966b.css.map": "/static/css/main.3986966b.css.map", - "main.c9f97470.js.map": "/static/js/main.c9f97470.js.map", + "main.b4d28450.css.map": "/static/css/main.b4d28450.css.map", + "main.3105733e.js.map": "/static/js/main.3105733e.js.map", "453.d855a71b.chunk.js.map": "/static/js/453.d855a71b.chunk.js.map" }, "entrypoints": [ - "static/css/main.3986966b.css", - "static/js/main.c9f97470.js" + "static/css/main.b4d28450.css", + "static/js/main.3105733e.js" ] } \ No newline at end of file diff --git a/frontend/build/index.html b/frontend/build/index.html index 030eba83..c1d7230b 100644 --- a/frontend/build/index.html +++ b/frontend/build/index.html @@ -1 +1 @@ -
-1;)f!==e&&l.call(f,h,1),l.call(e,h,1);return e}},6487:e=>{e.exports=function(e,t,r,n,o){return o(e,(function(e,o,a){r=n?(n=!1,e):t(r,e,o,a)})),r}},5647:(e,t,r)=>{var n=r(3279),o=r(5636),a=r(6350);e.exports=function(e,t){return a(o(e,t,n),e+"")}},9261:(e,t,r)=>{var n=r(8420),o=r(5324),a=r(9194),i=r(6686),s=r(914);e.exports=function(e,t,r,l){if(!i(e))return e;for(var c=-1,u=(t=o(t,e)).length,d=u-1,p=e;null!=p&&++c{var n=r(2541),o=r(5654),a=r(3279),i=o?function(e,t){return o(e,"toString",{configurable:!0,enumerable:!1,value:n(t),writable:!0})}:a;e.exports=i},3871:e=>{e.exports=function(e,t,r){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(r=r>o?o:r)<0&&(r+=o),o=t>r?0:r-t>>>0,t>>>=0;for(var a=Array(o);++n=l?c:c*("desc"==r[o]?-1:1)}return e.index-t.index}},1980:e=>{e.exports=function(e,t){var r=-1,n=e.length;for(t||(t=Array(n));++r{var n=r(2969),o=r(3871);e.exports=function(e,t){return t.length<2?e:n(e,o(t,0,-1))}},6552:(e,t,r)=>{var n=r(7105),o="object"==typeof self&&self&&self.Object===Object&&self,a=n||o||Function("return this")();e.exports=a},3737:e=>{e.exports=function(e,t){if(("constructor"!==t||"function"!==typeof e[t])&&"__proto__"!=t)return e[t]}},6179:e=>{e.exports=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this}},6704:e=>{e.exports=function(e){return this.__data__.has(e)}},2074:e=>{e.exports=function(e){var t=-1,r=Array(e.size);return e.forEach((function(e){r[++t]=e})),r}},6350:(e,t,r)=>{var n=r(8325),o=r(6578)(n);e.exports=o},6578:e=>{var t=Date.now;e.exports=function(e){var r=0,n=0;return function(){var o=t(),a=16-(o-n);if(n=o,a>0){if(++r>=800)return arguments[0]}else r=0;return e.apply(void 0,arguments)}}},4545:(e,t,r)=>{var n=r(7160);e.exports=function(){this.__data__=new n,this.size=0}},793:e=>{e.exports=function(e){var t=this.__data__,r=t.delete(e);return this.size=t.size,r}},7760:e=>{e.exports=function(e){return this.__data__.get(e)}},3892:e=>{e.exports=function(e){return this.__data__.has(e)}},6788:(e,t,r)=>{var n=r(7160),o=r(5204),a=r(4816);e.exports=function(e,t){var r=this.__data__;if(r instanceof n){var i=r.__data__;if(!o||i.length<199)return i.push([e,t]),this.size=++r.size,this;r=this.__data__=new a(i)}return r.set(e,t),this.size=r.size,this}},4020:e=>{e.exports=function(e,t,r){for(var n=r-1,o=e.length;++n%1
.",e.UnsupportedFieldWithReason="Unsupported field schema: %1.",e.UnsupportedFieldWithIdAndReason="Unsupported field schema for field %1
: %2.",e.FilesInfo="**%1** (%2, %3 bytes)"}(Np||(Np={}));r(5491);var zp=r(2616),Lp=r.n(zp);let Bp=function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:21;return crypto.getRandomValues(new Uint8Array(e)).reduce(((e,t)=>e+=(t&=63)<36?t.toString(36):t<62?(t-26).toString(36).toUpperCase():t>62?"-":"_"),"")};function $p(){return Bp()}function Wp(e){return Array.isArray(e)?e.map((e=>({key:$p(),item:e}))):[]}function Vp(e){return Array.isArray(e)?e.map((e=>e.item)):[]}class Up extends t.Component{constructor(e){super(e),this._getNewFormDataRow=()=>{const{schema:e,registry:t}=this.props,{schemaUtils:r}=t;let n=e.items;return Nd(e)&&function(e){return!0===e.additionalItems&&console.warn("additionalItems=true is currently not supported"),Qc(e.additionalItems)}(e)&&(n=e.additionalItems),r.getDefaultFormState(n)},this.onAddClick=e=>{this._handleAddClick(e)},this.onAddIndexClick=e=>t=>{this._handleAddClick(t,e)},this.onCopyIndexClick=e=>t=>{t&&t.preventDefault();const{onChange:r,errorSchema:n}=this.props,{keyedFormData:o}=this.state;let a;if(n){a={};for(const t in n){const r=parseInt(t);r<=e?rd()(a,[r],n[t]):r>e&&rd()(a,[r+1],n[t])}}const i={key:$p(),item:ap()(o[e].item)},s=[...o];void 0!==e?s.splice(e+1,0,i):s.push(i),this.setState({keyedFormData:s,updatedKeyedFormData:!0},(()=>r(Vp(s),a)))},this.onDropIndexClick=e=>t=>{t&&t.preventDefault();const{onChange:r,errorSchema:n}=this.props,{keyedFormData:o}=this.state;let a;if(n){a={};for(const t in n){const r=parseInt(t);r{"use strict";e.exports=function e(t,r){if(t===r)return!0;if(t&&r&&"object"==typeof t&&"object"==typeof r){if(t.constructor!==r.constructor)return!1;var n,o,a;if(Array.isArray(t)){if((n=t.length)!=r.length)return!1;for(o=n;0!==o--;)if(!e(t[o],r[o]))return!1;return!0}if(t.constructor===RegExp)return t.source===r.source&&t.flags===r.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===r.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===r.toString();if((n=(a=Object.keys(t)).length)!==Object.keys(r).length)return!1;for(o=n;0!==o--;)if(!Object.prototype.hasOwnProperty.call(r,a[o]))return!1;for(o=n;0!==o--;){var i=a[o];if(!e(t[i],r[i]))return!1}return!0}return t!==t&&r!==r}},219:(e,t,r)=>{"use strict";var n=r(3763),o={childContextTypes:!0,contextType:!0,contextTypes:!0,defaultProps:!0,displayName:!0,getDefaultProps:!0,getDerivedStateFromError:!0,getDerivedStateFromProps:!0,mixins:!0,propTypes:!0,type:!0},a={name:!0,length:!0,prototype:!0,caller:!0,callee:!0,arguments:!0,arity:!0},i={$$typeof:!0,compare:!0,defaultProps:!0,displayName:!0,propTypes:!0,type:!0},s={};function l(e){return n.isMemo(e)?i:s[e.$$typeof]||o}s[n.ForwardRef]={$$typeof:!0,render:!0,defaultProps:!0,displayName:!0,propTypes:!0},s[n.Memo]=i;var c=Object.defineProperty,u=Object.getOwnPropertyNames,d=Object.getOwnPropertySymbols,p=Object.getOwnPropertyDescriptor,f=Object.getPrototypeOf,h=Object.prototype;e.exports=function e(t,r,n){if("string"!==typeof r){if(h){var o=f(r);o&&o!==h&&e(t,o,n)}var i=u(r);d&&(i=i.concat(d(r)));for(var s=l(t),m=l(r),g=0;g