From e98bb8d0f2f4cc18830188b7972ac786bff69bd9 Mon Sep 17 00:00:00 2001 From: Gabriel Volpe Date: Thu, 13 Aug 2026 10:06:35 +0200 Subject: [PATCH 1/2] feat: add show weather humidity and temperatur range options --- ImmichFrame.Core/Helpers/WeatherExtensions.cs | 3 + .../Interfaces/IClientSettings.cs | 2 + ImmichFrame.Core/Interfaces/IWeather.cs | 3 + ImmichFrame.Core/Models/Weather.cs | 3 + .../Controllers/ConfigControllerTests.cs | 2 + .../Resources/TestV1.json | 2 + .../Resources/TestV2.json | 2 + ImmichFrame.WebApi.Tests/Resources/TestV2.yml | 2 + .../Helpers/Config/ServerSettingsV1.cs | 4 + .../Models/ClientSettingsDto.cs | 2 + ImmichFrame.WebApi/Models/ServerSettings.cs | 2 + Install_Web.md | 2 + docker/Settings.example.json | 2 + docker/Settings.example.yml | 2 + docker/example.env | 2 + docs/docs/getting-started/configuration.md | 4 + docs/docs/getting-started/configurationV1.md | 4 +- immichFrame.Web/src/app.css | 19 +++- .../src/lib/components/elements/clock.svelte | 87 +++++++++++++------ immichFrame.Web/src/lib/immichFrameApi.ts | 5 ++ openApi/swagger.json | 20 ++++- 21 files changed, 143 insertions(+), 31 deletions(-) diff --git a/ImmichFrame.Core/Helpers/WeatherExtensions.cs b/ImmichFrame.Core/Helpers/WeatherExtensions.cs index beef3029..c5eff7d7 100644 --- a/ImmichFrame.Core/Helpers/WeatherExtensions.cs +++ b/ImmichFrame.Core/Helpers/WeatherExtensions.cs @@ -15,6 +15,9 @@ public static Weather ToWeather(this WeatherInfo? weatherInfo) Location = weatherInfo.CityName, Description = $"{string.Join(',', weatherInfo.Weather.Select(x => x.Description))}", Temperature = weatherInfo.Main.Temperature.Value, + MinimumTemperature = weatherInfo.Main.MinimumTemperature.Value, + MaximumTemperature = weatherInfo.Main.MaximumTemperature.Value, + Humidity = weatherInfo.Main.Humidity.Value, Unit = Temperature.GetAbbreviation(weatherInfo.Main.Temperature.Unit), TemperatureUnit = weatherInfo.Main.Temperature.ToString(), IconId = $"{string.Join(',', weatherInfo.Weather.Select(x => x.IconId))}" diff --git a/ImmichFrame.Core/Interfaces/IClientSettings.cs b/ImmichFrame.Core/Interfaces/IClientSettings.cs index 576c13eb..a34ef818 100644 --- a/ImmichFrame.Core/Interfaces/IClientSettings.cs +++ b/ImmichFrame.Core/Interfaces/IClientSettings.cs @@ -23,6 +23,8 @@ public interface IClientSettings public string Style { get; } public string? BaseFontSize { get; } public bool ShowWeatherDescription { get; } + public bool WeatherShowHumidity { get; } + public bool WeatherShowTemperatureRange { get; } public string? WeatherIconUrl { get; } public bool ImageZoom { get; } public bool ImagePan { get; } diff --git a/ImmichFrame.Core/Interfaces/IWeather.cs b/ImmichFrame.Core/Interfaces/IWeather.cs index cd5c2a4b..acb46290 100644 --- a/ImmichFrame.Core/Interfaces/IWeather.cs +++ b/ImmichFrame.Core/Interfaces/IWeather.cs @@ -4,6 +4,9 @@ public interface IWeather { public string Location { get; set; } public double Temperature { get; set; } + public double MinimumTemperature { get; set; } + public double MaximumTemperature { get; set; } + public double Humidity { get; set; } public string Unit { get; set; } public string TemperatureUnit { get; set; } public string Description { get; set; } diff --git a/ImmichFrame.Core/Models/Weather.cs b/ImmichFrame.Core/Models/Weather.cs index 73e725f2..81e06ce3 100644 --- a/ImmichFrame.Core/Models/Weather.cs +++ b/ImmichFrame.Core/Models/Weather.cs @@ -6,6 +6,9 @@ public class Weather : IWeather { public string Location { get; set; } = ""; public double Temperature { get; set; } = 0d; + public double MinimumTemperature { get; set; } = 0d; + public double MaximumTemperature { get; set; } = 0d; + public double Humidity { get; set; } = 0d; public string Unit { get; set; } = ""; public string TemperatureUnit { get; set; } = ""; public string Description { get; set; } = ""; diff --git a/ImmichFrame.WebApi.Tests/Controllers/ConfigControllerTests.cs b/ImmichFrame.WebApi.Tests/Controllers/ConfigControllerTests.cs index de31232a..e6e097c8 100644 --- a/ImmichFrame.WebApi.Tests/Controllers/ConfigControllerTests.cs +++ b/ImmichFrame.WebApi.Tests/Controllers/ConfigControllerTests.cs @@ -44,6 +44,8 @@ public void Setup() Style = "blur", BaseFontSize = "18px", ShowWeatherDescription = false, + WeatherShowHumidity = true, + WeatherShowTemperatureRange = true, WeatherIconUrl = "https://example.com/{IconId}.png", ImageZoom = false, ImagePan = true, diff --git a/ImmichFrame.WebApi.Tests/Resources/TestV1.json b/ImmichFrame.WebApi.Tests/Resources/TestV1.json index e6c49102..8a3a9b53 100644 --- a/ImmichFrame.WebApi.Tests/Resources/TestV1.json +++ b/ImmichFrame.WebApi.Tests/Resources/TestV1.json @@ -51,6 +51,8 @@ "BaseFontSize": "BaseFontSize_TEST", "WeatherApiKey": "WeatherApiKey_TEST", "ShowWeatherDescription": true, + "WeatherShowHumidity": true, + "WeatherShowTemperatureRange": true, "WeatherIconUrl": "WeatherIconUrl_TEST", "UnitSystem": "UnitSystem_TEST", "WeatherLatLong": "WeatherLatLong_TEST", diff --git a/ImmichFrame.WebApi.Tests/Resources/TestV2.json b/ImmichFrame.WebApi.Tests/Resources/TestV2.json index 4d603dc9..1bc15d19 100644 --- a/ImmichFrame.WebApi.Tests/Resources/TestV2.json +++ b/ImmichFrame.WebApi.Tests/Resources/TestV2.json @@ -30,6 +30,8 @@ "Style": "Style_TEST", "BaseFontSize": "BaseFontSize_TEST", "ShowWeatherDescription": true, + "WeatherShowHumidity": true, + "WeatherShowTemperatureRange": true, "WeatherIconUrl": "WeatherIconUrl_TEST", "ImageZoom": true, "ImagePan": true, diff --git a/ImmichFrame.WebApi.Tests/Resources/TestV2.yml b/ImmichFrame.WebApi.Tests/Resources/TestV2.yml index 47f45947..6908c27e 100644 --- a/ImmichFrame.WebApi.Tests/Resources/TestV2.yml +++ b/ImmichFrame.WebApi.Tests/Resources/TestV2.yml @@ -29,6 +29,8 @@ General: Style: Style_TEST BaseFontSize: BaseFontSize_TEST ShowWeatherDescription: true + WeatherShowHumidity: true + WeatherShowTemperatureRange: true WeatherIconUrl: WeatherIconUrl_TEST ImageZoom: true ImagePan: true diff --git a/ImmichFrame.WebApi/Helpers/Config/ServerSettingsV1.cs b/ImmichFrame.WebApi/Helpers/Config/ServerSettingsV1.cs index 076f36da..09d2ca40 100644 --- a/ImmichFrame.WebApi/Helpers/Config/ServerSettingsV1.cs +++ b/ImmichFrame.WebApi/Helpers/Config/ServerSettingsV1.cs @@ -50,6 +50,8 @@ public class ServerSettingsV1 : IConfigSettable public string Style { get; set; } = "none"; public string? BaseFontSize { get; set; } public bool ShowWeatherDescription { get; set; } = true; + public bool WeatherShowHumidity { get; set; } = false; + public bool WeatherShowTemperatureRange { get; set; } = false; public string? WeatherIconUrl { get; set; } = "https://openweathermap.org/img/wn/{IconId}.png"; public bool ImageZoom { get; set; } = true; public bool ImagePan { get; set; } = false; @@ -128,6 +130,8 @@ class GeneralSettingsV1Adapter(ServerSettingsV1 _delegate) : IGeneralSettings public string Style => _delegate.Style; public string? BaseFontSize => _delegate.BaseFontSize; public bool ShowWeatherDescription => _delegate.ShowWeatherDescription; + public bool WeatherShowHumidity => _delegate.WeatherShowHumidity; + public bool WeatherShowTemperatureRange => _delegate.WeatherShowTemperatureRange; public string? WeatherIconUrl => _delegate.WeatherIconUrl; public bool ImageZoom => _delegate.ImageZoom; public bool ImagePan => _delegate.ImagePan; diff --git a/ImmichFrame.WebApi/Models/ClientSettingsDto.cs b/ImmichFrame.WebApi/Models/ClientSettingsDto.cs index 5e408fe9..26db206d 100644 --- a/ImmichFrame.WebApi/Models/ClientSettingsDto.cs +++ b/ImmichFrame.WebApi/Models/ClientSettingsDto.cs @@ -25,6 +25,8 @@ public class ClientSettingsDto(IClientSettings settings) : IClientSettings public string Style => settings.Style; public string? BaseFontSize => settings.BaseFontSize; public bool ShowWeatherDescription => settings.ShowWeatherDescription; + public bool WeatherShowHumidity => settings.WeatherShowHumidity; + public bool WeatherShowTemperatureRange => settings.WeatherShowTemperatureRange; public string? WeatherIconUrl => settings.WeatherIconUrl; public bool ImageZoom => settings.ImageZoom; public bool ImagePan => settings.ImagePan; diff --git a/ImmichFrame.WebApi/Models/ServerSettings.cs b/ImmichFrame.WebApi/Models/ServerSettings.cs index 74d0fb8e..70eea0b5 100644 --- a/ImmichFrame.WebApi/Models/ServerSettings.cs +++ b/ImmichFrame.WebApi/Models/ServerSettings.cs @@ -58,6 +58,8 @@ public class GeneralSettings : IGeneralSettings, IConfigSettable public string Style { get; set; } = "none"; public string? BaseFontSize { get; set; } public bool ShowWeatherDescription { get; set; } = true; + public bool WeatherShowHumidity { get; set; } = false; + public bool WeatherShowTemperatureRange { get; set; } = false; public string? WeatherIconUrl { get; set; } = "https://openweathermap.org/img/wn/{IconId}.png"; public bool ImageZoom { get; set; } = true; public bool ImagePan { get; set; } = false; diff --git a/Install_Web.md b/Install_Web.md index 5cf3f94c..ea2a0556 100644 --- a/Install_Web.md +++ b/Install_Web.md @@ -76,6 +76,8 @@ services: # BaseFontSize: "17px" # WeatherApiKey: "" # ShowWeatherDescription: "true" + # WeatherShowHumidity: "false" + # WeatherShowTemperatureRange: "false" # WeatherIconUrl: "https://openweathermap.org/img/wn/{IconId}.png" # UnitSystem: "imperial" # WeatherLatLong: "" diff --git a/docker/Settings.example.json b/docker/Settings.example.json index a86a4d00..c73adda3 100644 --- a/docker/Settings.example.json +++ b/docker/Settings.example.json @@ -30,6 +30,8 @@ "Style": "none", "BaseFontSize": "17px", "ShowWeatherDescription": true, + "WeatherShowHumidity": false, + "WeatherShowTemperatureRange": false, "WeatherIconUrl": "https://openweathermap.org/img/wn/{IconId}.png", "ImageZoom": true, "ImagePan": false, diff --git a/docker/Settings.example.yml b/docker/Settings.example.yml index 173b31a5..c72b3930 100644 --- a/docker/Settings.example.yml +++ b/docker/Settings.example.yml @@ -28,6 +28,8 @@ General: Style: none BaseFontSize: 17px ShowWeatherDescription: true + WeatherShowHumidity: false + WeatherShowTemperatureRange: false WeatherIconUrl: 'https://openweathermap.org/img/wn/{IconId}.png' ImageZoom: true ImagePan: false diff --git a/docker/example.env b/docker/example.env index 51d80ed5..1c1e2398 100644 --- a/docker/example.env +++ b/docker/example.env @@ -43,6 +43,8 @@ ApiKey=KEY # BaseFontSize=17px # WeatherApiKey= # ShowWeatherDescription=true +# WeatherShowHumidity=false +# WeatherShowTemperatureRange=false # WeatherIconUrl=https://openweathermap.org/img/wn/{IconId}.png # UnitSystem=imperial # WeatherLatLong= diff --git a/docs/docs/getting-started/configuration.md b/docs/docs/getting-started/configuration.md index 7378c7d1..b9eee147 100644 --- a/docs/docs/getting-started/configuration.md +++ b/docs/docs/getting-started/configuration.md @@ -92,6 +92,10 @@ General: BaseFontSize: '17px' # string # Displays the description of the current weather. ShowWeatherDescription: true # boolean + # Displays the current humidity. + WeatherShowHumidity: false # boolean + # Displays the current minimum and maximum temperature. + WeatherShowTemperatureRange: false # boolean # URL for the icon to load for the current weather condition WeatherIconUrl: 'https://openweathermap.org/img/wn/{IconId}.png' # Zooms into or out of an image and gives it a touch of life. diff --git a/docs/docs/getting-started/configurationV1.md b/docs/docs/getting-started/configurationV1.md index bf9ca932..b8623ba0 100644 --- a/docs/docs/getting-started/configurationV1.md +++ b/docs/docs/getting-started/configurationV1.md @@ -33,6 +33,8 @@ sidebar_position: 4 | [Weather](#weather) | UnitSystem | imperial \| metric | imperial | Imperial or metric system. (Fahrenheit or degrees) | | [Weather](#weather) | Language | string | en | 2 digit ISO code, sets the language of the weather description. | | [Weather](#weather) | ShowWeatherDescription | boolean | true | Displays the description of the current weather. | +| [Weather](#weather) | WeatherShowHumidity | boolean | false | Displays the current humidity. | +| [Weather](#weather) | WeatherShowTemperatureRange | boolean | false | Displays the current minimum and maximum temperature. | | [Weather](#weather) | WeatherLatLong | boolean | 40.730610,-73.935242 | Set the weather location with lat/lon. | | [Weather](#weather) | WeatherIconUrl | string | https://openweathermap.org/img/wn/{IconId}.png | Sets the URL for an icon to display the weather conditions. | | Clock | ShowClock | boolean | true | Displays the current time. | @@ -111,4 +113,4 @@ volumes: ``` [openweathermap-url]: https://openweathermap.org/appid -[immich-api-url]: https://immich.app/docs/features/command-line-interface#obtain-the-api-key \ No newline at end of file +[immich-api-url]: https://immich.app/docs/features/command-line-interface#obtain-the-api-key diff --git a/immichFrame.Web/src/app.css b/immichFrame.Web/src/app.css index c73c4e49..a81b9911 100644 --- a/immichFrame.Web/src/app.css +++ b/immichFrame.Web/src/app.css @@ -84,9 +84,26 @@ div.weather-unit { order: 4; } +div.weather-stats { + display: flex; + justify-content: center; + gap: 0.75rem; +} + +div.weather-stat { + display: inline-flex; + align-items: center; + gap: 0.25rem; +} + +svg.weather-stat-icon { + width: 1em; + height: 1em; +} + img.icon-weather { display: inline-block; vertical-align: middle; margin-top: -8px; /* adjust icon top to line up with text */ order: 1; -} \ No newline at end of file +} diff --git a/immichFrame.Web/src/lib/components/elements/clock.svelte b/immichFrame.Web/src/lib/components/elements/clock.svelte index e4d00ec4..c2888013 100644 --- a/immichFrame.Web/src/lib/components/elements/clock.svelte +++ b/immichFrame.Web/src/lib/components/elements/clock.svelte @@ -5,6 +5,8 @@ import * as locale from 'date-fns/locale'; import { configStore } from '$lib/stores/config.store'; import { clientIdentifierStore } from '$lib/stores/persist.store'; + import Icon from './icon.svelte'; + import { mdiThermometer, mdiWaterPercent } from '@mdi/js'; api.init(); @@ -25,10 +27,18 @@ const timePortion = $derived(() => format(now, $configStore.clockFormat ?? 'HH:mm:ss')); const primaryIconId = $derived(() => { - if (!weather?.iconId) return null; - const firstId = weather.iconId.split(',')[0].trim(); - return firstId || null; - }); + if (!weather?.iconId) return null; + const firstId = weather.iconId.split(',')[0].trim(); + return firstId || null; + }); + + function formatTemperature(value?: number) { + return value?.toFixed(1); + } + + function formatHumidity(value?: number) { + return value?.toFixed(0); + } onMount(() => { const interval = setInterval(() => { @@ -76,28 +86,49 @@ {timePortion()}

{#if weather} -
-
- {#if $configStore.weatherIconUrl && primaryIconId()} - {weather.description} - {/if} - -
{weather.location},
-
{weather.temperature?.toFixed(1)}°
-
- - {#if $configStore.showWeatherDescription} -

- {weather.description} -

- {/if} -
-{/if} +
+
+ {#if $configStore.weatherIconUrl && primaryIconId()} + {weather.description} + {/if} + +
{weather.location},
+
{weather.temperature?.toFixed(1)}°
+
+
+ {#if $configStore.weatherShowTemperatureRange} +
+ + {formatTemperature(weather.maximumTemperature)}° | {formatTemperature( + weather.minimumTemperature + )}° +
+ {/if} + {#if $configStore.weatherShowHumidity} +
+ + {formatHumidity(weather.humidity)}% +
+ {/if} +
+ + {#if $configStore.showWeatherDescription} +

+ {weather.description} +

+ {/if} +
+ {/if} diff --git a/immichFrame.Web/src/lib/immichFrameApi.ts b/immichFrame.Web/src/lib/immichFrameApi.ts index 85fa762b..87ea8de9 100644 --- a/immichFrame.Web/src/lib/immichFrameApi.ts +++ b/immichFrame.Web/src/lib/immichFrameApi.ts @@ -221,6 +221,8 @@ export type ClientSettingsDto = { style?: string | null; baseFontSize?: string | null; showWeatherDescription?: boolean; + weatherShowHumidity?: boolean; + weatherShowTemperatureRange?: boolean; weatherIconUrl?: string | null; imageZoom?: boolean; imagePan?: boolean; @@ -232,6 +234,9 @@ export type ClientSettingsDto = { export type IWeather = { location?: string | null; temperature?: number; + minimumTemperature?: number; + maximumTemperature?: number; + humidity?: number; unit?: string | null; temperatureUnit?: string | null; description?: string | null; diff --git a/openApi/swagger.json b/openApi/swagger.json index 9569c297..38be3641 100644 --- a/openApi/swagger.json +++ b/openApi/swagger.json @@ -1069,6 +1069,12 @@ "showWeatherDescription": { "type": "boolean" }, + "weatherShowHumidity": { + "type": "boolean" + }, + "weatherShowTemperatureRange": { + "type": "boolean" + }, "weatherIconUrl": { "type": "string", "nullable": true @@ -1286,6 +1292,18 @@ "type": "number", "format": "double" }, + "minimumTemperature": { + "type": "number", + "format": "double" + }, + "maximumTemperature": { + "type": "number", + "format": "double" + }, + "humidity": { + "type": "number", + "format": "double" + }, "unit": { "type": "string", "nullable": true @@ -1527,4 +1545,4 @@ } } } -} \ No newline at end of file +} From afa5c573eccb98dacaeb742ac421e23dc5a8c9f3 Mon Sep 17 00:00:00 2001 From: Gabriel Volpe Date: Thu, 13 Aug 2026 10:38:23 +0200 Subject: [PATCH 2/2] address review comments --- ImmichFrame.Core/Helpers/WeatherExtensions.cs | 10 ++++++++-- ImmichFrame.Core/Interfaces/IWeather.cs | 4 ++-- ImmichFrame.Core/Models/Weather.cs | 4 ++-- .../src/lib/components/elements/clock.svelte | 12 ++++++++---- immichFrame.Web/src/lib/immichFrameApi.ts | 4 ++-- openApi/swagger.json | 6 ++++-- 6 files changed, 26 insertions(+), 14 deletions(-) diff --git a/ImmichFrame.Core/Helpers/WeatherExtensions.cs b/ImmichFrame.Core/Helpers/WeatherExtensions.cs index c5eff7d7..11f73d08 100644 --- a/ImmichFrame.Core/Helpers/WeatherExtensions.cs +++ b/ImmichFrame.Core/Helpers/WeatherExtensions.cs @@ -1,6 +1,7 @@ using OpenWeatherMap.Models; using ImmichFrame.Core.Models; using UnitsNet; +using UnitsNet.Units; namespace ImmichFrame.Core.Helpers { @@ -15,13 +16,18 @@ public static Weather ToWeather(this WeatherInfo? weatherInfo) Location = weatherInfo.CityName, Description = $"{string.Join(',', weatherInfo.Weather.Select(x => x.Description))}", Temperature = weatherInfo.Main.Temperature.Value, - MinimumTemperature = weatherInfo.Main.MinimumTemperature.Value, - MaximumTemperature = weatherInfo.Main.MaximumTemperature.Value, + MinimumTemperature = GetOptionalTemperatureValue(weatherInfo.Main.MinimumTemperature), + MaximumTemperature = GetOptionalTemperatureValue(weatherInfo.Main.MaximumTemperature), Humidity = weatherInfo.Main.Humidity.Value, Unit = Temperature.GetAbbreviation(weatherInfo.Main.Temperature.Unit), TemperatureUnit = weatherInfo.Main.Temperature.ToString(), IconId = $"{string.Join(',', weatherInfo.Weather.Select(x => x.IconId))}" }; } + + private static double? GetOptionalTemperatureValue(Temperature temperature) + { + return temperature.Value == 0d && temperature.Unit == TemperatureUnit.Kelvin ? null : temperature.Value; + } } } diff --git a/ImmichFrame.Core/Interfaces/IWeather.cs b/ImmichFrame.Core/Interfaces/IWeather.cs index acb46290..18525194 100644 --- a/ImmichFrame.Core/Interfaces/IWeather.cs +++ b/ImmichFrame.Core/Interfaces/IWeather.cs @@ -4,8 +4,8 @@ public interface IWeather { public string Location { get; set; } public double Temperature { get; set; } - public double MinimumTemperature { get; set; } - public double MaximumTemperature { get; set; } + public double? MinimumTemperature { get; set; } + public double? MaximumTemperature { get; set; } public double Humidity { get; set; } public string Unit { get; set; } public string TemperatureUnit { get; set; } diff --git a/ImmichFrame.Core/Models/Weather.cs b/ImmichFrame.Core/Models/Weather.cs index 81e06ce3..83bf90aa 100644 --- a/ImmichFrame.Core/Models/Weather.cs +++ b/ImmichFrame.Core/Models/Weather.cs @@ -6,8 +6,8 @@ public class Weather : IWeather { public string Location { get; set; } = ""; public double Temperature { get; set; } = 0d; - public double MinimumTemperature { get; set; } = 0d; - public double MaximumTemperature { get; set; } = 0d; + public double? MinimumTemperature { get; set; } = null; + public double? MaximumTemperature { get; set; } = null; public double Humidity { get; set; } = 0d; public string Unit { get; set; } = ""; public string TemperatureUnit { get; set; } = ""; diff --git a/immichFrame.Web/src/lib/components/elements/clock.svelte b/immichFrame.Web/src/lib/components/elements/clock.svelte index c2888013..92850132 100644 --- a/immichFrame.Web/src/lib/components/elements/clock.svelte +++ b/immichFrame.Web/src/lib/components/elements/clock.svelte @@ -32,14 +32,18 @@ return firstId || null; }); - function formatTemperature(value?: number) { + function formatTemperature(value?: number | null) { return value?.toFixed(1); } - function formatHumidity(value?: number) { + function formatHumidity(value?: number | null) { return value?.toFixed(0); } + function isFiniteNumber(value?: number | null) { + return Number.isFinite(value); + } + onMount(() => { const interval = setInterval(() => { now = new Date(); @@ -106,7 +110,7 @@
{weather.temperature?.toFixed(1)}°
- {#if $configStore.weatherShowTemperatureRange} + {#if $configStore.weatherShowTemperatureRange && isFiniteNumber(weather.maximumTemperature) && isFiniteNumber(weather.minimumTemperature)}
{/if} - {#if $configStore.weatherShowHumidity} + {#if $configStore.weatherShowHumidity && isFiniteNumber(weather.humidity)}
{formatHumidity(weather.humidity)}% diff --git a/immichFrame.Web/src/lib/immichFrameApi.ts b/immichFrame.Web/src/lib/immichFrameApi.ts index 87ea8de9..5e44cac1 100644 --- a/immichFrame.Web/src/lib/immichFrameApi.ts +++ b/immichFrame.Web/src/lib/immichFrameApi.ts @@ -234,8 +234,8 @@ export type ClientSettingsDto = { export type IWeather = { location?: string | null; temperature?: number; - minimumTemperature?: number; - maximumTemperature?: number; + minimumTemperature?: number | null; + maximumTemperature?: number | null; humidity?: number; unit?: string | null; temperatureUnit?: string | null; diff --git a/openApi/swagger.json b/openApi/swagger.json index 38be3641..1220a4b7 100644 --- a/openApi/swagger.json +++ b/openApi/swagger.json @@ -1294,11 +1294,13 @@ }, "minimumTemperature": { "type": "number", - "format": "double" + "format": "double", + "nullable": true }, "maximumTemperature": { "type": "number", - "format": "double" + "format": "double", + "nullable": true }, "humidity": { "type": "number",