8000 Tags · Dashticz/dashticz · GitHub
[go: up one dir, main page]

Skip to content

Tags

Tags

v4.20.16

Toggle v4.20.16's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1369 from MadPatrick/master

Fix graph tooltip to handle decimal values correctly
Update npm dependencies and rebuild dist bundle (4.20.16)

v4.20.0

Toggle v4.20.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Update to 4.20.0 (#1343)

* Bump the npm-minor-patch group with 5 updates (#344)

Bumps the npm-minor-patch group with 5 updates:

| Package | From | To |
| --- | --- | --- |
| [swiper](https://github.com/nolimits4web/Swiper) | `14.2.0` | `14.3.0` |
| [@babel/core](https://github.com/babel/babel/tree/HEAD/packages/babel-core) | `8.0.6` | `8.0.7` |
| [@babel/preset-env](https://github.com/babel/babel/tree/HEAD/packages/babel-preset-env) | `8.0.6` | `8.0.7` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `26.6.3` | `26.6.4` |
| [sass](https://github.com/sass/dart-sass) | `1.105.0` | `1.105.1` |


Updates `swiper` from 14.2.0 to 14.3.0
- [Release notes](https://github.com/nolimits4web/Swiper/releases)
- [Changelog](https://github.com/nolimits4web/swiper/blob/master/CHANGELOG.md)
- [Commits](nolimits4web/swiper@v14.2.0...v14.3.0)

Updates `@babel/core` from 8.0.6 to 8.0.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.7/packages/babel-core)

Updates `@babel/preset-env` from 8.0.6 to 8.0.7
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v8.0.7/packages/babel-preset-env)

Updates `@types/node` from 26.6.3 to 26.6.4
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `sass` from 1.105.0 to 1.105.1
- [Release 
8000
notes](https://github.com/sass/dart-sass/releases)
- [Changelog](https://github.com/sass/dart-sass/blob/main/CHANGELOG.md)
- [Commits](sass/dart-sass@1.105.0...1.105.1)

---
updated-dependencies:
- dependency-name: swiper
  dependency-version: 14.3.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: npm-minor-patch
- dependency-name: "@babel/core"
  dependency-version: 8.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@babel/preset-env"
  dependency-version: 8.0.7
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: "@types/node"
  dependency-version: 26.6.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
- dependency-name: sass
  dependency-version: 1.105.1
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump johngrogg/ics-parser (#337)

Bumps the composer-minor-patch group in /vendor/dashticz/ical with 1 update: [johngrogg/ics-parser](https://github.com/u01jmg3/ics-parser).


Updates `johngrogg/ics-parser` from 3.1.1 to 3.6.0
- [Release notes](https://github.com/u01jmg3/ics-parser/releases)
- [Commits](u01jmg3/ics-parser@v3.1.1...v3.6.0)

---
updated-dependencies:
- dependency-name: johngrogg/ics-parser
  dependency-version: 3.6.0
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: composer-minor-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/upload-artifact from 4 to 7 (#343)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 4 to 7.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](actions/upload-artifact@v4...v7)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/checkout from 4 to 7 (#342)

Bumps [actions/checkout](https://github.com/actions/checkout) from 4 to 7.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](actions/checkout@v4...v7)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/cache from 4 to 6 (#341)

Bumps [actions/cache](https://github.com/actions/cache) from 4 to 6.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](actions/cache@v4...v6)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-version: '6'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/setup-node from 4 to 7 (#340)

Bumps [actions/setup-node](https://github.com/actions/setup-node) from 4 to 7.
- [Release notes](https://github.com/actions/setup-node/releases)
- [Commits](actions/setup-node@v4...v7)

---
updated-dependencies:
- dependency-name: actions/setup-node
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump actions/setup-python from 5 to 7 (#339)

Bumps [actions/setup-python](https://github.com/actions/setup-python) from 5 to 7.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](actions/setup-python@v5...v7)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Bump version to 4.1.7 (dependency updates) (#345)

Co-authored-by: Claude <noreply@anthropic.com>

* Rebuild dist/, raise _DASHTICZ_VERSION to 205, check dist in CI (#346)

dist/ was last built before the swiper, babel and sass updates, so users
still ran the old bundle. Rebuild it, raise the cache-buster, document the
rule in AGENTS.md (and drop the stale curlGetJson note) and let the quality
job fail when a build differs from the committed dist/.

Co-authored-by: Claude <noreply@anthropic.com>

* Update johngrogg/ics-parser to 3.6.0 in vendored ical bridge (#347)

composer.lock already pointed to 3.6.0 (via #337) but the committed
vendor/ directory still held the older sources. Run `composer update
johngrogg/ics-parser` so the vendored copy matches the lock file.

Checked against 30 sample calendars for all three parser methods:
methods 0 and 1 are byte-identical; method 2 no longer emits PHP 8.2+
deprecation notices, includes the inclusive UNTIL occurrence that was
missed before, and only changes ordering of same-timestamp events.
Composer platform check requires PHP >= 7.2, below the supported 7.4.

Co-authored-by: Claude <noreply@anthropic.com>

* Sandbox remote responses relayed by cors.php and nocache.php (#348)

Both proxies passed the remote Content-Type through unchanged, so a
remote text/html or image/svg+xml body opened as a page ran its scripts
in the dashboard origin (reflected XSS). Send X-Content-Type-Options:
nosniff and a sandbox CSP with every relayed response, via a shared
helper in security.php that also refuses CR/LF in relayed header values.
Images, JSON and text fetched by the dashboard are unaffected.

Co-authored-by: Claude <noreply@anthropic.com>

* Add a regression test for the ical bridge (#349)

vendor/dashticz/ical/index.php had no automated test. Serve a small
calendar (a single event and a weekly series with an inclusive UNTIL)
from a local HTTP server and run the bridge for all three parser
methods. Methods 1 and 2 must expand the series, and method 2 must not
put PHP warnings into the JSON.

Co-authored-by: Claude <noreply@anthropic.com>

* Fix PHP 8.1+ deprecations in the SG_iCal parser (method 0) (#350)

On PHP 8.1 the SG_iCal_Line and SG_iCal_VCalendar interface methods
lacked return types and PHP 8.2 rejects the dynamic properties set on
SG_iCal_VEvent. Every request through the ical bridge with method 0
therefore put these deprecations in the "_errors" of the JSON. Add
#[\ReturnTypeWillChange] (a plain comment on PHP 7.4) and declare the
two properties. The parsed events of 30 sample calendars are unchanged.

Co-authored-by: Claude <noreply@anthropic.com>

* Restrict and harden the garbage bridge (#351)

vendor/dashticz/garbage/index.php sent Access-Control-Allow-Origin: *,
so any website could query it, and it concatenated request parameters
unencoded into the provider URLs and form bodies, so a value could add
or replace parameters of the provider request. Require a same-origin
request like the other bridges and encode the parameters. Adds tests
for the cross-site refusal and for the encoding.

Co-authored-by: Claude <noreply@anthropic.com>

* Insert only numeric device values into the graph custom header (#352)

createCurrentValues() pasted device.currentValue into a string that is
then evaluated. A text device with a quote in its value could change the
expression. Convert the value with parseFloat first, which is what the
expression did with it already. Adds a source test.

Co-authored-by: Claude <noreply@anthropic.com>

* Quote hostile keys in the CONFIG.js blocks written by the editors (#353)

configwriter_format_props() wrote property names unquoted and the block
line writers put the block key unescaped inside a single-quoted string.
The callers validate their input, but the writer itself should not be
able to produce a line that ends its string or object literal. Plain
names keep the exact output they have now; other names are quoted and
block keys are escaped. Adds a test.

Co-authored-by: Claude <noreply@anthropic.com>

* Require a clean _errors for ical parser method 0 in the bridge test (#354)

The SG_iCal PHP 8.1+ deprecations are fixed, so the bridge test can
check method 0 like method 2.

Co-authored-by: Claude <noreply@anthropic.com>

* Complete the Dutch and French language files (#355)

nl_NL lacked switches.state_mixed and fr_FR lacked 98 keys (theme
variables and the custom field presets/options). Add them, and add a
test that keeps both files complete compared to en_US. The other
language files are older and incomplete; the interface falls back to
en_US for their missing keys.

Co-authored-by: Claude <noreply@anthropic.com>

* Test and fix the moon phase calculation (#356)

* Add tests for the moon phase calculation of the Button widget

js/moon.js had no test. Check the phase, illumination and phase name at
known new moon, quarter and full moon moments, and that the image index
the Button widget derives from the phase always has an image in
img/moon.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Fix the unused quarter and age methods of the moon phase

The quarters were calculated in a nested function that was never called
(and used the wrong this), so newMoon(), fullMoon() and the other
quarter methods threw, age() returned NaN because it multiplied by a
function, and nextFirstQuarter() pointed at the previous first quarter.
Call the calculation with the right this, use the phase value for the
age, return the right quarter, remove a debug console.log and bound the
search loop. phase(), which the Button widget uses, is unchanged.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude <noreply@anthropic.com>

* Add tests for the thermostat block and setpoint command (#357)

Co-authored-by: Claude <noreply@anthropic.com>

* Widget editor: manage only the first block of a catalog kind (#358)

Co-authored-by: Claude <noreply@anthropic.com>

* Layout editor: no config control for special blocks the device editor cannot open (#359)

Co-authored-by: Claude <noreply@anthropic.com>

* Keep settings with a semicolon in a string value when rewriting CONFIG.js (#360)

Co-authored-by: Claude <noreply@anthropic.com>

* Grid layout save: only delete a screen on an explicit deleteScreen flag (#361)

Co-authored-by: Claude <noreply@anthropic.com>

* Coins block: use the CoinGecko API (#362)

Co-authored-by: Claude <noreply@anthropic.com>

* Editors: keep text custom field values a string

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>

* Widget editor: do not write 0 for an empty number setting (#364)

Co-authored-by: Claude <noreply@anthropic.com>

* Version 4.20.0; no 'undefined' after the version in Info (#365)

Co-authored-by: Claude <noreply@anthropic.com>

* Fully Kiosk widget: label naast de switch, 3 kolommen (4.20.1) (#366)

Het label staat direct naast elke schakelaar en de schakelaars staan in 3 kolommen (2 onder 768 px, 1 onder 480 px).

* Version back to 4.20.0 (Fully Kiosk change folded into 4.20.0)

* Fully Kiosk settings: label next to switch, 3 columns; no-attribution rule in AGENTS.md (4.20.2)

* Fully Kiosk: Lettergrootte naar de weergave-opties (#369)

Het veld Lettergrootte staat nu onder de iconen bij de weergave-opties, in Device Config en bij het toevoegen van de widget.

* Widgetinstellingen: lettergrootte onder de iconen, switch naast de tekst (#370)

Lettergrootte bij de weergave-opties voor F1, TVgids, Weather Info, HP iLO en PostNL, switches met de tekst ernaast in de Widget Config en de icoon per level in 2 kolommen.

* Layout Editor (classic screens): keep the definition of existing blocks when saving

* Layout Editor: treat a hand-keyed block with a device idx as a custom device, like the Device Editor

* Editors: stricter key patterns, no INF/NaN in CONFIG.js, UTF-8 safe cuts, program folders refused, LMS fields protected

* Device Rules: leave an unchanged CSS file alone and restore it exactly on a failed write

* Device/Widget Editor: an empty text value of a custom field no longer blocks the popup

* Release notes for the editor fixes

* Device Editor: alle 46 punten uit de review van deviceeditor.js (#372)

Klassieke schermen, quick-add popups, scans, LMS, Calendar, Graph, Multi Device, slide button en opslaan-logica uit de review van deviceeditor.js.

* Editors: keep last_update false in the Widget Editor, check inline grid blocks (ED-016, ED-017)

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Claude <noreply@anthropic.com>

v4.1.4

Toggle v4.1.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1329 from Dashticz/beta

Push 4.1.4

v4.1.2

Toggle v4.1.2's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1320 from MadPatrick/master

Calendar format/language in the Settings menu, written when adding a …

v4.1.0

Toggle v4.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1306 from MadPatrick/fixes/sync-upstream

Sync beta with master (v4.1.0)

v4.0.12

Toggle v4.0.12's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Added PostNL, F1 and Multi calendar (#1301)

* Fixes/postnl colors (#308)

* PostNL widget: configurable colors and two-column config form

Add icon/date/time/text color settings to the PostNL widget and lay out
its config popup fields in two columns.

* PostNL widget: center rows and force icon color

Center each shipment row and its text horizontally, and apply the
configured icon color with !important so themes can't override it.

* PostNL widget: icon style choice (Font Awesome / emoji)

Add a Icon style setting with Font Awesome (default) or colorful emoji
icons, and remove the icon color option.

* PostNL widget: tie Font Awesome icon size to font size setting
Font Awesome icons are now the configured font size + 2px.

* f1 widget (#309)
* Add F1 widget (domoticz_F1 plugin)

New widget in the widget menu that shows the race weekend schedule from the
domoticz_F1 plugin's text device. Settings: device idx and font size; icon,
title and background are the standard widget options. Registered in the
widget editor, device editor, layout editor and savewidgets.php, with
en/nl translations, CSS and docs.

* Fix F1 widget config popup

The lng.f1 lookup was declared in the wrong function, so opening the config
threw a ReferenceError. Also persist f1 settings on save.

* Make F1 widget standalone with plugin options

The widget now downloads and parses the F1 ICS calendar itself
(vendor/dashticz/f1/index.php) instead of reading a Domoticz text device.
Settings mirror the domoticz_F1 plugin: language, calendar URL per language
(defaulting to the plugin's feeds), UTC offset, poll interval, session
filter, next-event visibility, no-event text, plus hideimageonempty.

* Show F1 widget as centered next-event text

Grand Prix name with the next session below it ("Do 24 Sep 10:30 :
Vrije Training 1"), matching the plugin's next-event output.

* Add F1 - All events widget next to F1 - Next event

Two widgets in the widget menu (block types f1 and f1events) sharing one set
of F1 settings, so both can be placed on one screen. F1 - All events lists
every (filtered) session of the next race weekend.

* F1 widget config in two columns
* Give F1 - All events its own icon
* Unify repeatable F1 blocks

Replace the legacy F1 widget variants with a single repeatable F1 block keyed by f1mode ('next' or 'all'). This updates the block config flow in the device/layout editors, saves custom-field settings consistently, validates F1 calendar URLs server-side, and refreshes the docs and translations to match the new widget behavior.

* Add F1 next-event image option

This adds an optional `f1image` field for F1 blocks, rendering a custom image before the next race/session text. The device editor now includes the setting with validation and a custom-image picker, and the docs and translations were updated to describe the new option.

* Update creative.css
* Add race location to F1 tile title

Show the race location in the F1 tile title (e.g. "F1 agenda - Baku") and avoid duplicating it as a heading when a title exists. Added setTitleLocation(me, location) and a titleHasLocation flag passed into weekendHtml so the location is only rendered once. showEmpty now clears the title. Updated docs (docs/blocks/specials/f1.rst) and implementation (js/components/f1.js). The location falls back to the heading when the tile has no title; title-only behavior requires block.title to be present.

* Make f1 tile font size optional and theme-aware

Allow the f1 block to inherit the theme/cluster font size by making the fontsize option optional. Set --font-device-title on the tile when a valid f1fontsize (8-60 px) is provided; empty value removes the override. Update device editor to accept empty/null, validate bounds, and stop forcing default 14. Update component docs, CSS comment, and add help strings in en_US/nl_NL.

* Fix saving a second F1 widget
* Add F1 widget and bump release version (#310)
* Add multi-calendar support to the repeatable Calendar block (#311)

The Screen Editor's Calendar quick-add popup started as a single ICS
URL field only. It now has a "+ Add calendar" button that appends
further rows (name/URL/color); on save, one row still writes icalurl
as a plain string (unchanged), while two or more write the
name -> {ics, color} object shape js/components/calendar.js already
accepts for any block - the same shape the Widgets catalog's own
singleton calendar widget uses.

Also extends the generic Device Config popup's Calendar section with
the same row builder (so re-editing a saved multi-calendar block keeps
its own config icon, per AGENTS.md), and relaxes both
_specialFromReference() and layouteditor.js's _resolveBlock() to
recognize a repeatable calendar block whose icalurl is now an object
instead of only a string. js/saveblocks.php validates the object shape
the same way js/savewidgets.php already does for the singleton widget.

v4.0.8

Toggle v4.0.8's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1290 from MadPatrick/master

Enhance Custom Device support and fix UI issues

v4.0.6

Toggle v4.0.6's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
GPG key ID: B5690EEEBB952194
Verified
Learn about vigilant mode
Merge pull request #1288 from MadPatrick/master

Fix graph button contrast, canvas width, and Custom Device handling

v4.0.5

Toggle v4.0.5's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1275 from MadPatrick/master

v4.0.4

Toggle v4.0.4's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
Merge pull request #1274

Harden device rule logic and enhance CI testing framework
0