Compare commits

..
3909 Commits
Author SHA1 Message Date
pranshulgg 206a8ab23a update changelog 2026-10-17 16:24:48 +05:30
pranshulgg 042f675ac8 fix location not found crashes 2026-10-17 16:23:33 +05:30
pranshulgg cfff16c57d fix location null crashes 2026-10-17 16:18:38 +05:30
pranshulgg 5f698cab75 fix missing placeholder 2026-10-17 10:04:57 +05:30
pranshulgg 9be4c7eab7 update changelog 2026-10-17 09:27:51 +05:30
Pranshul b196ed6799 Merge pull request #1209 from PranshulGG/l10n_main
New Crowdin updates
2026-10-17 08:33:49 +05:30
pranshulgg 3654d8d630 clean up comments and variable names 2026-10-17 08:33:33 +05:30
pranshulgg 0297ba99bc remove notification sound #1211 2026-10-17 08:26:41 +05:30
Pranshul d30f9b8a66 Merge pull request #1203 from GaijinSystems/fix/eccc-daily-missing-today
ECCC: keep today in daily forecast after its daytime period ends
2026-10-16 20:02:40 +05:30
Pranshul dfa6d89aba New translations strings.xml (Lithuanian)
[ci skip]
2026-10-16 19:29:07 +05:30
Matthew Fisher 1e1b8b2cab ECCC: keep today in daily forecast after its daytime period ends
ECCC drops "Today" once it has passed, so in the evening the forecast
starts with "Tonight". The mapper paired day and night periods by
position, so after an evening refresh:
- today disappeared from the daily list and daily[0] became tomorrow
  (hourly icons fell back to day icons until midnight, and the
  sun/moon blocks and max/min showed tomorrow)
- every day's low came from the previous night
- getMoonTimings added today in front, shifting moon times by a day

Pair day and night periods by date instead, and keep today with only
its night period. A night period left over from yesterday is dropped.
Today's high is the highest of today's observed temperatures (ECCC's
pastHourly), the remaining hourly forecast for today and the current
temperature. A period whose date can't be parsed is skipped, so one
bad entry no longer fails the whole forecast.
2026-10-16 08:09:38 -05:00
pranshulgg f271d32ed9 fix forecast dates around new year #1202 2026-10-16 13:25:24 +05:30
Pranshul cde9f5c55b New translations strings.xml (Ukrainian)
[ci skip]
2026-10-15 22:07:12 +05:30
Pranshul 86dbe0f029 Merge pull request #1197 from PranshulGG/l10n_main
New Crowdin updates
2026-10-13 21:03:23 +05:30
Pranshul 027ab2b18d Merge pull request #1200 from GaijinSystems/fix/nws-daily-missing-today
NWS: keep today in daily forecast after its daytime period ends
2026-10-13 21:01:51 +05:30
pranshulgg 402843a93a add option to disable new version available message 2026-10-13 21:01:00 +05:30
pranshulgg 7f21132013 add option to disable new version available message 2026-10-13 20:57:41 +05:30
pranshulgg f91d9792ce Fix missing return statements in cache resolvers when API key is missing 2026-10-13 19:30:27 +05:30
Matthew Fisher f330a33202 NWS: keep today in daily forecast after its daytime period ends
NWS drops a day's daytime period once it has passed, so in the evening
the forecast starts with "Tonight". The daily list was built from
daytime periods only, so today disappeared from it and daily[0] became
tomorrow. Tonight's hourly icons then fell back to day icons, and the
sun/moon blocks and max/min showed tomorrow's values.

Group periods by local day and use the daytime period, falling back to
the night period for a day without one (today or later only, so a stale
forecast doesn't bring back yesterday).

Fixes #1199
2026-10-13 08:33:36 -05:00
Pranshul 996549b3bc New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-10-13 14:50:10 +05:30
pranshulgg 68656c02a1 bump version 2026-10-12 20:31:30 +05:30
pranshulgg 260cd86527 custom date format closes #1142 2026-10-12 12:16:29 +05:30
Pranshul 7f83896f4a New translations strings.xml (Hebrew)
[ci skip]
2026-10-11 23:00:10 +05:30
pranshulgg aef3869891 Fix OpenWeather API key parsing when missing '&' suffix 2026-10-11 21:56:33 +05:30
pranshulgg 22d51ee63a update comment 2026-10-11 21:34:58 +05:30
pranshulgg b08ea96207 add one call api 2026-10-11 21:27:03 +05:30
pranshulgg 26c535aab3 Inject OpenWeatherOneCallApi into OpenWeatherRepository 2026-10-11 21:19:22 +05:30
pranshulgg 1d3c64ee79 fix suffix 2026-10-11 21:04:14 +05:30
pranshulgg 6bfd46a438 support openweather One Call 4.0 closes #1119 2026-10-11 19:57:45 +05:30
pranshulgg 12ff63f518 support openweather One Call 4.0 #1119 2026-10-11 18:36:16 +05:30
Pranshul ce386c7036 New translations strings.xml (Indonesian)
[ci skip]
2026-10-11 16:37:47 +05:30
Pranshul 04fa01f093 Merge pull request #1195 from PranshulGG/l10n_main
New Crowdin updates
2026-10-11 10:02:51 +05:30
Pranshul f02f68da81 New translations strings.xml (Turkish)
[ci skip]
2026-10-10 23:54:24 +05:30
Pranshul cf2d9a8557 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-10-10 17:41:39 +05:30
Pranshul 1c6096108f New translations strings.xml (Serbian (Latin))
[ci skip]
2026-10-10 17:41:38 +05:30
Pranshul 0f37309dd2 New translations strings.xml (Norwegian Bokmal)
[ci skip]
2026-10-10 17:41:36 +05:30
Pranshul 32b1d3d94f New translations strings.xml (Filipino)
[ci skip]
2026-10-10 17:41:35 +05:30
Pranshul 501955817c New translations strings.xml (Azerbaijani)
[ci skip]
2026-10-10 17:41:34 +05:30
Pranshul 97de9412a9 New translations strings.xml (Kazakh)
[ci skip]
2026-10-10 17:41:32 +05:30
Pranshul c8cd37c9bc New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-10-10 17:41:31 +05:30
Pranshul ba6f293017 New translations strings.xml (Thai)
[ci skip]
2026-10-10 17:41:29 +05:30
Pranshul 548127fa2f New translations strings.xml (Persian)
[ci skip]
2026-10-10 17:41:28 +05:30
Pranshul 387f945311 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-10-10 17:41:27 +05:30
Pranshul 17203bdf7a New translations strings.xml (Vietnamese)
[ci skip]
2026-10-10 17:41:25 +05:30
Pranshul 36be536aff New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-10-10 17:41:24 +05:30
Pranshul 3f91b16feb New translations strings.xml (Slovenian)
[ci skip]
2026-10-10 17:41:23 +05:30
Pranshul 3b0370b48c New translations strings.xml (Portuguese)
[ci skip]
2026-10-10 17:41:21 +05:30
Pranshul ee64dedab2 New translations strings.xml (Dutch)
[ci skip]
2026-10-10 17:41:20 +05:30
Pranshul a2cd0500f9 New translations strings.xml (Korean)
[ci skip]
2026-10-10 17:41:19 +05:30
Pranshul dfedb104a9 New translations strings.xml (Japanese)
[ci skip]
2026-10-10 17:41:17 +05:30
Pranshul 33c54ecbfb New translations strings.xml (Italian)
[ci skip]
2026-10-10 17:41:16 +05:30
Pranshul 893ac8beaa New translations strings.xml (Hungarian)
[ci skip]
2026-10-10 17:41:15 +05:30
Pranshul abc4c30151 New translations strings.xml (German)
[ci skip]
2026-10-10 17:41:13 +05:30
Pranshul f651e34a25 New translations strings.xml (Catalan)
[ci skip]
2026-10-10 17:41:12 +05:30
Pranshul 65b2020412 New translations strings.xml (Bulgarian)
[ci skip]
2026-10-10 17:41:10 +05:30
Pranshul c700b649b9 New translations strings.xml (Spanish)
[ci skip]
2026-10-10 17:41:09 +05:30
Pranshul 43f069d904 New translations strings.xml (Romanian)
[ci skip]
2026-10-10 17:41:08 +05:30
Pranshul 6552b9721e New translations strings.xml (Indonesian)
[ci skip]
2026-10-10 17:41:07 +05:30
Pranshul ed9400d2b7 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-10-10 17:41:05 +05:30
Pranshul 63f029be75 New translations strings.xml (Ukrainian)
[ci skip]
2026-10-10 17:41:04 +05:30
Pranshul 8045d6340a New translations strings.xml (Turkish)
[ci skip]
2026-10-10 17:41:02 +05:30
Pranshul c3edf51fb8 New translations strings.xml (Swedish)
[ci skip]
2026-10-10 17:41:01 +05:30
Pranshul 38b0586556 New translations strings.xml (Russian)
[ci skip]
2026-10-10 17:41:00 +05:30
Pranshul 4fa749ebb5 New translations strings.xml (Polish)
[ci skip]
2026-10-10 17:40:58 +05:30
Pranshul 43bf77fe1f New translations strings.xml (Lithuanian)
[ci skip]
2026-10-10 17:40:56 +05:30
Pranshul 15c011b621 New translations strings.xml (Hebrew)
[ci skip]
2026-10-10 17:40:55 +05:30
Pranshul 74f81d2886 New translations strings.xml (Finnish)
[ci skip]
2026-10-10 17:40:53 +05:30
Pranshul 1a8705cac1 New translations strings.xml (Czech)
[ci skip]
2026-10-10 17:40:52 +05:30
Pranshul 899fff4974 New translations strings.xml (French)
[ci skip]
2026-10-10 17:40:51 +05:30
Pranshul d20283bf28 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-10-10 17:40:49 +05:30
Pranshul f4f0abbff9 New translations strings.xml (Greek)
[ci skip]
2026-10-10 17:40:48 +05:30
pranshulgg adedb4631d comments 2026-10-10 11:54:44 +05:30
pranshulgg 9c4708c24a change req code 2026-10-10 11:53:03 +05:30
Pranshul ca31292a60 Merge pull request #1157 from reveler-hub/feature/meteofor-ukraine-source
Add Meteofor (Ukraine) weather source
2026-10-10 11:51:50 +05:30
Pranshul 89c22e23a0 Merge pull request #1192 from PranshulGG/l10n_main
New Crowdin updates
2026-10-10 11:08:10 +05:30
pranshulgg cf4cd505f8 open calendar app 2026-10-10 11:04:12 +05:30
pranshulgg 3d8d2f1450 added weather alert notifications closes #316 2026-10-08 10:15:29 +05:30
Pranshul 8cd7bd07a1 New translations strings.xml (Hebrew)
[ci skip]
2026-10-08 02:44:10 +05:30
pranshulgg 4cc69b43c3 alert notification #316 2026-10-07 21:11:58 +05:30
Pranshul 4f1ec0a295 New translations strings.xml (Turkish)
[ci skip]
2026-10-07 19:59:13 +05:30
Pranshul 19ff66cdec Merge pull request #1191 from PranshulGG/l10n_main
New Crowdin updates
2026-10-06 16:48:54 +05:30
Pranshul 64c253b39f New translations strings.xml (Swedish)
[ci skip]
2026-10-06 15:09:04 +05:30
pranshulgg ed3409ac22 Simplify repository lookup in SourceRepositoryProvider 2026-10-04 16:43:55 +05:30
pranshulgg 6f1bbdf30e add MOENV #1177 @reveler-hub 2026-10-04 11:25:02 +05:30
Pranshul ae85de71f3 Merge pull request #1188 from reveler-hub/fix/gismeteo-location-lookup-param
Fix Gismeteo location lookup sending wrong query parameter
2026-10-03 09:01:26 +05:30
reveler-hub 66f5fb0241 Fix Gismeteo location lookup sending wrong query parameter (#1187)
GismeteoApi.fetchLocations() sent the longitude as "lon", but
Gismeteo's own API expects "lng" and silently ignores unrecognized
parameters. The server fell back to a longitude near 0deg, so the
nearest-city lookup matched locations along the Greenwich meridian
instead of the real coordinates - e.g. a Volgograd, Russia location
resolving to Normandy, France. Since the resolved city ID gets
cached per-location after the first lookup, this mismatch was
permanent until the location was deleted and re-added.

Verified live: before the fix, querying Gismeteo's endpoint for
Volgograd's coordinates returned French cities; after renaming the
parameter, it correctly returns Volgograd and nearby Volgograd
Oblast settlements. Confirmed in-app on an AVD with mock GPS set to
Volgograd - weather source set to Gismeteo now resolves and fetches
successfully for a real nearby Russian city instead of failing
silently into the wrong country.
2026-10-03 15:53:19 +13:00
Pranshul 08e741823d Merge pull request #1183 from PranshulGG/l10n_main
New Crowdin updates
2026-10-02 19:15:57 +05:30
Pranshul 66cb039232 Merge pull request #1186 from nikiosna/fix/smhi-coordinate-precision
Fix SMHI 404 for coordinates with more than 6 decimals
2026-10-02 19:14:17 +05:30
pranshulgg 7a2a101a2e add MOENV 2026-10-02 19:13:59 +05:30
Pranshul efca511021 New translations strings.xml (Ukrainian)
[ci skip]
2026-10-02 18:58:01 +05:30
nikiosnaandClaude Opus 5.5 56908af4ef Fix SMHI 404 for coordinates with more than 6 decimals
The SMHI snow1g point endpoint returns HTTP 404 when latitude or
longitude has more than 6 decimal places. GPS locations usually have
more, so the request failed and the app showed "Network not available".

Format the coordinates with 4 decimals (~10 m, plenty for the 2.5 km
grid) using Locale.ROOT so the decimal separator is always a dot.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 09:10:14 +02:00
Pranshul 4d0da91355 New translations strings.xml (Swedish)
[ci skip]
2026-09-29 18:09:43 +05:30
Pranshul ffc6ffa5e8 New translations strings.xml (Indonesian)
[ci skip]
2026-09-29 03:12:53 +05:30
Pranshul 4e781a44af New translations strings.xml (Greek)
[ci skip]
2026-09-29 03:12:51 +05:30
Pranshul 8bda1ce3e3 New translations strings.xml (Finnish)
[ci skip]
2026-09-28 20:24:01 +05:30
Pranshul adbcffead4 Merge pull request #1180 from PranshulGG/l10n_main
New Crowdin updates
2026-09-28 19:34:27 +05:30
Pranshul 5111d9d9f0 New translations strings.xml (Polish)
[ci skip]
2026-09-27 22:16:20 +05:30
Pranshul 0c625daa33 New translations strings.xml (Swedish)
[ci skip]
2026-09-26 23:27:29 +05:30
Pranshul b14e644fcc New translations strings.xml (Lithuanian)
[ci skip]
2026-09-26 23:27:27 +05:30
Pranshul 73bc232e91 New translations strings.xml (Russian)
[ci skip]
2026-09-26 17:07:16 +05:30
Pranshul 81eb54bad7 New translations strings.xml (Finnish)
[ci skip]
2026-09-26 17:07:15 +05:30
Pranshul 815137eb02 New translations strings.xml (French)
[ci skip]
2026-09-26 17:07:14 +05:30
Pranshul e578bae8a1 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-09-26 17:07:12 +05:30
Pranshul 53e8d8f1ef New translations strings.xml (Chinese Simplified)
[ci skip]
2026-09-26 10:58:02 +05:30
pranshulgg 9a69c4cce6 Fix alert API key lookup using the wrong source 2026-09-26 10:53:16 +05:30
Pranshul 136f4f37a0 Merge pull request #1156 from PranshulGG/l10n_main
New Crowdin updates
2026-09-26 10:52:17 +05:30
Pranshul 10509d8427 Merge pull request #1178 from reveler-hub/fix/airquality-key-lookup
Fix air-quality API key lookup using the wrong source
2026-09-26 10:51:50 +05:30
pranshulgg 910787b056 fix attribution 2026-09-26 10:03:30 +05:30
Pranshul 7cc4e643a4 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-26 04:26:59 +05:30
Pranshul cf0ca64199 New translations strings.xml (French)
[ci skip]
2026-09-26 04:26:58 +05:30
Pranshul fac5fe2c59 New translations strings.xml (Catalan)
[ci skip]
2026-09-26 04:26:56 +05:30
Pranshul e7e94d0390 New translations strings.xml (Norwegian Bokmal)
[ci skip]
2026-09-25 22:08:23 +05:30
Pranshul 78ae8da2a8 New translations strings.xml (Azerbaijani)
[ci skip]
2026-09-25 22:08:21 +05:30
Pranshul 469acf95c3 New translations strings.xml (Kazakh)
[ci skip]
2026-09-25 22:08:19 +05:30
Pranshul 8b7564d0fb New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-25 22:08:17 +05:30
Pranshul 9627cefdd1 New translations strings.xml (Thai)
[ci skip]
2026-09-25 22:08:16 +05:30
Pranshul 5ac3c511cd New translations strings.xml (Persian)
[ci skip]
2026-09-25 22:08:14 +05:30
Pranshul 9a51fec33b New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-09-25 22:08:13 +05:30
Pranshul fcc52ecb5e New translations strings.xml (Filipino)
[ci skip]
2026-09-25 22:08:11 +05:30
Pranshul e7097f081b New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-25 22:08:10 +05:30
Pranshul 94951173d0 New translations strings.xml (Indonesian)
[ci skip]
2026-09-25 22:08:08 +05:30
Pranshul ae06a0a827 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-25 22:08:07 +05:30
Pranshul b9a0cb7d54 New translations strings.xml (Vietnamese)
[ci skip]
2026-09-25 22:08:04 +05:30
Pranshul c20f581c41 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-09-25 22:08:03 +05:30
Pranshul 48314baa0a New translations strings.xml (Ukrainian)
[ci skip]
2026-09-25 22:08:01 +05:30
Pranshul 06ffe45167 New translations strings.xml (Turkish)
[ci skip]
2026-09-25 22:07:59 +05:30
Pranshul 9d74fbbeef New translations strings.xml (Swedish)
[ci skip]
2026-09-25 22:07:57 +05:30
Pranshul 7819fa5323 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-09-25 22:07:55 +05:30
Pranshul ad3531ad33 New translations strings.xml (Slovenian)
[ci skip]
2026-09-25 22:07:54 +05:30
Pranshul 0736a4e9e8 New translations strings.xml (Russian)
[ci skip]
2026-09-25 22:07:52 +05:30
Pranshul 5953f8ffd5 New translations strings.xml (Portuguese)
[ci skip]
2026-09-25 22:07:50 +05:30
Pranshul 0d14513648 New translations strings.xml (Polish)
[ci skip]
2026-09-25 22:07:49 +05:30
Pranshul 83fb2f2911 New translations strings.xml (Dutch)
[ci skip]
2026-09-25 22:07:47 +05:30
Pranshul a09ec9e735 New translations strings.xml (Lithuanian)
[ci skip]
2026-09-25 22:07:45 +05:30
Pranshul bbfafbfdb9 New translations strings.xml (Korean)
[ci skip]
2026-09-25 22:07:44 +05:30
Pranshul 25c5426b4e New translations strings.xml (Japanese)
[ci skip]
2026-09-25 22:07:42 +05:30
Pranshul cebac4681d New translations strings.xml (Italian)
[ci skip]
2026-09-25 22:07:40 +05:30
Pranshul 9304fd4eea New translations strings.xml (Hungarian)
[ci skip]
2026-09-25 22:07:39 +05:30
Pranshul 4299d0e9b4 New translations strings.xml (Hebrew)
[ci skip]
2026-09-25 22:07:37 +05:30
Pranshul a12eb90d14 New translations strings.xml (Finnish)
[ci skip]
2026-09-25 22:07:36 +05:30
Pranshul b3a4dc4bc2 New translations strings.xml (German)
[ci skip]
2026-09-25 22:07:34 +05:30
Pranshul 8cd290105f New translations strings.xml (Czech)
[ci skip]
2026-09-25 22:07:32 +05:30
Pranshul 56251ad992 New translations strings.xml (Bulgarian)
[ci skip]
2026-09-25 22:07:30 +05:30
Pranshul abcb1b460f New translations strings.xml (Spanish)
[ci skip]
2026-09-25 22:07:27 +05:30
Pranshul acd8cfd24f New translations strings.xml (French)
[ci skip]
2026-09-25 22:07:26 +05:30
Pranshul 145809a62c New translations strings.xml (Romanian)
[ci skip]
2026-09-25 22:07:24 +05:30
Pranshul 4e05961df8 New translations strings.xml (Catalan)
[ci skip]
2026-09-25 22:07:23 +05:30
Pranshul ee41bb0380 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-09-25 22:07:21 +05:30
Pranshul bc3e17d8b6 New translations strings.xml (Greek)
[ci skip]
2026-09-25 22:07:19 +05:30
reveler-hub 17ef87f3dd Look up the air-quality source's own API key, not the weather source's
locationRequiresApiKey and the key lookup both used location.source (the
weather source) instead of location.airQualitySource. Every air-quality
source today happens to share a source with its weather counterpart, so
this never surfaced, but it breaks - and currently crashes via !! in
OpenWeatherRepository - whenever they differ and the air-quality source
needs a key the weather source doesn't.
2026-09-26 04:19:06 +12:00
pranshulgg 02ebad26ed add kmi closes #997 closes #381 closes #1122 2026-09-25 21:18:41 +05:30
pranshulgg 40c48a3330 update read me 2026-09-25 20:57:02 +05:30
pranshulgg a550ccee77 add kmi api, repo, and json # 2026-09-24 21:25:50 +05:30
Pranshul c52d61126d New translations strings.xml (Indonesian)
[ci skip]
2026-09-24 12:22:30 +05:30
Pranshul e782c84659 New translations strings.xml (Catalan)
[ci skip]
2026-09-24 06:23:14 +05:30
Pranshul f309a6a1f7 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-24 00:24:06 +05:30
Pranshul d191b84956 New translations strings.xml (Russian)
[ci skip]
2026-09-24 00:24:05 +05:30
Pranshul e011dd92ea New translations strings.xml (Korean)
[ci skip]
2026-09-24 00:24:03 +05:30
pranshulgg 7ddeb9c271 add kmi api #997 2026-09-23 20:10:54 +05:30
Pranshul 7d5396626d New translations strings.xml (Chinese Simplified)
[ci skip]
2026-09-23 18:28:29 +05:30
Pranshul 6a874ff3d2 New translations strings.xml (Finnish)
[ci skip]
2026-09-23 18:28:27 +05:30
Pranshul 0e2deed274 New translations strings.xml (French)
[ci skip]
2026-09-23 18:28:26 +05:30
Pranshul f75e1b484e New translations strings.xml (Catalan)
[ci skip]
2026-09-23 18:28:24 +05:30
Pranshul ca13f75055 New translations strings.xml (Norwegian Bokmal)
[ci skip]
2026-09-23 12:34:36 +05:30
Pranshul 0cdeb42136 New translations strings.xml (Azerbaijani)
[ci skip]
2026-09-23 12:34:35 +05:30
Pranshul 7ecce86eba New translations strings.xml (Kazakh)
[ci skip]
2026-09-23 12:34:33 +05:30
Pranshul 9a02b5d149 New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-23 12:34:31 +05:30
Pranshul 02f55cc56c New translations strings.xml (Thai)
[ci skip]
2026-09-23 12:34:29 +05:30
Pranshul 2c512574c0 New translations strings.xml (Persian)
[ci skip]
2026-09-23 12:34:28 +05:30
Pranshul 4bdcdf1107 New translations strings.xml (Indonesian)
[ci skip]
2026-09-23 12:34:26 +05:30
Pranshul 32191bda80 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-23 12:34:24 +05:30
Pranshul 1b0021275d New translations strings.xml (Vietnamese)
[ci skip]
2026-09-23 12:34:23 +05:30
Pranshul 7a2c83517a New translations strings.xml (Chinese Simplified)
[ci skip]
2026-09-23 12:34:21 +05:30
Pranshul 8bff40ccb4 New translations strings.xml (Ukrainian)
[ci skip]
2026-09-23 12:34:19 +05:30
Pranshul cbdc5a902a New translations strings.xml (Turkish)
[ci skip]
2026-09-23 12:34:17 +05:30
Pranshul bd6fbf9bef New translations strings.xml (Swedish)
[ci skip]
2026-09-23 12:34:15 +05:30
Pranshul c31c60cbdc New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-09-23 12:34:13 +05:30
Pranshul 547c05114e New translations strings.xml (Slovenian)
[ci skip]
2026-09-23 12:34:11 +05:30
Pranshul 58e1b54ac2 New translations strings.xml (Russian)
[ci skip]
2026-09-23 12:34:08 +05:30
Pranshul c5803f299a New translations strings.xml (Portuguese)
[ci skip]
2026-09-23 12:34:07 +05:30
Pranshul 998b7aae7f New translations strings.xml (Polish)
[ci skip]
2026-09-23 12:34:04 +05:30
Pranshul c7612b0a8f New translations strings.xml (Dutch)
[ci skip]
2026-09-23 12:33:54 +05:30
Pranshul 6c0a6434af New translations strings.xml (Lithuanian)
[ci skip]
2026-09-23 12:33:43 +05:30
Pranshul 32b3e81842 New translations strings.xml (Korean)
[ci skip]
2026-09-23 12:33:21 +05:30
Pranshul e9a2cadab3 New translations strings.xml (Japanese)
[ci skip]
2026-09-23 12:33:06 +05:30
Pranshul 3c55d45baa New translations strings.xml (Italian)
[ci skip]
2026-09-23 12:32:53 +05:30
Pranshul e0795688a7 New translations strings.xml (Hungarian)
[ci skip]
2026-09-23 12:32:39 +05:30
Pranshul 534dba0971 New translations strings.xml (Hebrew)
[ci skip]
2026-09-23 12:32:25 +05:30
Pranshul 22a01314b3 New translations strings.xml (Finnish)
[ci skip]
2026-09-23 12:32:12 +05:30
Pranshul 05db53929b New translations strings.xml (German)
[ci skip]
2026-09-23 12:31:59 +05:30
Pranshul 9e0a0c7d3e New translations strings.xml (Czech)
[ci skip]
2026-09-23 12:31:48 +05:30
Pranshul 042caed47b New translations strings.xml (Bulgarian)
[ci skip]
2026-09-23 12:31:36 +05:30
Pranshul 03672e9d52 New translations strings.xml (Spanish)
[ci skip]
2026-09-23 12:31:23 +05:30
Pranshul 60b521c725 New translations strings.xml (French)
[ci skip]
2026-09-23 12:31:13 +05:30
Pranshul eaa296464d New translations strings.xml (Romanian)
[ci skip]
2026-09-23 12:31:04 +05:30
Pranshul be27ae93c4 New translations strings.xml (Catalan)
[ci skip]
2026-09-23 12:30:54 +05:30
Pranshul 653a6c672a New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-09-23 12:30:45 +05:30
Pranshul 5cf9a52766 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-09-23 12:30:40 +05:30
Pranshul ab37bfa083 New translations strings.xml (Greek)
[ci skip]
2026-09-23 12:30:37 +05:30
Pranshul f18d874cc2 New translations strings.xml (Filipino)
[ci skip]
2026-09-23 12:30:35 +05:30
Pranshul b353a4c6cd New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-23 12:30:34 +05:30
pranshulgg 50c16ded25 add country name to MGM source 2026-09-23 12:03:20 +05:30
pranshulgg 07da76f76a add attribution 2026-09-23 12:00:34 +05:30
pranshulgg 06b498f841 add mgm with alerts closes #1079 2026-09-23 11:57:51 +05:30
Pranshul 3c61ddc037 New translations strings.xml (Catalan)
[ci skip]
2026-09-23 01:04:56 +05:30
pranshulgg 197b6177e4 implement mgm source #1081 2026-09-22 20:37:41 +05:30
Pranshul 488034eb9c New translations strings.xml (Catalan)
[ci skip]
2026-09-22 19:08:07 +05:30
pranshulgg aa6cd371bf add mgm alerts 2026-09-22 09:13:22 +05:30
Pranshul c5fb65408b New translations strings.xml (Filipino)
[ci skip]
2026-09-21 06:01:29 +05:30
Pranshul fd83a163f5 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-20 22:16:03 +05:30
pranshulgg 2606361bba add mgm 2026-09-20 19:43:24 +05:30
Pranshul c19e30f0db Merge pull request #1166 from fardog/fix-remove-weather1-max-size
fix: remove max width/height for "Weather 1" widget
2026-09-20 19:38:07 +05:30
Pranshul cff2be99e4 Merge pull request #1165 from reveler-hub/fix/metoffice-daily-precip-probability
fix: use the day precipitation probability for Met Office's daily max
2026-09-20 19:37:41 +05:30
Pranshul 783fe3c305 Merge pull request #1163 from fardog/fix-widget-null
fix: handle null temperature values in widget
2026-09-20 19:36:00 +05:30
Pranshul 8d1cb83dbb Merge pull request #1162 from fardog/fix-metoffice-temp
fix: correctly map met office temperature values
2026-09-20 19:35:41 +05:30
fardog fb90527fbf fix: remove max width/height for "Weather 1" widget
Allows setting the widget's max width/height as desired by the user.

Fixes #1164
2026-09-20 14:46:41 +01:00
Pranshul 62055559dc New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-09-20 16:00:39 +05:30
reveler-hub aa98be6c13 Use the day precipitation probability for Met Office's daily max
The daily max was computed over nightProbabilityOfPrecipitation twice, so
the day value from the API was never used. Adds dayProbabilityOfPrecipitation
to the daily JSON model and takes the max of day and night.
2026-09-20 18:05:18 +12:00
Pranshul 231c992b4f New translations strings.xml (Filipino)
[ci skip]
2026-09-20 09:31:39 +05:30
Pranshul e9977e2f71 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-09-19 22:10:43 +05:30
Pranshul 8c2c4314ed New translations strings.xml (Filipino)
[ci skip]
2026-09-19 22:10:41 +05:30
fardog 956163fe9f fix: handle null temperature values in widget 2026-09-19 17:17:48 +01:00
fardog d2c89da024 fix: correctly map met office temperature values 2026-09-19 16:46:30 +01:00
Pranshul b6ef35f80a New translations strings.xml (Filipino)
[ci skip]
2026-09-19 16:02:25 +05:30
Pranshul 7fe2201a63 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-19 16:02:23 +05:30
Pranshul 37ff2c6234 New translations strings.xml (Filipino)
[ci skip]
2026-09-19 09:50:54 +05:30
Pranshul 8e0aa56ad8 New translations strings.xml (Filipino)
[ci skip]
2026-09-19 03:55:05 +05:30
Pranshul 2fd30077fa Merge pull request #1158 from reveler-hub/fix/metoffice-api-key-link
Point Met Office's API key link to the right DataHub product
2026-09-18 21:54:38 +05:30
Pranshul 9716bcdbd9 New translations strings.xml (Greek)
[ci skip]
2026-09-18 21:51:59 +05:30
Pranshul f3e6143b7e New translations strings.xml (Filipino)
[ci skip]
2026-09-18 15:51:40 +05:30
reveler-hub 991f74a9f6 Split Met Office's signup link from its general displayLink
displayLink is also used for general 'about this source' info in
WeatherSourcesScreen and the current-source info sheet, so
overwriting it with the DataHub pricing page broke those. Adds a
separate signupLink field used only on the API Keys screen instead,
falling back to displayLink when unset.
2026-09-18 19:31:29 +12:00
Pranshul 644a83dd28 New translations strings.xml (Filipino)
[ci skip]
2026-09-18 08:49:39 +05:30
reveler-hub 2992fe5afb Add a note on the API key screen for which Met Office product to subscribe to 2026-09-18 10:51:46 +12:00
Pranshul 8d1f7434df New translations strings.xml (Filipino)
[ci skip]
2026-09-17 17:42:44 +05:30
reveler-hub f27563de27 Point Met Office's API key link to the right DataHub product
Closes #1155. The link shown above the API key field pointed to
Met Office's general public consumer site, not anywhere related to
getting an API key - a user trying to sign up from that link would
land on the wrong site entirely. Points to DataHub's Site Specific
product page instead, which is the actual product this app's
requests need (confirmed directly with the reporter - their key
started working once subscribed to "Site Specific").
2026-09-17 17:41:11 +12:00
Pranshul bf13576b05 New translations strings.xml (Filipino)
[ci skip]
2026-09-17 10:46:34 +05:30
reveler-hub c47325885b Add Meteofor (Ukraine) weather source
Meteofor is Gismeteo's Ukraine-facing rebrand (same company, same
backend - gismeteo.ua has redirected to meteofor.com since June 2023;
confirmed live that Gismeteo's own API uses the identical internal
city ID for Kyiv that Meteofor uses in its own URLs).

Reuses GismeteoRepository's existing fetch/parse logic as-is under
its own Source identity, so Ukraine gets an appropriately-branded
recommended source instead of "Gismeteo (Russia)". No new API
integration - just a new Source entry, country mapping, and a thin
repository that shares GismeteoApi and the existing XML parsing
helpers.

Closes #1114.

Live-tested on-device: added Kyiv, confirmed "Meteofor (Ukraine)"
shows under Recommended sources and auto-selects, verified real
fetched weather data (temperature/humidity/wind/condition) via
direct DB inspection. Note: during testing, the fetch only
succeeded with a VPN set to Ukraine - Gismeteo's backend appeared
to be rate-limiting/blocking requests from our regular testing IP.
2026-09-17 16:56:33 +12:00
Pranshul 387d022871 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-17 03:33:29 +05:30
pranshulgg f78a580bf8 bump version code 2026-09-16 20:14:45 +05:30
pranshulgg 9fb5ce964d bump version to 3.10.6 and add preference check for ongoing notification 2026-09-16 20:07:19 +05:30
pranshulgg d26882e137 update changelog 2026-09-16 14:45:36 +05:30
pranshulgg 8dd8ad1504 implement offline China geocoding and add widget reload button 2026-09-16 14:44:00 +05:30
pranshulgg af230b8970 add default location check for widgets and notifications 2026-09-16 12:50:57 +05:30
pranshulgg 8863b82317 add auto refresh capability for weather data 2026-09-16 12:25:44 +05:30
pranshulgg f3132a772e add platform-tools to android sdk setup 2026-09-16 10:06:53 +05:30
pranshulgg aab31a2809 update changelog 2026-09-16 10:02:27 +05:30
pranshulgg 75562186b9 add font and icon size customization to glance widget configuration 2026-09-16 09:42:00 +05:30
pranshulgg 191fe86e1e refactor notification weather mapper to use findMatchingHourly 2026-09-16 09:06:23 +05:30
pranshulgg 8c2296b602 fix widgets/notifications not updating 2026-09-16 08:58:40 +05:30
pranshulgg 3eb4c4c1f7 remove logs 2026-09-15 21:50:49 +05:30
Pranshul 92495ed55a Merge pull request #1152 from PranshulGG/l10n_main
New Crowdin updates
2026-09-15 21:38:30 +05:30
pranshulgg ae5129778e missing placeholder 2026-09-15 21:34:08 +05:30
pranshulgg 33a8dccd36 update notification setting title to next day forecast 2026-09-15 21:21:37 +05:30
pranshulgg 0475f86e46 update changelog 2026-09-15 21:05:15 +05:30
Pranshul 2c114f83e5 New translations strings.xml (Indonesian)
[ci skip]
2026-09-15 19:46:07 +05:30
pranshulgg 44286fd1ef remove unused background location permission 2026-09-15 15:28:10 +05:30
pranshulgg 79f7b42a3a refactor clock and date click handling using PendingIntents in views 2026-09-15 14:50:43 +05:30
pranshulgg 6ff7528b5e bump version 2026-09-15 13:38:37 +05:30
pranshulgg a09e044ab9 update changelog 2026-09-15 13:38:28 +05:30
pranshulgg 4990819f49 add content intent to ongoing and scheduled notifications 2026-09-15 13:25:12 +05:30
pranshulgg 0634439209 refactor weather blocks saving logic 2026-09-15 13:25:01 +05:30
Pranshul a1ecf07ed1 Merge pull request #1145 from PranshulGG/l10n_main
New Crowdin updates
2026-09-14 22:01:04 +05:30
pranshulgg 38579071f4 schema 2026-09-14 21:59:20 +05:30
pranshulgg cb095feeec use real-time instead of outdated saved timestamp closes #1088 2026-09-14 21:59:20 +05:30
Pranshul 32ac4f4ca2 Merge pull request #1134 from reveler-hub/fix/alerts-only-source-recommendation-bugs
Fix alerts-only country-recommended sources leaking into weather picker
2026-09-14 21:49:42 +05:30
Pranshul 177ade280f New translations strings.xml (Italian)
[ci skip]
2026-09-14 16:08:40 +05:30
Pranshul 30d8fb8bfb New translations strings.xml (Indonesian)
[ci skip]
2026-09-13 22:42:33 +05:30
Pranshul a615652a74 New translations strings.xml (Greek)
[ci skip]
2026-09-12 21:24:08 +05:30
Pranshul 29054b7ebd Merge pull request #1131 from FlammeGamer/gadgetbridge
add support for third-party gadgetbridge receivers
2026-09-12 10:18:12 +05:30
pranshulgg 5d73b6758c fixed unwanted errors 2026-09-11 21:17:14 +05:30
Pranshul 2cd5146b3b Merge pull request #1138 from reveler-hub/fix/pressure-hourly-rounding
Fix unrounded pressure values on hourly detail card
2026-09-11 20:59:50 +05:30
Pranshul 936565c5a6 Merge pull request #1103 from PranshulGG/l10n_main
New Crowdin updates
2026-09-11 20:59:34 +05:30
pranshulgg f7a2b00286 finalize refactor 2026-09-11 20:59:09 +05:30
Pranshul e63a7fef42 New translations strings.xml (Korean)
[ci skip]
2026-09-10 21:00:33 +05:30
Pranshul ca05f102ae New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-09-10 14:57:01 +05:30
Pranshul 9a652e32ab New translations strings.xml (Czech)
[ci skip]
2026-09-09 00:44:14 +05:30
pranshulgg 075aae0e8c refactor open weather 2026-09-08 19:44:16 +05:30
pranshulgg eea42ff074 add airquality layer 2026-09-08 19:26:53 +05:30
pranshulgg d8731ae768 finalize repositories 2026-09-08 15:04:32 +05:30
Pranshul 5c67123290 New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-08 06:03:27 +05:30
Pranshul f0dc836631 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-08 00:03:01 +05:30
Pranshul e8db1e45c1 New translations strings.xml (Lithuanian)
[ci skip]
2026-09-08 00:02:59 +05:30
Pranshul 2721359394 New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-07 18:05:13 +05:30
reveler-hub 3836e22c5a Fix pressure hourly card showing unrounded decimal values
Closes #1137. The hourly pressure detail card converted hPa to the
selected unit and called .toString() directly on the raw Double,
so non-hPa units (e.g. inHg, which multiplies by ~0.02953) rendered
long floating-point tails instead of a rounded value. Use
formatLocalizedNumber with 1 decimal place, matching the main
pressure block's existing formatting.
2026-09-07 16:55:33 +12:00
Pranshul db378e8efb New translations strings.xml (Greek)
[ci skip]
2026-09-06 19:29:57 +05:30
pranshulgg 81702b7a17 add additional data 2026-09-06 11:45:02 +05:30
Pranshul a8e844dec3 New translations strings.xml (Polish)
[ci skip]
2026-09-06 08:22:22 +05:30
Pranshul cfd606baa5 New translations strings.xml (Turkish)
[ci skip]
2026-09-06 02:21:48 +05:30
Pranshul cf8e9a52df New translations strings.xml (Russian)
[ci skip]
2026-09-05 20:09:56 +05:30
pranshulgg d2e65ef50a add capability layer and remove old implementation 2026-09-05 17:25:04 +05:30
Pranshul 99f332d661 New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-05 05:41:33 +05:30
Pranshul 9330d02457 New translations strings.xml (Norwegian Bokmal)
[ci skip]
2026-09-04 23:25:33 +05:30
Pranshul fd42c54005 New translations strings.xml (Norwegian Nynorsk)
[ci skip]
2026-09-04 23:25:32 +05:30
Pranshul 7c39e9d402 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-09-04 23:25:31 +05:30
Pranshul e274bf8ee5 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-09-04 23:25:29 +05:30
Pranshul e3377907f4 New translations strings.xml (Filipino)
[ci skip]
2026-09-04 23:25:28 +05:30
Pranshul a834a13420 New translations strings.xml (Azerbaijani)
[ci skip]
2026-09-04 23:25:27 +05:30
Pranshul 8434131c45 New translations strings.xml (Kazakh)
[ci skip]
2026-09-04 23:25:25 +05:30
Pranshul 42efce2adc New translations strings.xml (Thai)
[ci skip]
2026-09-04 23:25:24 +05:30
Pranshul 2dac97769b New translations strings.xml (Persian)
[ci skip]
2026-09-04 23:25:23 +05:30
Pranshul 26b6a45b6a New translations strings.xml (Indonesian)
[ci skip]
2026-09-04 23:25:21 +05:30
Pranshul f16b713e81 New translations strings.xml (Vietnamese)
[ci skip]
2026-09-04 23:25:20 +05:30
Pranshul 4ae3a46cee New translations strings.xml (Chinese Traditional)
[ci skip]
2026-09-04 23:25:19 +05:30
Pranshul 10e7dde828 New translations strings.xml (Swedish)
[ci skip]
2026-09-04 23:25:17 +05:30
Pranshul 70deefc2dd New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-09-04 23:25:16 +05:30
Pranshul e4fea1dcca New translations strings.xml (Slovenian)
[ci skip]
2026-09-04 23:25:15 +05:30
Pranshul 4fe834091c New translations strings.xml (Korean)
[ci skip]
2026-09-04 23:25:13 +05:30
Pranshul b127b237e5 New translations strings.xml (Hungarian)
[ci skip]
2026-09-04 23:25:12 +05:30
Pranshul 5a62a9c598 New translations strings.xml (Greek)
[ci skip]
2026-09-04 23:25:11 +05:30
Pranshul 6820379008 New translations strings.xml (German)
[ci skip]
2026-09-04 23:25:09 +05:30
Pranshul c06e36e206 New translations strings.xml (Catalan)
[ci skip]
2026-09-04 23:25:08 +05:30
Pranshul 5611229508 New translations strings.xml (Bulgarian)
[ci skip]
2026-09-04 23:25:06 +05:30
Pranshul 25a32308b1 New translations strings.xml (Romanian)
[ci skip]
2026-09-04 23:25:05 +05:30
Pranshul c086382c5e New translations strings.xml (Polish)
[ci skip]
2026-09-04 23:25:04 +05:30
Pranshul fa901ff60a New translations strings.xml (Italian)
[ci skip]
2026-09-04 23:25:02 +05:30
Pranshul 097af8d0bb New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-09-04 23:25:01 +05:30
Pranshul d3eeaa5e21 New translations strings.xml (Lithuanian)
[ci skip]
2026-09-04 23:25:00 +05:30
Pranshul 07ee9a04d5 New translations strings.xml (French)
[ci skip]
2026-09-04 23:24:58 +05:30
Pranshul ae21b74622 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-09-04 23:24:57 +05:30
Pranshul c057edc390 New translations strings.xml (Ukrainian)
[ci skip]
2026-09-04 23:24:56 +05:30
Pranshul 790937dc43 New translations strings.xml (Turkish)
[ci skip]
2026-09-04 23:24:54 +05:30
Pranshul 7dff6feef6 New translations strings.xml (Russian)
[ci skip]
2026-09-04 23:24:53 +05:30
Pranshul e19290a517 New translations strings.xml (Portuguese)
[ci skip]
2026-09-04 23:24:52 +05:30
Pranshul 976d243e82 New translations strings.xml (Dutch)
[ci skip]
2026-09-04 23:24:50 +05:30
Pranshul 37b955cc38 New translations strings.xml (Japanese)
[ci skip]
2026-09-04 23:24:49 +05:30
Pranshul d516ba79d8 New translations strings.xml (Hebrew)
[ci skip]
2026-09-04 23:24:48 +05:30
Pranshul 835fa61eaa New translations strings.xml (Finnish)
[ci skip]
2026-09-04 23:24:47 +05:30
Pranshul 512530491f New translations strings.xml (Czech)
[ci skip]
2026-09-04 23:24:45 +05:30
Pranshul 8a0b5fd04d New translations strings.xml (Spanish)
[ci skip]
2026-09-04 23:24:44 +05:30
pranshulgg b37e772882 fix source changes 2026-09-04 21:10:18 +05:30
pranshulgg deff68c6c3 change result type 2026-09-04 20:46:14 +05:30
pranshulgg 8f303a8c55 add alert side refactor 2026-09-04 20:38:18 +05:30
pranshulgg 3186c11d6b refactor weather architecture and state management using managers and stores 2026-09-04 20:34:58 +05:30
pranshulgg 894f32cd14 refactor changes Ui side 2026-09-04 20:33:27 +05:30
pranshulgg df4e116564 refactor changes Ui side 2026-09-04 20:33:17 +05:30
pranshulgg e11459b9c9 remove repo 2026-09-04 20:31:41 +05:30
pranshulgg bba8768952 refactor sources to follow new layer 2026-09-04 20:00:24 +05:30
Pranshul d88c3e0cc2 New translations strings.xml (Korean)
[ci skip]
2026-09-04 17:28:18 +05:30
pranshulgg 8ca8ef7b96 add base repo layer 2026-09-04 16:38:51 +05:30
reveler-hub ee3db85233 Fix alerts-only country-recommended sources leaking into weather picker
WeatherSourcesForLocationSheet's recommendedSources list wasn't
filtered by Capability.WEATHER (unlike its globalSources list),
so an alerts-only source recommended for a country could appear,
and even get auto-selected, as a weather source. Every country's
recommended source has so far also been a weather source, so this
never surfaced until an alerts-only country-recommended source
existed.

Also make new-location alert-source selection fall back to the
country's recommended alerts source when the chosen weather source
isn't itself alerts-capable, instead of only pairing alerts when
the weather source happens to be self-paired.
2026-09-04 17:57:47 +12:00
Pranshul 4a39f5c02c New translations strings.xml (Japanese)
[ci skip]
2026-09-04 11:11:17 +05:30
Pranshul ef8cdb03d2 New translations strings.xml (Czech)
[ci skip]
2026-09-04 05:12:57 +05:30
Flamme Gamer 723eb741b4 add support for third-party gadgetbridge receivers 2026-09-03 21:18:32 +02:00
pranshulgg 466566433f add manager and pending request layer 2026-09-03 22:31:26 +05:30
pranshulgg d3e6a0273f refactor viewmodel 2026-09-03 22:30:32 +05:30
pranshulgg af14e4e440 add stores and managers 2026-09-02 21:33:27 +05:30
Pranshul feed0d847d New translations strings.xml (Finnish)
[ci skip]
2026-09-01 22:16:45 -07:00
Pranshul b2e61968e1 New translations strings.xml (Polish)
[ci skip]
2026-09-01 13:04:42 -07:00
pranshulgg b357572473 add workin managers/stores 2026-09-01 21:55:12 +05:30
Pranshul 145bea15ec New translations strings.xml (Catalan)
[ci skip]
2026-09-01 06:50:28 -07:00
Pranshul be301782cc New translations strings.xml (Polish)
[ci skip]
2026-09-01 06:50:27 -07:00
Pranshul bb9d723a24 New translations strings.xml (Catalan)
[ci skip]
2026-09-01 13:07:03 +05:30
Pranshul af2f127d78 New translations strings.xml (Russian)
[ci skip]
2026-09-01 01:58:21 +05:30
pranshulgg effa4f4a48 fix readme 2026-08-31 11:37:48 +05:30
pranshulgg 0d6bc73fdb improve readme links 2026-08-31 11:36:10 +05:30
pranshulgg ed437164af add play store link 2026-08-31 09:15:52 +05:30
pranshulgg aff6849557 remove comment 2026-08-31 09:03:07 +05:30
Pranshul 5dbbd73152 New translations strings.xml (Spanish)
[ci skip]
2026-08-30 17:22:33 +05:30
Pranshul 9aa6884356 New translations strings.xml (Greek)
[ci skip]
2026-08-29 19:44:14 +05:30
Pranshul b9a123626a New translations strings.xml (Ukrainian)
[ci skip]
2026-08-29 19:44:12 +05:30
Pranshul 2e35367ae9 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-29 13:38:31 +05:30
PranshulGG 14cf35624c color adjustments 2026-08-29 12:37:48 +05:30
PranshulGG b22f3f3b3b add option to disable tablet layout closes #1111 2026-08-29 12:32:52 +05:30
PranshulGG 90ea14b88d add option to disable tablet layout closes #1111 2026-08-29 12:32:39 +05:30
PranshulGG df54f032c5 adjust column weights in TabletLayout and add fixed grid support to WeatherBlocks 2026-08-29 12:25:41 +05:30
Pranshul e325d2bd8e Merge pull request #1110 from reveler-hub/fix/weather-sources-none-entry
Exclude NONE placeholder from Weather Sources attribution list
2026-08-29 11:17:50 +05:30
Pranshul 350358c11f Merge branch 'main' into fix/weather-sources-none-entry
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-08-29 11:17:14 +05:30
PranshulGG da083bd25d remove pr workflow 2026-08-29 11:14:37 +05:30
PranshulGG c6337a7d05 Fix "None" showing as source in the weather sources screen closes #1109 2026-08-29 11:13:06 +05:30
reveler-hub d782552a7c Exclude NONE placeholder from Weather Sources attribution list 2026-08-29 17:39:04 +12:00
PranshulGG c576b53666 add apk 2026-08-29 10:19:33 +05:30
PranshulGG 6bcd03b14e AnimatedContent scrollable 2026-08-29 10:12:48 +05:30
PranshulGG 8e6bb9d2c3 remove key from scrollState 2026-08-29 10:05:23 +05:30
PranshulGG cc5ee455ee add apk 2026-08-29 09:07:01 +05:30
PranshulGG c30149b84e Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-29 08:58:21 +05:30
PranshulGG 8f030ef45d fix scroll state 2026-08-29 08:56:59 +05:30
Pranshul 868d022f62 New translations strings.xml (Czech)
[ci skip]
2026-08-29 07:39:25 +05:30
Pranshul 9208364396 New translations strings.xml (German)
[ci skip]
2026-08-29 01:31:39 +05:30
Pranshul 421077a893 Merge pull request #1107 from RakshithBhat03/feature/air-quality-legend-1106
fix(air-quality): use rounded chips in the legend
2026-08-28 19:32:42 +05:30
Pranshul 26055e2ed0 New translations strings.xml (German)
[ci skip]
2026-08-28 19:08:38 +05:30
Pranshul 8f8c38c31c New translations strings.xml (French)
[ci skip]
2026-08-28 19:08:36 +05:30
Rakshith BhatandOpenAI GPT-5.6 Sol c103a20d67 match air quality legend to chip style
Co-authored-by: OpenAI GPT-5.6 Sol <noreply@openai.com>
2026-08-28 18:54:08 +05:30
PranshulGG 440fe23cb1 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-28 18:28:17 +05:30
PranshulGG 54cd8731a4 use map 2026-08-28 18:27:59 +05:30
PranshulGG 60a2451c04 fix moon timings closes #1105 2026-08-28 18:26:58 +05:30
PranshulGG b77dd5cfef fix moon timings closes #1105 2026-08-28 18:26:54 +05:30
Pranshul 6a0d12ca99 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-28 12:51:48 +05:30
Pranshul 50069d5bbf New translations strings.xml (Lithuanian)
[ci skip]
2026-08-28 12:51:46 +05:30
Pranshul cffa79e1a9 New translations strings.xml (Finnish)
[ci skip]
2026-08-28 12:51:45 +05:30
PranshulGG 4f25c0984e fix location services crash closes #1100 2026-08-28 11:48:26 +05:30
Pranshul f13804eee4 Merge pull request #1093 from PranshulGG/l10n_main
New Crowdin updates
2026-08-28 10:00:11 +05:30
Pranshul a8454b5f0f Merge pull request #1094 from VadosG/patch-1
Add missing comma in "EEE d MMMM"
2026-08-28 09:59:48 +05:30
Pranshul 501ab35af7 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-28 06:40:06 +05:30
VadosG aba3ee8eca Add missing comma in "EEE d MMMM"
Signed-off-by: VadosG <132702182+VadosG@users.noreply.github.com>
2026-08-27 21:59:13 +03:00
Pranshul d76abb1f06 New translations strings.xml (Dutch)
[ci skip]
2026-08-28 00:03:31 +05:30
Pranshul 241ab03dd2 New translations strings.xml (Japanese)
[ci skip]
2026-08-28 00:03:29 +05:30
Pranshul 41a2a9abe3 New translations strings.xml (Finnish)
[ci skip]
2026-08-28 00:03:28 +05:30
PranshulGG f1e8707aa1 bump version 2026-08-27 21:49:59 +05:30
PranshulGG 9327b90e9f fix icons 2026-08-27 21:49:35 +05:30
PranshulGG e2c43cd774 bump version 2026-08-27 21:36:18 +05:30
PranshulGG 21d7466d24 fix 24hr format closes #1092 2026-08-27 21:35:52 +05:30
PranshulGG 40a41432ea bump version 2026-08-27 21:23:05 +05:30
PranshulGG bc23098401 fix text overflows 2026-08-27 21:22:40 +05:30
PranshulGG 26b90e2721 bump version 2026-08-27 20:40:09 +05:30
PranshulGG dbf162d92f fix scheduled notification crashes 2026-08-27 20:39:40 +05:30
PranshulGG d99a79d925 add IMET and OpenWeather to weather providers list in README and metadata 2026-08-27 17:51:07 +05:30
PranshulGG 610b2f29e6 bump version 2026-08-27 17:42:12 +05:30
PranshulGG e0fa0374d3 remove logs 2026-08-27 17:28:27 +05:30
PranshulGG 0f63154f84 add froggy widget 2026-08-27 17:16:48 +05:30
PranshulGG 7a799cb24a configurable pill widget closes #1053 2026-08-27 14:19:36 +05:30
PranshulGG 178300a547 null crash 2026-08-27 13:00:50 +05:30
PranshulGG 9baec3bb63 cache handling 2026-08-27 11:36:45 +05:30
Pranshul d417f6b4f1 Merge pull request #1078 from PranshulGG/l10n_main
New Crowdin updates
2026-08-27 09:29:03 +05:30
Pranshul ff60bb41f1 New translations strings.xml (Italian)
[ci skip]
2026-08-27 02:05:00 +05:30
Pranshul f41bd691e9 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-27 02:04:58 +05:30
Pranshul 78450b78a2 Merge pull request #1085 from reveler-hub/fix/moon-rise-set-pairing-1083
fix inverted branches in moonrise/moonset pairing fix
2026-08-26 22:12:01 +05:30
PranshulGG 3bff4f99b8 add widget preview 2026-08-26 22:00:58 +05:30
PranshulGG 2ba49de23f add widget preview 2026-08-26 22:00:53 +05:30
PranshulGG ce14573fa0 add new widget closes #945 2026-08-26 21:56:31 +05:30
PranshulGG 535ad8feb6 fix naming 2026-08-26 21:56:02 +05:30
PranshulGG 0f6b0950ea add missing widget previews 2026-08-26 21:55:52 +05:30
reveler-hubandClaude 0fe4afe5c5 Add attribution comment, per CONTRIBUTING.md
Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-27 02:34:10 +12:00
reveler-hubandClaude a3f8ab735f fix moonrise/moonset pairing: branches in the #1077 fix were swapped
The rise>set check correctly detects a stale same-day set left over from
the previous cycle, but the two branches were inverted: the stale value
was kept as-is, and the already-correct case was overwritten with a
next-day set instead. Closes #1083.

Co-Authored-By: Claude <noreply@anthropic.com>
2026-08-27 02:31:53 +12:00
Pranshul aee884b7cd New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-26 19:29:48 +05:30
Pranshul ee5df57a43 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-26 19:29:46 +05:30
Pranshul b0289561ab New translations strings.xml (Filipino)
[ci skip]
2026-08-26 19:29:45 +05:30
Pranshul 041fdfd605 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-26 19:29:43 +05:30
Pranshul 4419fef116 New translations strings.xml (Kazakh)
[ci skip]
2026-08-26 19:29:41 +05:30
Pranshul 788354ecea New translations strings.xml (Thai)
[ci skip]
2026-08-26 19:29:39 +05:30
Pranshul 3b55de9785 New translations strings.xml (Persian)
[ci skip]
2026-08-26 19:29:38 +05:30
Pranshul 6b7285f0f4 New translations strings.xml (Indonesian)
[ci skip]
2026-08-26 19:29:36 +05:30
Pranshul d493b6f83d New translations strings.xml (Vietnamese)
[ci skip]
2026-08-26 19:29:35 +05:30
Pranshul 875ab0138a New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-26 19:29:33 +05:30
Pranshul 2bd0ae075d New translations strings.xml (Swedish)
[ci skip]
2026-08-26 19:29:32 +05:30
Pranshul 92db6f7f3c New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-26 19:29:30 +05:30
Pranshul 36406fd803 New translations strings.xml (Slovenian)
[ci skip]
2026-08-26 19:29:28 +05:30
Pranshul 22a69af5d5 New translations strings.xml (Korean)
[ci skip]
2026-08-26 19:29:27 +05:30
Pranshul 140f880973 New translations strings.xml (Hungarian)
[ci skip]
2026-08-26 19:29:25 +05:30
Pranshul df427f4dbc New translations strings.xml (Greek)
[ci skip]
2026-08-26 19:29:24 +05:30
Pranshul 6f0da01b1b New translations strings.xml (German)
[ci skip]
2026-08-26 19:29:22 +05:30
Pranshul 28849dce75 New translations strings.xml (Catalan)
[ci skip]
2026-08-26 19:29:21 +05:30
Pranshul 110fb5cb10 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-26 19:29:19 +05:30
Pranshul 1531eeb2f2 New translations strings.xml (Romanian)
[ci skip]
2026-08-26 19:29:18 +05:30
Pranshul 437fada842 New translations strings.xml (Polish)
[ci skip]
2026-08-26 19:29:16 +05:30
Pranshul 89516df777 New translations strings.xml (Italian)
[ci skip]
2026-08-26 19:29:14 +05:30
Pranshul e5e1dd653a New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-26 19:29:13 +05:30
Pranshul a6efd55267 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-26 19:29:11 +05:30
Pranshul a6d3d150c7 New translations strings.xml (French)
[ci skip]
2026-08-26 19:29:09 +05:30
Pranshul f628a22b45 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-26 19:29:07 +05:30
Pranshul d73020699a New translations strings.xml (Ukrainian)
[ci skip]
2026-08-26 19:29:06 +05:30
Pranshul eb9d91f955 New translations strings.xml (Turkish)
[ci skip]
2026-08-26 19:29:05 +05:30
Pranshul 2df11581d5 New translations strings.xml (Russian)
[ci skip]
2026-08-26 19:29:03 +05:30
Pranshul 08a0753376 New translations strings.xml (Portuguese)
[ci skip]
2026-08-26 19:29:02 +05:30
Pranshul d1590f435f New translations strings.xml (Dutch)
[ci skip]
2026-08-26 19:29:00 +05:30
Pranshul 1fa82c1623 New translations strings.xml (Japanese)
[ci skip]
2026-08-26 19:28:59 +05:30
Pranshul c653127a5f New translations strings.xml (Hebrew)
[ci skip]
2026-08-26 19:28:57 +05:30
Pranshul ee49326a65 New translations strings.xml (Finnish)
[ci skip]
2026-08-26 19:28:56 +05:30
Pranshul 78c46369cc New translations strings.xml (Czech)
[ci skip]
2026-08-26 19:28:55 +05:30
Pranshul c34b6a3fed New translations strings.xml (Spanish)
[ci skip]
2026-08-26 19:28:53 +05:30
PranshulGG 057b171dc5 fix uv index widgets not working 2026-08-26 18:19:39 +05:30
PranshulGG 0a26f51cc1 add BottomNavSpacing and update widget background colors for mixed precipitation, sleet, and hail 2026-08-26 17:57:50 +05:30
PranshulGG 505b23bac4 option to hide the weather 2026-08-26 17:52:03 +05:30
PranshulGG 2693fef706 add more formates closes #1042 2026-08-26 17:46:44 +05:30
PranshulGG 95bd4d51be add more formates closes #1042 2026-08-26 17:41:53 +05:30
PranshulGG f16820d63a Remove unwanted comments 2026-08-26 17:04:50 +05:30
PranshulGG d44f2f6650 Remove unwanted comments 2026-08-26 17:04:37 +05:30
PranshulGG 131c0d422d Remove unwanted comments 2026-08-26 17:03:26 +05:30
Pranshul ee30d3c32c Merge pull request #1082 from PranshulGG/revert-1080-main
Revert "Refactor: moved business logic to Use Cases and added unit test suite"
2026-08-26 16:54:49 +05:30
Pranshul 6d953c1be5 Revert "Refactor: moved business logic to Use Cases and added unit test suite" 2026-08-26 16:54:26 +05:30
Pranshul 6c892dfc7c Merge pull request #1080 from gietabhi10/main
Refactor: moved business logic to Use Cases and added unit test suite
2026-08-26 16:45:37 +05:30
PranshulGG a78fdf7794 add drawables 2026-08-26 16:44:25 +05:30
PranshulGG cf4f20d4e1 move notification channels 2026-08-26 16:44:11 +05:30
PranshulGG eba12e7764 add time picker 2026-08-26 16:43:55 +05:30
PranshulGG 08a376b368 switch tile empty description 2026-08-26 16:43:46 +05:30
PranshulGG 1a5aa6e8bb add notifications closes #1021 2026-08-26 16:43:30 +05:30
Pranshul 94992e2964 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-25 19:44:11 +05:30
Pranshul 55dfa49092 New translations strings.xml (French)
[ci skip]
2026-08-25 19:44:09 +05:30
Pranshul d00bdc6fd2 New translations strings.xml (Japanese)
[ci skip]
2026-08-25 19:44:07 +05:30
ABHISHEK KR. SHARMA 3a0303c7a8 Resolve merge conflict in WeatherViewModel: use WeatherBackgroundUpdateScheduler 2026-08-25 19:33:42 +05:30
ABHISHEK KR. SHARMA cd59a1acbb Final cleanup: removed implementation notes and meta-comments 2026-08-25 19:25:45 +05:30
ABHISHEK KR. SHARMA 908b9ad1f1 Add required attribution to domain layer files and verify behavior 2026-08-25 19:25:44 +05:30
ABHISHEK KR. SHARMA b904ccfda3 Final refactor refinements: fix auto-refresh lifecycle, clarify threading, and add cancellation tests 2026-08-25 19:25:44 +05:30
ABHISHEK KR. SHARMA 1fc1fdbfb3 Address final code review: fix auto-refresh bug, add cancellation tests, and refine threading 2026-08-25 19:25:44 +05:30
ABHISHEK KR. SHARMA af41a68451 Refine tests with MockK slots, add architectural docs, and clean up ViewModel 2026-08-25 19:25:44 +05:30
ABHISHEK KR. SHARMA e3fe505f5b Address critical review items and enhance test coverage 2026-08-25 19:25:43 +05:30
ABHISHEK KR. SHARMA 9f9539ce6f Address code review feedback and fix build configuration 2026-08-25 19:25:37 +05:30
ABHISHEK KR. SHARMA 8d33745d06 Refactor: moved business logic to Use Cases and added unit test suite
# Conflicts:
#	app/src/main/java/com/pranshulgg/weather_master_app/feature/shared/WeatherViewModel.kt
2026-08-25 19:25:26 +05:30
Pranshul 99a9918676 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-25 13:41:56 +05:30
PranshulGG e5f01faf6a increase max height 2026-08-25 09:37:28 +05:30
PranshulGG f21c18c058 Scheduled Notifications #1021 2026-08-25 09:37:13 +05:30
PranshulGG 7ab944e769 Simplify pr-build.yml by removing manual pr_number input and ref checkout logic 2026-08-25 09:09:27 +05:30
PranshulGG 90a80b1e61 remove API secrets from pr-build workflow and update checkout ref logic 2026-08-25 09:04:29 +05:30
PranshulGG 43aeb6d59e add workflow_dispatch to pr-build.yml with pr_number input support 2026-08-25 08:59:08 +05:30
PranshulGG ccf0135932 add GitHub Actions workflow for PR builds 2026-08-25 08:51:19 +05:30
Pranshul c859e43f3e New translations strings.xml (Korean)
[ci skip]
2026-08-25 07:40:01 +05:30
Pranshul a450ec0895 New translations strings.xml (French)
[ci skip]
2026-08-25 07:39:59 +05:30
Pranshul 1bee5cf6c6 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-24 17:06:21 +05:30
Pranshul 6c364f6d10 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-23 23:24:36 +05:30
Pranshul 4c0139c0aa New translations strings.xml (Turkish)
[ci skip]
2026-08-23 23:24:35 +05:30
PranshulGG f3efc3f73a improve null handling of sun/moon block 2026-08-23 20:33:24 +05:30
PranshulGG 1bebbac4ae update db and CONTRIBUTING.md 2026-08-23 20:30:34 +05:30
PranshulGG 1d39ddd941 nullable sun/moon and add attributions 2026-08-23 20:20:12 +05:30
PranshulGG 7303979d93 fix overflow on large font size 2026-08-23 20:00:23 +05:30
PranshulGG 0dda08ec21 fix moon timing closes #1077 closes #1072 2026-08-23 17:16:56 +05:30
Pranshul 84b56ac53f New translations strings.xml (Italian)
[ci skip]
2026-08-23 17:16:11 +05:30
PranshulGG 46d099927e update SunBlock to use timezone-aware time and fix sun progress calculation 2026-08-23 15:05:37 +05:30
Pranshul 442fc8fd4e Merge pull request #1073 from reveler-hub/feature/auto-select-paired-alert-source
Auto-select a self-paired alert source to match the weather source
2026-08-23 13:33:10 +05:30
reveler-hub af80866766 Remove alert-source auto-pairing from Edit Location, per review
Weather source and alert source are meant to be independent choices in
Edit Location - the alert picker already only lists sources with
Capability.ALERTS, so it's up to the user to decide, e.g. AccuWeather
for weather + JMA for alerts. Auto-changing alertSource whenever the
weather source changed would silently override a deliberate pairing
the user may have set earlier (JMA+JMA -> switch weather to AccuWeather
-> forced to AccuWeather+AccuWeather instead of preserving JMA alerts).

The auto-pairing for a brand-new location (SearchScreenViewModel) is
unaffected - there the user has no prior alert-source choice to
override, so defaulting a self-paired source's alerts to match still
makes sense.

Verified live: switching an existing location's weather source
(JMA -> AccuWeather) now leaves the alert source on JMA instead of
forcing it to follow.
2026-08-23 19:56:48 +12:00
PranshulGG 6f8b45ca18 Add CONTRIBUTING.md 2026-08-23 13:19:45 +05:30
Pranshul 47a5b0b1b7 Merge pull request #1057 from PranshulGG/l10n_main
New Crowdin updates
2026-08-23 13:07:06 +05:30
Pranshul 0d70296959 Merge pull request #1070 from reveler-hub/feature/nws-alerts
Add alerts support to NWS
2026-08-23 12:50:22 +05:30
Pranshul 8b52d13b3e New translations strings.xml (Greek)
[ci skip]
2026-08-23 11:20:52 +05:30
Pranshul 28bf02a6fa New translations strings.xml (Italian)
[ci skip]
2026-08-23 11:20:50 +05:30
Pranshul dd8f1f0685 New translations strings.xml (Czech)
[ci skip]
2026-08-23 04:46:16 +05:30
Pranshul 7c4b4027f3 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-22 22:37:05 +05:30
Pranshul 80bcbf43f0 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-22 22:37:04 +05:30
Pranshul 70fe1a8459 New translations strings.xml (Filipino)
[ci skip]
2026-08-22 22:37:03 +05:30
Pranshul 7d2b97173a New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-22 22:37:02 +05:30
Pranshul 2f5cf31a36 New translations strings.xml (Kazakh)
[ci skip]
2026-08-22 22:37:01 +05:30
Pranshul 0fb5d6386e New translations strings.xml (Thai)
[ci skip]
2026-08-22 22:36:59 +05:30
Pranshul 3316760752 New translations strings.xml (Persian)
[ci skip]
2026-08-22 22:36:58 +05:30
Pranshul 4f78b59e4d New translations strings.xml (Indonesian)
[ci skip]
2026-08-22 22:36:57 +05:30
Pranshul 6c29dc1fc8 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-22 22:36:55 +05:30
Pranshul 6b57d3c557 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-22 22:36:54 +05:30
Pranshul b0a9b03ebd New translations strings.xml (Swedish)
[ci skip]
2026-08-22 22:36:53 +05:30
Pranshul 2a848ce478 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-22 22:36:52 +05:30
Pranshul 61a94e1e90 New translations strings.xml (Slovenian)
[ci skip]
2026-08-22 22:36:51 +05:30
Pranshul b910f85bc9 New translations strings.xml (Korean)
[ci skip]
2026-08-22 22:36:49 +05:30
Pranshul ed56bd48e2 New translations strings.xml (Hungarian)
[ci skip]
2026-08-22 22:36:48 +05:30
Pranshul 380c8fceb6 New translations strings.xml (Greek)
[ci skip]
2026-08-22 22:36:47 +05:30
Pranshul 245ec8cafc New translations strings.xml (German)
[ci skip]
2026-08-22 22:36:46 +05:30
Pranshul 130ae9437e New translations strings.xml (Catalan)
[ci skip]
2026-08-22 22:36:44 +05:30
Pranshul 023195386a New translations strings.xml (Bulgarian)
[ci skip]
2026-08-22 22:36:43 +05:30
Pranshul e33cf1e4b7 New translations strings.xml (Romanian)
[ci skip]
2026-08-22 22:36:42 +05:30
Pranshul fafcca97ff New translations strings.xml (Polish)
[ci skip]
2026-08-22 22:36:41 +05:30
Pranshul 83b34568c8 New translations strings.xml (Italian)
[ci skip]
2026-08-22 22:36:40 +05:30
Pranshul 4bfab73ff7 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-22 22:36:38 +05:30
Pranshul 6fe4c4587a New translations strings.xml (Lithuanian)
[ci skip]
2026-08-22 22:36:37 +05:30
Pranshul dee4780980 New translations strings.xml (French)
[ci skip]
2026-08-22 22:36:36 +05:30
Pranshul a179446126 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-22 22:36:35 +05:30
Pranshul bf5468ea04 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-22 22:36:34 +05:30
Pranshul 747527c23c New translations strings.xml (Turkish)
[ci skip]
2026-08-22 22:36:32 +05:30
Pranshul 4b47a9bcf4 New translations strings.xml (Russian)
[ci skip]
2026-08-22 22:36:31 +05:30
Pranshul 291984de32 New translations strings.xml (Portuguese)
[ci skip]
2026-08-22 22:36:30 +05:30
Pranshul b54b17872d New translations strings.xml (Dutch)
[ci skip]
2026-08-22 22:36:29 +05:30
Pranshul 2bb8549a93 New translations strings.xml (Japanese)
[ci skip]
2026-08-22 22:36:27 +05:30
Pranshul f3ae6d5563 New translations strings.xml (Hebrew)
[ci skip]
2026-08-22 22:36:26 +05:30
Pranshul 4479c43182 New translations strings.xml (Finnish)
[ci skip]
2026-08-22 22:36:25 +05:30
Pranshul 2dac241237 New translations strings.xml (Czech)
[ci skip]
2026-08-22 22:36:24 +05:30
Pranshul e9fb0ab462 New translations strings.xml (Spanish)
[ci skip]
2026-08-22 22:36:22 +05:30
reveler-hub fa651168f6 Auto-select a self-paired alert source to match the weather source
Sources like JMA, AccuWeather, Pirate Weather, and INMET (soon NWS)
serve both weather and alerts from the same provider, but alertSource
stayed NONE unless a user separately opened the alert-source picker
and picked it manually. Now, whenever a location's weather source is
set or changed to one with Capability.ALERTS, alertSource follows it
automatically - for a brand-new location and when editing an existing
one. Picking a non-self-paired weather source leaves the current
alert-source choice untouched rather than clearing it, so deliberately
mixed pairings (e.g. AccuWeather for weather, WMO for alerts) still
work.

Verified live on device: a new Japan location auto-pairs JMA for both;
switching an existing location's weather source to AccuWeather
auto-follows the alert-source tile before saving; switching back to a
non-self-paired source leaves the prior alert-source pick intact.
2026-08-23 00:34:43 +12:00
reveler-hub d59b4b7a4b Add NWS alerts (self-paired)
NWS is the recommended weather source for the US but had no alerts
capability, so US locations got zero recommended alert sources in the
Edit Location picker. NwsRepository now also implements AlertRepository
using the free, keyless /alerts/active endpoint on the same host
NwsRepository already talks to.
2026-08-22 23:58:37 +12:00
Pranshul d852fbbeea Merge pull request #1065 from reveler-hub/feature/backup-restore
Add Backup & Restore (export/import locations and settings)
2026-08-22 17:11:52 +05:30
PranshulGG d7a062edd8 remove redundant modifiers in feature sheets 2026-08-22 17:11:22 +05:30
Pranshul 90f331b824 New translations strings.xml (French)
[ci skip]
2026-08-22 16:34:12 +05:30
Pranshul dd84612797 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-22 16:34:10 +05:30
Pranshul 61ce0712a5 New translations strings.xml (Russian)
[ci skip]
2026-08-22 16:34:09 +05:30
reveler-hubandClaude Sonnet 5 312df078c6 Reject backups without a default location, add intro-screen import
Addresses PranshulGG's review comment on #1065:
- restoreBackup() now rejects a backup with no default location instead
  of silently importing a state the app never expects.
- New "Import a backup" option on the intro screen, reusing the same
  restore path, so a fresh install can skip manual location setup.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeA5SoK1dsP8uxkMi2qEGu
2026-08-22 17:00:45 +12:00
reveler-hubandClaude Sonnet 5 4977ff7a70 Add Backup & Restore (export/import locations and settings)
Closes #848. Lets users export their locations, units, weather block
layout, and app settings to a JSON file, and restore from one - the
old Flutter version had this and it was never ported to the Kotlin
rewrite. API keys are opt-in on export (off by default); import is a
full replace of everything except keys, which are left alone when the
file doesn't include any.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FeA5SoK1dsP8uxkMi2qEGu
2026-08-22 17:00:45 +12:00
Pranshul 0fd4423d9e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-22 10:11:01 +05:30
Pranshul ba1108a681 New translations strings.xml (Spanish)
[ci skip]
2026-08-22 10:10:59 +05:30
Pranshul eb9e6bae8c New translations strings.xml (Finnish)
[ci skip]
2026-08-22 03:43:52 +05:30
Pranshul 4b363fc70c New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-21 21:42:07 +05:30
Pranshul b589268359 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-21 21:42:05 +05:30
Pranshul 56f6167059 New translations strings.xml (Filipino)
[ci skip]
2026-08-21 21:42:04 +05:30
Pranshul 822647ad9d New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-21 21:42:02 +05:30
Pranshul a483367254 New translations strings.xml (Kazakh)
[ci skip]
2026-08-21 21:42:00 +05:30
Pranshul fb9a8418bb New translations strings.xml (Thai)
[ci skip]
2026-08-21 21:41:59 +05:30
Pranshul 996c4d0da7 New translations strings.xml (Persian)
[ci skip]
2026-08-21 21:41:57 +05:30
Pranshul 556d0c17a3 New translations strings.xml (Indonesian)
[ci skip]
2026-08-21 21:41:56 +05:30
Pranshul 77a3c2b447 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-21 21:41:55 +05:30
Pranshul 8ea3391834 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-21 21:41:53 +05:30
Pranshul 7763842e3f New translations strings.xml (Swedish)
[ci skip]
2026-08-21 21:41:52 +05:30
Pranshul 2681b5f79c New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-21 21:41:50 +05:30
Pranshul 8b63311f27 New translations strings.xml (Slovenian)
[ci skip]
2026-08-21 21:41:48 +05:30
Pranshul a9ccd31878 New translations strings.xml (Korean)
[ci skip]
2026-08-21 21:41:47 +05:30
Pranshul ec379303df New translations strings.xml (Hungarian)
[ci skip]
2026-08-21 21:41:45 +05:30
Pranshul 197d7f289e New translations strings.xml (Greek)
[ci skip]
2026-08-21 21:41:43 +05:30
Pranshul d6ffaa6296 New translations strings.xml (German)
[ci skip]
2026-08-21 21:41:42 +05:30
Pranshul a712aa5cf3 New translations strings.xml (Catalan)
[ci skip]
2026-08-21 21:41:41 +05:30
Pranshul 67aecfb801 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-21 21:41:39 +05:30
Pranshul c906608949 New translations strings.xml (Romanian)
[ci skip]
2026-08-21 21:41:38 +05:30
Pranshul 0250de39da New translations strings.xml (Polish)
[ci skip]
2026-08-21 21:41:36 +05:30
Pranshul f8eaf46410 New translations strings.xml (Italian)
[ci skip]
2026-08-21 21:41:35 +05:30
Pranshul de0edc1a5a New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-21 21:41:33 +05:30
Pranshul b0978fcc59 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-21 21:41:32 +05:30
Pranshul 494baa735e New translations strings.xml (French)
[ci skip]
2026-08-21 21:41:30 +05:30
Pranshul 9b45954b3e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-21 21:41:28 +05:30
Pranshul d643ac0824 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-21 21:41:27 +05:30
Pranshul 8735ae3c91 New translations strings.xml (Turkish)
[ci skip]
2026-08-21 21:41:26 +05:30
Pranshul 9a8b7dc039 New translations strings.xml (Russian)
[ci skip]
2026-08-21 21:41:24 +05:30
Pranshul eb08b049b6 New translations strings.xml (Portuguese)
[ci skip]
2026-08-21 21:41:23 +05:30
Pranshul adf707b05e New translations strings.xml (Dutch)
[ci skip]
2026-08-21 21:41:21 +05:30
Pranshul c63300147d New translations strings.xml (Japanese)
[ci skip]
2026-08-21 21:41:20 +05:30
Pranshul 30ed7e5ecc New translations strings.xml (Hebrew)
[ci skip]
2026-08-21 21:41:18 +05:30
Pranshul 8d76519371 New translations strings.xml (Finnish)
[ci skip]
2026-08-21 21:41:17 +05:30
Pranshul 8224eee33e New translations strings.xml (Czech)
[ci skip]
2026-08-21 21:41:15 +05:30
Pranshul 2fcf6d505f New translations strings.xml (Spanish)
[ci skip]
2026-08-21 21:41:13 +05:30
Pranshul c8303d1c30 Merge pull request #1059 from reveler-hub/feature/amoled-dark-theme
Add AMOLED (pure black) dark theme option
2026-08-21 21:12:30 +05:30
PranshulGG 9eb21ed44d improve source pickers 2026-08-21 21:11:05 +05:30
PranshulGG fd4487e8ef add missing froggy images 2026-08-21 21:02:21 +05:30
PranshulGG d6dd1cef95 new conditions and froggy images 2026-08-21 20:09:33 +05:30
PranshulGG 708b50d8dd add openweather source close #155 2026-08-21 20:00:39 +05:30
PranshulGG 75d1b310cd add WeatherUtils with helper functions for weather data processing 2026-08-21 16:45:39 +05:30
PranshulGG 39c7195910 refactor MetNorwayJsonMapper to use WeatherUtils for safe weather calculations and dominant value logic 2026-08-21 16:45:29 +05:30
PranshulGG 101a58c302 calculate dominant wind direction instead of average in MetNorwayJsonMapper 2026-08-21 15:40:08 +05:30
Pranshul 4f1ca5e81e New translations strings.xml (Indonesian)
[ci skip]
2026-08-21 15:36:34 +05:30
Pranshul 57bc9940eb New translations strings.xml (French)
[ci skip]
2026-08-21 07:18:59 +05:30
PranshulGG c3b3948a84 add comments 2026-08-20 21:31:58 +05:30
PranshulGG fa0259251c use getSourcesGlobal for source selection and filter by relevant capabilities 2026-08-20 21:31:49 +05:30
Pranshul b1e00eb18b New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-20 21:10:58 +05:30
Pranshul 47597f5eda New translations strings.xml (Catalan)
[ci skip]
2026-08-20 21:10:56 +05:30
PranshulGG 3dcfff12b8 fix spacing 2026-08-20 20:59:13 +05:30
PranshulGG caf008ff4b add tablet layout closes #768 closes #934 closes #877 2026-08-20 20:55:39 +05:30
reveler-hub b2786768e5 Add AMOLED (pure black) dark theme option
Closes #245.
2026-08-21 03:15:09 +12:00
PranshulGG a00c0dedeb fixed missing inmet conditions and made humidity nullable 2026-08-20 18:18:58 +05:30
PranshulGG 08bd6aeb58 keep only the previous 24 hours 2026-08-20 17:56:20 +05:30
Pranshul d95b1e7238 Merge pull request #1052 from reveler-hub/fix/device-location-cache-not-invalidated
Fix device location's weather staying pinned to the old city after moving
2026-08-20 16:29:56 +05:30
Pranshul 0c1a483dd8 Merge pull request #1056 from reveler-hub/fix/bmkg-forecast-403-referer
Fix BMKG forecast endpoint returning 403 Forbidden
2026-08-20 16:25:12 +05:30
PranshulGG 564b469af2 add fallback for dewPoint in HumidityBlock and allow null humidity in InmetJsonMapper 2026-08-20 16:24:50 +05:30
Pranshul c774f38b75 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-20 14:40:13 +05:30
Pranshul 5d592d37f4 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-20 14:40:12 +05:30
Pranshul e6da014ec8 New translations strings.xml (Filipino)
[ci skip]
2026-08-20 14:40:10 +05:30
Pranshul f328401991 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-20 14:40:09 +05:30
Pranshul a3efc52b6c New translations strings.xml (Kazakh)
[ci skip]
2026-08-20 14:40:07 +05:30
Pranshul da4b9429ba New translations strings.xml (Thai)
[ci skip]
2026-08-20 14:40:06 +05:30
Pranshul 2aa8918eca New translations strings.xml (Persian)
[ci skip]
2026-08-20 14:40:05 +05:30
Pranshul 4e7587cac5 New translations strings.xml (Indonesian)
[ci skip]
2026-08-20 14:40:03 +05:30
Pranshul b8133ea7ab New translations strings.xml (Vietnamese)
[ci skip]
2026-08-20 14:40:02 +05:30
Pranshul 5753ff235d New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-20 14:40:00 +05:30
Pranshul b94021f6b4 New translations strings.xml (Swedish)
[ci skip]
2026-08-20 14:39:59 +05:30
Pranshul 65bdc3597a New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-20 14:39:57 +05:30
Pranshul d5e8c1153a New translations strings.xml (Slovenian)
[ci skip]
2026-08-20 14:39:56 +05:30
Pranshul 5063572e8e New translations strings.xml (Korean)
[ci skip]
2026-08-20 14:39:54 +05:30
Pranshul 0e33eb45b4 New translations strings.xml (Hungarian)
[ci skip]
2026-08-20 14:39:53 +05:30
Pranshul c3c10c32df New translations strings.xml (Greek)
[ci skip]
2026-08-20 14:39:52 +05:30
Pranshul a6308fe77e New translations strings.xml (German)
[ci skip]
2026-08-20 14:39:50 +05:30
Pranshul 580b0fafbc New translations strings.xml (Catalan)
[ci skip]
2026-08-20 14:39:49 +05:30
Pranshul d8cc015f1e New translations strings.xml (Bulgarian)
[ci skip]
2026-08-20 14:39:48 +05:30
Pranshul 22c46cdfe2 New translations strings.xml (Romanian)
[ci skip]
2026-08-20 14:39:46 +05:30
Pranshul 6da01ba665 New translations strings.xml (Polish)
[ci skip]
2026-08-20 14:39:45 +05:30
Pranshul 1c66ab3ea5 New translations strings.xml (Italian)
[ci skip]
2026-08-20 14:39:44 +05:30
Pranshul a6073fea32 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-20 14:39:42 +05:30
Pranshul 85728b1125 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-20 14:39:40 +05:30
Pranshul 24a6f127cd New translations strings.xml (French)
[ci skip]
2026-08-20 14:39:39 +05:30
Pranshul 9a8155dd6a New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-20 14:39:38 +05:30
Pranshul 476bd06bd3 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-20 14:39:36 +05:30
Pranshul f1d1671b24 New translations strings.xml (Turkish)
[ci skip]
2026-08-20 14:39:35 +05:30
Pranshul a472202580 New translations strings.xml (Russian)
[ci skip]
2026-08-20 14:39:33 +05:30
Pranshul a05427d32c New translations strings.xml (Portuguese)
[ci skip]
2026-08-20 14:39:32 +05:30
Pranshul c15119949b New translations strings.xml (Dutch)
[ci skip]
2026-08-20 14:39:31 +05:30
Pranshul d939a097c9 New translations strings.xml (Japanese)
[ci skip]
2026-08-20 14:39:29 +05:30
Pranshul c3388f152e New translations strings.xml (Hebrew)
[ci skip]
2026-08-20 14:39:28 +05:30
Pranshul f749eb43ce New translations strings.xml (Finnish)
[ci skip]
2026-08-20 14:39:26 +05:30
Pranshul ecac8de460 New translations strings.xml (Czech)
[ci skip]
2026-08-20 14:39:25 +05:30
Pranshul 41bd1ebcf3 New translations strings.xml (Spanish)
[ci skip]
2026-08-20 14:39:23 +05:30
reveler-hub 965cfc17da Fix BMKG forecast endpoint returning 403 Forbidden
BMKG's Cloudflare WAF rejects api/df/v1/forecast/coord unless the
request carries a same-origin Referer header, matching what their
own frontend sends. Confirmed live: the exact same request succeeds
with the header and fails without it, regardless of User-Agent.

api/presentwx/coord (current conditions) isn't affected either way,
so the header is applied to all BMKG requests for simplicity.

Closes #1037, #1054
2026-08-20 20:23:57 +12:00
reveler-hub 39d597df20 Fix spurious weather refresh on every in-app navigation
Moving the ON_START refresh trigger into MainScreen's composition
meant Compose disposed and recreated its LifecycleEventObserver on
every navigation away and back, and Android replays a synthetic
ON_START to a freshly-added observer when the Activity is already
started - firing getWeather() on every nav, not just a real resume.

Moved the trigger into WeatherViewModel, observing ProcessLifecycleOwner
once in init{} (same pattern AppVisibility already uses), so the
observer is only ever added once for the ViewModel's lifetime.

Also switches LocationsRepository over to cleanLocationExtras.
2026-08-20 17:43:05 +12:00
reveler-hub d05660faa2 Fix weather not refreshing on a normal app resume (only worked on cold start)
Two separate things needed fixing for #1048 to actually resolve for a
user who doesn't force-kill the app between opens:

1. WeatherAutoRefreshForeground's ON_START handler used to call
   getWeather() immediately on every resume (added by PR #1043,
   closes #1035) - a later refactor (9c901ef2c) commented that call
   out entirely, leaving only a 45-minute-delayed auto-refresh loop.
   Restored it.

2. Restoring #1 alone re-exposed a real race: the device-location
   branch in getWeather() updates activeLocation mid-fetch after
   detecting a move, which changed the `location` parameter this
   composable's DisposableEffect was keyed on. Compose replays a
   synthetic ON_START when an effect resubscribes, which fired a
   second getWeather() call whose weatherJob?.cancel() killed the
   first call's in-flight fetch before it could write the real
   data - leaving the location name/coordinates updated but the
   weather itself still stale, i.e. exactly #1048's symptom.
   Fixed by reading the location via rememberUpdatedState instead
   of keying the effect on it, so a location mutation no longer
   restarts the effect.

Found and confirmed via debug logging on-device: two ON_START events
~1.2s apart, the second cancelling the first's active coroutine.
Verified fixed the same way - moved a device location from Pittsburgh
to Myrtle Beach via a background/foreground cycle (not a cold start),
confirmed real Myrtle Beach data (not stale Pittsburgh data) loads
correctly.
2026-08-20 17:22:32 +12:00
reveler-hub f86217bc7b Fix weather staying pinned to the old location after the device moves
updateDeviceLocationPosition() updates the device location's lat/lon
and display name atomically, but never invalidated any per-source
"resolve coordinates once, cache by locationId" layer - NWS's grid
points, and the composite location-key cache several other sources
use (CWA/AEMET/JMA/Gismeteo/IPMA/MetOffice/Accu). Since the device
location keeps the same id forever while its coordinates change, a
big move left the display name/coordinates updating correctly while
the actual weather stayed pinned to wherever it was last resolved -
e.g. still showing the old city's weather under the new city's name
after traveling (closes #1048).

WeatherDataReconcilerRepository.reconcileSourceChange() doesn't cover
this case: it only clears these caches on an explicit source switch
(NWS -> OpenMeteo), not on a coordinate change while staying on the
same source, which is exactly what a moving device location does.

Verified on-device: seeded a real NWS grid-point cache entry for
Pittsburgh, mock-moved to Myrtle Beach, confirmed (pre-fix, by code
reading) the stale grid point would persist; post-fix, confirmed via
a cold start that the cache correctly flips to Myrtle Beach's real
grid point and real weather replaces the stale data.
2026-08-20 17:22:32 +12:00
PranshulGG 1229bc792f add cleanLocationExtras function to WeatherDataReconcilerRepository 2026-08-20 09:53:36 +05:30
Pranshul e4355b9b93 Merge pull request #1045 from PranshulGG/l10n_main
New Crowdin updates
2026-08-20 09:48:52 +05:30
Pranshul 282d3ba501 Merge pull request #1049 from reveler-hub/fix/weather-screen-crossfade-jitter
Fix a visible stutter/flash on every weather refresh
2026-08-20 09:47:13 +05:30
Pranshul 8b2f80ddc8 Merge pull request #1046 from altendorfme/main
Add IMET (Brazil Coverage) source
2026-08-20 09:42:30 +05:30
Pranshul 26dee72ce7 New translations strings.xml (Italian)
[ci skip]
2026-08-20 08:20:57 +05:30
Pranshul 4abbcabf12 New translations strings.xml (French)
[ci skip]
2026-08-20 08:20:56 +05:30
Pranshul d2b0314c63 New translations strings.xml (Russian)
[ci skip]
2026-08-20 08:20:54 +05:30
Pranshul 9dc685fbf8 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-20 02:10:09 +05:30
Pranshul 64885f5b6d New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-20 02:10:07 +05:30
Pranshul f2eb7d2f70 New translations strings.xml (Filipino)
[ci skip]
2026-08-20 02:10:06 +05:30
Pranshul 53812e94ce New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-20 02:10:04 +05:30
Pranshul b4e7c67e62 New translations strings.xml (Kazakh)
[ci skip]
2026-08-20 02:10:03 +05:30
Pranshul 99bd0ba8aa New translations strings.xml (Thai)
[ci skip]
2026-08-20 02:10:02 +05:30
Pranshul ba692433e3 New translations strings.xml (Persian)
[ci skip]
2026-08-20 02:10:00 +05:30
Pranshul 78c36087ab New translations strings.xml (Indonesian)
[ci skip]
2026-08-20 02:09:59 +05:30
Pranshul 1c1dad0e5d New translations strings.xml (Vietnamese)
[ci skip]
2026-08-20 02:09:58 +05:30
Pranshul 71607b1313 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-20 02:09:56 +05:30
Pranshul 971e2c42d8 New translations strings.xml (Swedish)
[ci skip]
2026-08-20 02:09:55 +05:30
Pranshul 1644a212df New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-20 02:09:54 +05:30
Pranshul 3c372d3109 New translations strings.xml (Slovenian)
[ci skip]
2026-08-20 02:09:53 +05:30
Pranshul 8fd490d781 New translations strings.xml (Korean)
[ci skip]
2026-08-20 02:09:51 +05:30
Pranshul f3b71b4845 New translations strings.xml (Hungarian)
[ci skip]
2026-08-20 02:09:50 +05:30
Pranshul b9519e22b7 New translations strings.xml (Greek)
[ci skip]
2026-08-20 02:09:49 +05:30
Pranshul 6f16ae6d10 New translations strings.xml (German)
[ci skip]
2026-08-20 02:09:47 +05:30
Pranshul 122bf1f4f0 New translations strings.xml (Catalan)
[ci skip]
2026-08-20 02:09:46 +05:30
Pranshul dc9fca7d59 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-20 02:09:44 +05:30
Pranshul 0d8bc25b4e New translations strings.xml (Romanian)
[ci skip]
2026-08-20 02:09:43 +05:30
Pranshul f965e2c2cc New translations strings.xml (Polish)
[ci skip]
2026-08-20 02:09:41 +05:30
Pranshul a97213e99b New translations strings.xml (Italian)
[ci skip]
2026-08-20 02:09:40 +05:30
Pranshul f5a68f2881 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-20 02:09:39 +05:30
Pranshul d0dc74c34b New translations strings.xml (Lithuanian)
[ci skip]
2026-08-20 02:09:37 +05:30
Pranshul 5b4991983f New translations strings.xml (French)
[ci skip]
2026-08-20 02:09:36 +05:30
Pranshul 737beffb50 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-20 02:09:35 +05:30
Pranshul d60eddc4c5 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-20 02:09:33 +05:30
Pranshul bdfc1350f7 New translations strings.xml (Turkish)
[ci skip]
2026-08-20 02:09:32 +05:30
Pranshul 59a10e71e3 New translations strings.xml (Russian)
[ci skip]
2026-08-20 02:09:30 +05:30
Pranshul 9d3cdc5df9 New translations strings.xml (Portuguese)
[ci skip]
2026-08-20 02:09:29 +05:30
Pranshul 9a3aab06f6 New translations strings.xml (Dutch)
[ci skip]
2026-08-20 02:09:28 +05:30
Pranshul a69233a026 New translations strings.xml (Japanese)
[ci skip]
2026-08-20 02:09:27 +05:30
Pranshul 2f66a4a0fd New translations strings.xml (Hebrew)
[ci skip]
2026-08-20 02:09:25 +05:30
Pranshul a7d1b8d959 New translations strings.xml (Finnish)
[ci skip]
2026-08-20 02:09:24 +05:30
Pranshul 5b85adc07d New translations strings.xml (Czech)
[ci skip]
2026-08-20 02:09:23 +05:30
Pranshul f8bf501fb3 New translations strings.xml (Spanish)
[ci skip]
2026-08-20 02:09:21 +05:30
Renan Bernordi c7660b6d62 fix duplicated merge string 2026-08-19 15:11:57 -03:00
Renan Bernordi 20ebd7b17e Merge branch 'inmet-capabilities'
# Conflicts:
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/model/sources/WeatherSource.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/network/sources/weather/inmet/InmetApi.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/network/sources/weather/inmet/InmetRepository.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/network/sources/weather/inmet/json/InmetIbgeJson.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/data/provider/SourceRepositoryProvider.kt
2026-08-19 15:10:11 -03:00
Renan Bernordi e4d3339694 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster into inmet-capabilities 2026-08-19 15:08:30 -03:00
Renan Bernordi 2ed989b619 update imet ingration 2026-08-19 15:08:28 -03:00
PranshulGG a4857fc516 fix air quality source display name in EditLocationScreen 2026-08-19 23:01:30 +05:30
PranshulGG 700c64bbfa update alert and air quality source display strings and adjust recommended source filtering logic 2026-08-19 23:00:08 +05:30
PranshulGG 9c3e5dbb97 filter recommended sources from global sources in EditLocationBottomSheet 2026-08-19 22:50:59 +05:30
PranshulGG f5db93222f update weather sources in README and metadata 2026-08-19 22:44:09 +05:30
reveler-hub dd7b5f2bc2 Only crossfade the weather screen on an actual location switch
AnimatedContent wrapping the whole screen was keyed on the full
Weather object, so every plain data refresh (a new Weather instance
every time, e.g. a changed lastUpdatedInMilli) triggered the same
full-screen fade-out/fade-in as switching to a different location -
producing a visible stutter/flash on every successful refresh, even
when nothing on screen actually needed to change.

Keyed the transition on the location id instead via AnimatedContent's
contentKey parameter: a same-location refresh now just recomposes the
changed values in place with no animation, while switching locations
still gets the intentional crossfade.
2026-08-20 05:12:51 +12:00
Pranshul 0a31a25250 Merge pull request #1047 from reveler-hub/feature/jma-weather-source
Add JMA (Japan) as a weather forecast source
2026-08-19 22:40:28 +05:30
PranshulGG c6c68c8202 remove todo comment 2026-08-19 22:40:09 +05:30
reveler-hub a252e9ac2e Compute JMA's current "feels like" temperature
AMeDAS doesn't report apparent temperature directly, so this was
hardcoded null - "Feels like -°" on every location. Wired through the
app's existing computeApparentTemperature() fallback (same convention
FMI/DWD/NWS/SMHI/etc already use for this exact gap) using AMeDAS's
own real temp/humidity/wind, since those are all genuine live
observations, not derived/forecast values.
2026-08-20 04:58:51 +12:00
reveler-hub eb4b6eff0d Address review: clear alerts/AQ via an explicit null result instead of eagerly on every fetch
PranshulGG pointed out the previous fix (resetting alerts/airQuality at
the top of every getWeather() call) caused a visible flash on every
refresh, not just a location switch, since it cleared state before
knowing whether real data was coming back.

Per his suggested approach: onAlerts/onAirQuality now always fire
(never skipped), passing null when no repository resolves for the
location's alertSource/airQualitySource instead of skipping the
callback. handleAlerts/handleAirQuality treat a null result as an
explicit "clear" signal, while a real Success/Error updates normally
exactly as before - so a location with real alerts is never touched
until the actual result arrives (no flash), and a location with no
alert source now correctly clears once that's determined, without
ever clearing eagerly beforehand.
2026-08-20 04:58:51 +12:00
PranshulGG 33d44e540b try everything to get the country code 2026-08-19 22:09:01 +05:30
PranshulGG cf124b8fe8 try everything to get the country code 2026-08-19 21:58:59 +05:30
PranshulGG ffd0e121f5 implement alert fetching logic in PirateWeatherRepository and improve null handling in HumidityBlock 2026-08-19 20:58:58 +05:30
reveler-hub 634ba26bbd Fix alerts/air quality carrying over when switching to a location with no source configured
WeatherViewModel.getWeather() reset isError/isUnsupportedSource/
isAirQualityLoading on every fetch, but never alerts or airQuality.
SourceDataRepository.getData() only invokes onAlerts/onAirQuality when
the location's alertSource/airQualitySource resolves to a real
repository - a location with alertSource == NONE (the default for
every location right now, since none of it is auto-selected on
creation) never gets a callback at all, so the previous location's
alerts/air quality stayed on screen indefinitely after switching.

Found while testing JMA's new alerts capability: switching from a
Japan location with real active alerts to one with no alert source
configured kept showing the old alerts. Reproduced and confirmed fixed
on-device.
2026-08-20 03:09:44 +12:00
reveler-hub 41b681f571 Add JMA alerts capability
JMA has its own alerts endpoint (warning/data/warning/{officeCode}.json),
keyed by the same officeCode/class10Code already resolved and cached for
the weather source, so no extra location lookup is needed. Filters out
"no warnings issued"/"cleared" statuses, maps JMA's warning-code enum to
severity (~26 codes across advisory/warning/emergency-warning tiers,
transcribed via Breezy Weather's JmaService.kt, same technique used to
find the hourly-forecast endpoint).

Tested live: Wakkanai, Japan currently has 3 active advisories
(thunderstorm, gale, dense fog), confirmed rendering correctly.
2026-08-20 03:07:11 +12:00
Pranshul d6e576d45c New translations strings.xml (Italian)
[ci skip]
2026-08-19 20:04:05 +05:30
PranshulGG 11b2755c09 implement alert fetching logic in PirateWeatherRepository and improve null handling in HumidityBlock 2026-08-19 19:56:31 +05:30
reveler-hub a7b77cc985 Add JMA (Japan Meteorological Agency) as a weather forecast source
Closes #979. Resolves each location to the nearest of JMA's 142
class10 regions and pulls real numeric hourly temp/wind from the
undocumented jmatile/data/wdist/VPFD endpoint, daily data from the
weekly forecast block, and current conditions from live AMeDAS
station observations. No API key required.
2026-08-20 00:47:12 +12:00
PranshulGG 79f61bee20 fix readme 2026-08-19 17:50:05 +05:30
PranshulGG 7b1098d936 fix readme 2026-08-19 17:49:21 +05:30
PranshulGG 5da6ab4690 humidity nullable 2026-08-19 17:42:21 +05:30
PranshulGG 74dd449600 humidity nullable 2026-08-19 17:39:48 +05:30
PranshulGG 6af2cbb3cb text field dialog ui adjustments 2026-08-19 17:29:08 +05:30
PranshulGG 987168b1e4 fix pirate Weather wind speed not being converted to canonical units 2026-08-19 17:28:45 +05:30
PranshulGG 8ac8300f29 refactor: update source architecture to support multiple capabilities from the same API 2026-08-19 16:34:04 +05:30
PranshulGG 8cd993e3d5 refactor: update source architecture to support multiple capabilities from the same API 2026-08-19 16:34:00 +05:30
PranshulGG 9c901ef2cd refactor: update source architecture to support multiple capabilities from the same API 2026-08-19 16:33:53 +05:30
PranshulGG b30c4e7418 refactor sources architecture 2026-08-19 16:31:23 +05:30
PranshulGG 149dabd82c refactor sources architecture 2026-08-19 16:31:11 +05:30
Pranshul 88f97b8980 New translations strings.xml (Italian)
[ci skip]
2026-08-19 14:00:52 +05:30
Pranshul 06626f72f0 Merge pull request #1043 from reveler-hub/fix/device-location-not-updating
Update device location on app-open and fix a leftover single-provider gate
2026-08-19 09:47:29 +05:30
Pranshul 2dc819e94c New translations strings.xml (French)
[ci skip]
2026-08-19 08:03:08 +05:30
Renan Bernordi 72c4ffbbf0 add imet integration 2026-08-18 16:10:39 -03:00
Pranshul e983fcea6e New translations strings.xml (Italian)
[ci skip]
2026-08-18 23:39:31 +05:30
Pranshul 799dc84edb New translations strings.xml (Lithuanian)
[ci skip]
2026-08-18 23:39:30 +05:30
Pranshul 3e8ee4d05e New translations strings.xml (Dutch)
[ci skip]
2026-08-18 23:39:29 +05:30
PranshulGG b229b37e93 fix secondary weather condition selection and clustering 2026-08-18 21:47:08 +05:30
reveler-hub aa69f912d6 Shorten the isInitialized guard comment 2026-08-19 03:45:17 +12:00
reveler-hub b2d7b10470 Guard ON_START refetch against duplicating the initial cold-start load
PranshulGG flagged in review that ON_START now also calling getWeather()
could duplicate the fetch setActiveLocation() already triggers during
initial VM setup. Confirmed the concern is real: DisposableEffect(location)
re-subscribes when `location` goes from null to non-null right after cold
start, and Android replays a synthetic ON_START on subscribe when the
lifecycle is already started - so that resubscription does refire ON_START.

Guarded the getWeather() call on uiState.isInitialized (only true after the
first successful fetch completes), so it now only fires on a genuine
resume-from-background, not the cold-start race. Retested both cases on
the AVD: cold start no longer double-fetches, and #1035 still resolves
correctly on reopen after moving.
2026-08-19 03:36:24 +12:00
reveler-hub b288db34f4 Update device location on app-open and fix a leftover single-provider gate closes #1035
Two related device-location bugs found while investigating #1035:

- WeatherViewModel only checked/refreshed the device location on manual
  pull-to-refresh (isManualRefresh gate), never on app-open, the 45-min
  auto-refresh timer, or app-resume from background. Decoupled the check
  from isManualRefresh so it always runs for a device-location entry, and
  forces a real refetch (via isForceRefresh, not isManualRefresh, which
  would still hit the 15-min throttle) only when the position actually
  moved. Also wired an immediate check into WeatherAutoRefreshForeground's
  existing ON_START observer, since that's the only hook that already
  fires on every foreground-resume, not just cold start.

- DeviceLocationProvider.getDeviceLocation() still gated on the old
  single-provider selection (getProvider(), preferring NETWORK_PROVIDER)
  before ever reaching the dual-provider live-request logic added in the
  #938 fix. If that one provider happened to be present-but-disabled
  (e.g. "Device only" location mode, or no GMS/network-location backend),
  it failed instantly without ever trying GPS. Removed the stale gate.

Tested on an AVD: reproduced #1035 (background app, move >1000m, reopen
without refreshing -> location stayed stale), then confirmed the fix
resolves it end-to-end (name, coordinates, and weather data all update
on reopen, no manual refresh needed). Also confirmed the provider-gate
fix resolves an instant "Current location not found" on a device with
NETWORK_PROVIDER disabled but GPS enabled.
2026-08-19 02:56:09 +12:00
PranshulGG a08f76c261 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-18 20:23:46 +05:30
Pranshul 204c10c1d0 Merge pull request #1033 from PranshulGG/l10n_main
New Crowdin updates
2026-08-18 20:23:28 +05:30
Pranshul 3c0d720441 Merge branch 'main' into l10n_main
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-08-18 20:23:18 +05:30
PranshulGG 69daeab654 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-18 20:17:30 +05:30
PranshulGG 8cb340127a add TODO for safeApiCall 2026-08-18 20:17:01 +05:30
Pranshul 1754f87005 Merge pull request #1041 from altendorfme/main
Add Pirate Weather (Global Coverage) source
2026-08-18 20:16:23 +05:30
Renan Bernordi 7ae657049d remove pirate weather alert api 2026-08-18 11:33:10 -03:00
Renan Bernordi 7f3dc42fbb Merge remote-tracking branch 'upstream/main'
# Conflicts:
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/data/provider/WeatherRepositoryProvider.kt
2026-08-18 11:26:35 -03:00
Renan Bernordi 4c3f453e02 add pirate weather integration 2026-08-18 10:57:04 -03:00
Pranshul b05419b6a7 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-18 17:38:47 +05:30
Pranshul 933c194fce New translations strings.xml (German)
[ci skip]
2026-08-18 17:38:46 +05:30
Pranshul 74dc479417 New translations strings.xml (French)
[ci skip]
2026-08-18 17:38:44 +05:30
Pranshul 8dd4807e34 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-18 17:38:43 +05:30
Pranshul 336ae18f11 New translations strings.xml (Russian)
[ci skip]
2026-08-18 17:38:42 +05:30
Pranshul f6d084382e New translations strings.xml (Spanish)
[ci skip]
2026-08-18 17:38:40 +05:30
PranshulGG 47fa36dbe5 fix Pressure screen shows wrong values closes #1040 2026-08-18 13:07:41 +05:30
PranshulGG 635f1fa239 fix open-meteo errors on some models closes #1039 2026-08-18 12:26:56 +05:30
Pranshul c051980c9f New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-18 11:37:41 +05:30
Pranshul e15c44a98a New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-18 11:37:40 +05:30
Pranshul 12f8d2bb40 New translations strings.xml (Filipino)
[ci skip]
2026-08-18 11:37:38 +05:30
Pranshul eeb4e0b81e New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-18 11:37:37 +05:30
Pranshul 30415e3bf3 New translations strings.xml (Kazakh)
[ci skip]
2026-08-18 11:37:36 +05:30
Pranshul b0ea149de3 New translations strings.xml (Thai)
[ci skip]
2026-08-18 11:37:35 +05:30
Pranshul 761528e7fd New translations strings.xml (Persian)
[ci skip]
2026-08-18 11:37:33 +05:30
Pranshul 9b83b2f48b New translations strings.xml (Indonesian)
[ci skip]
2026-08-18 11:37:32 +05:30
Pranshul ca5819bffe New translations strings.xml (Vietnamese)
[ci skip]
2026-08-18 11:37:30 +05:30
Pranshul b4d322a62e New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-18 11:37:29 +05:30
Pranshul 24fcc6b80c New translations strings.xml (Swedish)
[ci skip]
2026-08-18 11:37:28 +05:30
Pranshul 3a33ae0e4d New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-18 11:37:26 +05:30
Pranshul a33890777a New translations strings.xml (Slovenian)
[ci skip]
2026-08-18 11:37:25 +05:30
Pranshul 8a204a7630 New translations strings.xml (Korean)
[ci skip]
2026-08-18 11:37:24 +05:30
Pranshul e3404a0740 New translations strings.xml (Hungarian)
[ci skip]
2026-08-18 11:37:23 +05:30
Pranshul fb04e7d55c New translations strings.xml (Greek)
[ci skip]
2026-08-18 11:37:21 +05:30
Pranshul 021e3159f0 New translations strings.xml (German)
[ci skip]
2026-08-18 11:37:20 +05:30
Pranshul 987251e1eb New translations strings.xml (Catalan)
[ci skip]
2026-08-18 11:37:19 +05:30
Pranshul de85bd83f8 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-18 11:37:17 +05:30
Pranshul ac757c0ff6 New translations strings.xml (Romanian)
[ci skip]
2026-08-18 11:37:16 +05:30
Pranshul 92a701947e New translations strings.xml (Polish)
[ci skip]
2026-08-18 11:37:15 +05:30
Pranshul 49af5f20ad New translations strings.xml (Italian)
[ci skip]
2026-08-18 11:37:13 +05:30
Pranshul 93a023a3ee New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-18 11:37:12 +05:30
Pranshul 6131b8de09 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-18 11:37:11 +05:30
Pranshul d712175d7f New translations strings.xml (French)
[ci skip]
2026-08-18 11:37:09 +05:30
Pranshul aa43bdd420 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-18 11:37:08 +05:30
Pranshul 07bc22d669 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-18 11:37:07 +05:30
Pranshul 99d0f0aa6e New translations strings.xml (Turkish)
[ci skip]
2026-08-18 11:37:05 +05:30
Pranshul 49c4977fbf New translations strings.xml (Russian)
[ci skip]
2026-08-18 11:37:04 +05:30
Pranshul 34578f67a4 New translations strings.xml (Portuguese)
[ci skip]
2026-08-18 11:37:03 +05:30
Pranshul 3cdebbfec1 New translations strings.xml (Dutch)
[ci skip]
2026-08-18 11:37:01 +05:30
Pranshul 6e1166d0c3 New translations strings.xml (Japanese)
[ci skip]
2026-08-18 11:37:00 +05:30
Pranshul ab647903d5 New translations strings.xml (Hebrew)
[ci skip]
2026-08-18 11:36:59 +05:30
Pranshul eddd7607d9 New translations strings.xml (Finnish)
[ci skip]
2026-08-18 11:36:57 +05:30
Pranshul 975d44eecc New translations strings.xml (Czech)
[ci skip]
2026-08-18 11:36:56 +05:30
Pranshul 2554c234b8 New translations strings.xml (Spanish)
[ci skip]
2026-08-18 11:36:55 +05:30
PranshulGG 6886eb193e Fix app not being able to find current location closes #938 2026-08-18 09:51:56 +05:30
Pranshul ca0b887444 Merge pull request #1038 from reveler-hub/fix/onboarding-nominatim-crash
Guard onboarding location lookup against Nominatim failures
2026-08-18 09:38:56 +05:30
Pranshul b956d53cb6 Merge pull request #1036 from reveler-hub/feature/cwa-weather-source
Add CWA (Taiwan) as a weather forecast source
2026-08-18 09:38:04 +05:30
PranshulGG 2179d265b1 remove error_server from strings.xml 2026-08-18 08:16:11 +05:30
PranshulGG 117f441329 update MeteoFrance condition mapping for hail and sleet 2026-08-18 08:15:41 +05:30
Pranshul 5958c621fd New translations strings.xml (Hebrew)
[ci skip]
2026-08-18 05:19:20 +05:30
Pranshul 40e32687f9 New translations strings.xml (Italian)
[ci skip]
2026-08-17 23:07:56 +05:30
Pranshul c64b79e63a New translations strings.xml (Finnish)
[ci skip]
2026-08-17 23:07:54 +05:30
PranshulGG 1f805b96a0 refactor error handling for all sources #1037 2026-08-17 21:33:43 +05:30
reveler-hub d38b18eab0 Guard onboarding location lookup against Nominatim failures closes #986 closes #968
The location setup screen's reverse-geocoding call had no fallback,
so an unreachable Nominatim request crashed the screen instead of
falling back to the coordinates, same failure mode already fixed for
two other call sites in #960.
2026-08-17 23:51:46 +12:00
Pranshul 3dfa6fe17d New translations strings.xml (Polish)
[ci skip]
2026-08-17 16:20:58 +05:30
Pranshul f16b9b57bc New translations strings.xml (Italian)
[ci skip]
2026-08-17 16:20:57 +05:30
Pranshul 576695095f New translations strings.xml (Finnish)
[ci skip]
2026-08-17 16:20:55 +05:30
Pranshul 691ff5939c New translations strings.xml (Czech)
[ci skip]
2026-08-17 16:20:54 +05:30
reveler-hub 46a7cef502 Merge remote-tracking branch 'origin/main' 2026-08-17 22:33:20 +12:00
PranshulGG ff8e76d004 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-17 16:00:15 +05:30
PranshulGG c3a394470b Update isApiKeyAvailable to handle weather sources not requiring user API keys 2026-08-17 16:00:03 +05:30
Pranshul 9be2dcb168 Merge pull request #1034 from hydrielax/main
Localize AccuWeather Alerts and date/times
2026-08-17 15:59:59 +05:30
Pranshul c7d8077c65 New translations strings.xml (Finnish)
[ci skip]
2026-08-17 10:04:30 +05:30
Pranshul 808967c66a New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-17 03:24:24 +05:30
Pranshul a179ab884d New translations strings.xml (Lithuanian)
[ci skip]
2026-08-17 03:24:23 +05:30
Pranshul 6d5bcb79a9 New translations strings.xml (French)
[ci skip]
2026-08-17 03:24:21 +05:30
Pranshul 122d2be099 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-17 03:24:20 +05:30
Alexis Delage 9255fdb0d0 fix: use localized dates 2026-08-16 18:06:32 +02:00
Alexis Delage 55d534bd8e fix: use localized times for 12 and 24 hours patterns 2026-08-16 18:06:32 +02:00
Alexis Delage 15145ab7cc fix: use localized date-times in alerts 2026-08-16 18:06:32 +02:00
Alexis Delage d708ed1290 fix: use localized text for AccuWeather alerts 2026-08-16 18:06:32 +02:00
Pranshul 2126be8a0a New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-16 21:17:26 +05:30
Pranshul 7f3bb87551 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-16 21:17:25 +05:30
Pranshul ca1328418e New translations strings.xml (Turkish)
[ci skip]
2026-08-16 21:17:23 +05:30
Pranshul 5ca4d5a52d New translations strings.xml (Russian)
[ci skip]
2026-08-16 21:17:22 +05:30
Pranshul 18ff6e1357 New translations strings.xml (Portuguese)
[ci skip]
2026-08-16 21:17:21 +05:30
Pranshul 0233af3c71 New translations strings.xml (Dutch)
[ci skip]
2026-08-16 21:17:20 +05:30
Pranshul 31cdeab3b9 New translations strings.xml (Japanese)
[ci skip]
2026-08-16 21:17:18 +05:30
Pranshul 95da6977cd New translations strings.xml (Hebrew)
[ci skip]
2026-08-16 21:17:17 +05:30
Pranshul fd13b4a4b5 New translations strings.xml (Finnish)
[ci skip]
2026-08-16 21:17:15 +05:30
Pranshul 411ac69118 New translations strings.xml (Czech)
[ci skip]
2026-08-16 21:17:14 +05:30
Pranshul d2242187fc New translations strings.xml (Spanish)
[ci skip]
2026-08-16 21:17:13 +05:30
reveler-hub 48b5e1b92f Merge remote-tracking branch 'origin/main' into main 2026-08-17 02:42:26 +12:00
reveler-hub 7f76a2ec6a Add CWA (Taiwan) as a weather forecast source closes #1003
Adds Central Weather Administration as a new per-country WeatherSource,
following the AEMET/IPMA pattern: user-supplied API key, two-level
location resolution (nationwide county lookup, then per-county township
lookup) cached via the existing LocationKeysDao as a composite string,
and generic AppException handling for missing/rejected keys.
2026-08-17 02:42:17 +12:00
PranshulGG 1e7b23b0a0 Update README and metadata with WMO and FOSS weather sources 2026-08-16 20:06:20 +05:30
PranshulGG c57cf08395 bump version 2026-08-16 16:54:18 +05:30
PranshulGG 987c02cf4a fix db crash 2026-08-16 16:53:40 +05:30
PranshulGG 6cac8835ab update weather sources list in README and metadata and refresh screenshots 2026-08-16 16:39:50 +05:30
PranshulGG 92ff8f2e64 fix logic for displaying Open-Meteo model name 2026-08-16 16:09:48 +05:30
PranshulGG 05e683582d fix descriptions 2026-08-16 15:59:05 +05:30
PranshulGG d94496193e Update setup-java action to v5 in release.yml 2026-08-16 15:38:31 +05:30
PranshulGG b972f5ca6c add WEATHERAPI_KEY to release workflow 2026-08-16 15:29:39 +05:30
PranshulGG 14b6e0559e bump version and add changelog 2026-08-16 15:26:58 +05:30
PranshulGG 8a83032278 fix translations 2026-08-16 15:25:51 +05:30
PranshulGG 232e1494b8 fix translations 2026-08-16 15:25:44 +05:30
PranshulGG 4e698f21e9 rename headlineContent to content 2026-08-16 15:00:14 +05:30
PranshulGG a156da9ac9 minimal nav animations 2026-08-16 14:31:27 +05:30
PranshulGG 671b057d7c fix few edge cases 2026-08-16 14:23:08 +05:30
PranshulGG fc4cfba8b3 weather auto refreshes until the app is in foreground closes #1026 2026-08-16 13:59:46 +05:30
PranshulGG cac518ffbb fixed weather block glitches during arrangement 2026-08-16 13:58:04 +05:30
PranshulGG b35e1eb202 date format based on the app locale #744 2026-08-16 12:55:49 +05:30
PranshulGG d5a2b30ce2 date format based on the app locale closes #744 2026-08-16 12:53:16 +05:30
PranshulGG 2ecd3352b5 guard nominatim if fails #960 2026-08-16 09:04:43 +05:30
Pranshul 02512d938c Merge pull request #1032 from PranshulGG/l10n_main
New Crowdin updates
2026-08-16 08:52:46 +05:30
Pranshul a96556bfc1 Merge pull request #1029 from reveler-hub/fix/small-ui-polish
Fix search-result casing and block-screen transition timing
2026-08-16 08:52:12 +05:30
Pranshul 4b90d96442 Merge branch 'main' into fix/small-ui-polish
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-08-16 08:52:04 +05:30
Pranshul 423e3f911a New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-16 08:44:26 +05:30
Pranshul edb29fc177 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-16 08:44:25 +05:30
Pranshul 4eaad73181 New translations strings.xml (Filipino)
[ci skip]
2026-08-16 08:44:24 +05:30
Pranshul 07d78bb283 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-16 08:44:23 +05:30
Pranshul eb2b47e19d New translations strings.xml (Kazakh)
[ci skip]
2026-08-16 08:44:21 +05:30
Pranshul 01db325285 New translations strings.xml (Thai)
[ci skip]
2026-08-16 08:44:20 +05:30
Pranshul 4db9829762 New translations strings.xml (Persian)
[ci skip]
2026-08-16 08:44:19 +05:30
Pranshul b9144d8778 New translations strings.xml (Indonesian)
[ci skip]
2026-08-16 08:44:18 +05:30
Pranshul 687b5c04af New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-16 08:44:17 +05:30
Pranshul a995278311 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-16 08:44:15 +05:30
Pranshul ada9b23b33 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-16 08:44:14 +05:30
Pranshul c62bbbdfda New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-16 08:44:13 +05:30
Pranshul 263de7cb92 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-16 08:44:12 +05:30
Pranshul c47e8becbe New translations strings.xml (Turkish)
[ci skip]
2026-08-16 08:44:10 +05:30
Pranshul 1766273e07 New translations strings.xml (Swedish)
[ci skip]
2026-08-16 08:44:09 +05:30
Pranshul c9fea5a682 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-16 08:44:08 +05:30
Pranshul 0d0ae42785 New translations strings.xml (Slovenian)
[ci skip]
2026-08-16 08:44:07 +05:30
Pranshul a29281cd3e New translations strings.xml (Russian)
[ci skip]
2026-08-16 08:44:05 +05:30
Pranshul 0cf6937a96 New translations strings.xml (Portuguese)
[ci skip]
2026-08-16 08:44:04 +05:30
Pranshul be93c85d84 New translations strings.xml (Polish)
[ci skip]
2026-08-16 08:44:03 +05:30
Pranshul 8c33c06705 New translations strings.xml (Dutch)
[ci skip]
2026-08-16 08:44:02 +05:30
Pranshul 43a7000dd4 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-16 08:44:01 +05:30
Pranshul a55f29403a New translations strings.xml (Korean)
[ci skip]
2026-08-16 08:43:59 +05:30
Pranshul 149e98a4cd New translations strings.xml (Japanese)
[ci skip]
2026-08-16 08:43:58 +05:30
Pranshul 4c63584965 New translations strings.xml (Italian)
[ci skip]
2026-08-16 08:43:57 +05:30
Pranshul 278bed5583 New translations strings.xml (Hungarian)
[ci skip]
2026-08-16 08:43:56 +05:30
Pranshul 504c6d7cbc New translations strings.xml (Hebrew)
[ci skip]
2026-08-16 08:43:55 +05:30
Pranshul da46882a00 New translations strings.xml (Finnish)
[ci skip]
2026-08-16 08:43:53 +05:30
Pranshul 9aef395cd7 New translations strings.xml (Greek)
[ci skip]
2026-08-16 08:43:52 +05:30
Pranshul 5bd56547f4 New translations strings.xml (German)
[ci skip]
2026-08-16 08:43:51 +05:30
Pranshul 0f500a2413 New translations strings.xml (Czech)
[ci skip]
2026-08-16 08:43:50 +05:30
Pranshul 7fe34d5b3f New translations strings.xml (Catalan)
[ci skip]
2026-08-16 08:43:49 +05:30
Pranshul 38227c2c10 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-16 08:43:48 +05:30
Pranshul 462ea6667a New translations strings.xml (Spanish)
[ci skip]
2026-08-16 08:43:46 +05:30
Pranshul 6d03757260 New translations strings.xml (French)
[ci skip]
2026-08-16 08:43:45 +05:30
Pranshul c2455851be New translations strings.xml (Romanian)
[ci skip]
2026-08-16 08:43:44 +05:30
Pranshul 84f952a05e Merge pull request #1030 from reveler-hub/feature/aemet-weather-source
Add AEMET as a weather forecast source
2026-08-16 08:41:28 +05:30
reveler-hub 416e3b11e5 Merge remote-tracking branch 'origin/main' into feature/aemet-weather-source
# Conflicts:
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/network/ApiModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/di/weather/WeatherRepositoryModule.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/model/domain/AppExceptions.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/core/model/sources/WeatherSource.kt
#	app/src/main/java/com/pranshulgg/weather_master_app/data/provider/WeatherRepositoryProvider.kt
2026-08-16 05:19:04 +12:00
Pranshul ead98a797a Merge pull request #1028 from PranshulGG/l10n_main
New Crowdin updates
2026-08-15 21:32:56 +05:30
PranshulGG 1deb842442 fix nullability in FpasRepository cache 2026-08-15 21:24:16 +05:30
PranshulGG dc246bae8d add option to config Weather 4 widget date format closes #1018 2026-08-15 21:23:41 +05:30
reveler-hub e8b435f16c Rework AEMET key handling to reuse the existing error/Snackbar path
Per review feedback on this PR: the previous approach (a new
StatusBanner component, a persistent main-screen banner, live
validation on save, savedAt/expiry tracking) was AEMET-specific UI
behavior that wouldn't generalize to other keyed sources.

- Removed StatusBanner, the persistent banners, validateApiKey(),
  and the savedAt/isNearExpiry mechanism entirely (DB back to v55).
- AemetRepository now just fetches/resolves/returns like every
  other repository. A rejected key surfaces naturally as a 401 from
  AEMET during a normal fetch, thrown as a new shared
  AppException.ApiKeyRejectedError - the same WeatherResult.Error ->
  AppException -> SnackbarManager path every other error already
  uses, so any future keyed source gets this for free.

Tested on-device: bad key, no key, and (once restored) a valid key
all behave correctly through the existing Snackbar.
2026-08-16 03:51:03 +12:00
PranshulGG afc91ad4d3 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-15 20:50:37 +05:30
Pranshul 480715a9ae New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-15 19:56:09 +05:30
Pranshul c90ba47abb New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-15 19:56:08 +05:30
Pranshul 94d087b50b New translations strings.xml (Filipino)
[ci skip]
2026-08-15 19:56:07 +05:30
Pranshul 7831a8cb4f New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-15 19:56:06 +05:30
Pranshul c596930652 New translations strings.xml (Kazakh)
[ci skip]
2026-08-15 19:56:05 +05:30
Pranshul 06d8940c21 New translations strings.xml (Thai)
[ci skip]
2026-08-15 19:56:03 +05:30
Pranshul a43471f364 New translations strings.xml (Persian)
[ci skip]
2026-08-15 19:56:02 +05:30
Pranshul 6bc5369b1f New translations strings.xml (Indonesian)
[ci skip]
2026-08-15 19:56:01 +05:30
Pranshul bc763e1ce0 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-15 19:55:59 +05:30
Pranshul 97411bd233 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-15 19:55:58 +05:30
Pranshul 3f9ca5a196 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-15 19:55:57 +05:30
Pranshul e8cc19431c New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-15 19:55:55 +05:30
Pranshul 66b11641b9 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-15 19:55:54 +05:30
Pranshul bbcdfd6e4b New translations strings.xml (Turkish)
[ci skip]
2026-08-15 19:55:53 +05:30
Pranshul 6cfcf4a922 New translations strings.xml (Swedish)
[ci skip]
2026-08-15 19:55:52 +05:30
Pranshul 6a1b5e188f New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-15 19:55:51 +05:30
Pranshul fe903ca96a New translations strings.xml (Slovenian)
[ci skip]
2026-08-15 19:55:50 +05:30
Pranshul ca27a85bf9 New translations strings.xml (Russian)
[ci skip]
2026-08-15 19:55:48 +05:30
Pranshul 9ee3618e81 New translations strings.xml (Portuguese)
[ci skip]
2026-08-15 19:55:47 +05:30
Pranshul bebe346e42 New translations strings.xml (Polish)
[ci skip]
2026-08-15 19:55:46 +05:30
Pranshul 43f09dd806 New translations strings.xml (Dutch)
[ci skip]
2026-08-15 19:55:44 +05:30
Pranshul df8c79261b New translations strings.xml (Lithuanian)
[ci skip]
2026-08-15 19:55:43 +05:30
Pranshul a13a9a3644 New translations strings.xml (Korean)
[ci skip]
2026-08-15 19:55:42 +05:30
Pranshul 549cd9e297 New translations strings.xml (Japanese)
[ci skip]
2026-08-15 19:55:41 +05:30
Pranshul f24f10e14a New translations strings.xml (Italian)
[ci skip]
2026-08-15 19:55:39 +05:30
Pranshul 29400f412c New translations strings.xml (Hungarian)
[ci skip]
2026-08-15 19:55:38 +05:30
Pranshul e03a719560 New translations strings.xml (Hebrew)
[ci skip]
2026-08-15 19:55:37 +05:30
Pranshul 26eeab05d3 New translations strings.xml (Finnish)
[ci skip]
2026-08-15 19:55:36 +05:30
Pranshul c97012b47f New translations strings.xml (Greek)
[ci skip]
2026-08-15 19:55:35 +05:30
Pranshul cc00107c23 New translations strings.xml (German)
[ci skip]
2026-08-15 19:55:33 +05:30
Pranshul c33e586290 New translations strings.xml (Czech)
[ci skip]
2026-08-15 19:55:32 +05:30
Pranshul 3e71d01a44 New translations strings.xml (Catalan)
[ci skip]
2026-08-15 19:55:31 +05:30
Pranshul bc2d800cac New translations strings.xml (Bulgarian)
[ci skip]
2026-08-15 19:55:30 +05:30
Pranshul ffa4549121 New translations strings.xml (Spanish)
[ci skip]
2026-08-15 19:55:29 +05:30
Pranshul e6a6dbf820 New translations strings.xml (French)
[ci skip]
2026-08-15 19:55:27 +05:30
Pranshul 517c074074 New translations strings.xml (Romanian)
[ci skip]
2026-08-15 19:55:26 +05:30
PranshulGG 404ac6ba0b update db 2026-08-15 19:35:13 +05:30
reveler-hub 82326f0bed Update README's supported weather sources list
AEMET (this PR), plus Met Office and Gismeteo, which were both added
in earlier commits but never made it into the README's source list.
Also notes which sources need a user-supplied API key and links to
each provider's sign-up page.
2026-08-16 00:39:37 +12:00
PranshulGG 64eb2cac31 update db 2026-08-15 18:03:18 +05:30
PranshulGG 98bb99d164 toggle button shapes 2026-08-15 18:03:05 +05:30
PranshulGG 477f327ad1 filter future hourly data 2026-08-15 18:02:46 +05:30
PranshulGG 36f532d171 fix keep past hours 2026-08-15 18:01:30 +05:30
reveler-hub 318605edc6 Add AEMET as a weather forecast source
Adds AEMET (Spain's national weather service) as a new WeatherSource
alongside existing national-service sources like DWD/IPMA/Met Office,
following the same per-country pattern and reusing the generic
API-key infrastructure.

- AemetApi/AemetRepository handle AEMET's two-step fetch (envelope
  with a datos URL, then a second unauthenticated request for the
  actual body) and its ISO-8859-15 response charset.
- Municipio-code resolution (AEMET needs a 5-digit INE code, not
  lat/lon) mirrors IpmaRepository's pattern: resolve once via
  /maestro/municipios, cache the result in the existing
  LocationKeysDao.
- AemetWeatherConditionMap + AemetJsonMapper normalize AEMET's
  estadoCielo codes and Spanish wind-direction letters into the
  app's domain model.
- API keys now track a savedAt timestamp (generic across all keyed
  sources, DB migration v55->v56). Saving an AEMET key now does a
  live check against AEMET before accepting it, showing a
  valid/invalid result banner in the config screen. Past ~3 months,
  the app re-confirms the key still works (rather than just
  guessing from elapsed time) before warning the user - a
  persistent banner on the main screen plus a note in the API key
  config screen, both using a new shared StatusBanner component.

Discussed in #1023.
2026-08-15 23:43:54 +12:00
reveler-hub 92ea801617 Fix search-result casing and block-screen transition timing
Two small unrelated UI fixes found while testing:

- Search result descriptions passed provider country/state names
  straight through with no capitalization handling. Providers could
  potentially show names without capital letters, or verbatim,
  since they are inconsistent about casing. Now title-cased
  defensively on display via a new String.toTitleCase() extension.
- Block-screen navigation transitions (UV index, air quality, etc.)
  had a small but noticeable delay: the fade used an explicit
  350ms/200ms tween, but the paired slide had no animationSpec, so
  it defaulted to a spring with different timing than the fade.
  Both now use the same explicit tween.

Also bundles the Gradle/AGP/KSP version bump Android Studio applied
on project import (Gradle 9.4.1->9.7.0, AGP 9.2.1->9.3.1, KSP
2.3.4->2.3.6), restoring the wrapper's distributionSha256Sum that
the auto-bump dropped.
2026-08-15 23:07:24 +12:00
Pranshul cc3e4810ab Merge pull request #1027 from reveler-hub/fix/fpas-alert-locale
Fix FPAS alerts to respect app language
2026-08-15 16:07:43 +05:30
PranshulGG a959cd93c4 update app exception 2026-08-15 16:07:03 +05:30
PranshulGG da373ba486 update dependencies 2026-08-15 16:06:51 +05:30
PranshulGG 78d783621b missing strings 2026-08-15 16:06:27 +05:30
PranshulGG 8980ece8df update nws conditions 2026-08-15 16:06:20 +05:30
PranshulGG a70551086e update BottomSheet state management 2026-08-15 16:06:03 +05:30
PranshulGG 462c497d2e add imd closes #935 closes #628 closes #391 2026-08-15 16:05:12 +05:30
Pranshul 45efc578b7 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-15 13:22:54 +05:30
Pranshul 2bb718b1e0 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-15 13:22:52 +05:30
Pranshul 11b686dd32 New translations strings.xml (Filipino)
[ci skip]
2026-08-15 13:22:51 +05:30
Pranshul 768eb83ce4 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-15 13:22:50 +05:30
Pranshul b061e4bf76 New translations strings.xml (Kazakh)
[ci skip]
2026-08-15 13:22:49 +05:30
Pranshul 1a20a3056b New translations strings.xml (Thai)
[ci skip]
2026-08-15 13:22:48 +05:30
Pranshul 122836514c New translations strings.xml (Persian)
[ci skip]
2026-08-15 13:22:47 +05:30
Pranshul 2ee19a73be New translations strings.xml (Indonesian)
[ci skip]
2026-08-15 13:22:45 +05:30
Pranshul 87cfc62522 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-15 13:22:44 +05:30
Pranshul 0e9da04449 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-15 13:22:43 +05:30
Pranshul 691b9f72a3 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-15 13:22:42 +05:30
Pranshul 1703aeeb0f New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-15 13:22:41 +05:30
Pranshul 05203c989e New translations strings.xml (Ukrainian)
[ci skip]
2026-08-15 13:22:39 +05:30
Pranshul 0bc2cc706d New translations strings.xml (Turkish)
[ci skip]
2026-08-15 13:22:38 +05:30
Pranshul e02523bfe9 New translations strings.xml (Swedish)
[ci skip]
2026-08-15 13:22:37 +05:30
Pranshul c4899a4b0e New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-15 13:22:36 +05:30
Pranshul adf58defef New translations strings.xml (Slovenian)
[ci skip]
2026-08-15 13:22:35 +05:30
Pranshul d69935beb5 New translations strings.xml (Russian)
[ci skip]
2026-08-15 13:22:33 +05:30
Pranshul e61c8602ab New translations strings.xml (Portuguese)
[ci skip]
2026-08-15 13:22:32 +05:30
Pranshul 8a3c59ee3e New translations strings.xml (Polish)
[ci skip]
2026-08-15 13:22:31 +05:30
Pranshul d64fde385b New translations strings.xml (Dutch)
[ci skip]
2026-08-15 13:22:30 +05:30
Pranshul 479499c438 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-15 13:22:29 +05:30
Pranshul 9ece78fa76 New translations strings.xml (Korean)
[ci skip]
2026-08-15 13:22:27 +05:30
Pranshul baab941181 New translations strings.xml (Japanese)
[ci skip]
2026-08-15 13:22:26 +05:30
Pranshul 51e04f82d9 New translations strings.xml (Italian)
[ci skip]
2026-08-15 13:22:25 +05:30
Pranshul 92e58fd3a2 New translations strings.xml (Hungarian)
[ci skip]
2026-08-15 13:22:24 +05:30
Pranshul af0b5ce5b0 New translations strings.xml (Hebrew)
[ci skip]
2026-08-15 13:22:22 +05:30
Pranshul ae22fef9e8 New translations strings.xml (Finnish)
[ci skip]
2026-08-15 13:22:21 +05:30
Pranshul 64313a2619 New translations strings.xml (Greek)
[ci skip]
2026-08-15 13:22:20 +05:30
Pranshul bb3d218e5c New translations strings.xml (German)
[ci skip]
2026-08-15 13:22:19 +05:30
Pranshul 6011cb57e6 New translations strings.xml (Czech)
[ci skip]
2026-08-15 13:22:18 +05:30
Pranshul 703b6241a5 New translations strings.xml (Catalan)
[ci skip]
2026-08-15 13:22:16 +05:30
Pranshul 4483fca7f0 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-15 13:22:15 +05:30
Pranshul 4e4235df66 New translations strings.xml (Spanish)
[ci skip]
2026-08-15 13:22:14 +05:30
Pranshul 08f72f283b New translations strings.xml (French)
[ci skip]
2026-08-15 13:22:13 +05:30
Pranshul 5ae561681a New translations strings.xml (Romanian)
[ci skip]
2026-08-15 13:22:12 +05:30
reveler-hub c5b6222c41 Fix FPAS alerts to respect app language for multilingual CAP messages 2026-08-15 17:17:39 +12:00
PranshulGG b3d46603c9 drawable and missin strings 2026-08-15 10:33:09 +05:30
PranshulGG 457aa1ed42 clean stuff 2026-08-15 10:32:51 +05:30
PranshulGG 15c5353e70 add link for api config 2026-08-15 10:32:39 +05:30
PranshulGG b9373e8610 fix app exceptions 2026-08-15 10:32:20 +05:30
PranshulGG 97fd260333 more strings 2026-08-15 08:55:48 +05:30
Pranshul 3839dd6446 Merge pull request #1025 from PranshulGG/l10n_main
New Crowdin updates
2026-08-15 08:46:48 +05:30
PranshulGG 32c1a8cdcf fix text overflow 2026-08-15 08:44:39 +05:30
PranshulGG 3c2507a4a4 improve search 2026-08-15 08:43:48 +05:30
PranshulGG c64745d883 update db 2026-08-15 08:42:01 +05:30
PranshulGG e595a178cd clean up 2026-08-15 08:41:50 +05:30
PranshulGG 4d04f61356 past hours 2026-08-15 08:41:32 +05:30
PranshulGG 0cf8b9cb14 fix hourly forecasts 2026-08-15 08:41:21 +05:30
PranshulGG ca987ea01a cleanup 2026-08-15 08:40:49 +05:30
PranshulGG ce94ca03a9 add sleet, hail, mixed precip 2026-08-15 08:39:47 +05:30
PranshulGG f4cec63a20 get current time util 2026-08-15 08:39:26 +05:30
PranshulGG ff7498fff5 add met office 2026-08-15 08:38:59 +05:30
PranshulGG ffe5365f7b option to allow users to add their own api keys 2026-08-15 08:38:07 +05:30
PranshulGG baca28f67d keep cached past hours 2026-08-15 08:37:29 +05:30
Pranshul bf153b9b5d New translations strings.xml (Ukrainian)
[ci skip]
2026-08-15 07:27:05 +05:30
Pranshul 27de0caae2 New translations strings.xml (Turkish)
[ci skip]
2026-08-15 07:27:04 +05:30
Pranshul d6b536145f New translations strings.xml (Hungarian)
[ci skip]
2026-08-15 07:27:03 +05:30
Pranshul d90e2f46bb New translations strings.xml (Ukrainian)
[ci skip]
2026-08-15 00:54:57 +05:30
Pranshul b8b22aaf0f New translations strings.xml (Russian)
[ci skip]
2026-08-15 00:54:56 +05:30
Pranshul 3877bf8fe9 New translations strings.xml (Hungarian)
[ci skip]
2026-08-15 00:54:54 +05:30
Pranshul c9985050e7 New translations strings.xml (Indonesian)
[ci skip]
2026-08-14 18:41:04 +05:30
Pranshul 66e9c8210f New translations strings.xml (Ukrainian)
[ci skip]
2026-08-14 18:41:03 +05:30
Pranshul 354ce2c927 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-14 18:41:02 +05:30
Pranshul 4410e0914b New translations strings.xml (Korean)
[ci skip]
2026-08-14 12:19:23 +05:30
Pranshul c0b3cbb1e6 New translations strings.xml (Finnish)
[ci skip]
2026-08-14 12:19:21 +05:30
Pranshul ce2a10cc05 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-13 23:22:38 +05:30
Pranshul bd7bf5aaa7 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-13 23:22:36 +05:30
Pranshul 3296ded4d4 New translations strings.xml (Filipino)
[ci skip]
2026-08-13 23:22:35 +05:30
Pranshul 62b0481fd0 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-13 23:22:33 +05:30
Pranshul 142395f6f4 New translations strings.xml (Kazakh)
[ci skip]
2026-08-13 23:22:32 +05:30
Pranshul 022e74a67f New translations strings.xml (Thai)
[ci skip]
2026-08-13 23:22:31 +05:30
Pranshul 8c1087e17e New translations strings.xml (Persian)
[ci skip]
2026-08-13 23:22:29 +05:30
Pranshul 1ad71b45ae New translations strings.xml (Indonesian)
[ci skip]
2026-08-13 23:22:27 +05:30
Pranshul 97d1d37c2c New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-13 23:22:26 +05:30
Pranshul 4b627aa43b New translations strings.xml (Vietnamese)
[ci skip]
2026-08-13 23:22:24 +05:30
Pranshul e4318a3b41 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-13 23:22:23 +05:30
Pranshul 4ffaaa32df New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-13 23:22:21 +05:30
Pranshul 11f29a88aa New translations strings.xml (Ukrainian)
[ci skip]
2026-08-13 23:22:20 +05:30
Pranshul 1166b749e2 New translations strings.xml (Turkish)
[ci skip]
2026-08-13 23:22:18 +05:30
Pranshul 686bd471c8 New translations strings.xml (Swedish)
[ci skip]
2026-08-13 23:22:17 +05:30
Pranshul 0d8c6f8419 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-13 23:22:15 +05:30
Pranshul da2d719bcb New translations strings.xml (Slovenian)
[ci skip]
2026-08-13 23:22:14 +05:30
Pranshul 34f8eed802 New translations strings.xml (Russian)
[ci skip]
2026-08-13 23:22:12 +05:30
Pranshul 000ba4beb4 New translations strings.xml (Portuguese)
[ci skip]
2026-08-13 23:22:11 +05:30
Pranshul ec7ad6c9dc New translations strings.xml (Polish)
[ci skip]
2026-08-13 23:22:09 +05:30
Pranshul 81ede0378d New translations strings.xml (Dutch)
[ci skip]
2026-08-13 23:22:08 +05:30
Pranshul 5109e37581 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-13 23:22:06 +05:30
Pranshul 0fd6ed57b1 New translations strings.xml (Korean)
[ci skip]
2026-08-13 23:22:05 +05:30
Pranshul 6301edd296 New translations strings.xml (Japanese)
[ci skip]
2026-08-13 23:22:03 +05:30
Pranshul a26545ecee New translations strings.xml (Italian)
[ci skip]
2026-08-13 23:22:02 +05:30
Pranshul bad24cbbee New translations strings.xml (Hungarian)
[ci skip]
2026-08-13 23:22:00 +05:30
Pranshul 549b78cae9 New translations strings.xml (Hebrew)
[ci skip]
2026-08-13 23:21:59 +05:30
Pranshul 9ce8df05f1 New translations strings.xml (Finnish)
[ci skip]
2026-08-13 23:21:57 +05:30
Pranshul d92e481ffb New translations strings.xml (Greek)
[ci skip]
2026-08-13 23:21:56 +05:30
Pranshul a66bf67cc6 New translations strings.xml (German)
[ci skip]
2026-08-13 23:21:54 +05:30
Pranshul 9d82060e81 New translations strings.xml (Czech)
[ci skip]
2026-08-13 23:21:53 +05:30
Pranshul 9d7fd99833 New translations strings.xml (Catalan)
[ci skip]
2026-08-13 23:21:51 +05:30
Pranshul 87f59b4641 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-13 23:21:50 +05:30
Pranshul f29a788455 New translations strings.xml (Spanish)
[ci skip]
2026-08-13 23:21:48 +05:30
Pranshul b546f639db New translations strings.xml (French)
[ci skip]
2026-08-13 23:21:47 +05:30
Pranshul 57a4ff70ec New translations strings.xml (Romanian)
[ci skip]
2026-08-13 23:21:46 +05:30
Pranshul 2afd7d3070 Merge pull request #1020 from PranshulGG/l10n_main
New Crowdin updates
2026-08-13 21:27:46 +05:30
PranshulGG aa0f619657 missing strings 2026-08-13 21:18:14 +05:30
PranshulGG 64c3e96567 add uv index widget 2026-08-13 18:30:06 +05:30
Pranshul a90fe0c672 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-13 16:46:08 +05:30
Pranshul fcb3d10186 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-13 16:46:07 +05:30
Pranshul f6e05ce542 New translations strings.xml (Filipino)
[ci skip]
2026-08-13 16:46:05 +05:30
Pranshul 19e02c4c29 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-13 16:46:04 +05:30
Pranshul c7c88ce9f4 New translations strings.xml (Kazakh)
[ci skip]
2026-08-13 16:46:02 +05:30
Pranshul 5de0f00718 New translations strings.xml (Thai)
[ci skip]
2026-08-13 16:46:01 +05:30
Pranshul d75b12344f New translations strings.xml (Persian)
[ci skip]
2026-08-13 16:46:00 +05:30
Pranshul ca48c0c09e New translations strings.xml (Indonesian)
[ci skip]
2026-08-13 16:45:58 +05:30
Pranshul ae1d4fc7bd New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-13 16:45:57 +05:30
Pranshul 06e11a70f8 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-13 16:45:55 +05:30
Pranshul 38cf3fc198 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-13 16:45:54 +05:30
Pranshul 5bb6206303 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-13 16:45:52 +05:30
Pranshul 1ed86e03e3 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-13 16:45:51 +05:30
Pranshul 85301241cc New translations strings.xml (Turkish)
[ci skip]
2026-08-13 16:45:49 +05:30
Pranshul 5f6c014b7e New translations strings.xml (Swedish)
[ci skip]
2026-08-13 16:45:48 +05:30
Pranshul 03f848db04 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-13 16:45:46 +05:30
Pranshul 68ca3803d4 New translations strings.xml (Slovenian)
[ci skip]
2026-08-13 16:45:44 +05:30
Pranshul 6b81cfb922 New translations strings.xml (Russian)
[ci skip]
2026-08-13 16:45:42 +05:30
Pranshul c3e0c2ee7c New translations strings.xml (Portuguese)
[ci skip]
2026-08-13 16:45:41 +05:30
Pranshul 6247cf2916 New translations strings.xml (Polish)
[ci skip]
2026-08-13 16:45:40 +05:30
Pranshul b845518e41 New translations strings.xml (Dutch)
[ci skip]
2026-08-13 16:45:38 +05:30
Pranshul d8eaf32a0e New translations strings.xml (Lithuanian)
[ci skip]
2026-08-13 16:45:37 +05:30
Pranshul 746aa01593 New translations strings.xml (Korean)
[ci skip]
2026-08-13 16:45:35 +05:30
Pranshul 7b44cca756 New translations strings.xml (Japanese)
[ci skip]
2026-08-13 16:45:34 +05:30
Pranshul 44a5e23be2 New translations strings.xml (Italian)
[ci skip]
2026-08-13 16:45:33 +05:30
Pranshul 3277d1b9df New translations strings.xml (Hungarian)
[ci skip]
2026-08-13 16:45:31 +05:30
Pranshul 9867b4e5ba New translations strings.xml (Hebrew)
[ci skip]
2026-08-13 16:45:29 +05:30
Pranshul 9fd9c035ed New translations strings.xml (Finnish)
[ci skip]
2026-08-13 16:45:28 +05:30
Pranshul f1264e723f New translations strings.xml (Greek)
[ci skip]
2026-08-13 16:45:26 +05:30
Pranshul af25ffd493 New translations strings.xml (German)
[ci skip]
2026-08-13 16:45:25 +05:30
Pranshul d7a12c999e New translations strings.xml (Czech)
[ci skip]
2026-08-13 16:45:23 +05:30
Pranshul 11ea26a6e1 New translations strings.xml (Catalan)
[ci skip]
2026-08-13 16:45:22 +05:30
Pranshul 74d5a3592a New translations strings.xml (Bulgarian)
[ci skip]
2026-08-13 16:45:21 +05:30
Pranshul 0e80f21b44 New translations strings.xml (Spanish)
[ci skip]
2026-08-13 16:45:19 +05:30
Pranshul c0500e56fa New translations strings.xml (French)
[ci skip]
2026-08-13 16:45:17 +05:30
Pranshul 7c23fc8b23 New translations strings.xml (Romanian)
[ci skip]
2026-08-13 16:45:16 +05:30
PranshulGG 9dd8eea5c7 add precipitation probability to Weather 1 widget closes #1010 2026-08-13 15:51:21 +05:30
PranshulGG 3ba07102b8 add precipitation probability to Weather 1 widget closes #1010 2026-08-13 15:51:15 +05:30
PranshulGG 343c3d4bc2 add new hourly widget 2026-08-13 15:50:48 +05:30
PranshulGG 1e150e287b missing strings 2026-08-13 11:26:29 +05:30
PranshulGG 7b437779eb missing strings 2026-08-13 11:03:17 +05:30
PranshulGG db7debcd8e localized units 2026-08-13 11:01:16 +05:30
PranshulGG c860a1481f more missing strings 2026-08-13 10:57:18 +05:30
Pranshul 676edae685 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-13 10:50:22 +05:30
Pranshul 2341832053 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-13 10:50:21 +05:30
Pranshul ec59b6766c New translations strings.xml (Filipino)
[ci skip]
2026-08-13 10:50:19 +05:30
Pranshul d54a57194e New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-13 10:50:18 +05:30
Pranshul bf007a6523 New translations strings.xml (Kazakh)
[ci skip]
2026-08-13 10:50:17 +05:30
Pranshul a85c840fe2 New translations strings.xml (Thai)
[ci skip]
2026-08-13 10:50:16 +05:30
Pranshul 969848f498 New translations strings.xml (Persian)
[ci skip]
2026-08-13 10:50:14 +05:30
Pranshul 67fc3b346d New translations strings.xml (Indonesian)
[ci skip]
2026-08-13 10:50:13 +05:30
Pranshul afc2b06f6b New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-13 10:50:12 +05:30
Pranshul 0ac7fe7c47 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-13 10:50:11 +05:30
Pranshul 1a41cd5a47 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-13 10:50:09 +05:30
Pranshul 56c6cef6b8 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-13 10:50:08 +05:30
Pranshul 5da8a878f5 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-13 10:50:07 +05:30
Pranshul cfbdf03d96 New translations strings.xml (Turkish)
[ci skip]
2026-08-13 10:50:06 +05:30
Pranshul e95b3b8b7c New translations strings.xml (Swedish)
[ci skip]
2026-08-13 10:50:04 +05:30
Pranshul f85017f43f New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-13 10:50:03 +05:30
Pranshul e7a388f16b New translations strings.xml (Slovenian)
[ci skip]
2026-08-13 10:50:02 +05:30
Pranshul 8bea7d3c6d New translations strings.xml (Russian)
[ci skip]
2026-08-13 10:50:01 +05:30
Pranshul e0eeeb6eb2 New translations strings.xml (Portuguese)
[ci skip]
2026-08-13 10:49:59 +05:30
Pranshul b4a136bb54 New translations strings.xml (Polish)
[ci skip]
2026-08-13 10:49:58 +05:30
Pranshul 518bad5042 New translations strings.xml (Dutch)
[ci skip]
2026-08-13 10:49:57 +05:30
Pranshul 3dbbfeee8a New translations strings.xml (Lithuanian)
[ci skip]
2026-08-13 10:49:56 +05:30
Pranshul 0cbf5da7c4 New translations strings.xml (Korean)
[ci skip]
2026-08-13 10:49:54 +05:30
Pranshul fbd5eb87f5 New translations strings.xml (Japanese)
[ci skip]
2026-08-13 10:49:53 +05:30
Pranshul 4a878ed801 New translations strings.xml (Italian)
[ci skip]
2026-08-13 10:49:52 +05:30
Pranshul cde66f9394 New translations strings.xml (Hungarian)
[ci skip]
2026-08-13 10:49:51 +05:30
Pranshul dfaa25f17b New translations strings.xml (Hebrew)
[ci skip]
2026-08-13 10:49:50 +05:30
Pranshul 90c2737e10 New translations strings.xml (Finnish)
[ci skip]
2026-08-13 10:49:48 +05:30
Pranshul 6dd2f0665a New translations strings.xml (Greek)
[ci skip]
2026-08-13 10:49:47 +05:30
Pranshul aa4ea06aff New translations strings.xml (German)
[ci skip]
2026-08-13 10:49:46 +05:30
Pranshul 0d5626a150 New translations strings.xml (Czech)
[ci skip]
2026-08-13 10:49:45 +05:30
Pranshul 30c4848db5 New translations strings.xml (Catalan)
[ci skip]
2026-08-13 10:49:43 +05:30
Pranshul f2f39087b3 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-13 10:49:42 +05:30
Pranshul d94db12e0e New translations strings.xml (Spanish)
[ci skip]
2026-08-13 10:49:41 +05:30
Pranshul 9f097a350b New translations strings.xml (French)
[ci skip]
2026-08-13 10:49:40 +05:30
Pranshul ea1ed70e69 New translations strings.xml (Romanian)
[ci skip]
2026-08-13 10:49:38 +05:30
PranshulGG fda0a76218 add missing strings closes #948 2026-08-13 10:39:02 +05:30
PranshulGG 4bd9cbb44a add missing strings 2026-08-13 09:10:20 +05:30
Pranshul 4c57b6e129 New translations strings.xml (German)
[ci skip]
2026-08-13 04:45:08 +05:30
PranshulGG 57571c6bad keep past hour in the forecast 2026-08-12 22:12:40 +05:30
PranshulGG 47848a5fa2 keep past hour in the forecast 2026-08-12 22:02:39 +05:30
PranshulGG 794ccfca76 keep past hour in the forecast 2026-08-12 21:54:24 +05:30
PranshulGG 8670db4227 Fixed wrong pressure and humidity 2026-08-12 21:38:24 +05:30
PranshulGG 88f7bdc881 fix crashes 2026-08-12 21:36:53 +05:30
PranshulGG 2e56c74ac4 added gismeteo for russia closes #1005 2026-08-12 21:36:41 +05:30
Pranshul 47f94f39e9 New translations strings.xml (Hebrew)
[ci skip]
2026-08-12 01:26:33 +05:30
Pranshul 073312a234 New translations strings.xml (Greek)
[ci skip]
2026-08-11 19:27:11 +05:30
Pranshul 1c41b2ae59 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-11 13:15:36 +05:30
Pranshul 2c741f5c44 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-11 05:02:58 +05:30
Pranshul a51e9c0ca8 New translations strings.xml (Russian)
[ci skip]
2026-08-11 05:02:57 +05:30
Pranshul 6841eb6b2e New translations strings.xml (Lithuanian)
[ci skip]
2026-08-11 05:02:56 +05:30
Pranshul 4c0ba7fcdb New translations strings.xml (German)
[ci skip]
2026-08-11 05:02:54 +05:30
Pranshul 0a163fd87b New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-10 22:49:43 +05:30
Pranshul cb173476f2 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-10 22:49:42 +05:30
Pranshul b5a03ea640 New translations strings.xml (Finnish)
[ci skip]
2026-08-10 22:49:41 +05:30
Pranshul d467db7714 New translations strings.xml (Catalan)
[ci skip]
2026-08-10 22:49:39 +05:30
PranshulGG 8d40cfcc94 Fixed unwanted calls to alert APIs 2026-08-10 22:11:53 +05:30
PranshulGG 792f9370b2 Fixed unwanted calls to alert APIs 2026-08-10 22:11:47 +05:30
PranshulGG e8e08235c2 FOSS Public Alert Server added as alert source closes #1004 2026-08-10 22:11:26 +05:30
PranshulGG ad0a96f290 date cutting off in German closes #1007 2026-08-10 17:34:14 +05:30
PranshulGG a767a5fbeb Fix overflow issue closes #1008 2026-08-10 17:31:28 +05:30
Pranshul 499c8989f8 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-10 16:53:04 +05:30
Pranshul 8e31cfaeda New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-10 16:53:02 +05:30
Pranshul 355a5f9bf0 New translations strings.xml (Filipino)
[ci skip]
2026-08-10 16:53:01 +05:30
Pranshul c6dfcabf23 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-10 16:53:00 +05:30
Pranshul ba0e41f1c8 New translations strings.xml (Kazakh)
[ci skip]
2026-08-10 16:52:58 +05:30
Pranshul 8a5faa6b06 New translations strings.xml (Thai)
[ci skip]
2026-08-10 16:52:57 +05:30
Pranshul 400295659e New translations strings.xml (Persian)
[ci skip]
2026-08-10 16:52:55 +05:30
Pranshul 2c42390128 New translations strings.xml (Indonesian)
[ci skip]
2026-08-10 16:52:54 +05:30
Pranshul 5decbf0144 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-10 16:52:53 +05:30
Pranshul 83520f5802 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-10 16:52:51 +05:30
Pranshul e3e1efbdd1 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-10 16:52:50 +05:30
Pranshul dc896faba3 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-10 16:52:49 +05:30
Pranshul e20a4fabb1 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-10 16:52:48 +05:30
Pranshul 898bfc6eba New translations strings.xml (Turkish)
[ci skip]
2026-08-10 16:52:46 +05:30
Pranshul 92ce0a5706 New translations strings.xml (Swedish)
[ci skip]
2026-08-10 16:52:45 +05:30
Pranshul 61d290a4c9 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-10 16:52:44 +05:30
Pranshul 0dc84f3d18 New translations strings.xml (Slovenian)
[ci skip]
2026-08-10 16:52:42 +05:30
Pranshul ff9c25172f New translations strings.xml (Russian)
[ci skip]
2026-08-10 16:52:41 +05:30
Pranshul 61aabaecbd New translations strings.xml (Portuguese)
[ci skip]
2026-08-10 16:52:39 +05:30
Pranshul 3849b3251e New translations strings.xml (Polish)
[ci skip]
2026-08-10 16:52:38 +05:30
Pranshul 366c584259 New translations strings.xml (Dutch)
[ci skip]
2026-08-10 16:52:37 +05:30
Pranshul 00a47d069d New translations strings.xml (Lithuanian)
[ci skip]
2026-08-10 16:52:35 +05:30
Pranshul 770d5ba0e5 New translations strings.xml (Korean)
[ci skip]
2026-08-10 16:52:34 +05:30
Pranshul 80414f110a New translations strings.xml (Japanese)
[ci skip]
2026-08-10 16:52:33 +05:30
Pranshul 18e2d01d94 New translations strings.xml (Italian)
[ci skip]
2026-08-10 16:52:32 +05:30
Pranshul 7113945a81 New translations strings.xml (Hungarian)
[ci skip]
2026-08-10 16:52:29 +05:30
Pranshul d12bb7d151 New translations strings.xml (Hebrew)
[ci skip]
2026-08-10 16:52:28 +05:30
Pranshul 8f71864224 New translations strings.xml (Finnish)
[ci skip]
2026-08-10 16:52:26 +05:30
Pranshul a09f650d00 New translations strings.xml (Greek)
[ci skip]
2026-08-10 16:52:25 +05:30
Pranshul fe7a374952 New translations strings.xml (German)
[ci skip]
2026-08-10 16:52:24 +05:30
Pranshul 79ed86b0d5 New translations strings.xml (Czech)
[ci skip]
2026-08-10 16:52:22 +05:30
Pranshul 140f54aebf New translations strings.xml (Catalan)
[ci skip]
2026-08-10 16:52:21 +05:30
Pranshul 2a6a6b8d87 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-10 16:52:20 +05:30
Pranshul 3827307a32 New translations strings.xml (Spanish)
[ci skip]
2026-08-10 16:52:18 +05:30
Pranshul 0a26842590 New translations strings.xml (French)
[ci skip]
2026-08-10 16:52:17 +05:30
Pranshul 728cd13c19 New translations strings.xml (Romanian)
[ci skip]
2026-08-10 16:52:16 +05:30
PranshulGG 9248dd7e6d rounded banner 2026-08-10 13:26:28 +05:30
PranshulGG 9a954574e9 update previews 2026-08-10 13:24:24 +05:30
PranshulGG 32dbc9b340 pick between 54 models for Open-Meteo 2026-08-10 11:30:59 +05:30
PranshulGG 5abefe75c5 pick between 54 models for Open-Meteo 2026-08-10 11:30:51 +05:30
Pranshul 1da76b134c New translations strings.xml (French)
[ci skip]
2026-08-10 09:44:33 +05:30
Pranshul 34fdf58285 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-10 03:10:02 +05:30
Pranshul 9bb7714bbd New translations strings.xml (Russian)
[ci skip]
2026-08-10 03:10:01 +05:30
Pranshul 0f75770d17 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-09 21:07:48 +05:30
Pranshul 55c8fb3f22 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-09 21:07:47 +05:30
Pranshul 7caaa66363 New translations strings.xml (Filipino)
[ci skip]
2026-08-09 21:07:46 +05:30
Pranshul 3a05449f4a New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-09 21:07:45 +05:30
Pranshul 9922678abb New translations strings.xml (Kazakh)
[ci skip]
2026-08-09 21:07:43 +05:30
Pranshul 25ca4e67c7 New translations strings.xml (Thai)
[ci skip]
2026-08-09 21:07:42 +05:30
Pranshul 3bf3a5b225 New translations strings.xml (Persian)
[ci skip]
2026-08-09 21:07:41 +05:30
Pranshul f03eaab4cf New translations strings.xml (Indonesian)
[ci skip]
2026-08-09 21:07:40 +05:30
Pranshul 430dc185fb New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-09 21:07:39 +05:30
Pranshul 3a588465d2 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-09 21:07:38 +05:30
Pranshul 1584bca762 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-09 21:07:36 +05:30
Pranshul 12017b11c3 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-09 21:07:35 +05:30
Pranshul a69abf866a New translations strings.xml (Ukrainian)
[ci skip]
2026-08-09 21:07:34 +05:30
Pranshul 4edcf7b3ae New translations strings.xml (Turkish)
[ci skip]
2026-08-09 21:07:33 +05:30
Pranshul 3dcdeb197f New translations strings.xml (Swedish)
[ci skip]
2026-08-09 21:07:31 +05:30
Pranshul 55927d15ae New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-09 21:07:30 +05:30
Pranshul 3c5719f774 New translations strings.xml (Slovenian)
[ci skip]
2026-08-09 21:07:29 +05:30
Pranshul bdc30e16e3 New translations strings.xml (Russian)
[ci skip]
2026-08-09 21:07:28 +05:30
Pranshul 26ae9fdcd0 New translations strings.xml (Portuguese)
[ci skip]
2026-08-09 21:07:27 +05:30
Pranshul 91dbab2309 New translations strings.xml (Polish)
[ci skip]
2026-08-09 21:07:25 +05:30
Pranshul 802ce27bba New translations strings.xml (Dutch)
[ci skip]
2026-08-09 21:07:24 +05:30
Pranshul 09d88b1d19 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-09 21:07:23 +05:30
Pranshul 124f9f24fb New translations strings.xml (Korean)
[ci skip]
2026-08-09 21:07:22 +05:30
Pranshul 03cf055f52 New translations strings.xml (Japanese)
[ci skip]
2026-08-09 21:07:21 +05:30
Pranshul 912187a9b2 New translations strings.xml (Italian)
[ci skip]
2026-08-09 21:07:19 +05:30
Pranshul a302d51d70 New translations strings.xml (Hungarian)
[ci skip]
2026-08-09 21:07:18 +05:30
Pranshul 632a614894 New translations strings.xml (Hebrew)
[ci skip]
2026-08-09 21:07:17 +05:30
Pranshul a5a7d75b8d New translations strings.xml (Finnish)
[ci skip]
2026-08-09 21:07:16 +05:30
Pranshul 24915b42b1 New translations strings.xml (Greek)
[ci skip]
2026-08-09 21:07:15 +05:30
Pranshul bbb084cf73 New translations strings.xml (German)
[ci skip]
2026-08-09 21:07:13 +05:30
Pranshul 32f2587a50 New translations strings.xml (Czech)
[ci skip]
2026-08-09 21:07:12 +05:30
Pranshul 610088c8b5 New translations strings.xml (Catalan)
[ci skip]
2026-08-09 21:07:11 +05:30
Pranshul da5f903c74 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-09 21:07:10 +05:30
Pranshul ce3bf468d4 New translations strings.xml (Spanish)
[ci skip]
2026-08-09 21:07:09 +05:30
Pranshul 1158709791 New translations strings.xml (French)
[ci skip]
2026-08-09 21:07:07 +05:30
Pranshul a36ca02589 New translations strings.xml (Romanian)
[ci skip]
2026-08-09 21:07:06 +05:30
PranshulGG 23402a272c update app previews 2026-08-09 20:58:40 +05:30
PranshulGG abfca933cd WMO Severe Weather added as alert source 2026-08-09 18:07:08 +05:30
PranshulGG 45ad8a2011 Improved location list UI 2026-08-09 18:06:38 +05:30
PranshulGG 64f55c9da0 added missing strings closes 2026-08-09 18:01:36 +05:30
Pranshul d1b62cbb31 Merge pull request #1001 from PranshulGG/l10n_main
New Crowdin updates
2026-08-09 11:05:01 +05:30
Pranshul f6a62bbeec Merge branch 'main' into l10n_main
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-08-09 11:04:49 +05:30
Pranshul 3cbf80620b New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-09 08:57:53 +05:30
Pranshul 34177b4cf7 New translations strings.xml (German)
[ci skip]
2026-08-08 23:44:56 +05:30
Pranshul aeac03327f New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-08-08 23:44:54 +05:30
Pranshul 06e4df257c New translations strings.xml (Serbian (Latin))
[ci skip]
2026-08-08 23:44:53 +05:30
Pranshul f9646ef13d New translations strings.xml (Filipino)
[ci skip]
2026-08-08 23:44:52 +05:30
Pranshul bd9b4f5664 New translations strings.xml (Azerbaijani)
[ci skip]
2026-08-08 23:44:51 +05:30
Pranshul f29fcba543 New translations strings.xml (Kazakh)
[ci skip]
2026-08-08 23:44:50 +05:30
Pranshul 8a35f6f949 New translations strings.xml (Thai)
[ci skip]
2026-08-08 23:44:49 +05:30
Pranshul 3744b6133f New translations strings.xml (Persian)
[ci skip]
2026-08-08 23:44:47 +05:30
Pranshul 744f9e335a New translations strings.xml (Indonesian)
[ci skip]
2026-08-08 23:44:46 +05:30
Pranshul 88919d873a New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-08 23:44:45 +05:30
Pranshul 79c96602fa New translations strings.xml (Vietnamese)
[ci skip]
2026-08-08 23:44:44 +05:30
Pranshul abf4741a7f New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-08 23:44:43 +05:30
Pranshul 442c4267fd New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-08 23:44:41 +05:30
Pranshul 1613431e95 New translations strings.xml (Ukrainian)
[ci skip]
2026-08-08 23:44:40 +05:30
Pranshul f8a889a8ed New translations strings.xml (Turkish)
[ci skip]
2026-08-08 23:44:39 +05:30
Pranshul 5929359a1b New translations strings.xml (Swedish)
[ci skip]
2026-08-08 23:44:38 +05:30
Pranshul 7e59078be1 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-08-08 23:44:37 +05:30
Pranshul f2feb8fa6f New translations strings.xml (Slovenian)
[ci skip]
2026-08-08 23:44:35 +05:30
Pranshul c43862329a New translations strings.xml (Russian)
[ci skip]
2026-08-08 23:44:34 +05:30
Pranshul 1ecdac5096 New translations strings.xml (Portuguese)
[ci skip]
2026-08-08 23:44:33 +05:30
Pranshul c9f983ca84 New translations strings.xml (Polish)
[ci skip]
2026-08-08 23:44:32 +05:30
Pranshul f80c9585fa New translations strings.xml (Dutch)
[ci skip]
2026-08-08 23:44:31 +05:30
Pranshul 62df55f029 New translations strings.xml (Lithuanian)
[ci skip]
2026-08-08 23:44:30 +05:30
Pranshul 39c16784eb New translations strings.xml (Korean)
[ci skip]
2026-08-08 23:44:28 +05:30
Pranshul efc6b72f3e New translations strings.xml (Japanese)
[ci skip]
2026-08-08 23:44:27 +05:30
Pranshul a8ad1c098d New translations strings.xml (Italian)
[ci skip]
2026-08-08 23:44:26 +05:30
Pranshul 9a510c1b8b New translations strings.xml (Hungarian)
[ci skip]
2026-08-08 23:44:25 +05:30
Pranshul 40f3d482fa New translations strings.xml (Hebrew)
[ci skip]
2026-08-08 23:44:24 +05:30
Pranshul e2c4319698 New translations strings.xml (Finnish)
[ci skip]
2026-08-08 23:44:22 +05:30
Pranshul c8d414cbca New translations strings.xml (Greek)
[ci skip]
2026-08-08 23:44:21 +05:30
Pranshul 76a7320831 New translations strings.xml (Czech)
[ci skip]
2026-08-08 23:44:20 +05:30
Pranshul fa74d3ded9 New translations strings.xml (Catalan)
[ci skip]
2026-08-08 23:44:19 +05:30
Pranshul 07e43b8af2 New translations strings.xml (Bulgarian)
[ci skip]
2026-08-08 23:44:17 +05:30
Pranshul 6b6375de69 New translations strings.xml (Spanish)
[ci skip]
2026-08-08 23:44:16 +05:30
Pranshul bc68cca8cb New translations strings.xml (French)
[ci skip]
2026-08-08 23:44:15 +05:30
Pranshul 5637c6da45 New translations strings.xml (Romanian)
[ci skip]
2026-08-08 23:44:14 +05:30
PranshulGG 3f2ba808d5 added missing strings closes #1013 2026-08-08 20:21:57 +05:30
PranshulGG 4707619b9f crash fixes 2026-08-08 20:15:03 +05:30
Pranshul e7dfde895f New translations strings.xml (Vietnamese)
[ci skip]
2026-08-08 17:29:53 +05:30
PranshulGG a51335db29 improve intro screen 2026-08-08 11:09:35 +05:30
Pranshul 84a4a1e551 New translations strings.xml (Romanian)
[ci skip]
2026-08-08 00:34:45 +05:30
Pranshul 75a57bb369 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-07 18:15:33 +05:30
Pranshul 8be288e838 New translations strings.xml (Dutch)
[ci skip]
2026-08-07 18:15:32 +05:30
Pranshul 8278e2d0ab New translations strings.xml (Hebrew)
[ci skip]
2026-08-07 12:00:41 +05:30
Pranshul fafc78e2c0 New translations strings.xml (Spanish)
[ci skip]
2026-08-07 05:48:46 +05:30
Pranshul 1e73ace403 New translations strings.xml (Indonesian)
[ci skip]
2026-08-06 23:10:40 +05:30
Pranshul c9e1657855 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-06 23:10:39 +05:30
Pranshul 4b70a2e717 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-06 23:10:37 +05:30
Pranshul c5fd01f5b3 New translations strings.xml (Greek)
[ci skip]
2026-08-06 23:10:36 +05:30
PranshulGG 430bd7d94a fix dew point crashes 2026-08-06 20:32:08 +05:30
Pranshul b0278c0fc1 New translations strings.xml (Indonesian)
[ci skip]
2026-08-06 17:06:38 +05:30
Pranshul 82dbed4a08 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-06 17:06:36 +05:30
Pranshul 17ff5e9985 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-08-06 17:06:35 +05:30
Pranshul 770c4c09ac New translations strings.xml (Lithuanian)
[ci skip]
2026-08-06 17:06:33 +05:30
Pranshul 4c842b52e5 New translations strings.xml (Italian)
[ci skip]
2026-08-06 17:06:32 +05:30
Pranshul 073925719e New translations strings.xml (Greek)
[ci skip]
2026-08-06 17:06:31 +05:30
Pranshul 39c2197b40 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-06 11:10:37 +05:30
Pranshul e19032848e New translations strings.xml (Lithuanian)
[ci skip]
2026-08-06 11:10:35 +05:30
PranshulGG 16fa2366f0 Wrong temperature summary 2026-08-06 09:28:21 +05:30
Pranshul 8d28ed98c1 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-06 04:33:52 +05:30
Pranshul 5155b2f748 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-05 22:14:10 +05:30
Pranshul 7ab05ff903 New translations strings.xml (Russian)
[ci skip]
2026-08-05 22:14:09 +05:30
Pranshul fb966ac1fc New translations strings.xml (Finnish)
[ci skip]
2026-08-05 22:14:07 +05:30
PranshulGG 52ae155b73 translation fixes 2026-08-05 18:26:46 +05:30
Pranshul 5282aa8b4a New translations strings.xml (Chinese Traditional)
[ci skip]
2026-08-05 16:10:03 +05:30
PranshulGG 97ea5abc17 fix strings 2026-08-05 13:48:54 +05:30
PranshulGG 74f1f9ca39 update logos 2026-08-05 12:31:23 +05:30
PranshulGG 2272157b60 fix application id 2026-08-05 12:27:39 +05:30
PranshulGG a78eec66bd update readme 2026-08-05 12:26:38 +05:30
PranshulGG 4bc33951e4 missing strings 2026-08-05 12:26:25 +05:30
PranshulGG b5a7677db0 fix alert crashes 2026-08-05 12:26:16 +05:30
Pranshul e21956ee13 New translations strings.xml (Romanian)
[ci skip]
2026-08-05 09:12:03 +05:30
Pranshul 0421684d8b New translations strings.xml (Romanian)
[ci skip]
2026-08-05 02:48:37 +05:30
Pranshul 1e50046c0f New translations strings.xml (Japanese)
[ci skip]
2026-08-04 19:56:06 +05:30
Pranshul df79648fbc New translations strings.xml (Korean)
[ci skip]
2026-08-04 13:33:00 +05:30
Pranshul 4e7b8a3422 New translations strings.xml (Hebrew)
[ci skip]
2026-08-04 06:03:36 +05:30
PranshulGG 5aa163f919 add privacy policy 2026-08-03 20:24:35 +05:30
PranshulGG 3ca2d4e372 Added dew point scale closes #990 2026-08-03 16:33:22 +05:30
PranshulGG 0f49cff675 fixed landscape layout #991 2026-08-03 16:17:38 +05:30
PranshulGG b58d1396bc options to change text and background color closes #973 2026-08-03 15:35:02 +05:30
PranshulGG d91e108603 fix version 2026-08-03 11:53:32 +05:30
PranshulGG 62755e80d0 license 2026-08-03 11:53:12 +05:30
PranshulGG d0e1638960 Add dates to the daily forecast on the main screen #975 2026-08-03 11:53:06 +05:30
PranshulGG 38779270c6 translation fixes 2026-08-03 11:25:31 +05:30
PranshulGG 3267ad4fc6 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-08-03 11:13:24 +05:30
PranshulGG 5aafd36fb6 update version 2026-08-03 11:13:10 +05:30
PranshulGG 2cd03623da Weather3 customizations 2026-08-03 11:11:57 +05:30
PranshulGG 0537795ef0 new as a search source 2026-08-03 11:11:26 +05:30
Pranshul 8f76ec6a64 Merge pull request #998 from PranshulGG/l10n_main
New Crowdin updates
2026-08-03 11:10:52 +05:30
Pranshul 95dde6101d Merge pull request #1000 from hydrielax/main
fix: MeteoFranceCondition mapping to WeatherCondition
2026-08-03 11:08:16 +05:30
Pranshul e06d990a30 New translations strings.xml (Polish)
[ci skip]
2026-08-03 02:18:59 +05:30
Alexis Delage d4aff5cbc4 fix: MeteoFranceCondition mapping to WeatherCondition
The fix is based on the official icons corresponding to each code, and also on my own experience using both WeatherMaster and MeteoFrance official app
2026-08-02 18:47:06 +02:00
Pranshul 08b8d07c83 New translations strings.xml (Czech)
[ci skip]
2026-08-02 20:23:41 +05:30
Pranshul 5b30275470 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-08-02 05:42:04 +05:30
PranshulGG 3104cbd6f2 icon drawable 2026-08-01 14:50:29 +05:30
PranshulGG daf794fc1c update db version 2026-08-01 14:50:17 +05:30
PranshulGG 07730aed97 add Changelog bottom sheet 2026-08-01 14:50:04 +05:30
PranshulGG 0445ac0359 add IPMA (Portugal) closes #983 2026-08-01 14:49:43 +05:30
Pranshul 59ac2eec33 New translations strings.xml (Vietnamese)
[ci skip]
2026-08-01 12:46:10 +05:30
Pranshul c595e82820 New translations strings.xml (Russian)
[ci skip]
2026-08-01 01:44:41 +05:30
Pranshul 2c5ee6c64e New translations strings.xml (French)
[ci skip]
2026-07-31 19:48:28 +05:30
Pranshul c194237425 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-31 11:47:37 +05:30
Pranshul a963a44674 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-31 01:18:09 +05:30
Pranshul 8bcb4ce8f6 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-31 01:18:07 +05:30
Pranshul 36ed8fca55 New translations strings.xml (Filipino)
[ci skip]
2026-07-31 01:18:06 +05:30
Pranshul c5681f1aec New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-31 01:18:05 +05:30
Pranshul c12f3b6cbd New translations strings.xml (Kazakh)
[ci skip]
2026-07-31 01:18:03 +05:30
Pranshul 5cb9a11b21 New translations strings.xml (Thai)
[ci skip]
2026-07-31 01:18:02 +05:30
Pranshul bba8005dd1 New translations strings.xml (Persian)
[ci skip]
2026-07-31 01:18:01 +05:30
Pranshul 6c3504a1db New translations strings.xml (Indonesian)
[ci skip]
2026-07-31 01:17:59 +05:30
Pranshul 64d92c8e5b New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-31 01:17:58 +05:30
Pranshul 064f44e47c New translations strings.xml (Vietnamese)
[ci skip]
2026-07-31 01:17:57 +05:30
Pranshul 83c647706a New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-31 01:17:55 +05:30
Pranshul 8732a73018 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-31 01:17:54 +05:30
Pranshul 70873b0170 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-31 01:17:53 +05:30
Pranshul 6fbeb3063b New translations strings.xml (Turkish)
[ci skip]
2026-07-31 01:17:52 +05:30
Pranshul 2462c0c8cc New translations strings.xml (Swedish)
[ci skip]
2026-07-31 01:17:50 +05:30
Pranshul 546eb7ef1f New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-31 01:17:49 +05:30
Pranshul 58221d8a4b New translations strings.xml (Slovenian)
[ci skip]
2026-07-31 01:17:48 +05:30
Pranshul 32d320a352 New translations strings.xml (Russian)
[ci skip]
2026-07-31 01:17:46 +05:30
Pranshul 6dbfb7269e New translations strings.xml (Portuguese)
[ci skip]
2026-07-31 01:17:45 +05:30
Pranshul b5dea96fc0 New translations strings.xml (Polish)
[ci skip]
2026-07-31 01:17:44 +05:30
Pranshul c057923404 New translations strings.xml (Dutch)
[ci skip]
2026-07-31 01:17:43 +05:30
Pranshul 69017417e7 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-31 01:17:41 +05:30
Pranshul dec36d4189 New translations strings.xml (Korean)
[ci skip]
2026-07-31 01:17:40 +05:30
Pranshul bd183a9f62 New translations strings.xml (Japanese)
[ci skip]
2026-07-31 01:17:39 +05:30
Pranshul fcaee23975 New translations strings.xml (Italian)
[ci skip]
2026-07-31 01:17:37 +05:30
Pranshul bd794e821a New translations strings.xml (Hungarian)
[ci skip]
2026-07-31 01:17:36 +05:30
Pranshul 4a91234729 New translations strings.xml (Hebrew)
[ci skip]
2026-07-31 01:17:35 +05:30
Pranshul 90aac42048 New translations strings.xml (Finnish)
[ci skip]
2026-07-31 01:17:33 +05:30
Pranshul 4aa1ba02ad New translations strings.xml (Greek)
[ci skip]
2026-07-31 01:17:32 +05:30
Pranshul d22a83b867 New translations strings.xml (Czech)
[ci skip]
2026-07-31 01:17:31 +05:30
Pranshul 7fbc3013d9 New translations strings.xml (Catalan)
[ci skip]
2026-07-31 01:17:29 +05:30
Pranshul d56c472911 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-31 01:17:28 +05:30
Pranshul f52879d45b New translations strings.xml (Spanish)
[ci skip]
2026-07-31 01:17:26 +05:30
Pranshul 320f332da6 New translations strings.xml (French)
[ci skip]
2026-07-31 01:17:25 +05:30
Pranshul 1881fb15d2 New translations strings.xml (Romanian)
[ci skip]
2026-07-31 01:17:24 +05:30
PranshulGG c00ea27aae Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-07-30 16:17:20 +05:30
PranshulGG 1db31d20d9 Add WEATHERAPI_KEY to gradle.properties 2026-07-30 16:17:12 +05:30
Pranshul 08a1f11408 Merge pull request #989 from PranshulGG/l10n_main
New Crowdin updates
2026-07-30 16:10:46 +05:30
Pranshul cc71c65b72 Merge branch 'main' into l10n_main
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-07-30 16:10:34 +05:30
Pranshul b6624c1e4f Merge pull request #994 from arpitagarwal1301/fix/976-visibility-graph-bounds
Fix visibility graph overflow
2026-07-30 16:08:26 +05:30
PranshulGG bff0c7465d new version check every 2hours 2026-07-30 16:07:24 +05:30
PranshulGG 2d575b8167 new strings 2026-07-30 16:07:10 +05:30
PranshulGG 6c6600d02c fix credits 2026-07-30 16:06:44 +05:30
PranshulGG 6af7d57ad3 edit location options 2026-07-30 16:06:34 +05:30
PranshulGG f27d92cd79 include next day hours closes #974 2026-07-30 16:06:09 +05:30
Pranshul 4a686a6862 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-30 12:46:49 +05:30
Pranshul a146adf69a New translations strings.xml (Polish)
[ci skip]
2026-07-30 06:14:21 +05:30
Pranshul 4adbafa9e0 New translations strings.xml (French)
[ci skip]
2026-07-29 23:46:08 +05:30
Pranshul f17dc42601 New translations strings.xml (Korean)
[ci skip]
2026-07-29 17:49:02 +05:30
PranshulGG 05d0749c77 upgrade db version 2026-07-29 17:29:07 +05:30
PranshulGG f8bcf885a8 new api 2026-07-29 17:28:53 +05:30
PranshulGG da6715d958 fix data reconciler 2026-07-29 17:28:46 +05:30
PranshulGG 5c3d5dab77 alerts 2026-07-29 17:28:16 +05:30
PranshulGG df96aa2481 alert screen 2026-07-29 17:28:03 +05:30
PranshulGG fcbb52f26b add weatherapi.com as alert source 2026-07-29 17:27:49 +05:30
Pranshul 81461f7c25 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-29 11:45:00 +05:30
Pranshul 9f0c63eff1 New translations strings.xml (Hebrew)
[ci skip]
2026-07-28 23:08:03 +05:30
Pranshul 5d3906df42 New translations strings.xml (Italian)
[ci skip]
2026-07-28 23:08:02 +05:30
Arpit Agarwal 9b6e1a2613 Fix visibility graph overflow 2026-07-28 18:59:47 +05:30
PranshulGG b6381be715 new drawable 2026-07-28 16:33:07 +05:30
PranshulGG ff8af9bd73 filter search results without timezone 2026-07-28 16:32:25 +05:30
PranshulGG 5cd825e052 Fixed null value crashes for NWS 2026-07-28 16:32:04 +05:30
Pranshul fef587a6e5 New translations strings.xml (Russian)
[ci skip]
2026-07-28 16:32:02 +05:30
Pranshul e018ed21c1 New translations strings.xml (Dutch)
[ci skip]
2026-07-28 16:32:00 +05:30
PranshulGG 7a55055a90 weather alerts 2026-07-28 16:31:44 +05:30
PranshulGG 981838b48f weather alerts 2026-07-28 16:31:37 +05:30
PranshulGG 1f350ce7ba weather alerts 2026-07-28 16:31:33 +05:30
PranshulGG 3290e68c63 weather alerts 2026-07-28 16:31:26 +05:30
PranshulGG 4f79efb80c weather alerts 2026-07-28 16:31:22 +05:30
PranshulGG 81b3caef4a weather alerts 2026-07-28 16:31:17 +05:30
PranshulGG c2739dee85 weather alerts 2026-07-28 16:30:58 +05:30
PranshulGG f36498c5c2 weather alerts 2026-07-28 16:30:47 +05:30
Pranshul 74984c3791 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-28 10:29:25 +05:30
Pranshul 2501a21cf4 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-28 10:29:23 +05:30
Pranshul 88f01a2f16 New translations strings.xml (Filipino)
[ci skip]
2026-07-28 10:29:22 +05:30
Pranshul 4063a8ddcf New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-28 10:29:21 +05:30
Pranshul 9d8ec47bb4 New translations strings.xml (Kazakh)
[ci skip]
2026-07-28 10:29:20 +05:30
Pranshul a20cd212b2 New translations strings.xml (Thai)
[ci skip]
2026-07-28 10:29:19 +05:30
Pranshul 01d3e8e9f9 New translations strings.xml (Persian)
[ci skip]
2026-07-28 10:29:17 +05:30
Pranshul 8dd6766d93 New translations strings.xml (Indonesian)
[ci skip]
2026-07-28 10:29:16 +05:30
Pranshul d798f7bf52 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-28 10:29:15 +05:30
Pranshul 5690d69b34 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-28 10:29:14 +05:30
Pranshul 477c62d18a New translations strings.xml (Ukrainian)
[ci skip]
2026-07-28 10:29:13 +05:30
Pranshul b99ac0dce8 New translations strings.xml (Turkish)
[ci skip]
2026-07-28 10:29:11 +05:30
Pranshul 90326e46c1 New translations strings.xml (Swedish)
[ci skip]
2026-07-28 10:29:10 +05:30
Pranshul 0d457b99cc New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-28 10:29:09 +05:30
Pranshul a3d15f71a8 New translations strings.xml (Slovenian)
[ci skip]
2026-07-28 10:29:08 +05:30
Pranshul 57d621b407 New translations strings.xml (Polish)
[ci skip]
2026-07-28 10:29:07 +05:30
Pranshul 8997b835f7 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-28 10:29:05 +05:30
Pranshul 0680be9d77 New translations strings.xml (Hungarian)
[ci skip]
2026-07-28 10:29:04 +05:30
Pranshul a6d49f5411 New translations strings.xml (Greek)
[ci skip]
2026-07-28 10:29:03 +05:30
Pranshul c39908fda0 New translations strings.xml (Czech)
[ci skip]
2026-07-28 10:29:02 +05:30
Pranshul e372bde373 New translations strings.xml (Catalan)
[ci skip]
2026-07-28 10:29:01 +05:30
Pranshul 432b427a7c New translations strings.xml (Bulgarian)
[ci skip]
2026-07-28 10:29:00 +05:30
Pranshul 75443257ec New translations strings.xml (Spanish)
[ci skip]
2026-07-28 10:28:58 +05:30
Pranshul 5f7e3c1fa3 New translations strings.xml (Romanian)
[ci skip]
2026-07-28 10:28:57 +05:30
Pranshul b88560f9f9 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-28 10:28:55 +05:30
Pranshul eea67e74b4 New translations strings.xml (Hebrew)
[ci skip]
2026-07-28 10:28:54 +05:30
Pranshul d592ad923b New translations strings.xml (Italian)
[ci skip]
2026-07-28 10:28:53 +05:30
Pranshul e3790b77fa New translations strings.xml (Korean)
[ci skip]
2026-07-28 10:28:52 +05:30
Pranshul 508c45601f New translations strings.xml (Portuguese)
[ci skip]
2026-07-28 10:28:51 +05:30
Pranshul d350773571 New translations strings.xml (Japanese)
[ci skip]
2026-07-28 10:28:50 +05:30
Pranshul 78a2e68928 New translations strings.xml (French)
[ci skip]
2026-07-28 10:28:49 +05:30
Pranshul 5c507b92f7 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-28 10:28:47 +05:30
Pranshul ad748cd240 New translations strings.xml (Russian)
[ci skip]
2026-07-28 10:28:46 +05:30
Pranshul 87ff70d480 New translations strings.xml (Dutch)
[ci skip]
2026-07-28 10:28:45 +05:30
Pranshul 5afc421dc2 New translations strings.xml (Finnish)
[ci skip]
2026-07-28 10:28:44 +05:30
Pranshul a941595b46 New translations strings.xml (German)
[ci skip]
2026-07-28 10:28:42 +05:30
PranshulGG c2757ea4b5 add alert severity strings to strings.xml 2026-07-28 09:40:32 +05:30
Pranshul 6e13c8b0ef New translations strings.xml (German)
[ci skip]
2026-07-28 04:19:44 +05:30
Pranshul 08d8cdbdac New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-27 21:46:04 +05:30
Pranshul 2b9fcd7878 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-27 21:46:03 +05:30
Pranshul e6ebf905a6 New translations strings.xml (Filipino)
[ci skip]
2026-07-27 21:46:02 +05:30
Pranshul 1504884429 New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-27 21:46:00 +05:30
Pranshul aea71b1c8a New translations strings.xml (Kazakh)
[ci skip]
2026-07-27 21:45:59 +05:30
Pranshul 59735f1b53 New translations strings.xml (Thai)
[ci skip]
2026-07-27 21:45:57 +05:30
Pranshul 2c7ee93a92 New translations strings.xml (Persian)
[ci skip]
2026-07-27 21:45:56 +05:30
Pranshul e883cb1b22 New translations strings.xml (Indonesian)
[ci skip]
2026-07-27 21:45:55 +05:30
Pranshul d83f4f4a34 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-27 21:45:53 +05:30
Pranshul 7d8b97e67e New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-27 21:45:52 +05:30
Pranshul ae148bafeb New translations strings.xml (Ukrainian)
[ci skip]
2026-07-27 21:45:50 +05:30
Pranshul cb49613ff7 New translations strings.xml (Turkish)
[ci skip]
2026-07-27 21:45:49 +05:30
Pranshul 3f16878da1 New translations strings.xml (Swedish)
[ci skip]
2026-07-27 21:45:47 +05:30
Pranshul e88f357d47 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-27 21:45:46 +05:30
Pranshul 4cc790ed98 New translations strings.xml (Slovenian)
[ci skip]
2026-07-27 21:45:44 +05:30
Pranshul 24e55b15f1 New translations strings.xml (Polish)
[ci skip]
2026-07-27 21:45:43 +05:30
Pranshul 151daf1226 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-27 21:45:41 +05:30
Pranshul aaa1585bbb New translations strings.xml (Hungarian)
[ci skip]
2026-07-27 21:45:40 +05:30
Pranshul 2824bd33eb New translations strings.xml (Greek)
[ci skip]
2026-07-27 21:45:38 +05:30
Pranshul 7ce1b3c31a New translations strings.xml (Czech)
[ci skip]
2026-07-27 21:45:37 +05:30
Pranshul 5b8a93bfd9 New translations strings.xml (Catalan)
[ci skip]
2026-07-27 21:45:35 +05:30
Pranshul 777c059f62 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-27 21:45:34 +05:30
Pranshul f4332f12b3 New translations strings.xml (Spanish)
[ci skip]
2026-07-27 21:45:33 +05:30
Pranshul bb8f9143da New translations strings.xml (Romanian)
[ci skip]
2026-07-27 21:45:31 +05:30
Pranshul 23efc87258 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-27 21:45:29 +05:30
Pranshul b2d48c1c59 New translations strings.xml (Hebrew)
[ci skip]
2026-07-27 21:45:28 +05:30
Pranshul 7c08f8e7e0 New translations strings.xml (Italian)
[ci skip]
2026-07-27 21:45:27 +05:30
Pranshul 90a4e4ffa0 New translations strings.xml (Korean)
[ci skip]
2026-07-27 21:45:25 +05:30
Pranshul 2a4759c321 New translations strings.xml (Portuguese)
[ci skip]
2026-07-27 21:45:24 +05:30
Pranshul b4bd3bca72 New translations strings.xml (Japanese)
[ci skip]
2026-07-27 21:45:23 +05:30
Pranshul 960eaa907a New translations strings.xml (French)
[ci skip]
2026-07-27 21:45:21 +05:30
Pranshul 8c63eb4839 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-27 21:45:20 +05:30
Pranshul 7e7ec4f483 New translations strings.xml (Russian)
[ci skip]
2026-07-27 21:45:18 +05:30
Pranshul fac1037862 New translations strings.xml (Dutch)
[ci skip]
2026-07-27 21:45:17 +05:30
Pranshul d6d939f629 New translations strings.xml (Finnish)
[ci skip]
2026-07-27 21:45:15 +05:30
Pranshul 2f4a9c6070 New translations strings.xml (German)
[ci skip]
2026-07-27 21:45:14 +05:30
PranshulGG ef58d661fc Update database schema to version 49 2026-07-27 16:31:58 +05:30
PranshulGG ea10e14735 add info button to LocationsScreen top bar to show long press info snackbar 2026-07-27 16:31:45 +05:30
PranshulGG bf0ceca34d navigate to edit location screen in MainScreen and update air quality source display 2026-07-27 16:31:36 +05:30
PranshulGG bccf0092b3 use getFullLocationName utility in MainSearchBar 2026-07-27 16:31:25 +05:30
PranshulGG c2b424f347 implement air quality and AccuWeather data cleanup in WeatherDataReconcilerRepository 2026-07-27 16:31:15 +05:30
PranshulGG 06b7c6648d implement saving custom location names and add GetLocationName utility functions 2026-07-27 16:31:04 +05:30
PranshulGG 687ec11956 add overline support to ActionTile and SettingTile.ActionTile 2026-07-27 16:30:53 +05:30
PranshulGG c429f8ff3e add updateLocationCustomName to LocationsDao and integrate AccuDao into WeatherMasterDatabase with version 49 bump 2026-07-27 16:30:40 +05:30
PranshulGG c2064256ff integrate AirQualityRepositoryProvider into WeatherViewModel and update stale data cleanup logic for air quality sources 2026-07-27 16:29:57 +05:30
PranshulGG efab4d940c refine daily summary computation to use remaining hourly data and cleanup imports 2026-07-27 16:29:25 +05:30
PranshulGG 235eac4569 rename OpenMeteoAqiMapper to AqiDomainMapper and remove OpenMeteoAqiDto mapping 2026-07-27 16:29:03 +05:30
PranshulGG 843c02d58c implement AirQualityRepository in OpenMeteoAqiRepository and add domain mapper for OpenMeteo AQI 2026-07-27 16:28:53 +05:30
PranshulGG 80b32aae29 add AccuWeather AQI support and update repository dependencies 2026-07-27 16:28:23 +05:30
PranshulGG 505c7c53b4 Implement AccuWeather Air Quality support 2026-07-27 16:27:31 +05:30
PranshulGG 8bd8fb70a3 add location_long_press_info string and update multiple localizations 2026-07-27 16:26:57 +05:30
Pranshul 859c2da0f0 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-27 14:54:37 +05:30
Pranshul 8c881a6058 New translations strings.xml (Hebrew)
[ci skip]
2026-07-27 14:54:36 +05:30
Pranshul 74b083b503 New translations strings.xml (Russian)
[ci skip]
2026-07-27 14:54:35 +05:30
Pranshul e39be278ea New translations strings.xml (Japanese)
[ci skip]
2026-07-27 08:44:32 +05:30
Pranshul a902a33085 New translations strings.xml (Italian)
[ci skip]
2026-07-27 02:08:23 +05:30
Pranshul 9a004c28f9 New translations strings.xml (Russian)
[ci skip]
2026-07-26 20:12:24 +05:30
Pranshul 61257cddff New translations strings.xml (Russian)
[ci skip]
2026-07-26 14:03:10 +05:30
Pranshul da00862941 New translations strings.xml (Russian)
[ci skip]
2026-07-26 07:36:05 +05:30
Pranshul 7d33b699d4 New translations strings.xml (Korean)
[ci skip]
2026-07-26 01:08:23 +05:30
Pranshul 19d32f8477 New translations strings.xml (Russian)
[ci skip]
2026-07-26 01:08:22 +05:30
Pranshul 57d4e036fd New translations strings.xml (Russian)
[ci skip]
2026-07-25 19:06:18 +05:30
Pranshul 75cbf896e7 New translations strings.xml (Japanese)
[ci skip]
2026-07-25 13:07:07 +05:30
Pranshul f24ab12576 New translations strings.xml (French)
[ci skip]
2026-07-25 13:07:06 +05:30
Pranshul 698955e5d2 New translations strings.xml (Russian)
[ci skip]
2026-07-25 13:07:04 +05:30
Pranshul 7aa1e42383 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-25 06:37:03 +05:30
Pranshul 364d381376 New translations strings.xml (Russian)
[ci skip]
2026-07-25 06:37:01 +05:30
Pranshul 84118a8a7c New translations strings.xml (Dutch)
[ci skip]
2026-07-25 06:37:00 +05:30
Pranshul 0c57f8c9a6 New translations strings.xml (Finnish)
[ci skip]
2026-07-25 06:36:59 +05:30
Pranshul 72a4e0b658 New translations strings.xml (German)
[ci skip]
2026-07-25 06:36:58 +05:30
PranshulGG de8448634e Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-07-24 20:46:12 +05:30
PranshulGG e4c64b8bb9 comment out support tile in SettingsScreen and restore startDestination to NavRoutes.MAIN 2026-07-24 20:46:04 +05:30
Pranshul 6376435df2 Merge pull request #972 from PranshulGG/l10n_main
New Crowdin updates
2026-07-24 20:43:27 +05:30
Pranshul 90ea267a0e Merge branch 'main' into l10n_main
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-07-24 20:43:14 +05:30
PranshulGG 5c2329ab67 fix string format crashes closes #988 2026-07-24 20:37:38 +05:30
Pranshul 03ef9582f2 New translations strings.xml (Kazakh)
[ci skip]
2026-07-24 18:30:42 +05:30
Pranshul 1a3b717cf1 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-24 18:30:40 +05:30
Pranshul 121efe7bc7 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-24 18:30:39 +05:30
Pranshul 24f33783cd New translations strings.xml (Filipino)
[ci skip]
2026-07-24 18:30:38 +05:30
Pranshul 774b88db4e New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-24 18:30:36 +05:30
Pranshul 9767ee9343 New translations strings.xml (Thai)
[ci skip]
2026-07-24 18:30:35 +05:30
Pranshul 3365d59fba New translations strings.xml (Persian)
[ci skip]
2026-07-24 18:30:33 +05:30
Pranshul 10d5623c55 New translations strings.xml (Indonesian)
[ci skip]
2026-07-24 18:30:32 +05:30
Pranshul 6637c9e938 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-24 18:30:30 +05:30
Pranshul f1cb4b3991 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-24 18:30:29 +05:30
Pranshul 1a06a41283 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-24 18:30:27 +05:30
Pranshul 3a3d836a9b New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-24 18:30:26 +05:30
Pranshul 6d188d02f9 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-24 18:30:24 +05:30
Pranshul 92708eeb3a New translations strings.xml (Turkish)
[ci skip]
2026-07-24 18:30:23 +05:30
Pranshul 3af3013a93 New translations strings.xml (Swedish)
[ci skip]
2026-07-24 18:30:21 +05:30
Pranshul 7f9cdd5be2 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-24 18:30:20 +05:30
Pranshul 1d0eaa8789 New translations strings.xml (Slovenian)
[ci skip]
2026-07-24 18:30:19 +05:30
Pranshul 9ebe44feaa New translations strings.xml (Russian)
[ci skip]
2026-07-24 18:30:17 +05:30
Pranshul 03223ec459 New translations strings.xml (Portuguese)
[ci skip]
2026-07-24 18:30:16 +05:30
Pranshul 026b038b00 New translations strings.xml (Polish)
[ci skip]
2026-07-24 18:30:14 +05:30
Pranshul b90642aa8b New translations strings.xml (Dutch)
[ci skip]
2026-07-24 18:30:12 +05:30
Pranshul 49887b88ad New translations strings.xml (Lithuanian)
[ci skip]
2026-07-24 18:30:11 +05:30
Pranshul 7c0ca9e39b New translations strings.xml (Korean)
[ci skip]
2026-07-24 18:30:10 +05:30
Pranshul d6213f553d New translations strings.xml (Japanese)
[ci skip]
2026-07-24 18:30:08 +05:30
Pranshul 6c698403f8 New translations strings.xml (Italian)
[ci skip]
2026-07-24 18:30:07 +05:30
Pranshul 8a842cc7f6 New translations strings.xml (Hungarian)
[ci skip]
2026-07-24 18:30:05 +05:30
Pranshul 0bd04a4425 New translations strings.xml (Hebrew)
[ci skip]
2026-07-24 18:30:04 +05:30
Pranshul ad6bddc33a New translations strings.xml (Finnish)
[ci skip]
2026-07-24 18:30:03 +05:30
Pranshul 71f1563880 New translations strings.xml (Greek)
[ci skip]
2026-07-24 18:30:01 +05:30
Pranshul ec378c8e13 New translations strings.xml (German)
[ci skip]
2026-07-24 18:30:00 +05:30
Pranshul ab296ccf5e New translations strings.xml (Czech)
[ci skip]
2026-07-24 18:29:58 +05:30
Pranshul 3be0cbdfe9 New translations strings.xml (Catalan)
[ci skip]
2026-07-24 18:29:57 +05:30
Pranshul 0a2c17fec2 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-24 18:29:56 +05:30
Pranshul 5242f11af5 New translations strings.xml (Spanish)
[ci skip]
2026-07-24 18:29:55 +05:30
Pranshul 2146247e61 New translations strings.xml (French)
[ci skip]
2026-07-24 18:29:53 +05:30
Pranshul 5c8f4d8e17 New translations strings.xml (Romanian)
[ci skip]
2026-07-24 18:29:52 +05:30
PranshulGG 919549f877 add alertSource, airQualitySource, and customName to weather_locations and update database schemas to v48 2026-07-24 16:09:55 +05:30
PranshulGG b1207f2d9f add handleSourceChangeForWeather and support air quality force refresh in getWeather 2026-07-24 16:09:37 +05:30
PranshulGG 0b2b752f06 add strings for location editing and weather sources 2026-07-24 16:09:24 +05:30
PranshulGG 846e95b0c2 add trailing content and placeholder styling options to DialogTextFieldTile 2026-07-24 16:09:16 +05:30
PranshulGG 43feee4576 add floatingActionButtonPosition parameter to LargeTopBarScaffold 2026-07-24 16:09:07 +05:30
PranshulGG 57c33df481 add trailing and placeholderAsValue to DialogInputTile in SettingTile.kt 2026-07-24 16:08:59 +05:30
PranshulGG 9fbdce5b69 add alertSource, airQualitySource, and customName to Location model and use string resources in LocationsScreenContent 2026-07-24 16:08:48 +05:30
PranshulGG 064a3d7b8d add navigation for EditLocationScreen and update NavRoutes with locationId argument 2026-07-24 16:08:25 +05:30
PranshulGG af0dc61e51 implement Edit Location screen with support for name editing and source selection 2026-07-24 16:08:05 +05:30
PranshulGG 09502364c7 remove DataSourceScreen.kt 2026-07-24 16:07:56 +05:30
PranshulGG e9e2894e20 add AlertSource and AirQualitySource enums and update WeatherLocationEntity with database migrations 2026-07-24 16:07:08 +05:30
Pranshul a947c9456f New translations strings.xml (Japanese)
[ci skip]
2026-07-24 12:31:35 +05:30
Pranshul 6ba4dce473 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-24 06:15:04 +05:30
Pranshul 675fa1f7dc New translations strings.xml (Hebrew)
[ci skip]
2026-07-24 06:15:03 +05:30
Pranshul deab4f3c11 New translations strings.xml (Greek)
[ci skip]
2026-07-24 06:15:02 +05:30
Pranshul 979b93e1cb New translations strings.xml (Lithuanian)
[ci skip]
2026-07-24 00:19:15 +05:30
Pranshul 34c51476f7 New translations strings.xml (Greek)
[ci skip]
2026-07-24 00:19:14 +05:30
Pranshul 4b9bead9cf New translations strings.xml (Kazakh)
[ci skip]
2026-07-23 18:19:21 +05:30
Pranshul c15331980b New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-23 18:19:19 +05:30
Pranshul b849e63db5 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-23 18:19:18 +05:30
Pranshul e7f1c5fad8 New translations strings.xml (Filipino)
[ci skip]
2026-07-23 18:19:16 +05:30
Pranshul 22a91455a7 New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-23 18:19:15 +05:30
Pranshul e9cb5e7c37 New translations strings.xml (Thai)
[ci skip]
2026-07-23 18:19:14 +05:30
Pranshul ed03fc0d3c New translations strings.xml (Persian)
[ci skip]
2026-07-23 18:19:12 +05:30
Pranshul 339276e8cb New translations strings.xml (Indonesian)
[ci skip]
2026-07-23 18:19:11 +05:30
Pranshul 83b9eb3ebe New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-23 18:19:10 +05:30
Pranshul 35b4686b42 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-23 18:19:08 +05:30
Pranshul 4715bc502f New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-23 18:19:07 +05:30
Pranshul f1d1e0a2a8 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-23 18:19:05 +05:30
Pranshul 7303a25190 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-23 18:19:04 +05:30
Pranshul 65c3069d44 New translations strings.xml (Turkish)
[ci skip]
2026-07-23 18:19:03 +05:30
Pranshul 7587ff082d New translations strings.xml (Swedish)
[ci skip]
2026-07-23 18:19:01 +05:30
Pranshul c998379da8 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-23 18:19:00 +05:30
Pranshul fe807595fb New translations strings.xml (Slovenian)
[ci skip]
2026-07-23 18:18:58 +05:30
Pranshul 575861c11c New translations strings.xml (Russian)
[ci skip]
2026-07-23 18:18:56 +05:30
Pranshul ef44a199ef New translations strings.xml (Portuguese)
[ci skip]
2026-07-23 18:18:55 +05:30
Pranshul 7b5a7cc12b New translations strings.xml (Polish)
[ci skip]
2026-07-23 18:18:53 +05:30
Pranshul be29e89175 New translations strings.xml (Dutch)
[ci skip]
2026-07-23 18:18:51 +05:30
Pranshul b4f9d3e925 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-23 18:18:49 +05:30
Pranshul 9dcb2847e7 New translations strings.xml (Korean)
[ci skip]
2026-07-23 18:18:48 +05:30
Pranshul dc6aeb232f New translations strings.xml (Japanese)
[ci skip]
2026-07-23 18:18:46 +05:30
Pranshul 207cd584ce New translations strings.xml (Italian)
[ci skip]
2026-07-23 18:18:45 +05:30
Pranshul 44f190efc2 New translations strings.xml (Hungarian)
[ci skip]
2026-07-23 18:18:44 +05:30
Pranshul 3207118bd9 New translations strings.xml (Hebrew)
[ci skip]
2026-07-23 18:18:42 +05:30
Pranshul 07a39f1b01 New translations strings.xml (Finnish)
[ci skip]
2026-07-23 18:18:40 +05:30
Pranshul 15987d40ad New translations strings.xml (Greek)
[ci skip]
2026-07-23 18:18:39 +05:30
Pranshul 000d01d53d New translations strings.xml (German)
[ci skip]
2026-07-23 18:18:38 +05:30
Pranshul 4ce97d2926 New translations strings.xml (Czech)
[ci skip]
2026-07-23 18:18:36 +05:30
Pranshul 85e9c335fa New translations strings.xml (Catalan)
[ci skip]
2026-07-23 18:18:35 +05:30
Pranshul 2e2513d785 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-23 18:18:33 +05:30
Pranshul feb70e9fb7 New translations strings.xml (Spanish)
[ci skip]
2026-07-23 18:18:31 +05:30
Pranshul bbeda9892e New translations strings.xml (French)
[ci skip]
2026-07-23 18:18:30 +05:30
Pranshul caf2edb9a5 New translations strings.xml (Romanian)
[ci skip]
2026-07-23 18:18:28 +05:30
PranshulGG 5307930e35 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-07-23 12:55:51 +05:30
PranshulGG 98908b39d6 add DataSourceScreen and data_source navigation route 2026-07-23 12:55:42 +05:30
PranshulGG 82604383a0 updated strings 2026-07-23 12:55:26 +05:30
Pranshul 0c6ab67de5 New translations strings.xml (Finnish)
[ci skip]
2026-07-23 12:19:54 +05:30
Pranshul 39f5576871 New translations strings.xml (Russian)
[ci skip]
2026-07-23 01:53:47 +05:30
Pranshul 9c99ae0dc0 New translations strings.xml (Finnish)
[ci skip]
2026-07-23 01:53:45 +05:30
Pranshul 956febe1e4 New translations strings.xml (Finnish)
[ci skip]
2026-07-22 19:49:41 +05:30
Pranshul 0c428ab47a New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-22 12:43:33 +05:30
Pranshul cb77efa483 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-22 06:43:27 +05:30
Pranshul 65fbd34d09 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-21 21:34:22 +05:30
Pranshul 5eb14cf3dc New translations strings.xml (Finnish)
[ci skip]
2026-07-21 21:34:21 +05:30
Pranshul 327df68aa4 New translations strings.xml (Spanish)
[ci skip]
2026-07-21 14:50:29 +05:30
Pranshul 527d23772d New translations strings.xml (Japanese)
[ci skip]
2026-07-21 08:48:40 +05:30
Pranshul e6a04c53a7 New translations strings.xml (French)
[ci skip]
2026-07-21 08:48:39 +05:30
Pranshul 2d3e3dd5dd New translations strings.xml (Vietnamese)
[ci skip]
2026-07-21 02:50:10 +05:30
Pranshul 6e8d0eb1bd New translations strings.xml (German)
[ci skip]
2026-07-21 02:50:09 +05:30
Pranshul fd812834aa Update funding links in FUNDING.yml
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-07-20 20:50:42 +05:30
Pranshul 4395b2c6a6 Update GitHub funding link format
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-07-20 20:48:46 +05:30
Pranshul 289fcf2162 Add funding links to .github/FUNDING.yml
Updated funding model links for GitHub, Ko-fi, and Liberapay.

Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-07-20 20:46:36 +05:30
Pranshul e37f31996f New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-20 20:45:04 +05:30
Pranshul 2f3db7a43f New translations strings.xml (Hebrew)
[ci skip]
2026-07-20 20:45:02 +05:30
Pranshul 6a53ad0b08 New translations strings.xml (Finnish)
[ci skip]
2026-07-20 20:45:00 +05:30
Pranshul ca505ae9eb New translations strings.xml (French)
[ci skip]
2026-07-20 20:44:58 +05:30
Pranshul 25b9ccb847 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-20 14:30:53 +05:30
Pranshul 2df12b3089 New translations strings.xml (Polish)
[ci skip]
2026-07-20 01:03:37 +05:30
PranshulGG d6d70900d2 update readme 2026-07-19 17:20:01 +05:30
PranshulGG 5af3405efa bump versionCode to 56 and versionName to 3.7.0 2026-07-19 15:16:48 +05:30
PranshulGG b235220a3a fix syntax for ACCU_KEY secret in release workflow 2026-07-19 13:30:04 +05:30
PranshulGG 5f8e3925a5 add ACCU_KEY to release workflow 2026-07-19 13:26:29 +05:30
PranshulGG 6494789a13 update RainBlock layout to use Column for precipitation units and value display 2026-07-19 13:24:13 +05:30
PranshulGG 65d09aa3fe add support tile to settings screen and add favorite icon drawable 2026-07-19 12:42:27 +05:30
PranshulGG 9acae1ce64 fix string placeholders in French and Japanese translations and add missing summary template in German 2026-07-19 12:38:02 +05:30
PranshulGG 89fe3adfd8 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-07-19 12:15:51 +05:30
Pranshul 86736acf25 Merge pull request #967 from PranshulGG/l10n_main
New Crowdin updates
2026-07-19 12:15:36 +05:30
PranshulGG 62606fa1d2 refactor WeatherSource validation and change start destination to MAIN 2026-07-19 12:15:21 +05:30
Pranshul 7a121bdd5e New translations strings.xml (Polish)
[ci skip]
2026-07-19 00:02:23 +05:30
Pranshul c1569bd6ff New translations strings.xml (Lithuanian)
[ci skip]
2026-07-19 00:02:22 +05:30
Pranshul 41e48d7c9a New translations strings.xml (Hebrew)
[ci skip]
2026-07-19 00:02:21 +05:30
Pranshul f4829a2e52 Merge pull request #963 from PranshulGG/l10n_main
New Crowdin updates
2026-07-18 21:21:09 +05:30
Pranshul 2121c073d0 New translations strings.xml (Dutch)
[ci skip]
2026-07-18 18:06:12 +05:30
PranshulGG 15f59e043e icon drawable 2026-07-18 15:15:08 +05:30
Pranshul 48ec4cc375 New translations strings.xml (Kazakh)
[ci skip]
2026-07-18 12:04:35 +05:30
Pranshul 54a0036cc9 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-18 12:04:34 +05:30
Pranshul d82bfbd05f New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-18 12:04:32 +05:30
Pranshul f5f3b9bf8f New translations strings.xml (Filipino)
[ci skip]
2026-07-18 12:04:31 +05:30
Pranshul 606f020cab New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-18 12:04:30 +05:30
Pranshul 1357acbd58 New translations strings.xml (Thai)
[ci skip]
2026-07-18 12:04:29 +05:30
Pranshul c0b43ebd1e New translations strings.xml (Persian)
[ci skip]
2026-07-18 12:04:28 +05:30
Pranshul 745f27fd13 New translations strings.xml (Indonesian)
[ci skip]
2026-07-18 12:04:26 +05:30
Pranshul a626c8310c New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-18 12:04:25 +05:30
Pranshul 996cf38ec4 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-18 12:04:24 +05:30
Pranshul 71af7d453e New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-18 12:04:23 +05:30
Pranshul 41e6fb2189 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-18 12:04:21 +05:30
Pranshul 7fe05243a8 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-18 12:04:20 +05:30
Pranshul 4c7654381e New translations strings.xml (Turkish)
[ci skip]
2026-07-18 12:04:19 +05:30
Pranshul 536e0262f6 New translations strings.xml (Swedish)
[ci skip]
2026-07-18 12:04:18 +05:30
Pranshul e1cdfb9049 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-18 12:04:17 +05:30
Pranshul ff2017586c New translations strings.xml (Slovenian)
[ci skip]
2026-07-18 12:04:15 +05:30
Pranshul b3f71e5f33 New translations strings.xml (Russian)
[ci skip]
2026-07-18 12:04:14 +05:30
Pranshul 2109efc811 New translations strings.xml (Portuguese)
[ci skip]
2026-07-18 12:04:13 +05:30
Pranshul 4116e057fa New translations strings.xml (Polish)
[ci skip]
2026-07-18 12:04:12 +05:30
Pranshul 3b9c42dfc2 New translations strings.xml (Dutch)
[ci skip]
2026-07-18 12:04:10 +05:30
Pranshul 6b2e484cb4 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-18 12:04:09 +05:30
Pranshul ffb9e671f1 New translations strings.xml (Korean)
[ci skip]
2026-07-18 12:04:08 +05:30
Pranshul 606cb45c80 New translations strings.xml (Japanese)
[ci skip]
2026-07-18 12:04:07 +05:30
Pranshul a467c8e8e7 New translations strings.xml (Italian)
[ci skip]
2026-07-18 12:04:05 +05:30
Pranshul 5d6b628f99 New translations strings.xml (Hungarian)
[ci skip]
2026-07-18 12:04:04 +05:30
Pranshul 0131347f7a New translations strings.xml (Hebrew)
[ci skip]
2026-07-18 12:04:03 +05:30
Pranshul 622ab3063d New translations strings.xml (Finnish)
[ci skip]
2026-07-18 12:04:02 +05:30
Pranshul 9d839d74a3 New translations strings.xml (Greek)
[ci skip]
2026-07-18 12:04:00 +05:30
Pranshul ceb737b44b New translations strings.xml (German)
[ci skip]
2026-07-18 12:03:59 +05:30
Pranshul e2ada7c46a New translations strings.xml (Czech)
[ci skip]
2026-07-18 12:03:58 +05:30
Pranshul 597b658b08 New translations strings.xml (Catalan)
[ci skip]
2026-07-18 12:03:57 +05:30
Pranshul 142de313f0 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-18 12:03:55 +05:30
Pranshul 4bee08e9b8 New translations strings.xml (Spanish)
[ci skip]
2026-07-18 12:03:54 +05:30
Pranshul 6a0e177182 New translations strings.xml (French)
[ci skip]
2026-07-18 12:03:53 +05:30
Pranshul 951c98f603 New translations strings.xml (Romanian)
[ci skip]
2026-07-18 12:03:52 +05:30
PranshulGG 564db75da6 add gadgetbridge support 2026-07-18 11:53:39 +05:30
PranshulGG 5a3d645542 view worker information 2026-07-17 20:56:00 +05:30
Pranshul 8e79aefbc7 New translations strings.xml (Italian)
[ci skip]
2026-07-17 17:25:21 +05:30
Pranshul 3ba91eaefc New translations strings.xml (Hebrew)
[ci skip]
2026-07-16 23:01:55 +05:30
Pranshul 82110f17a1 New translations strings.xml (Finnish)
[ci skip]
2026-07-16 23:01:54 +05:30
Pranshul 081c6f8836 New translations strings.xml (German)
[ci skip]
2026-07-16 23:01:52 +05:30
PranshulGG 12e95bdb3b add database schemas for versions 45 and 46 2026-07-16 20:26:12 +05:30
PranshulGG 3b95e40aa3 rain and snow star and lower thresholds 2026-07-16 20:25:36 +05:30
Pranshul a52a757f47 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-16 16:42:35 +05:30
Pranshul ebc4452e61 New translations strings.xml (Japanese)
[ci skip]
2026-07-16 16:42:33 +05:30
Pranshul 641994a5c3 New translations strings.xml (French)
[ci skip]
2026-07-16 16:42:32 +05:30
PranshulGG cd7ba2d878 an error if the currently selected source isn't available for the region closes #960 2026-07-16 10:05:17 +05:30
Pranshul 4497bf0aef New translations strings.xml (Kazakh)
[ci skip]
2026-07-15 21:49:31 +05:30
Pranshul 6cddc43b33 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-15 21:49:30 +05:30
Pranshul 9e191c7a5d New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-15 21:49:29 +05:30
Pranshul 0e8a3a9d34 New translations strings.xml (Filipino)
[ci skip]
2026-07-15 21:49:27 +05:30
Pranshul 8497d0f535 New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-15 21:49:26 +05:30
Pranshul 796af5925a New translations strings.xml (Thai)
[ci skip]
2026-07-15 21:49:24 +05:30
Pranshul a223cba972 New translations strings.xml (Persian)
[ci skip]
2026-07-15 21:49:23 +05:30
Pranshul 01ddc283b4 New translations strings.xml (Indonesian)
[ci skip]
2026-07-15 21:49:22 +05:30
Pranshul a3b9fbf5b9 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-15 21:49:20 +05:30
Pranshul 2a4e93c6c3 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-15 21:49:19 +05:30
Pranshul 0f61c7dc98 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-15 21:49:18 +05:30
Pranshul 5e27fe3ecc New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-15 21:49:16 +05:30
Pranshul b26b205635 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-15 21:49:15 +05:30
Pranshul 9326e2ddd1 New translations strings.xml (Turkish)
[ci skip]
2026-07-15 21:49:14 +05:30
Pranshul 644b99e5de New translations strings.xml (Swedish)
[ci skip]
2026-07-15 21:49:12 +05:30
Pranshul 3ac8e3cc34 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-15 21:49:11 +05:30
Pranshul c8edfd93e3 New translations strings.xml (Slovenian)
[ci skip]
2026-07-15 21:49:09 +05:30
Pranshul 6208bea136 New translations strings.xml (Russian)
[ci skip]
2026-07-15 21:49:08 +05:30
Pranshul cae533c6e9 New translations strings.xml (Portuguese)
[ci skip]
2026-07-15 21:49:06 +05:30
Pranshul a6aff4c2e5 New translations strings.xml (Polish)
[ci skip]
2026-07-15 21:49:05 +05:30
Pranshul 2368157d8a New translations strings.xml (Dutch)
[ci skip]
2026-07-15 21:49:03 +05:30
Pranshul f8104a9501 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-15 21:49:02 +05:30
Pranshul 20faf7c5d3 New translations strings.xml (Korean)
[ci skip]
2026-07-15 21:49:01 +05:30
Pranshul 50b8b2f84f New translations strings.xml (Japanese)
[ci skip]
2026-07-15 21:48:59 +05:30
Pranshul a3259f778a New translations strings.xml (Italian)
[ci skip]
2026-07-15 21:48:58 +05:30
Pranshul ea4a24eea9 New translations strings.xml (Hungarian)
[ci skip]
2026-07-15 21:48:56 +05:30
Pranshul 16a966a9e8 New translations strings.xml (Hebrew)
[ci skip]
2026-07-15 21:48:55 +05:30
Pranshul 50475e4f16 New translations strings.xml (Finnish)
[ci skip]
2026-07-15 21:48:54 +05:30
Pranshul bda6f8d2d9 New translations strings.xml (Greek)
[ci skip]
2026-07-15 21:48:52 +05:30
Pranshul 46bf026a8d New translations strings.xml (German)
[ci skip]
2026-07-15 21:48:51 +05:30
Pranshul 3a3cddd8be New translations strings.xml (Czech)
[ci skip]
2026-07-15 21:48:50 +05:30
Pranshul e6c2b75434 New translations strings.xml (Catalan)
[ci skip]
2026-07-15 21:48:48 +05:30
Pranshul c6f8b55725 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-15 21:48:47 +05:30
Pranshul 58d5eecad4 New translations strings.xml (Spanish)
[ci skip]
2026-07-15 21:48:46 +05:30
Pranshul 52db57481b New translations strings.xml (French)
[ci skip]
2026-07-15 21:48:44 +05:30
Pranshul 7e817863f4 New translations strings.xml (Romanian)
[ci skip]
2026-07-15 21:48:43 +05:30
PranshulGG 2bbb2c8537 make summary conditions nullable, and update OpenMeteo AQI forecast days 2026-07-15 20:45:57 +05:30
PranshulGG 0cac9b692b only show current hourly forecast 2026-07-15 20:44:32 +05:30
PranshulGG 733e6a8ab8 only show current hourly forecast 2026-07-15 20:44:28 +05:30
PranshulGG f0958e0ead add missing strings 2026-07-15 20:43:59 +05:30
PranshulGG 2a318c0266 add summary overview templates for day and night conditions to strings.xml 2026-07-15 20:35:38 +05:30
PranshulGG ed4d9eb150 detailed air quality closes #937 2026-07-15 15:52:57 +05:30
Pranshul cde5f618e9 New translations strings.xml (Finnish)
[ci skip]
2026-07-15 14:34:08 +05:30
Pranshul 82d70145d8 New translations strings.xml (Finnish)
[ci skip]
2026-07-14 19:19:26 +05:30
Pranshul e553d2562a Merge pull request #953 from PranshulGG/l10n_main
New Crowdin updates
2026-07-14 17:30:21 +05:30
PranshulGG 01ff4cec25 update glance to 1.3.0-alpha02 fix apostrophe escaping in summary strings 2026-07-14 17:29:58 +05:30
Pranshul 9dff05f6e5 New translations strings.xml (Finnish)
[ci skip]
2026-07-14 13:13:33 +05:30
Pranshul ee909f858f New translations strings.xml (Lithuanian)
[ci skip]
2026-07-14 04:10:27 +05:30
Pranshul cd3a883c3b New translations strings.xml (Hebrew)
[ci skip]
2026-07-14 04:10:26 +05:30
Pranshul 2acb4f9742 New translations strings.xml (Kazakh)
[ci skip]
2026-07-13 22:14:02 +05:30
Pranshul f5d8cf23e9 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-13 22:14:01 +05:30
Pranshul 56425e7e94 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-13 22:13:59 +05:30
Pranshul ee95d7f4c2 New translations strings.xml (Filipino)
[ci skip]
2026-07-13 22:13:58 +05:30
Pranshul c916a82f3e New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-13 22:13:57 +05:30
Pranshul 074249a74e New translations strings.xml (Thai)
[ci skip]
2026-07-13 22:13:55 +05:30
Pranshul 5aec9a9d2b New translations strings.xml (Persian)
[ci skip]
2026-07-13 22:13:54 +05:30
Pranshul 1920c8b23d New translations strings.xml (Indonesian)
[ci skip]
2026-07-13 22:13:53 +05:30
Pranshul 50d47bbc4b New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-13 22:13:51 +05:30
Pranshul 46aad61b1b New translations strings.xml (Vietnamese)
[ci skip]
2026-07-13 22:13:50 +05:30
Pranshul a7550f0a67 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-13 22:13:49 +05:30
Pranshul 084f614519 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-13 22:13:48 +05:30
Pranshul eb31413345 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-13 22:13:46 +05:30
Pranshul 723fc352a8 New translations strings.xml (Turkish)
[ci skip]
2026-07-13 22:13:45 +05:30
Pranshul 6e9e7c46e9 New translations strings.xml (Swedish)
[ci skip]
2026-07-13 22:13:44 +05:30
Pranshul 82cc93c772 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-13 22:13:42 +05:30
Pranshul e77815b3fd New translations strings.xml (Slovenian)
[ci skip]
2026-07-13 22:13:41 +05:30
Pranshul 8f4cd91157 New translations strings.xml (Russian)
[ci skip]
2026-07-13 22:13:40 +05:30
Pranshul 740caaa7c9 New translations strings.xml (Portuguese)
[ci skip]
2026-07-13 22:13:38 +05:30
Pranshul 5dcb915da6 New translations strings.xml (Polish)
[ci skip]
2026-07-13 22:13:37 +05:30
Pranshul 6f9e2739d1 New translations strings.xml (Dutch)
[ci skip]
2026-07-13 22:13:36 +05:30
Pranshul e74d372a6f New translations strings.xml (Lithuanian)
[ci skip]
2026-07-13 22:13:34 +05:30
Pranshul 2245a6d952 New translations strings.xml (Korean)
[ci skip]
2026-07-13 22:13:33 +05:30
Pranshul 913d25a7d3 New translations strings.xml (Japanese)
[ci skip]
2026-07-13 22:13:31 +05:30
Pranshul 36e27f378f New translations strings.xml (Italian)
[ci skip]
2026-07-13 22:13:30 +05:30
Pranshul faefff91f5 New translations strings.xml (Hungarian)
[ci skip]
2026-07-13 22:13:28 +05:30
Pranshul e80935e9d2 New translations strings.xml (Hebrew)
[ci skip]
2026-07-13 22:13:27 +05:30
Pranshul 4fa0673b8e New translations strings.xml (Finnish)
[ci skip]
2026-07-13 22:13:25 +05:30
Pranshul 2623963eb8 New translations strings.xml (Greek)
[ci skip]
2026-07-13 22:13:24 +05:30
Pranshul 09bb78b884 New translations strings.xml (German)
[ci skip]
2026-07-13 22:13:22 +05:30
Pranshul 1e5497b6cc New translations strings.xml (Czech)
[ci skip]
2026-07-13 22:13:21 +05:30
Pranshul d7c37109ef New translations strings.xml (Catalan)
[ci skip]
2026-07-13 22:13:19 +05:30
Pranshul ee34637cd6 New translations strings.xml (Bulgarian)
[ci skip]
2026-07-13 22:13:18 +05:30
Pranshul 74ba3a3b69 New translations strings.xml (Spanish)
[ci skip]
2026-07-13 22:13:16 +05:30
Pranshul e233f51641 New translations strings.xml (French)
[ci skip]
2026-07-13 22:13:15 +05:30
Pranshul 3b0cc96335 New translations strings.xml (Romanian)
[ci skip]
2026-07-13 22:13:13 +05:30
PranshulGG ab8906b51a Improved summary 2026-07-13 22:06:41 +05:30
PranshulGG f720ef1d33 Improved summary 2026-07-13 22:06:35 +05:30
PranshulGG 805167b703 update weather summary string templates 2026-07-13 22:04:23 +05:30
PranshulGG 11f033d026 add meteo am for italy as a source closes #958 2026-07-13 20:23:13 +05:30
PranshulGG 353189d018 add meteo am for italy as a source closes #958 2026-07-13 20:22:54 +05:30
PranshulGG 060c474268 add meteo am for italy as a source closes #958 2026-07-13 20:22:24 +05:30
Pranshul eb493e1001 New translations strings.xml (Hebrew)
[ci skip]
2026-07-13 16:08:51 +05:30
PranshulGG f73101a69e update widget labels, add Weather 4 widget receiver, and use AppException in SmhiRepository 2026-07-12 17:27:32 +05:30
PranshulGG 96735101ab add Weather4Widget support and include conditionName in WidgetDailyItem mapping 2026-07-12 17:27:09 +05:30
PranshulGG 127f86bcd9 add date and clock variants to WidgetVariant enum 2026-07-12 17:27:00 +05:30
PranshulGG d3f45f2de2 add showDailyInsteadOfCurrent flag to WidgetConfig and support Weather4 widget 2026-07-12 17:26:49 +05:30
PranshulGG d7eb691168 filter widget variants and update size slider steps in widget configurations 2026-07-12 17:26:37 +05:30
PranshulGG bb71636ed3 fix uv index level 2026-07-12 17:26:06 +05:30
PranshulGG f98a890728 set clock format 2026-07-12 17:25:56 +05:30
PranshulGG f2ac00b6da AccuWeather as a source 2026-07-12 17:25:42 +05:30
PranshulGG 3ce0ca1adf implement Weather 4 widget with clock and date variants and configuration UI 2026-07-12 17:24:51 +05:30
Pranshul 68d1960014 New translations strings.xml (German)
[ci skip]
2026-07-12 07:38:47 +05:30
Pranshul 28407cbec3 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-12 01:42:29 +05:30
Pranshul 4bda0631da New translations strings.xml (Ukrainian)
[ci skip]
2026-07-11 01:43:43 +05:30
Pranshul da05bf3d37 New translations strings.xml (Polish)
[ci skip]
2026-07-09 21:31:05 +05:30
Pranshul bd3719d833 New translations strings.xml (Hebrew)
[ci skip]
2026-07-09 21:31:03 +05:30
Pranshul cb02462cc2 New translations strings.xml (Italian)
[ci skip]
2026-07-09 15:35:01 +05:30
Pranshul c81e4a87db New translations strings.xml (Bulgarian)
[ci skip]
2026-07-09 15:35:00 +05:30
Pranshul 68bc23ecfb New translations strings.xml (Japanese)
[ci skip]
2026-07-09 08:23:04 +05:30
PranshulGG 6baa451b13 replace SharedPreferences injection with PreferencesHelper and update widget mapping signatures 2026-07-08 22:20:05 +05:30
PranshulGG 03d085aade provide SharedPreferences in AppModule and inject it into WeatherViewModel and widget mapping logic 2026-07-08 21:20:02 +05:30
PranshulGG 38d07fe2df adjust scroll offset in DailyDaysHeader and remove unused imports in MainActivity 2026-07-08 21:19:30 +05:30
PranshulGG b86c012bcb inject SharedPreferences into WeatherWorker and WidgetReload and update widget mapping logic 2026-07-08 21:19:07 +05:30
PranshulGG 536dc57357 add icon size configuration to horizontal weather widgets and expand font size range 2026-07-08 21:18:43 +05:30
Pranshul d5d409314c New translations strings.xml (French)
[ci skip]
2026-07-08 20:32:24 +05:30
PranshulGG 1fe7f7fb16 remove delay in WeatherWorker, use WORK_NAME constant in scheduler, and trigger reschedule on interval change 2026-07-08 15:24:44 +05:30
PranshulGG 51f8f7f0a5 add light and dark widget hourly container colors 2026-07-08 15:24:30 +05:30
PranshulGG 3633056517 remove shadow text layers and Box wrappers 2026-07-08 15:24:19 +05:30
PranshulGG 6d0d3be00e add custom background and text theme support for weather widgets and update configuration settings 2026-07-08 15:24:06 +05:30
PranshulGG 6644427470 add hideShadow option to clock and date views and increase configuration size ranges 2026-07-08 15:23:37 +05:30
PranshulGG cd2de7f75c Glance widget text color can now be changed closes #942 2026-07-08 15:08:31 +05:30
Pranshul 675eb41f1b New translations strings.xml (Kazakh)
[ci skip]
2026-07-08 14:21:28 +05:30
Pranshul 521cddeed0 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-08 02:12:01 +05:30
Pranshul 0b06dc5816 New translations strings.xml (Hebrew)
[ci skip]
2026-07-08 02:11:59 +05:30
Pranshul f356fbfb72 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-07 20:11:16 +05:30
PranshulGG a6dcd6bbd3 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-07-07 14:47:16 +05:30
PranshulGG 6dae31fe00 update glance version to 1.1.1 2026-07-07 14:47:09 +05:30
PranshulGG 95f1ba152e fix parameter order in WeatherWidgetLarge 2026-07-07 14:42:38 +05:30
PranshulGG a2481dd06b simplify daily weather condition mapping 2026-07-07 14:42:16 +05:30
PranshulGG 2026b7ef7d update daily weather condition logic and temperature source in day summary 2026-07-07 14:41:48 +05:30
PranshulGG 4b13ed3ca3 Improved widget names 2026-07-07 14:41:35 +05:30
PranshulGG 21bd675681 remove updatePeriodMillis from widget provider info files 2026-07-07 14:41:31 +05:30
PranshulGG 155f49707f refactor widget state management and optimize update logic using updateAll closes #947 2026-07-07 14:41:09 +05:30
Pranshul 9198a86d11 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-07 13:40:32 +05:30
Pranshul a17a29cc7c New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-07 00:03:27 +05:30
Pranshul 4e330845f7 Merge pull request #936 from PranshulGG/l10n_main
New Crowdin updates
2026-07-06 22:32:28 +05:30
Pranshul c3c73d96f6 New translations strings.xml (Dutch)
[ci skip]
2026-07-06 18:06:05 +05:30
Pranshul 8048e631ae New translations strings.xml (Lithuanian)
[ci skip]
2026-07-06 18:06:03 +05:30
Pranshul da0ba5bd3f New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-07-06 11:45:11 +05:30
Pranshul f79b496852 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-07-06 11:45:10 +05:30
Pranshul ddd7b50da5 New translations strings.xml (Filipino)
[ci skip]
2026-07-06 11:45:08 +05:30
Pranshul 6346a55e5b New translations strings.xml (Azerbaijani)
[ci skip]
2026-07-06 11:45:07 +05:30
Pranshul b1df66c011 New translations strings.xml (Thai)
[ci skip]
2026-07-06 11:45:06 +05:30
Pranshul 251c38ede0 New translations strings.xml (Persian)
[ci skip]
2026-07-06 11:45:04 +05:30
Pranshul 29e221da19 New translations strings.xml (Indonesian)
[ci skip]
2026-07-06 11:45:03 +05:30
Pranshul f173d5ed3c New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-07-06 11:45:02 +05:30
Pranshul db80684e32 New translations strings.xml (Vietnamese)
[ci skip]
2026-07-06 11:45:00 +05:30
Pranshul 095ac63cee New translations strings.xml (Chinese Traditional)
[ci skip]
2026-07-06 11:44:59 +05:30
Pranshul 84d4d21d5e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-07-06 11:44:57 +05:30
Pranshul 9378dc577f New translations strings.xml (Ukrainian)
[ci skip]
2026-07-06 11:44:56 +05:30
Pranshul d0f113e30e New translations strings.xml (Turkish)
[ci skip]
2026-07-06 11:44:54 +05:30
Pranshul 673fbc1a5a New translations strings.xml (Swedish)
[ci skip]
2026-07-06 11:44:53 +05:30
Pranshul 157c16b32c New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-07-06 11:44:51 +05:30
Pranshul 3bc416bfa0 New translations strings.xml (Slovenian)
[ci skip]
2026-07-06 11:44:49 +05:30
Pranshul 72d965898f New translations strings.xml (Russian)
[ci skip]
2026-07-06 11:44:48 +05:30
Pranshul e2b3f88d28 New translations strings.xml (Portuguese)
[ci skip]
2026-07-06 11:44:47 +05:30
Pranshul 9eba8f09fc New translations strings.xml (Polish)
[ci skip]
2026-07-06 11:44:45 +05:30
Pranshul cac973a3af New translations strings.xml (Dutch)
[ci skip]
2026-07-06 11:44:43 +05:30
Pranshul 3d403ca096 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-06 11:44:42 +05:30
Pranshul 8b3a846d29 New translations strings.xml (Korean)
[ci skip]
2026-07-06 11:44:40 +05:30
Pranshul b179ca0dc9 New translations strings.xml (Japanese)
[ci skip]
2026-07-06 11:44:38 +05:30
Pranshul d043e1c87e New translations strings.xml (Italian)
[ci skip]
2026-07-06 11:44:37 +05:30
Pranshul 6989340ef1 New translations strings.xml (Hungarian)
[ci skip]
2026-07-06 11:44:35 +05:30
Pranshul bbce3ba5ae New translations strings.xml (Hebrew)
[ci skip]
2026-07-06 11:44:34 +05:30
Pranshul 8efc7a96af New translations strings.xml (Finnish)
[ci skip]
2026-07-06 11:44:33 +05:30
Pranshul c37c780eb2 New translations strings.xml (Greek)
[ci skip]
2026-07-06 11:44:31 +05:30
Pranshul 795d5bcef3 New translations strings.xml (German)
[ci skip]
2026-07-06 11:44:29 +05:30
Pranshul c11318f163 New translations strings.xml (Czech)
[ci skip]
2026-07-06 11:44:28 +05:30
Pranshul 10b98fa78f New translations strings.xml (Catalan)
[ci skip]
2026-07-06 11:44:26 +05:30
Pranshul fdbd28e84d New translations strings.xml (Bulgarian)
[ci skip]
2026-07-06 11:44:25 +05:30
Pranshul 38d13e54b6 New translations strings.xml (Spanish)
[ci skip]
2026-07-06 11:44:23 +05:30
Pranshul cee4ddf86d New translations strings.xml (French)
[ci skip]
2026-07-06 11:44:21 +05:30
Pranshul 4460b663c4 New translations strings.xml (Romanian)
[ci skip]
2026-07-06 11:44:20 +05:30
PranshulGG a097b4f2fd add new strings closes #946 2026-07-06 11:32:49 +05:30
Pranshul c560a3b958 New translations strings.xml (Russian)
[ci skip]
2026-07-05 19:01:59 +05:30
Pranshul f701fd56b5 New translations strings.xml (Catalan)
[ci skip]
2026-07-05 19:01:57 +05:30
Pranshul c9244e2efd New translations strings.xml (Spanish)
[ci skip]
2026-07-05 19:01:56 +05:30
Pranshul e056d71632 New translations strings.xml (Russian)
[ci skip]
2026-07-05 13:01:49 +05:30
Pranshul d45ee763dd New translations strings.xml (Italian)
[ci skip]
2026-07-05 03:12:53 +05:30
Pranshul 1afcdc503e New translations strings.xml (Italian)
[ci skip]
2026-07-04 21:16:02 +05:30
PranshulGG ed9c2bcf3a use max temperature instead of average for summary headlines closes #944 2026-07-03 15:30:01 +05:30
PranshulGG 7e576900ea calculate mean weather condition from hourly data 2026-07-03 13:54:56 +05:30
Pranshul 98d2883d26 New translations strings.xml (Turkish)
[ci skip]
2026-07-02 22:48:54 +05:30
Pranshul bc710505f5 New translations strings.xml (Lithuanian)
[ci skip]
2026-07-02 22:48:52 +05:30
Pranshul ba81fb4f85 New translations strings.xml (Dutch)
[ci skip]
2026-07-02 16:21:34 +05:30
PranshulGG 067bca4af1 Fixed date formatting crashes for ECCC 2026-07-02 10:18:04 +05:30
PranshulGG 900713ca3d Fixed search errors #919 2026-07-02 10:17:53 +05:30
Pranshul 7c7d6d99c2 New translations strings.xml (Ukrainian)
[ci skip]
2026-07-02 02:17:11 +05:30
Pranshul 4ca4dc9b96 New translations strings.xml (Polish)
[ci skip]
2026-07-02 02:17:10 +05:30
Pranshul e3ce217a70 New translations strings.xml (Dutch)
[ci skip]
2026-07-02 02:17:09 +05:30
Pranshul b9a32b1640 New translations strings.xml (Hebrew)
[ci skip]
2026-07-02 02:17:08 +05:30
Pranshul 3962d45c8f New translations strings.xml (French)
[ci skip]
2026-07-01 20:18:12 +05:30
Pranshul 875d6e7b80 New translations strings.xml (Italian)
[ci skip]
2026-06-30 22:50:27 +05:30
PranshulGG c34f113de3 Fixed wind speed forecast using the wrong time 2026-06-30 20:43:13 +05:30
Pranshul 6089afc23e New translations strings.xml (Japanese)
[ci skip]
2026-06-30 15:50:57 +05:30
PranshulGG bb3822718d add source request button to WeatherSourcesScreen and bump version to 3.6.0 2026-06-30 09:50:00 +05:30
PranshulGG a9af38eb38 fix string format placeholders in Korean and Portuguese translations 2026-06-30 09:39:54 +05:30
PranshulGG 574a167b07 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-30 09:26:46 +05:30
PranshulGG c8d9bf058f round pressure values to integers in PressureHourlyCard.kt 2026-06-30 09:26:34 +05:30
PranshulGG 842db00f21 refactor WidgetWeatherUpdater to use a generic update function, add error logging, and ensure notification is hidden in WeatherWorker catch block 2026-06-30 09:26:27 +05:30
PranshulGG 33cf77ba27 Fixed landscape/tablet layout issues 2026-06-30 09:26:06 +05:30
Pranshul 020fe12043 Merge pull request #932 from PranshulGG/l10n_main
New Crowdin updates
2026-06-30 09:25:44 +05:30
Pranshul 67037e82a6 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-30 00:34:31 +05:30
Pranshul d04fab22cc New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-30 00:34:30 +05:30
Pranshul abced8efdd New translations strings.xml (Filipino)
[ci skip]
2026-06-30 00:34:28 +05:30
Pranshul c6945cf380 New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-30 00:34:27 +05:30
Pranshul e40d1a7f89 New translations strings.xml (Thai)
[ci skip]
2026-06-30 00:34:25 +05:30
Pranshul ae81dda885 New translations strings.xml (Persian)
[ci skip]
2026-06-30 00:34:24 +05:30
Pranshul 81a2e142b0 New translations strings.xml (Indonesian)
[ci skip]
2026-06-30 00:34:22 +05:30
Pranshul a3ba8a1dab New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-30 00:34:21 +05:30
Pranshul e06b2dcbda New translations strings.xml (Vietnamese)
[ci skip]
2026-06-30 00:34:19 +05:30
Pranshul 9086d09201 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-30 00:34:18 +05:30
Pranshul 26870df47d New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-30 00:34:17 +05:30
Pranshul b119a39c71 New translations strings.xml (Ukrainian)
[ci skip]
2026-06-30 00:34:15 +05:30
Pranshul 7a47a8f6b7 New translations strings.xml (Turkish)
[ci skip]
2026-06-30 00:34:14 +05:30
Pranshul e80edc1e6a New translations strings.xml (Swedish)
[ci skip]
2026-06-30 00:34:12 +05:30
Pranshul a869c48a68 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-30 00:34:11 +05:30
Pranshul 3e44617612 New translations strings.xml (Slovenian)
[ci skip]
2026-06-30 00:34:09 +05:30
Pranshul c80da8aec5 New translations strings.xml (Russian)
[ci skip]
2026-06-30 00:34:08 +05:30
Pranshul aa92444824 New translations strings.xml (Portuguese)
[ci skip]
2026-06-30 00:34:06 +05:30
Pranshul fc42fef72e New translations strings.xml (Polish)
[ci skip]
2026-06-30 00:34:04 +05:30
Pranshul 799c99e0ab New translations strings.xml (Dutch)
[ci skip]
2026-06-30 00:34:03 +05:30
Pranshul edcf0be6dc New translations strings.xml (Lithuanian)
[ci skip]
2026-06-30 00:34:01 +05:30
Pranshul 8cdfe8766b New translations strings.xml (Korean)
[ci skip]
2026-06-30 00:34:00 +05:30
Pranshul e356fdeff0 New translations strings.xml (Japanese)
[ci skip]
2026-06-30 00:33:58 +05:30
Pranshul 23a120f873 New translations strings.xml (Italian)
[ci skip]
2026-06-30 00:33:56 +05:30
Pranshul 2b6381cdd5 New translations strings.xml (Hungarian)
[ci skip]
2026-06-30 00:33:55 +05:30
Pranshul 0069db761b New translations strings.xml (Hebrew)
[ci skip]
2026-06-30 00:33:53 +05:30
Pranshul 1691aeebb5 New translations strings.xml (Finnish)
[ci skip]
2026-06-30 00:33:51 +05:30
Pranshul ee110d7037 New translations strings.xml (Greek)
[ci skip]
2026-06-30 00:33:50 +05:30
Pranshul 45016c578f New translations strings.xml (German)
[ci skip]
2026-06-30 00:33:48 +05:30
Pranshul ec1ed2d8cc New translations strings.xml (Czech)
[ci skip]
2026-06-30 00:33:46 +05:30
Pranshul 79ce021fe4 New translations strings.xml (Catalan)
[ci skip]
2026-06-30 00:33:45 +05:30
Pranshul 9512f781eb New translations strings.xml (Bulgarian)
[ci skip]
2026-06-30 00:33:42 +05:30
Pranshul 247c3de3bb New translations strings.xml (Spanish)
[ci skip]
2026-06-30 00:33:41 +05:30
Pranshul 9a151c9072 New translations strings.xml (French)
[ci skip]
2026-06-30 00:33:39 +05:30
Pranshul 5cbffde74b New translations strings.xml (Romanian)
[ci skip]
2026-06-30 00:33:37 +05:30
PranshulGG 5cc45eca52 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-29 17:21:35 +05:30
Pranshul bc57486911 Merge pull request #931 from PranshulGG/l10n_main
New Crowdin updates
2026-06-29 17:21:29 +05:30
PranshulGG 7986a5d531 add opacity and photo_size_select_large vector drawables 2026-06-29 17:21:11 +05:30
PranshulGG 7866d78c85 delete 2026-06-29 17:21:02 +05:30
PranshulGG b57693a125 remove skipForegroundCheck argument from updateAllWidgets call in WeatherViewModel 2026-06-29 17:20:10 +05:30
PranshulGG e0383fcaf5 remove skipForegroundCheck argument from updateAllWidgets call in WeatherViewModel 2026-06-29 17:20:06 +05:30
PranshulGG be7cf6219d add error_no_results_found string resource 2026-06-29 17:19:57 +05:30
PranshulGG eb9f8445a4 add ReloadButton to SummaryWidget and remove onUpdate worker call in SummaryWidgetReceiver 2026-06-29 17:19:50 +05:30
PranshulGG c571ecd56a add ReloadButton and ReloadAction for widget reloading 2026-06-29 17:17:49 +05:30
PranshulGG ae42bc0b25 add configuration activity to weather widgets and update pill widget dimensions and styling 2026-06-29 17:17:38 +05:30
PranshulGG a065a59b56 update widget preview drawables 2026-06-29 17:17:24 +05:30
PranshulGG 9a0489e007 make search results nullable in GeoNames and OpenMeteo models and handle null/empty cases in mappers 2026-06-29 17:17:12 +05:30
PranshulGG d63b32cd01 improve search error handling and empty result messaging, and remove focus clearing in SearchFloatingToolbar 2026-06-29 17:16:48 +05:30
PranshulGG 419ff8eff3 add WidgetVariant enum class for widget sizes 2026-06-29 17:16:33 +05:30
PranshulGG 444b51c40b update WidgetConfig with new display properties and add support for WeatherWidget and WeatherHorizontalWidget in WidgetConfigActivity 2026-06-29 17:16:22 +05:30
PranshulGG 08db096cdf refactor WidgetHourlyItem to use custom sizes and add WidgetReload class for widget updates 2026-06-29 17:16:10 +05:30
PranshulGG 13747a633b update sizeMode to Exact in WidgetPill and remove onUpdate in WidgetPillReceiver 2026-06-29 17:15:58 +05:30
PranshulGG eb6b4b3640 refactor WeatherWorker and remove appTheme from widget state logic 2026-06-29 17:15:29 +05:30
PranshulGG 93637dab4a refactor WeatherWidgetPill UI to use fixed sizes and add ReloadButton for empty state 2026-06-29 17:14:57 +05:30
PranshulGG b537539156 add widget configuration screen and support for large, compact, and small variants 2026-06-29 17:14:45 +05:30
PranshulGG 29db2465d9 add configuration screen and support for dynamic font sizes and themes in horizontal weather widgets 2026-06-29 17:13:54 +05:30
PranshulGG e0d19e471d refactor Glance widget configuration layout and update UI styling with a reload button 2026-06-29 17:13:16 +05:30
PranshulGG f02de5c042 add font size, icon size, and forecast count customization to ClockDailyWidget and its configuration UI 2026-06-29 17:12:36 +05:30
PranshulGG 46bccf3b24 add dynamic text sizing and adaptive theme colors to clock and date widgets 2026-06-29 17:12:02 +05:30
PranshulGG fe6cf88a7e remove unused sys_clock layout files 2026-06-29 17:11:51 +05:30
Pranshul 7fedac7aba New translations strings.xml (Lithuanian)
[ci skip]
2026-06-29 14:45:12 +05:30
Pranshul b386b75182 New translations strings.xml (Ukrainian)
[ci skip]
2026-06-28 23:23:49 +05:30
Pranshul 4a069f0f91 New translations strings.xml (Czech)
[ci skip]
2026-06-28 23:23:48 +05:30
PranshulGG 2074122fb4 update periodic work policy to UPDATE, and refactor notification context usage 2026-06-27 20:29:55 +05:30
PranshulGG 327ea2ff77 Fixed Missing weather condition for DWD closes #915 2026-06-27 20:29:24 +05:30
Pranshul f78376eec3 Merge pull request #926 from PranshulGG/l10n_main
New Crowdin updates
2026-06-27 20:14:14 +05:30
Pranshul fffa99063e New translations strings.xml (Korean)
[ci skip]
2026-06-27 15:48:19 +05:30
Pranshul 3e9af6bfae New translations strings.xml (Bulgarian)
[ci skip]
2026-06-27 06:15:18 +05:30
Pranshul c613db6fbd New translations strings.xml (Bulgarian)
[ci skip]
2026-06-26 23:27:06 +05:30
Pranshul 379d0cafd2 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-26 12:12:28 +05:30
Pranshul 7dcd7d9a0e New translations strings.xml (Spanish)
[ci skip]
2026-06-26 05:13:26 +05:30
Pranshul 73c05c434e Merge pull request #914 from PranshulGG/l10n_main
New Crowdin updates
2026-06-25 21:47:33 +05:30
Pranshul 6d16c4b2cd Merge pull request #923 from FSaurenbach/main
DWD: Do not show incomplete days (except current day)
2026-06-25 21:45:54 +05:30
PranshulGG 3fe9825b7b Fixed Crashes for FMI #924 2026-06-25 21:44:22 +05:30
Ferdinand Saurenbach 3490af955d DWD: Do not show incomplete days (except current day) 2026-06-25 14:34:46 +02:00
Pranshul 1721eb3153 New translations strings.xml (Bulgarian)
[ci skip]
2026-06-25 15:10:42 +05:30
Pranshul f5d3399937 New translations strings.xml (French)
[ci skip]
2026-06-25 15:10:40 +05:30
Pranshul b3fcf452a8 New translations strings.xml (Greek)
[ci skip]
2026-06-25 15:10:39 +05:30
Pranshul 138d9c064c New translations strings.xml (Greek)
[ci skip]
2026-06-25 08:26:32 +05:30
Pranshul e8339c69b6 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-24 23:58:46 +05:30
PranshulGG 2a17909935 bump version code and version name to 3.5.1 (54) 2026-06-24 14:40:11 +05:30
PranshulGG b133d25311 Fixed wrong daily icons 2026-06-24 14:39:33 +05:30
PranshulGG c531e65c44 Fixed widget crashes closes #909 2026-06-24 14:39:20 +05:30
PranshulGG 9731d8960f add Hebrew and Lithuanian to the language list 2026-06-24 12:11:49 +05:30
PranshulGG 59f0366933 update source tile title to use fullName in MainScreenBottomSheets 2026-06-24 12:01:13 +05:30
PranshulGG 8edf1f28fc bump version to 3.5.0, add BMKG and China weather sources, and update Crowdin badges 2026-06-24 11:49:15 +05:30
PranshulGG 4474b6a5eb Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster
# Conflicts:
#	app/src/main/res/values-pt-rBR/strings.xml
2026-06-24 11:37:58 +05:30
Pranshul 78f2226b7a Merge pull request #908 from PranshulGG/l10n_main
New Crowdin updates
2026-06-24 11:37:29 +05:30
PranshulGG 9db951c67d fix string format placeholders in Brazilian Portuguese translations 2026-06-24 11:37:18 +05:30
Pranshul ac23e28fe4 New translations strings.xml (Hebrew)
[ci skip]
2026-06-24 11:36:28 +05:30
Pranshul e37b8470f5 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-24 11:36:27 +05:30
Pranshul eeaf41b468 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-24 11:36:25 +05:30
Pranshul 2fc1fc579b New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-24 11:36:24 +05:30
Pranshul 1963ee205c New translations strings.xml (Filipino)
[ci skip]
2026-06-24 11:36:23 +05:30
Pranshul 5c4902b7dd New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-24 11:36:22 +05:30
Pranshul 2f8b14b535 New translations strings.xml (Thai)
[ci skip]
2026-06-24 11:36:21 +05:30
Pranshul 4f5b8d5bb6 New translations strings.xml (Persian)
[ci skip]
2026-06-24 11:36:20 +05:30
Pranshul 432156e747 New translations strings.xml (Indonesian)
[ci skip]
2026-06-24 11:36:18 +05:30
Pranshul dd94c0d9ba New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-24 11:36:17 +05:30
Pranshul 4a14a10666 New translations strings.xml (Vietnamese)
[ci skip]
2026-06-24 11:36:16 +05:30
Pranshul d122733b4c New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-24 11:36:14 +05:30
Pranshul a0bf49861c New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-24 11:36:13 +05:30
Pranshul 48dee56c7e New translations strings.xml (Ukrainian)
[ci skip]
2026-06-24 11:36:12 +05:30
Pranshul 4cb78607fd New translations strings.xml (Turkish)
[ci skip]
2026-06-24 11:36:11 +05:30
Pranshul f4f0183097 New translations strings.xml (Swedish)
[ci skip]
2026-06-24 11:36:10 +05:30
Pranshul e85a0073f6 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-24 11:36:09 +05:30
Pranshul 741d014897 New translations strings.xml (Slovenian)
[ci skip]
2026-06-24 11:36:08 +05:30
Pranshul f6420ffa2f New translations strings.xml (Russian)
[ci skip]
2026-06-24 11:36:07 +05:30
Pranshul f0c914b4b0 New translations strings.xml (Portuguese)
[ci skip]
2026-06-24 11:36:06 +05:30
Pranshul 459ab7e8af New translations strings.xml (Polish)
[ci skip]
2026-06-24 11:36:04 +05:30
Pranshul 96add1f35a New translations strings.xml (Dutch)
[ci skip]
2026-06-24 11:36:03 +05:30
Pranshul 7b49d9d904 New translations strings.xml (Korean)
[ci skip]
2026-06-24 11:36:02 +05:30
Pranshul 7b917b6c78 New translations strings.xml (Japanese)
[ci skip]
2026-06-24 11:36:01 +05:30
Pranshul 255dfce685 New translations strings.xml (Italian)
[ci skip]
2026-06-24 11:36:00 +05:30
Pranshul 8a2f9ab297 New translations strings.xml (Hungarian)
[ci skip]
2026-06-24 11:35:59 +05:30
Pranshul 1c1fe1af11 New translations strings.xml (Finnish)
[ci skip]
2026-06-24 11:35:58 +05:30
Pranshul 2cbf37b8e0 New translations strings.xml (Greek)
[ci skip]
2026-06-24 11:35:57 +05:30
Pranshul b4b5118124 New translations strings.xml (German)
[ci skip]
2026-06-24 11:35:56 +05:30
Pranshul 85538040a8 New translations strings.xml (Czech)
[ci skip]
2026-06-24 11:35:54 +05:30
Pranshul 5eb58e7bca New translations strings.xml (Catalan)
[ci skip]
2026-06-24 11:35:53 +05:30
Pranshul c490881747 New translations strings.xml (Bulgarian)
[ci skip]
2026-06-24 11:35:52 +05:30
Pranshul ba1656d3d5 New translations strings.xml (Spanish)
[ci skip]
2026-06-24 11:35:51 +05:30
Pranshul eb9e92b55a New translations strings.xml (French)
[ci skip]
2026-06-24 11:35:50 +05:30
Pranshul b18c3f8bea New translations strings.xml (Romanian)
[ci skip]
2026-06-24 11:35:49 +05:30
Pranshul 2395382c95 Merge pull request #903 from PranshulGG/l10n_main
New Crowdin updates
2026-06-24 11:24:54 +05:30
PranshulGG c1b17ed0d2 update WeatherWorker to treat background updates as manual refresh 2026-06-24 11:23:39 +05:30
PranshulGG 1c091f78eb add null checks for precipitation probability in SnowHourlyCard and RainHourlyCard 2026-06-24 11:23:23 +05:30
PranshulGG f3b4a57c40 add BMKG weather source support for Indonesia closes #900 2026-06-24 11:21:52 +05:30
PranshulGG de35f8f78e refactor VisibilityBlock layout and add descriptive visibility labels 2026-06-24 09:55:32 +05:30
PranshulGG ecab4f1df0 add font_download_24px vector drawable 2026-06-24 08:51:07 +05:30
PranshulGG 3c2f341315 display average wind speed in the daily forecast instead of max 2026-06-24 08:50:54 +05:30
Pranshul 8adff8837c New translations strings.xml (Polish)
[ci skip]
2026-06-24 04:26:40 +05:30
Pranshul 4ab3154a2d New translations strings.xml (Hebrew)
[ci skip]
2026-06-23 22:06:13 +05:30
Pranshul fe0aa8edad New translations strings.xml (Lithuanian)
[ci skip]
2026-06-23 22:06:12 +05:30
Pranshul fbdf56fe49 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-23 22:06:10 +05:30
Pranshul 60caaf8fac New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-23 22:06:09 +05:30
Pranshul 37dfde7536 New translations strings.xml (Filipino)
[ci skip]
2026-06-23 22:06:07 +05:30
Pranshul d6ced47723 New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-23 22:06:06 +05:30
Pranshul d0e9fde71b New translations strings.xml (Thai)
[ci skip]
2026-06-23 22:06:04 +05:30
Pranshul a5c2fdd7c0 New translations strings.xml (Persian)
[ci skip]
2026-06-23 22:06:03 +05:30
Pranshul 3bea61386b New translations strings.xml (Indonesian)
[ci skip]
2026-06-23 22:06:02 +05:30
Pranshul a923b86f72 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-23 22:06:00 +05:30
Pranshul 30ed3b5e35 New translations strings.xml (Vietnamese)
[ci skip]
2026-06-23 22:05:59 +05:30
Pranshul 11646d9f4e New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-23 22:05:57 +05:30
Pranshul d99d43efba New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-23 22:05:56 +05:30
Pranshul 38a452e82b New translations strings.xml (Ukrainian)
[ci skip]
2026-06-23 22:05:54 +05:30
Pranshul f6b5b72ca5 New translations strings.xml (Turkish)
[ci skip]
2026-06-23 22:05:53 +05:30
Pranshul e5fd2f41be New translations strings.xml (Swedish)
[ci skip]
2026-06-23 22:05:51 +05:30
Pranshul 87513050b8 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-23 22:05:50 +05:30
Pranshul d3d972aab6 New translations strings.xml (Slovenian)
[ci skip]
2026-06-23 22:05:48 +05:30
Pranshul 669c724882 New translations strings.xml (Russian)
[ci skip]
2026-06-23 22:05:47 +05:30
Pranshul 166233e5af New translations strings.xml (Portuguese)
[ci skip]
2026-06-23 22:05:45 +05:30
Pranshul b3be33c62d New translations strings.xml (Polish)
[ci skip]
2026-06-23 22:05:44 +05:30
Pranshul 7015226c68 New translations strings.xml (Dutch)
[ci skip]
2026-06-23 22:05:43 +05:30
Pranshul c0aa385ae5 New translations strings.xml (Korean)
[ci skip]
2026-06-23 22:05:41 +05:30
Pranshul 7b568638a2 New translations strings.xml (Japanese)
[ci skip]
2026-06-23 22:05:39 +05:30
Pranshul 1b77ee373a New translations strings.xml (Italian)
[ci skip]
2026-06-23 22:05:38 +05:30
Pranshul ca1f0ab450 New translations strings.xml (Hungarian)
[ci skip]
2026-06-23 22:05:36 +05:30
Pranshul 79d0bb9f71 New translations strings.xml (Finnish)
[ci skip]
2026-06-23 22:05:35 +05:30
Pranshul f445ebbaeb New translations strings.xml (Greek)
[ci skip]
2026-06-23 22:05:33 +05:30
Pranshul ba4dcf17f6 New translations strings.xml (German)
[ci skip]
2026-06-23 22:05:32 +05:30
Pranshul d3ee7eb17e New translations strings.xml (Czech)
[ci skip]
2026-06-23 22:05:30 +05:30
Pranshul caf56fbdac New translations strings.xml (Catalan)
[ci skip]
2026-06-23 22:05:29 +05:30
Pranshul 4794678485 New translations strings.xml (Bulgarian)
[ci skip]
2026-06-23 22:05:27 +05:30
Pranshul 95ceb73719 New translations strings.xml (Spanish)
[ci skip]
2026-06-23 22:05:26 +05:30
Pranshul 2e58403ca7 New translations strings.xml (French)
[ci skip]
2026-06-23 22:05:24 +05:30
Pranshul adb7452bf4 New translations strings.xml (Romanian)
[ci skip]
2026-06-23 22:05:23 +05:30
PranshulGG 230cc7bb94 hide precipitation probability in DailyCard when value is null 2026-06-23 21:48:46 +05:30
PranshulGG 5d08ac6bb3 calculate average wind speed instead of maximum in nws 2026-06-23 21:48:35 +05:30
PranshulGG 71c155b7ac refactor time formatting logic in SunBlock.kt 2026-06-23 21:48:18 +05:30
PranshulGG 5974427d48 add China weather source 2026-06-23 21:48:07 +05:30
PranshulGG c364a7df72 Added an option to use **Google Sans Flex** font 2026-06-23 21:46:48 +05:30
Pranshul 934179fd3e New translations strings.xml (Hebrew)
[ci skip]
2026-06-23 00:58:36 +05:30
Pranshul b7a0962447 New translations strings.xml (Polish)
[ci skip]
2026-06-23 00:58:34 +05:30
Pranshul e9b3efc019 New translations strings.xml (Spanish)
[ci skip]
2026-06-23 00:58:33 +05:30
Pranshul 543409c3c6 New translations strings.xml (Spanish)
[ci skip]
2026-06-22 18:55:13 +05:30
PranshulGG 07b3d904c3 refactor ClockDailyWidget to display 5 items with weighted distribution and adjust padding 2026-06-22 16:01:54 +05:30
PranshulGG 74d435ed79 refactor ClockDailyWidget to display 5 items with weighted distribution and adjust padding 2026-06-22 15:16:00 +05:30
Pranshul 2359c88aff New translations strings.xml (Japanese)
[ci skip]
2026-06-22 04:49:39 +05:30
Pranshul c41e965145 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-21 22:42:33 +05:30
Pranshul f37d8429e2 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-21 22:42:31 +05:30
Pranshul 080972a26a New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-21 22:42:30 +05:30
Pranshul 934409e344 New translations strings.xml (Filipino)
[ci skip]
2026-06-21 22:42:29 +05:30
Pranshul 796fcee1eb New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-21 22:42:28 +05:30
Pranshul 846f6761e7 New translations strings.xml (Thai)
[ci skip]
2026-06-21 22:42:26 +05:30
Pranshul ffffbe4c1f New translations strings.xml (Persian)
[ci skip]
2026-06-21 22:42:25 +05:30
Pranshul 88938b3e18 New translations strings.xml (Indonesian)
[ci skip]
2026-06-21 22:42:24 +05:30
Pranshul 9cd437bf1f New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-21 22:42:23 +05:30
Pranshul 41567202ad New translations strings.xml (Vietnamese)
[ci skip]
2026-06-21 22:42:21 +05:30
Pranshul aa6fa26ad0 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-21 22:42:20 +05:30
Pranshul 61e12c71f2 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-21 22:42:19 +05:30
Pranshul b12d5b9fb2 New translations strings.xml (Ukrainian)
[ci skip]
2026-06-21 22:42:18 +05:30
Pranshul c6347bfdee New translations strings.xml (Turkish)
[ci skip]
2026-06-21 22:42:16 +05:30
Pranshul a436416faa New translations strings.xml (Swedish)
[ci skip]
2026-06-21 22:42:15 +05:30
Pranshul 115bd879d2 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-21 22:42:14 +05:30
Pranshul 2dd3e7c5d9 New translations strings.xml (Slovenian)
[ci skip]
2026-06-21 22:42:12 +05:30
Pranshul 6deb7d9986 New translations strings.xml (Russian)
[ci skip]
2026-06-21 22:42:11 +05:30
Pranshul 74f1c0d3fa New translations strings.xml (Portuguese)
[ci skip]
2026-06-21 22:42:10 +05:30
Pranshul f968500ebc New translations strings.xml (Polish)
[ci skip]
2026-06-21 22:42:08 +05:30
Pranshul c12d059ce9 New translations strings.xml (Dutch)
[ci skip]
2026-06-21 22:42:07 +05:30
Pranshul 4e5243aab8 New translations strings.xml (Korean)
[ci skip]
2026-06-21 22:42:06 +05:30
Pranshul 90ba2fe0a3 New translations strings.xml (Japanese)
[ci skip]
2026-06-21 22:42:05 +05:30
Pranshul 51717a1eb4 New translations strings.xml (Italian)
[ci skip]
2026-06-21 22:42:03 +05:30
Pranshul 1544843fcf New translations strings.xml (Hungarian)
[ci skip]
2026-06-21 22:42:02 +05:30
Pranshul f76c66a144 New translations strings.xml (Finnish)
[ci skip]
2026-06-21 22:42:01 +05:30
Pranshul 7a5fc52d68 New translations strings.xml (Greek)
[ci skip]
2026-06-21 22:42:00 +05:30
Pranshul 6ad7e9bb7f New translations strings.xml (German)
[ci skip]
2026-06-21 22:41:58 +05:30
Pranshul c5dd8296ed New translations strings.xml (Czech)
[ci skip]
2026-06-21 22:41:57 +05:30
Pranshul 27fdb9a885 New translations strings.xml (Catalan)
[ci skip]
2026-06-21 22:41:56 +05:30
Pranshul 294c3b89fb New translations strings.xml (Bulgarian)
[ci skip]
2026-06-21 22:41:54 +05:30
Pranshul d7c4645bc9 New translations strings.xml (Spanish)
[ci skip]
2026-06-21 22:41:53 +05:30
Pranshul ec3aae5600 New translations strings.xml (French)
[ci skip]
2026-06-21 22:41:52 +05:30
Pranshul 84d3d92f53 New translations strings.xml (Romanian)
[ci skip]
2026-06-21 22:41:51 +05:30
PranshulGG 8cc9cf179b update glance widget preview image 2026-06-21 18:27:46 +05:30
PranshulGG 55adcb3acb add color_transparent string resource 2026-06-21 18:27:40 +05:30
PranshulGG 736a599bae add WidgetColors for theme management and increase daily forecast count to 6 2026-06-21 18:27:33 +05:30
PranshulGG 92437ca5bd trigger weather update on widget update and update horizontal widget UI layout 2026-06-21 18:27:22 +05:30
PranshulGG 230911f770 add text color support to WidgetDate and WidgetClock components 2026-06-21 18:27:10 +05:30
PranshulGG b67d7e8fdc add ClockDailyWidget with forecast support and implement theme-based configuration for widgets 2026-06-21 18:26:59 +05:30
PranshulGG d6e645c0e0 update app banner 2026-06-21 17:38:55 +05:30
Pranshul 1de646fcc5 New translations strings.xml (Korean)
[ci skip]
2026-06-21 16:04:06 +05:30
PranshulGG 038ad8883c update weather summary string resource in SummaryWidget and SummaryCard 2026-06-21 12:32:11 +05:30
PranshulGG f499dadb69 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-21 12:30:23 +05:30
PranshulGG 5e561cd301 add database schema for version 44 2026-06-21 12:30:04 +05:30
PranshulGG 135d047af5 refactor DailyDaysHeader to use LazyRow and implement auto-scroll to selected index 2026-06-21 12:28:55 +05:30
PranshulGG 0abc1f383c use rememberSaveable for selectedIndex in DailyScreen.kt 2026-06-21 11:45:34 +05:30
PranshulGG 86a8700f17 daily forecast now supports Humidity, Pressure, Visibility data 2026-06-21 11:44:47 +05:30
Pranshul fcb5abbcf1 New translations strings.xml (Korean)
[ci skip]
2026-06-21 10:00:47 +05:30
PranshulGG a3765cbd73 handle NaN in wind hourly bar height calculation 2026-06-20 15:17:43 +05:30
PranshulGG f543509d71 trigger weather worker on widget update in SummaryWidgetReceiver and WidgetPillReceiver 2026-06-20 15:17:26 +05:30
PranshulGG 37c9bd6992 add format_size_24px vector and update weather_preview image 2026-06-20 15:17:16 +05:30
PranshulGG 72083112e5 rename Glance widget label, update weather periodic work policy, and add shadow color resource 2026-06-20 15:17:01 +05:30
PranshulGG a351afb468 add WidgetConfig and WidgetConfigActivity for widget configuration 2026-06-20 15:16:42 +05:30
PranshulGG b4decf5381 update WeatherWorker logic, improve widget state handling, and increase hourly forecast limit 2026-06-20 15:16:32 +05:30
PranshulGG 641bbe726c change clock size selection to predefined options, fix widget layout spacing, and trigger worker on update 2026-06-20 15:16:18 +05:30
PranshulGG a7d889f8fc trigger weather worker on widget update and add config to WeatherWidgetStateJson 2026-06-20 15:15:55 +05:30
PranshulGG 9e2dc088d0 trigger weather worker on widget update and add config to WeatherWidgetStateJson 2026-06-20 15:15:16 +05:30
PranshulGG 8ac28e036d implement responsive sizing for horizontal weather widget and add mini/compact variants 2026-06-20 15:14:50 +05:30
PranshulGG a0dbcb9a21 add size-specific clock layout files and update ViewClock to select layouts based on text size 2026-06-20 15:13:23 +05:30
PranshulGG 4478f7c98a remove small weather widget and WidgetConfig 2026-06-20 15:12:41 +05:30
PranshulGG fdfaa74e17 refactor WeatherWidgetStateDefinition to use DataStoreFactory and dynamic fileKey 2026-06-20 15:12:23 +05:30
Pranshul d74480e98b New translations strings.xml (Lithuanian)
[ci skip]
2026-06-19 14:54:17 +05:30
Pranshul 0396ffadc5 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-19 02:48:29 +05:30
Pranshul d019c182eb New translations strings.xml (Korean)
[ci skip]
2026-06-19 02:48:27 +05:30
PranshulGG 664419b770 implement Glance weather widget and configuration UI for clock and date settings 2026-06-18 22:26:54 +05:30
Pranshul 9d65d9c8b4 Merge pull request #898 from PranshulGG/l10n_main
New Crowdin updates
2026-06-18 22:26:48 +05:30
Pranshul f22948eafb New translations strings.xml (Korean)
[ci skip]
2026-06-18 20:50:21 +05:30
Pranshul 4341c4047c New translations strings.xml (Lithuanian)
[ci skip]
2026-06-18 02:49:00 +05:30
Pranshul db3509b176 New translations strings.xml (Polish)
[ci skip]
2026-06-18 02:48:58 +05:30
Pranshul 44b18200f7 New translations strings.xml (Polish)
[ci skip]
2026-06-17 20:39:23 +05:30
Pranshul 0f26e1d4f2 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-17 14:41:03 +05:30
Pranshul f9b6b04b3f New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-17 08:19:08 +05:30
Pranshul 1e66cdc33d New translations strings.xml (Lithuanian)
[ci skip]
2026-06-17 02:16:33 +05:30
Pranshul 3a73fbaad2 New translations strings.xml (Lithuanian)
[ci skip]
2026-06-16 19:44:46 +05:30
Pranshul 79c7c8b662 Reorganize translation section in README
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-06-16 19:21:53 +05:30
PranshulGG 60d53cf343 refactor FmiXmlMapper to separate current icon retrieval from hourly fallback logic 2026-06-15 20:52:44 +05:30
PranshulGG 94d4dce5ca rename numbers.kt to NumberUtils.kt, add toSafeDouble extension, and update ECCC and FMI mappers 2026-06-15 20:32:46 +05:30
PranshulGG b8f5bd0e0f add GEO_NAMES_USERNAME and MF_KEY properties to release workflow 2026-06-15 19:23:44 +05:30
Pranshul 22ed28096d New translations strings.xml (Italian)
[ci skip]
2026-06-15 19:22:51 +05:30
Pranshul 7752d0b81c New translations strings.xml (Greek)
[ci skip]
2026-06-15 19:22:49 +05:30
Pranshul 86b24d974d New translations strings.xml (German)
[ci skip]
2026-06-15 19:22:48 +05:30
PranshulGG f06de99291 fix Indonesian locale value and remove commented navigation code in AppNavHost.kt 2026-06-15 19:04:12 +05:30
PranshulGG 010a1068a5 update horizontal padding to 16dp in Visibility, UvIndex, Pressure, and Wind blocks 2026-06-15 19:00:00 +05:30
PranshulGG 3748e095c5 fix string format placeholder in German translation and implement new version snackbar dismissal logic 2026-06-15 18:56:34 +05:30
PranshulGG d1ea9720e3 bump versionCode to 52 and versionName to 3.4.0 2026-06-15 18:47:33 +05:30
PranshulGG 518c876e82 compute apparent temperature fallback for feelsLike in EcccJsonMapper 2026-06-15 18:47:22 +05:30
PranshulGG 8b3c7d2817 allow custom snackbar duration in SnackbarManager 2026-06-15 18:44:15 +05:30
PranshulGG 32cf4618d4 implement version update check with local caching and notify user on MainScreen 2026-06-15 18:43:06 +05:30
PranshulGG 6fc1819038 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-15 16:44:26 +05:30
Pranshul 55fb9ac560 Merge pull request #895 from PranshulGG/l10n_main
New Crowdin updates
2026-06-15 16:44:16 +05:30
PranshulGG a4c993cc00 remove debug log from FmiXmlMapper.kt 2026-06-15 16:43:59 +05:30
PranshulGG 5bfd5945a3 add FMI and ECCC sources, and format description list as HTML 2026-06-15 16:43:04 +05:30
PranshulGG 0da69bd223 add getDayStartUtcAlignedToLocal to DateTimeFormatters and jaxb converter dependency 2026-06-15 16:39:08 +05:30
PranshulGG 9344d0692c pass location timezone to OpenMeteo API call 2026-06-15 16:38:58 +05:30
PranshulGG eb20b9358c add converter-jaxb dependency to libs.versions.toml 2026-06-15 16:38:51 +05:30
PranshulGG 96526f46d8 update imports 2026-06-15 16:38:37 +05:30
PranshulGG fe6fa0e9e0 calculate daily max precipitation probability from hourly data in ECCC mapper and remove try-catch in EcccRepository 2026-06-15 16:38:04 +05:30
PranshulGG 1ad6034e66 update HourlyCard to use weather current time 2026-06-15 16:37:49 +05:30
PranshulGG 7e789e9e01 remove default timezone in OpenMeteoApi and fix BASE_URL in MeteoFranceApi 2026-06-15 16:37:18 +05:30
PranshulGG 81583ad05a implement FMI as a weather source and update precipitation navigation routes 2026-06-15 16:37:06 +05:30
PranshulGG d6475b22ac Refactor weather screens to use dedicated hourly card components 2026-06-15 16:35:08 +05:30
PranshulGG a8ff948b81 add timezone support to device location updates fixed #897 2026-06-15 13:06:27 +05:30
Pranshul 535fe3ec85 New translations strings.xml (Russian)
[ci skip]
2026-06-15 03:42:06 +05:30
Pranshul 64289be950 New translations strings.xml (Spanish)
[ci skip]
2026-06-14 21:05:43 +05:30
PranshulGG a14679feee default OpenMeteo timezone to UTC, fix NWS precipitation probability mapping, and simplify chart labels across screens 2026-06-14 18:44:28 +05:30
PranshulGG d79be76936 use UTC for time strings and remove zoneId parameter in chart screens 2026-06-14 17:31:21 +05:30
PranshulGG 1ec3d6da4f use UTC for time strings and remove zoneId parameter in chart screens 2026-06-14 17:07:51 +05:30
Pranshul b67acc3885 New translations strings.xml (Italian)
[ci skip]
2026-06-14 13:47:36 +05:30
Pranshul 2f17041843 New translations strings.xml (German)
[ci skip]
2026-06-14 13:47:35 +05:30
Pranshul 11fc7f138a Merge branch 'main' into l10n_main
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-06-14 07:55:32 +05:30
Pranshul 90d2826e21 New translations strings.xml (Russian)
[ci skip]
2026-06-14 07:52:33 +05:30
Pranshul b9e40ba294 New translations strings.xml (Polish)
[ci skip]
2026-06-14 07:52:31 +05:30
Pranshul da713a28cb New translations strings.xml (Italian)
[ci skip]
2026-06-14 07:52:28 +05:30
Pranshul b868ff00fc New translations strings.xml (German)
[ci skip]
2026-06-14 07:52:25 +05:30
Pranshul 2450673826 New translations strings.xml (Catalan)
[ci skip]
2026-06-14 07:52:23 +05:30
Pranshul 71ec19b395 New translations strings.xml (Spanish)
[ci skip]
2026-06-14 07:52:22 +05:30
Pranshul 82b215a8e9 New translations strings.xml (French)
[ci skip]
2026-06-14 07:52:20 +05:30
PranshulGG 434ab7800d fix string format placeholders in Polish, Italian, and German translations and add Log import in Headlines.kt #889 2026-06-13 22:07:41 +05:30
PranshulGG 19c7676a4e FMI as a source, attempt #630 2026-06-12 21:58:02 +05:30
PranshulGG 739361255d add feature request issue template 2026-06-12 17:37:15 +05:30
PranshulGG 0462d8a79e fix indentation of validations in new_source.yaml 2026-06-12 17:07:45 +05:30
PranshulGG 31482a7df3 move required attribute under validations in new_source.yaml 2026-06-12 17:06:32 +05:30
PranshulGG 0e89f1c4b0 add new source issue template 2026-06-12 17:05:41 +05:30
PranshulGG da689a6ca3 add bug report issue template 2026-06-12 17:00:22 +05:30
PranshulGG 2017697bfb add bug report issue template 2026-06-12 16:55:58 +05:30
PranshulGG 91abf80631 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-12 16:50:03 +05:30
Pranshul 050e4a73d9 Merge pull request #886 from PranshulGG/l10n_main
New Crowdin updates
2026-06-12 16:49:25 +05:30
PranshulGG 00fa6e25fc add Room database schema version 43 2026-06-12 16:48:57 +05:30
PranshulGG 1c534f1d10 update wind speed validation to support daily forecasts in WeatherBlocks.kt 2026-06-12 16:30:27 +05:30
PranshulGG a6c512ccbf rename MeteoFranceMapper to MeteFranceJsonMapper, remove @Preview from NoHourlyDataAvailable, and remove logging interceptor from SmhiApi 2026-06-12 16:30:11 +05:30
PranshulGG 4aa316ead2 handle empty hourly weather data in findMatchingHourly, HourlyCard, and ComputeDaySummary 2026-06-12 16:29:57 +05:30
PranshulGG 0fdb62ee64 add ECCC weather source and refactor weather source settings screen closes #875 2026-06-12 16:29:41 +05:30
PranshulGG cc026da135 change notification importance to DEFAULT 2026-06-12 12:08:03 +05:30
PranshulGG 103390e9e1 remove HttpLoggingInterceptor from network APIs, fix thunderstorm animation parameters in WeatherAnimations.kt 2026-06-12 10:47:11 +05:30
PranshulGG 5b34db7ce8 fixed unusually high temperatures when using NWS 2026-06-11 09:44:54 +05:30
PranshulGG 46dd248030 increase minSdk to 26, disable library desugaring, and use safeZoneId utility to handle timezone exceptions closes #889 2026-06-10 21:57:18 +05:30
PranshulGG 92eb2b0b36 remove HttpLoggingInterceptor from API classes and remove debug log in DwdJsonMapper closes #893 2026-06-10 21:41:47 +05:30
Pranshul 66f77f65ae New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-10 16:37:10 +05:30
Pranshul 2c58544eff New translations strings.xml (Japanese)
[ci skip]
2026-06-10 16:37:08 +05:30
PranshulGG 360b7372d8 update weather_preview and add widget_horizontal_preview and widget_small_preview assets 2026-06-10 16:09:25 +05:30
PranshulGG cd91bd3705 add WeatherSmallWidget and WeatherHorizontalWidget to AndroidManifest and WeatherWidgetUpdater 2026-06-10 16:09:07 +05:30
PranshulGG b2fa8ede42 add WeatherSmallWidget with receiver and UI layout using Jetpack Glance 2026-06-10 16:08:48 +05:30
PranshulGG f5459ff752 add WeatherHorizontalWidget and provider info for horizontal 2026-06-10 16:08:38 +05:30
PranshulGG 577baa24b4 recreate activity on theme change and implement dynamic navigation bar styles using enableEdgeToEdge in MainActivity 2026-06-10 16:07:35 +05:30
PranshulGG e7df1c9b4a update WeatherWidgetNormal layout, increase padding, and relocate temperature display 2026-06-10 14:30:54 +05:30
PranshulGG 148e1347ba update AGP, Kotlin, and other dependencies, add hilt-metadata-jvm, and use ZoneId in IntroScreen #889 2026-06-10 12:18:54 +05:30
PranshulGG 63aa564086 update language selection logic to support system locale and refactor number formatting to use localized locales 2026-06-10 10:25:11 +05:30
Pranshul 399b5123ec New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-09 19:14:15 +05:30
Pranshul 92a3f1cc50 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-09 19:14:14 +05:30
Pranshul 2338079041 New translations strings.xml (Filipino)
[ci skip]
2026-06-09 19:14:12 +05:30
Pranshul 21b180728c New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-09 19:14:11 +05:30
Pranshul 8dab6126d4 New translations strings.xml (Thai)
[ci skip]
2026-06-09 19:14:09 +05:30
Pranshul cc1e06c2a3 New translations strings.xml (Persian)
[ci skip]
2026-06-09 19:14:08 +05:30
Pranshul c0f2135021 New translations strings.xml (Indonesian)
[ci skip]
2026-06-09 19:14:06 +05:30
Pranshul b43912b7c5 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-09 19:14:05 +05:30
Pranshul b42b582e6e New translations strings.xml (Vietnamese)
[ci skip]
2026-06-09 19:14:04 +05:30
Pranshul 62dfd30f1b New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-09 19:14:02 +05:30
Pranshul 332d7249ac New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-09 19:14:01 +05:30
Pranshul 1a15aaa965 New translations strings.xml (Ukrainian)
[ci skip]
2026-06-09 19:13:59 +05:30
Pranshul 0de7a150bd New translations strings.xml (Turkish)
[ci skip]
2026-06-09 19:13:58 +05:30
Pranshul d002f4cbab New translations strings.xml (Swedish)
[ci skip]
2026-06-09 19:13:56 +05:30
Pranshul 63a13c57f4 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-09 19:13:55 +05:30
Pranshul 6ea0bf64b9 New translations strings.xml (Slovenian)
[ci skip]
2026-06-09 19:13:53 +05:30
Pranshul 8351dbf827 New translations strings.xml (Russian)
[ci skip]
2026-06-09 19:13:52 +05:30
Pranshul 23932371fb New translations strings.xml (Portuguese)
[ci skip]
2026-06-09 19:13:50 +05:30
Pranshul 16864ed688 New translations strings.xml (Polish)
[ci skip]
2026-06-09 19:13:48 +05:30
Pranshul 39571861cd New translations strings.xml (Dutch)
[ci skip]
2026-06-09 19:13:47 +05:30
Pranshul 693a596a7e New translations strings.xml (Korean)
[ci skip]
2026-06-09 19:13:45 +05:30
Pranshul eca77b3659 New translations strings.xml (Japanese)
[ci skip]
2026-06-09 19:13:43 +05:30
Pranshul bb217ee8dc New translations strings.xml (Italian)
[ci skip]
2026-06-09 19:13:42 +05:30
Pranshul bd2c12d6bb New translations strings.xml (Hungarian)
[ci skip]
2026-06-09 19:13:40 +05:30
Pranshul 60b37c58e6 New translations strings.xml (Finnish)
[ci skip]
2026-06-09 19:13:38 +05:30
Pranshul f6f4e21c0e New translations strings.xml (Greek)
[ci skip]
2026-06-09 19:13:37 +05:30
Pranshul b0c046ad7b New translations strings.xml (German)
[ci skip]
2026-06-09 19:13:35 +05:30
Pranshul 76fc4544af New translations strings.xml (Czech)
[ci skip]
2026-06-09 19:13:34 +05:30
Pranshul 72415c8520 New translations strings.xml (Catalan)
[ci skip]
2026-06-09 19:13:32 +05:30
Pranshul ef2676bde1 New translations strings.xml (Bulgarian)
[ci skip]
2026-06-09 19:13:31 +05:30
Pranshul 7524a9308e New translations strings.xml (Spanish)
[ci skip]
2026-06-09 19:13:30 +05:30
Pranshul 880b80d779 New translations strings.xml (French)
[ci skip]
2026-06-09 19:13:28 +05:30
Pranshul 52045c9dff New translations strings.xml (Romanian)
[ci skip]
2026-06-09 19:13:26 +05:30
PranshulGG 96ac827746 add mail_24px vector drawable 2026-06-09 19:11:37 +05:30
PranshulGG 47aea1ad3f add network connectivity constraint to WeatherWorker in WeatherUpdateScheduler 2026-06-09 19:11:27 +05:30
PranshulGG a41396a335 add unit conversion for dew point in HumidityScreen, include info cards in PrecipitationScreen 2026-06-09 19:11:18 +05:30
Pranshul 383cb07273 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-08 22:34:16 +05:30
Pranshul 662a22ce33 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-08 22:34:15 +05:30
Pranshul b008ea54bd New translations strings.xml (Czech)
[ci skip]
2026-06-08 16:07:33 +05:30
Pranshul 79d3151020 New translations strings.xml (French)
[ci skip]
2026-06-08 06:25:18 +05:30
Pranshul 60aa1c35c3 New translations strings.xml (Czech)
[ci skip]
2026-06-08 00:23:37 +05:30
Pranshul 5264874bd9 New translations strings.xml (German)
[ci skip]
2026-06-07 18:28:27 +05:30
Pranshul 0dd03cf6ec New translations strings.xml (Spanish)
[ci skip]
2026-06-07 18:28:25 +05:30
PranshulGG 4162f0353b add placeholders for GEO_NAMES_USERNAME and MF_KEY in gradle.properties 2026-06-07 15:37:39 +05:30
PranshulGG 319948e25c add email action tile to AboutScreen and remove TODO comment 2026-06-07 13:49:52 +05:30
PranshulGG be4fce9c77 Added option to use System Language fixed #872 2026-06-07 13:47:06 +05:30
Pranshul b151de735a New translations strings.xml (German)
[ci skip]
2026-06-07 12:19:19 +05:30
Pranshul 67e3de0b39 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-06 23:05:20 +05:30
Pranshul 2cab9da603 New translations strings.xml (Czech)
[ci skip]
2026-06-06 23:05:19 +05:30
Pranshul 7e46a5df7b New translations strings.xml (French)
[ci skip]
2026-06-06 23:05:18 +05:30
Pranshul 1b0cef1b36 New translations strings.xml (Portuguese)
[ci skip]
2026-06-06 16:55:05 +05:30
Pranshul d50206280c New translations strings.xml (French)
[ci skip]
2026-06-06 16:55:04 +05:30
PranshulGG 27937ad90f add countryCode support to location models closes #887 2026-06-06 13:25:40 +05:30
PranshulGG b02d11369d add countryCode support to location models closes #887 2026-06-06 13:25:34 +05:30
Pranshul e18cd087ea New translations strings.xml (Polish)
[ci skip]
2026-06-06 10:52:56 +05:30
Pranshul de25bb0028 New translations strings.xml (Japanese)
[ci skip]
2026-06-06 10:52:55 +05:30
PranshulGG 746b7f4ee9 remove commented code in AppNavHost and update top values calculation in UvIndexScreen 2026-06-06 10:08:02 +05:30
PranshulGG 084c1cd08a update steps value in UvIndexScreen.kt 2026-06-06 09:24:48 +05:30
PranshulGG fce957522d bump version to 3.3.0 and update manual and auto refresh intervals in CacheConfig 2026-06-06 09:04:43 +05:30
PranshulGG 575c603386 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-06 08:58:49 +05:30
PranshulGG b67e710010 update monochrome launcher icons 2026-06-06 08:57:55 +05:30
Pranshul 4d3e467b49 Merge pull request #885 from PranshulGG/l10n_main
New Crowdin updates
2026-06-06 08:43:37 +05:30
Pranshul 1e86572bc8 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-06 04:27:54 +05:30
PranshulGG d771db2b1b add comment to MIGRATION_40_41 explaining the column existence check in WeatherMasterDatabase.kt 2026-06-05 22:31:25 +05:30
PranshulGG ec2a7571bc add database schemas for versions 40, 41, and 42 and add dawn and dusk fields to weather_daily table 2026-06-05 22:30:07 +05:30
PranshulGG cc76e55ce4 add database schemas for versions 40, 41, and 42 and add dawn and dusk fields to weather_daily table 2026-06-05 22:02:49 +05:30
PranshulGG 7fd72a8bef add supported weather sources to full_description.txt 2026-06-05 21:57:50 +05:30
PranshulGG be7b61fa17 add supported weather sources section to README 2026-06-05 21:54:46 +05:30
PranshulGG 7fa3fd1b5b Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-06-05 21:46:54 +05:30
Pranshul e71f174c02 Merge pull request #871 from PranshulGG/l10n_main
New Crowdin updates
2026-06-05 21:46:41 +05:30
PranshulGG e0b668c2da update versionCode to 50 and versionName to 3.2.0 in output-metadata.json 2026-06-05 21:46:09 +05:30
PranshulGG 3ad01c5c4f add MF_KEY secret to release workflow 2026-06-05 21:45:29 +05:30
Pranshul a383ab4697 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-05 21:44:30 +05:30
Pranshul 7417905209 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-05 21:44:29 +05:30
Pranshul c6d5eebf02 New translations strings.xml (Filipino)
[ci skip]
2026-06-05 21:44:27 +05:30
Pranshul feacc74dbd New translations strings.xml (Azerbaijani)
[ci skip]
2026-06-05 21:44:26 +05:30
Pranshul ed7be71079 New translations strings.xml (Thai)
[ci skip]
2026-06-05 21:44:25 +05:30
Pranshul b5503a980d New translations strings.xml (Persian)
[ci skip]
2026-06-05 21:44:23 +05:30
Pranshul 1e64809a92 New translations strings.xml (Indonesian)
[ci skip]
2026-06-05 21:44:21 +05:30
Pranshul ee12d33a99 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-06-05 21:44:20 +05:30
Pranshul cbb59d5afb New translations strings.xml (Vietnamese)
[ci skip]
2026-06-05 21:44:18 +05:30
Pranshul cd9c63cc97 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-06-05 21:44:17 +05:30
Pranshul 07a9de1273 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-06-05 21:44:16 +05:30
Pranshul ca79be74ac New translations strings.xml (Ukrainian)
[ci skip]
2026-06-05 21:44:14 +05:30
Pranshul 864c4bd047 New translations strings.xml (Turkish)
[ci skip]
2026-06-05 21:44:13 +05:30
Pranshul 56d46b756e New translations strings.xml (Swedish)
[ci skip]
2026-06-05 21:44:11 +05:30
Pranshul a3f3cbe1c3 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-06-05 21:44:10 +05:30
Pranshul 3fb3ba1c18 New translations strings.xml (Slovenian)
[ci skip]
2026-06-05 21:44:08 +05:30
Pranshul 09a0babc97 New translations strings.xml (Russian)
[ci skip]
2026-06-05 21:44:06 +05:30
Pranshul 706782eddc New translations strings.xml (Portuguese)
[ci skip]
2026-06-05 21:44:05 +05:30
Pranshul 23ec6c59ff New translations strings.xml (Polish)
[ci skip]
2026-06-05 21:44:03 +05:30
Pranshul 812aa13e14 New translations strings.xml (Dutch)
[ci skip]
2026-06-05 21:44:02 +05:30
Pranshul 1786ce6392 New translations strings.xml (Korean)
[ci skip]
2026-06-05 21:44:01 +05:30
Pranshul 18f8587fd9 New translations strings.xml (Japanese)
[ci skip]
2026-06-05 21:43:59 +05:30
Pranshul 1923b6782a New translations strings.xml (Italian)
[ci skip]
2026-06-05 21:43:57 +05:30
Pranshul b82d5dd60d New translations strings.xml (Hungarian)
[ci skip]
2026-06-05 21:43:56 +05:30
Pranshul 225e174026 New translations strings.xml (Finnish)
[ci skip]
2026-06-05 21:43:54 +05:30
Pranshul b1301eac19 New translations strings.xml (Greek)
[ci skip]
2026-06-05 21:43:53 +05:30
Pranshul eb39601d33 New translations strings.xml (German)
[ci skip]
2026-06-05 21:43:51 +05:30
Pranshul 0cc2b6589f New translations strings.xml (Czech)
[ci skip]
2026-06-05 21:43:49 +05:30
Pranshul 7d58f3ffc9 New translations strings.xml (Catalan)
[ci skip]
2026-06-05 21:43:47 +05:30
Pranshul fed1c3e151 New translations strings.xml (Bulgarian)
[ci skip]
2026-06-05 21:43:46 +05:30
Pranshul 981c6ba896 New translations strings.xml (Spanish)
[ci skip]
2026-06-05 21:43:44 +05:30
Pranshul 6dc1e216ff New translations strings.xml (French)
[ci skip]
2026-06-05 21:43:43 +05:30
Pranshul c54e879e83 New translations strings.xml (Romanian)
[ci skip]
2026-06-05 21:43:41 +05:30
PranshulGG 9cd5468a87 remove GEO_NAMES_USERNAME from gradle.properties 2026-06-05 21:42:24 +05:30
PranshulGG e5b5bd4aa8 add MF_KEY to build config and WorkManager imports to WeatherMasterApplication 2026-06-05 21:41:56 +05:30
PranshulGG 39fe7adc71 update widget update call in WeatherViewModel and add DWD and Meteo France repositories to WeatherRepositoryProvider 2026-06-05 21:41:44 +05:30
PranshulGG c72f701229 add isShowSummary preference toggle for SummaryCard and update LocationItem styling with dynamic shapes and secondary colors 2026-06-05 21:41:17 +05:30
PranshulGG ecb1635850 conditionally show SummaryCard in DailyScreen, remove WeatherWorker start from SummaryWidgetReceiver, and remove fixed height in SelectableDayItem 2026-06-05 21:41:02 +05:30
PranshulGG 155d418d86 conditionally show SummaryCard in DailyScreen, remove WeatherWorker start from SummaryWidgetReceiver, and remove fixed height in SelectableDayItem 2026-06-05 21:39:52 +05:30
PranshulGG 21bce0ab52 use max wind speed in weather mappers, remove daily grouping filters, and refactor NWS precipitation logic using hourly data maps 2026-06-05 21:39:02 +05:30
PranshulGG 6c5cb9a857 refactor weather blocks layout to use Column with spacing, update typography, and improve UV Index screen data handling 2026-06-05 21:38:17 +05:30
PranshulGG 328fefc984 handle missing hourly data in detail screens and refactor bar chart logic for consistency 2026-06-05 21:37:45 +05:30
PranshulGG 79c1fa600c add Meteo France weather source including API, repository, and data mappers closes #875 2026-06-05 21:37:04 +05:30
PranshulGG d9c195219b add DWD weather provider including DwdApi, DwdRepository, and DwdJsonMapper 2026-06-05 21:36:36 +05:30
PranshulGG e9cfbacb93 add Wind and Precipitation screens to AppNavHost, set MainActivity launchMode to singleTop, and add day summary preference to AppPrefsState 2026-06-05 21:36:17 +05:30
PranshulGG 127d94b86d add DWD and Meteo France repositories, update worker scheduling logic, and add show summary preference 2026-06-05 21:35:43 +05:30
PranshulGG ea8c283c14 remove multiple weather widget layouts, simplify WeatherWidget to use WeatherWidgetNormal, and update WeatherWorker logic closes #883 closes #880 2026-06-05 21:35:05 +05:30
Pranshul ceadad4109 New translations strings.xml (Russian)
[ci skip]
2026-06-04 11:29:19 +05:30
PranshulGG 798fa10171 implement WindScreen, add click navigation to WindBlock closes #878 2026-06-03 22:33:50 +05:30
PranshulGG d8b7d6b351 add Beaufort closes #839 and Knots closes #884 wind speed units and refactor unit conversion logic 2026-06-03 18:54:07 +05:30
PranshulGG 26212d6282 migrate Humidity, Visibility, Pressure, and UV Index screens to use MatBarChart and refactor UI components in weather blocks 2026-06-03 16:44:16 +05:30
PranshulGG 2326955850 map rain_showers and rain_showers_hi to RAIN in NwsWeatherConditionMap 2026-06-03 16:42:55 +05:30
PranshulGG 10828d928d simplify ChartBarItem and add MatBarChart component 2026-06-03 16:42:41 +05:30
Pranshul 2dbb0a5748 New translations strings.xml (French)
[ci skip]
2026-06-03 14:46:50 +05:30
Pranshul fd3bfcf91d New translations strings.xml (French)
[ci skip]
2026-06-03 08:05:42 +05:30
Pranshul fc89548085 New translations strings.xml (German)
[ci skip]
2026-06-03 01:33:20 +05:30
Pranshul b985499e25 New translations strings.xml (French)
[ci skip]
2026-06-03 01:33:18 +05:30
Pranshul 5764a4555f New translations strings.xml (French)
[ci skip]
2026-06-02 19:37:55 +05:30
PranshulGG cf3a53d7fb Fixed wrong temperature summary closes #882 2026-06-02 19:05:57 +05:30
Pranshul 2623f5c91e New translations strings.xml (Serbian (Latin))
[ci skip]
2026-06-02 13:32:34 +05:30
Pranshul 29307fa7ab New translations strings.xml (French)
[ci skip]
2026-06-01 21:50:13 +05:30
Pranshul 508aaaf505 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-06-01 15:34:19 +05:30
Pranshul 00d095b305 New translations strings.xml (Romanian)
[ci skip]
2026-06-01 15:34:18 +05:30
Pranshul 0bed8c1a4a New translations strings.xml (Polish)
[ci skip]
2026-06-01 09:36:20 +05:30
Pranshul 62e4ca4adf New translations strings.xml (French)
[ci skip]
2026-06-01 09:36:19 +05:30
Pranshul c7d41909c1 New translations strings.xml (Italian)
[ci skip]
2026-06-01 02:41:38 +05:30
Pranshul 729041f6b4 New translations strings.xml (Japanese)
[ci skip]
2026-05-31 20:45:18 +05:30
Pranshul 685f954bd5 New translations strings.xml (Italian)
[ci skip]
2026-05-31 20:45:17 +05:30
Pranshul a5bd61d79e New translations strings.xml (Spanish)
[ci skip]
2026-05-31 20:45:15 +05:30
Pranshul 571b8dedb3 New translations strings.xml (French)
[ci skip]
2026-05-31 20:45:14 +05:30
Pranshul c8594d834f New translations strings.xml (Japanese)
[ci skip]
2026-05-31 14:49:47 +05:30
Pranshul e0b418f047 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-30 22:20:02 +05:30
Pranshul d6ed4d3cf2 New translations strings.xml (Turkish)
[ci skip]
2026-05-30 22:20:01 +05:30
Pranshul 77df8265bf New translations strings.xml (German)
[ci skip]
2026-05-30 22:20:00 +05:30
Pranshul 367f68c3a9 New translations strings.xml (Czech)
[ci skip]
2026-05-30 22:19:59 +05:30
Pranshul 389faefff2 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-30 16:24:00 +05:30
Pranshul a85934edf2 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-30 16:23:59 +05:30
Pranshul e72f57031c New translations strings.xml (Filipino)
[ci skip]
2026-05-30 16:23:58 +05:30
Pranshul a777cea484 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-30 16:23:57 +05:30
Pranshul fb7e6191e1 New translations strings.xml (Thai)
[ci skip]
2026-05-30 16:23:55 +05:30
Pranshul cf598ea256 New translations strings.xml (Persian)
[ci skip]
2026-05-30 16:23:54 +05:30
Pranshul 4ca817e347 New translations strings.xml (Indonesian)
[ci skip]
2026-05-30 16:23:53 +05:30
Pranshul 60ab8c8ca1 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-30 16:23:52 +05:30
Pranshul 1920550655 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-30 16:23:51 +05:30
Pranshul 0fc0587004 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-30 16:23:50 +05:30
Pranshul e252b48c0e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-30 16:23:49 +05:30
Pranshul 8165c0da3e New translations strings.xml (Ukrainian)
[ci skip]
2026-05-30 16:23:48 +05:30
Pranshul 6d95182102 New translations strings.xml (Turkish)
[ci skip]
2026-05-30 16:23:46 +05:30
Pranshul c36455235f New translations strings.xml (Swedish)
[ci skip]
2026-05-30 16:23:45 +05:30
Pranshul c0d1b313e5 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-30 16:23:44 +05:30
Pranshul 82a1e03e84 New translations strings.xml (Slovenian)
[ci skip]
2026-05-30 16:23:43 +05:30
Pranshul 93fee35656 New translations strings.xml (Russian)
[ci skip]
2026-05-30 16:23:42 +05:30
Pranshul 7b9caa3925 New translations strings.xml (Portuguese)
[ci skip]
2026-05-30 16:23:41 +05:30
Pranshul 7f32d1a88a New translations strings.xml (Polish)
[ci skip]
2026-05-30 16:23:40 +05:30
Pranshul fb398cd7db New translations strings.xml (Dutch)
[ci skip]
2026-05-30 16:23:38 +05:30
Pranshul f450aa838e New translations strings.xml (Korean)
[ci skip]
2026-05-30 16:23:37 +05:30
Pranshul de508532db New translations strings.xml (Japanese)
[ci skip]
2026-05-30 16:23:36 +05:30
Pranshul e39c22ce59 New translations strings.xml (Italian)
[ci skip]
2026-05-30 16:23:35 +05:30
Pranshul 41c2536f72 New translations strings.xml (Hungarian)
[ci skip]
2026-05-30 16:23:34 +05:30
Pranshul 0e167d5d72 New translations strings.xml (Finnish)
[ci skip]
2026-05-30 16:23:33 +05:30
Pranshul be19c3f386 New translations strings.xml (Greek)
[ci skip]
2026-05-30 16:23:31 +05:30
Pranshul d7ae82f6a1 New translations strings.xml (German)
[ci skip]
2026-05-30 16:23:30 +05:30
Pranshul d190dc713e New translations strings.xml (Czech)
[ci skip]
2026-05-30 16:23:29 +05:30
Pranshul 1c995db64c New translations strings.xml (Catalan)
[ci skip]
2026-05-30 16:23:28 +05:30
Pranshul e0d73dd299 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-30 16:23:27 +05:30
Pranshul 3c30236bed New translations strings.xml (Spanish)
[ci skip]
2026-05-30 16:23:26 +05:30
Pranshul 68bfdd8a36 New translations strings.xml (French)
[ci skip]
2026-05-30 16:23:25 +05:30
Pranshul d78758b427 New translations strings.xml (Romanian)
[ci skip]
2026-05-30 16:23:23 +05:30
PranshulGG 7fdcb4a827 add detail screens for humidity, visibility, pressure, and sun/moon and add associated assets 2026-05-30 16:16:27 +05:30
PranshulGG 4a616ace8a add onClick navigation to weather blocks and update Weather domain model with dewPoint, dawn, and dusk 2026-05-30 16:16:02 +05:30
PranshulGG a25705ca8c add dewPoint to HourlyWeatherEntity, dawn and dusk to DailyWeatherEntity, and use remember for weather in DailyScreen 2026-05-30 16:15:45 +05:30
PranshulGG a12afacb99 add dewPoint, dawn, and dusk to MetNorway, OpenMeteo, Smhi, and Nws JSON mappers 2026-05-30 16:15:31 +05:30
PranshulGG 140f5c11f7 add humidity, visibility, sun/moon, and pressure detail screens and associated strings 2026-05-30 16:15:12 +05:30
PranshulGG 326d57b504 add dewPoint to hourly weather, dawn and dusk to daily weather, and display resources to MoonPhase enum 2026-05-30 16:14:57 +05:30
Pranshul bedda50879 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-30 04:19:57 +05:30
Pranshul f19147a127 New translations strings.xml (Portuguese)
[ci skip]
2026-05-30 04:19:56 +05:30
Pranshul 3d0fe122ca New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-29 21:55:20 +05:30
Pranshul 654ee40f70 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-29 21:55:18 +05:30
Pranshul ab326df8e3 New translations strings.xml (Filipino)
[ci skip]
2026-05-29 21:55:16 +05:30
Pranshul 1ee28069ee New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-29 21:55:14 +05:30
Pranshul 5634dd28cd New translations strings.xml (Thai)
[ci skip]
2026-05-29 21:55:12 +05:30
Pranshul 4cb4d37964 New translations strings.xml (Persian)
[ci skip]
2026-05-29 21:55:10 +05:30
Pranshul 0b3fbcf853 New translations strings.xml (Indonesian)
[ci skip]
2026-05-29 21:55:09 +05:30
Pranshul d998287723 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-29 21:55:07 +05:30
Pranshul 4cac28bdba New translations strings.xml (Vietnamese)
[ci skip]
2026-05-29 21:55:05 +05:30
Pranshul a8b12e1a87 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-29 21:55:03 +05:30
Pranshul 54c5bde300 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-29 21:55:01 +05:30
Pranshul d9ffbd32b1 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-29 21:55:00 +05:30
Pranshul a5e6408623 New translations strings.xml (Turkish)
[ci skip]
2026-05-29 21:54:58 +05:30
Pranshul e96fd28969 New translations strings.xml (Swedish)
[ci skip]
2026-05-29 21:54:57 +05:30
Pranshul e729d0d266 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-29 21:54:55 +05:30
Pranshul b82fea83df New translations strings.xml (Slovenian)
[ci skip]
2026-05-29 21:54:53 +05:30
Pranshul cc74542262 New translations strings.xml (Russian)
[ci skip]
2026-05-29 21:54:52 +05:30
Pranshul 2c47e9bc6f New translations strings.xml (Portuguese)
[ci skip]
2026-05-29 21:54:50 +05:30
Pranshul 060c9d1e91 New translations strings.xml (Polish)
[ci skip]
2026-05-29 21:54:48 +05:30
Pranshul bb2331c761 New translations strings.xml (Dutch)
[ci skip]
2026-05-29 21:54:46 +05:30
Pranshul 033255e84f New translations strings.xml (Korean)
[ci skip]
2026-05-29 21:54:45 +05:30
Pranshul 57f9f4bbab New translations strings.xml (Japanese)
[ci skip]
2026-05-29 21:54:43 +05:30
Pranshul 781d029eb5 New translations strings.xml (Italian)
[ci skip]
2026-05-29 21:54:42 +05:30
Pranshul 38b3354bbc New translations strings.xml (Hungarian)
[ci skip]
2026-05-29 21:54:41 +05:30
Pranshul 485690a742 New translations strings.xml (Finnish)
[ci skip]
2026-05-29 21:54:39 +05:30
Pranshul 40c372624b New translations strings.xml (Greek)
[ci skip]
2026-05-29 21:54:38 +05:30
Pranshul afc5543716 New translations strings.xml (German)
[ci skip]
2026-05-29 21:54:36 +05:30
Pranshul 95ee63f9f8 New translations strings.xml (Czech)
[ci skip]
2026-05-29 21:54:35 +05:30
Pranshul 7365212c94 New translations strings.xml (Catalan)
[ci skip]
2026-05-29 21:54:33 +05:30
Pranshul 377f516db9 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-29 21:54:32 +05:30
Pranshul b5548309c3 New translations strings.xml (Spanish)
[ci skip]
2026-05-29 21:54:31 +05:30
Pranshul 57d41de138 New translations strings.xml (French)
[ci skip]
2026-05-29 21:54:29 +05:30
Pranshul bff2e2123c New translations strings.xml (Romanian)
[ci skip]
2026-05-29 21:54:28 +05:30
PranshulGG 782c0de79c implement UV Index detail screen, add generic navigation for weather blocks, and introduce reusable block components 2026-05-29 21:01:12 +05:30
PranshulGG 6efa1c2cca update new_thumbnail.png in preview 2026-05-29 17:33:18 +05:30
Pranshul 5347ff54f2 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-29 15:56:38 +05:30
Pranshul 75c4397378 New translations strings.xml (Turkish)
[ci skip]
2026-05-29 15:56:37 +05:30
Pranshul 212702d352 New translations strings.xml (Japanese)
[ci skip]
2026-05-29 15:56:35 +05:30
Pranshul b8e1312b98 New translations strings.xml (German)
[ci skip]
2026-05-29 15:56:34 +05:30
PranshulGG 959073e93a add pressure, visibility, and humidity to Weather model, bump database version to 40, and rename WeatherWidgetHorizontalMedium to WeatherWidgetHorizontal 2026-05-29 13:15:06 +05:30
PranshulGG 617d9da56d add pressure, humidity, and visibility to hourly weather data across providers and remove WeatherWidgetHorizontalLarge 2026-05-29 13:14:34 +05:30
PranshulGG 9587b67d38 Added a potential fix for the crash when opening daily screen because of same keys 2026-05-29 10:32:24 +05:30
PranshulGG 55ebc14fb1 pill widget resizing issue, now it stays the same but is responsive to resize closes #859 2026-05-29 10:31:54 +05:30
Pranshul 5f00ec5821 New translations strings.xml (Romanian)
[ci skip]
2026-05-29 08:52:45 +05:30
PranshulGG e118408720 update AboutScreen title, remove unused imports, comment out GEO_NAMES_USERNAME in gradle.properties, and delete release APK 2026-05-29 08:28:00 +05:30
Pranshul 25361dea9b New translations strings.xml (Polish)
[ci skip]
2026-05-29 02:46:01 +05:30
Pranshul df1119bbea New translations strings.xml (Dutch)
[ci skip]
2026-05-29 02:46:00 +05:30
Pranshul 024845e289 New translations strings.xml (German)
[ci skip]
2026-05-29 02:45:54 +05:30
Pranshul 6ecfe87d5e New translations strings.xml (Romanian)
[ci skip]
2026-05-29 02:45:49 +05:30
PranshulGG 125b21652a use fixed icon sizes in WeatherWidgetPillTiny, Small, and Medium and update AUTO_REFRESH_MAX_MINUTES in CacheConfig 2026-05-28 21:11:38 +05:30
PranshulGG 55bc543cb4 simplify NavigationDrawer, update MetNorway User-Agent, refactor pressure unit conversion in PressureBlock 2026-05-28 20:52:19 +05:30
Pranshul c0f9eefdb1 Merge pull request #869 from PranshulGG/l10n_main
New Crowdin updates
2026-05-28 20:46:52 +05:30
Pranshul 41e1627dab New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-28 20:46:25 +05:30
Pranshul cb3cbcaf79 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-28 20:46:22 +05:30
Pranshul e4c5e3cb14 New translations strings.xml (Filipino)
[ci skip]
2026-05-28 20:46:21 +05:30
Pranshul 9c59d6c20d New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-28 20:46:19 +05:30
Pranshul 69acd60dcd New translations strings.xml (Thai)
[ci skip]
2026-05-28 20:46:17 +05:30
Pranshul dd2763f55a New translations strings.xml (Persian)
[ci skip]
2026-05-28 20:46:15 +05:30
Pranshul bfcd64f7b9 New translations strings.xml (Indonesian)
[ci skip]
2026-05-28 20:46:13 +05:30
Pranshul a4cb0b61fa New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-28 20:46:10 +05:30
Pranshul 40b25a42a7 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-28 20:46:08 +05:30
Pranshul 1a59a06235 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-28 20:46:06 +05:30
Pranshul 067d30ff96 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-28 20:46:05 +05:30
Pranshul 8422949702 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-28 20:46:03 +05:30
Pranshul 2ce78f7ae8 New translations strings.xml (Turkish)
[ci skip]
2026-05-28 20:46:01 +05:30
Pranshul 5c3883d329 New translations strings.xml (Swedish)
[ci skip]
2026-05-28 20:45:59 +05:30
Pranshul aad17feb54 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-28 20:45:58 +05:30
Pranshul 7637ab70fd New translations strings.xml (Slovenian)
[ci skip]
2026-05-28 20:45:56 +05:30
Pranshul 76f8709f85 New translations strings.xml (Russian)
[ci skip]
2026-05-28 20:45:54 +05:30
Pranshul ba4b684bec New translations strings.xml (Portuguese)
[ci skip]
2026-05-28 20:45:53 +05:30
Pranshul eb1b89691f New translations strings.xml (Polish)
[ci skip]
2026-05-28 20:45:50 +05:30
Pranshul ce702c5795 New translations strings.xml (Dutch)
[ci skip]
2026-05-28 20:45:48 +05:30
Pranshul 52f34b204b New translations strings.xml (Korean)
[ci skip]
2026-05-28 20:45:47 +05:30
Pranshul 47cc01cc87 New translations strings.xml (Japanese)
[ci skip]
2026-05-28 20:45:45 +05:30
Pranshul 28371b1621 New translations strings.xml (Italian)
[ci skip]
2026-05-28 20:45:42 +05:30
Pranshul bee3a2927a New translations strings.xml (Hungarian)
[ci skip]
2026-05-28 20:45:40 +05:30
Pranshul 49245dd61d New translations strings.xml (Finnish)
[ci skip]
2026-05-28 20:45:39 +05:30
Pranshul 746c910d25 New translations strings.xml (Greek)
[ci skip]
2026-05-28 20:45:37 +05:30
Pranshul 6fa83880fb New translations strings.xml (German)
[ci skip]
2026-05-28 20:45:35 +05:30
Pranshul 99ca4e931b New translations strings.xml (Czech)
[ci skip]
2026-05-28 20:45:32 +05:30
Pranshul 34660385a4 New translations strings.xml (Catalan)
[ci skip]
2026-05-28 20:45:30 +05:30
Pranshul 93cc4d9e6e New translations strings.xml (Bulgarian)
[ci skip]
2026-05-28 20:45:29 +05:30
Pranshul 674c232b4b New translations strings.xml (Spanish)
[ci skip]
2026-05-28 20:45:27 +05:30
Pranshul 3bcec2638f New translations strings.xml (French)
[ci skip]
2026-05-28 20:45:25 +05:30
Pranshul e8e0eba609 New translations strings.xml (Romanian)
[ci skip]
2026-05-28 20:45:22 +05:30
Pranshul b04acc6360 Merge pull request #864 from PranshulGG/l10n_main
New Crowdin updates
2026-05-28 20:43:15 +05:30
PranshulGG efff11d670 simplify NavigationDrawer, update MetNorway User-Agent, refactor pressure unit conversion in PressureBlock 2026-05-28 20:41:58 +05:30
PranshulGG 0b58aa84be refactor getHeadline to use PreferencesHelper for time format and add fillMaxWidth to Image in FroggyContainer 2026-05-28 20:41:31 +05:30
PranshulGG 224c9944c1 remove isTabletLike logic, remove AppPrefsState dependency from summary computation, and update rain/snow detection logic 2026-05-28 20:41:18 +05:30
PranshulGG 1ee2cb69e6 add SummaryWidget and update widget layouts to support dynamic resizing and weather summaries 2026-05-28 20:40:49 +05:30
PranshulGG 8761bae86b add Nominatim reverse geocoding API, repository, and domain mapper 2026-05-28 20:40:13 +05:30
PranshulGG c7f2599a24 add Nominatim dependencies to LocationsRepository and register SummaryWidgetReceiver in AndroidManifest 2026-05-28 20:39:56 +05:30
PranshulGG 52690f4fcf implement reverse geocoding for device locations using Nominatim, add distance-based update threshold, and remove isTabletLike from LocationsScreen 2026-05-28 20:38:27 +05:30
PranshulGG 74c28e6aa8 refactor AboutScreen UI using common layout components and add configuration for summary widget 2026-05-28 20:37:59 +05:30
PranshulGG 32b558c786 add about_changelog string to strings.xml 2026-05-28 20:37:34 +05:30
PranshulGG 87b3bdbe5c add about_changelog string to strings.xml 2026-05-28 20:21:22 +05:30
Pranshul e3f845e5fb New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-28 19:54:18 +05:30
Pranshul 08db0d3da2 New translations strings.xml (Catalan)
[ci skip]
2026-05-28 19:54:16 +05:30
Pranshul b33b344fce New translations strings.xml (Romanian)
[ci skip]
2026-05-28 19:54:14 +05:30
PranshulGG 7eb9450ff4 add weather_summary string to strings.xml 2026-05-28 18:26:39 +05:30
Pranshul 1ecab941b7 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-28 13:54:32 +05:30
Pranshul 6909f11336 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-28 13:54:31 +05:30
Pranshul 297e1163c4 New translations strings.xml (Filipino)
[ci skip]
2026-05-28 13:54:29 +05:30
Pranshul e7b0722cda New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-28 13:54:28 +05:30
Pranshul 966a7cbc96 New translations strings.xml (Thai)
[ci skip]
2026-05-28 13:54:26 +05:30
Pranshul c229458229 New translations strings.xml (Persian)
[ci skip]
2026-05-28 13:54:24 +05:30
Pranshul 9dd65d14bc New translations strings.xml (Indonesian)
[ci skip]
2026-05-28 13:54:23 +05:30
Pranshul 176471ce0b New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-28 13:54:21 +05:30
Pranshul 6523fbd348 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-28 13:54:20 +05:30
Pranshul 5eca1a19e4 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-28 13:54:18 +05:30
Pranshul fec09cf718 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-28 13:54:16 +05:30
Pranshul e0ce047e24 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-28 13:54:15 +05:30
Pranshul 8651db49ba New translations strings.xml (Turkish)
[ci skip]
2026-05-28 13:54:13 +05:30
Pranshul 9856e2b172 New translations strings.xml (Swedish)
[ci skip]
2026-05-28 13:54:12 +05:30
Pranshul 4f99671a90 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-28 13:54:10 +05:30
Pranshul c7600fa564 New translations strings.xml (Slovenian)
[ci skip]
2026-05-28 13:54:09 +05:30
Pranshul c062a83bb4 New translations strings.xml (Russian)
[ci skip]
2026-05-28 13:54:07 +05:30
Pranshul 5d04c26fc6 New translations strings.xml (Portuguese)
[ci skip]
2026-05-28 13:54:06 +05:30
Pranshul 1caa009616 New translations strings.xml (Polish)
[ci skip]
2026-05-28 13:54:04 +05:30
Pranshul 63c711a022 New translations strings.xml (Dutch)
[ci skip]
2026-05-28 13:54:03 +05:30
Pranshul 96bcf2fbb1 New translations strings.xml (Korean)
[ci skip]
2026-05-28 13:54:01 +05:30
Pranshul c0673bffa1 New translations strings.xml (Japanese)
[ci skip]
2026-05-28 13:54:00 +05:30
Pranshul 875cff5622 New translations strings.xml (Italian)
[ci skip]
2026-05-28 13:53:58 +05:30
Pranshul 118b0eb5a7 New translations strings.xml (Hungarian)
[ci skip]
2026-05-28 13:53:57 +05:30
Pranshul 501b60ec4c New translations strings.xml (Finnish)
[ci skip]
2026-05-28 13:53:55 +05:30
Pranshul 2382461258 New translations strings.xml (Greek)
[ci skip]
2026-05-28 13:53:53 +05:30
Pranshul 3b337bedd5 New translations strings.xml (German)
[ci skip]
2026-05-28 13:53:52 +05:30
Pranshul 78b98d2cca New translations strings.xml (Czech)
[ci skip]
2026-05-28 13:53:51 +05:30
Pranshul d7ec801a13 New translations strings.xml (Catalan)
[ci skip]
2026-05-28 13:53:49 +05:30
Pranshul 5942796ee5 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-28 13:53:48 +05:30
Pranshul 725fc5c890 New translations strings.xml (Spanish)
[ci skip]
2026-05-28 13:53:46 +05:30
Pranshul 3621f14b24 New translations strings.xml (French)
[ci skip]
2026-05-28 13:53:45 +05:30
Pranshul bd3f4de544 New translations strings.xml (Romanian)
[ci skip]
2026-05-28 13:53:44 +05:30
PranshulGG 71a836f6d3 add MMHG pressure unit option to UnitsScreen and fix typo in strings.xml closes #863 2026-05-28 08:34:21 +05:30
Pranshul 7ccec5db77 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-27 22:26:29 +05:30
Pranshul c752bbb034 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-27 22:26:27 +05:30
Pranshul 626bec526f New translations strings.xml (Filipino)
[ci skip]
2026-05-27 22:26:25 +05:30
Pranshul 2156375d7b New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-27 22:26:24 +05:30
Pranshul 41035c7184 New translations strings.xml (Thai)
[ci skip]
2026-05-27 22:26:22 +05:30
Pranshul 91bf4eea4e New translations strings.xml (Persian)
[ci skip]
2026-05-27 22:26:21 +05:30
Pranshul e3d33e27be New translations strings.xml (Indonesian)
[ci skip]
2026-05-27 22:26:20 +05:30
Pranshul 5857fadbc4 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-27 22:26:18 +05:30
Pranshul b9c9297e64 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-27 22:26:17 +05:30
Pranshul 70eb88a7bd New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-27 22:26:15 +05:30
Pranshul 8eaba3c593 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-27 22:26:13 +05:30
Pranshul 317469d056 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-27 22:26:12 +05:30
Pranshul 2abf9dbaee New translations strings.xml (Turkish)
[ci skip]
2026-05-27 22:26:11 +05:30
Pranshul b47059dcb6 New translations strings.xml (Swedish)
[ci skip]
2026-05-27 22:26:09 +05:30
Pranshul bbf84b8b41 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-27 22:26:07 +05:30
Pranshul 64918d68c0 New translations strings.xml (Slovenian)
[ci skip]
2026-05-27 22:26:06 +05:30
Pranshul 00fda885a7 New translations strings.xml (Russian)
[ci skip]
2026-05-27 22:26:04 +05:30
Pranshul 650bd945a0 New translations strings.xml (Portuguese)
[ci skip]
2026-05-27 22:26:03 +05:30
Pranshul e152aa25be New translations strings.xml (Polish)
[ci skip]
2026-05-27 22:26:01 +05:30
Pranshul 2ce613dda9 New translations strings.xml (Dutch)
[ci skip]
2026-05-27 22:25:59 +05:30
Pranshul 036d5bc600 New translations strings.xml (Korean)
[ci skip]
2026-05-27 22:25:58 +05:30
Pranshul 28bb576d83 New translations strings.xml (Japanese)
[ci skip]
2026-05-27 22:25:56 +05:30
Pranshul 02eb83a1f8 New translations strings.xml (Italian)
[ci skip]
2026-05-27 22:25:55 +05:30
Pranshul 38fd00a14e New translations strings.xml (Hungarian)
[ci skip]
2026-05-27 22:25:54 +05:30
Pranshul d25bb0a442 New translations strings.xml (Finnish)
[ci skip]
2026-05-27 22:25:52 +05:30
Pranshul 143917530e New translations strings.xml (Greek)
[ci skip]
2026-05-27 22:25:51 +05:30
Pranshul f786f4f431 New translations strings.xml (German)
[ci skip]
2026-05-27 22:25:49 +05:30
Pranshul e2f750a63f New translations strings.xml (Czech)
[ci skip]
2026-05-27 22:25:48 +05:30
Pranshul ae9bd68fe0 New translations strings.xml (Catalan)
[ci skip]
2026-05-27 22:25:46 +05:30
Pranshul f71f014c2d New translations strings.xml (Bulgarian)
[ci skip]
2026-05-27 22:25:44 +05:30
Pranshul 9a0a3183ad New translations strings.xml (Spanish)
[ci skip]
2026-05-27 22:25:43 +05:30
Pranshul 2b6d2f115e New translations strings.xml (French)
[ci skip]
2026-05-27 22:25:41 +05:30
Pranshul 63913af9cb New translations strings.xml (Romanian)
[ci skip]
2026-05-27 22:25:40 +05:30
PranshulGG ea16a6e62b Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-27 22:04:36 +05:30
PranshulGG f4ae802716 add GEO_NAMES_USERNAME property to gradle.properties 2026-05-27 22:04:24 +05:30
Pranshul 405e818fae Merge pull request #853 from PranshulGG/l10n_main
New Crowdin updates
2026-05-27 22:03:54 +05:30
PranshulGG 056dbc31c4 replace fallbackToDestructiveMigration with addMigrations in WeatherMasterDatabase.kt 2026-05-27 22:03:29 +05:30
PranshulGG 6b86f3e77c fix precipitationProbabilityMax calculation in SmhiJsonMapper.kt 2026-05-27 22:03:17 +05:30
PranshulGG 358b8d5e9b move NwsGridPoints from core.model.domain.weather.nws to core.model.weather.nws and update package references 2026-05-27 22:03:09 +05:30
PranshulGG 4b9a1648a7 add isFroggyLayout parameter to SunCanvas and FogHazeCanvas to adjust weather animation sizes 2026-05-27 22:02:55 +05:30
PranshulGG 3955d558b1 add weather summary card and implement headline generation logic using string templates 2026-05-27 22:02:41 +05:30
PranshulGG b695e8c3a6 update weather condition weights to prioritize snow over rain and remove commented code in ComputeDailyWeatherCondition 2026-05-27 22:02:00 +05:30
Pranshul 6983b2c645 New translations strings.xml (German)
[ci skip]
2026-05-27 16:20:54 +05:30
PranshulGG 104bf51ae8 replace AnimatedContent with AnimatedVisibility for background gradients in BackgroundGradients.kt fixed #860 2026-05-27 09:25:15 +05:30
PranshulGG 2872f5bfa9 update primary and secondary weather condition selection in ComputeDailyWeatherCondition.kt 2026-05-27 09:21:37 +05:30
PranshulGG 2fe1a1e0af add 24-hour time format setting and update time displays in UI blocks, hourly cards, and widgets, closes #858 2026-05-27 09:02:35 +05:30
Pranshul 0c5eacae06 New translations strings.xml (Polish)
[ci skip]
2026-05-27 03:08:41 +05:30
Pranshul 860a1849e2 New translations strings.xml (Japanese)
[ci skip]
2026-05-27 03:08:39 +05:30
Pranshul 66cc2358c7 New translations strings.xml (German)
[ci skip]
2026-05-27 03:08:38 +05:30
Pranshul aafc8476c6 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-26 20:57:44 +05:30
Pranshul df5cef2825 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-26 20:57:42 +05:30
Pranshul 79345dbfc4 New translations strings.xml (Filipino)
[ci skip]
2026-05-26 20:57:40 +05:30
Pranshul e9384aa5bd New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-26 20:57:39 +05:30
Pranshul 02b6b1b5c7 New translations strings.xml (Thai)
[ci skip]
2026-05-26 20:57:37 +05:30
Pranshul 5f865a0098 New translations strings.xml (Persian)
[ci skip]
2026-05-26 20:57:35 +05:30
Pranshul e20619e7a2 New translations strings.xml (Indonesian)
[ci skip]
2026-05-26 20:57:34 +05:30
Pranshul 2bd75e2c1e New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-26 20:57:32 +05:30
Pranshul b924f0781d New translations strings.xml (Vietnamese)
[ci skip]
2026-05-26 20:57:30 +05:30
Pranshul b3f41489d4 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-26 20:57:28 +05:30
Pranshul 081b5d56ef New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-26 20:57:26 +05:30
Pranshul 27f94b945f New translations strings.xml (Ukrainian)
[ci skip]
2026-05-26 20:57:25 +05:30
Pranshul 5289842137 New translations strings.xml (Turkish)
[ci skip]
2026-05-26 20:57:23 +05:30
Pranshul 9444b3129b New translations strings.xml (Swedish)
[ci skip]
2026-05-26 20:57:21 +05:30
Pranshul cf2e9aab0e New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-26 20:57:19 +05:30
Pranshul 7baf87eead New translations strings.xml (Slovenian)
[ci skip]
2026-05-26 20:57:17 +05:30
Pranshul 1cf3e27c91 New translations strings.xml (Russian)
[ci skip]
2026-05-26 20:57:16 +05:30
Pranshul df34702067 New translations strings.xml (Portuguese)
[ci skip]
2026-05-26 20:57:14 +05:30
Pranshul 5057bb5350 New translations strings.xml (Polish)
[ci skip]
2026-05-26 20:57:12 +05:30
Pranshul 1a5f931c4c New translations strings.xml (Dutch)
[ci skip]
2026-05-26 20:57:11 +05:30
Pranshul 580abf74a3 New translations strings.xml (Korean)
[ci skip]
2026-05-26 20:57:09 +05:30
Pranshul d009babf8f New translations strings.xml (Japanese)
[ci skip]
2026-05-26 20:57:08 +05:30
Pranshul 03525ff3e3 New translations strings.xml (Italian)
[ci skip]
2026-05-26 20:57:06 +05:30
Pranshul 424bc891aa New translations strings.xml (Hungarian)
[ci skip]
2026-05-26 20:57:04 +05:30
Pranshul eb67f7bae1 New translations strings.xml (Finnish)
[ci skip]
2026-05-26 20:57:02 +05:30
Pranshul 166da6be57 New translations strings.xml (Greek)
[ci skip]
2026-05-26 20:57:00 +05:30
Pranshul 6f676ec61e New translations strings.xml (German)
[ci skip]
2026-05-26 20:56:59 +05:30
Pranshul 1e4c4abbdf New translations strings.xml (Czech)
[ci skip]
2026-05-26 20:56:57 +05:30
Pranshul 77354668fc New translations strings.xml (Catalan)
[ci skip]
2026-05-26 20:56:56 +05:30
Pranshul 089e87ebdf New translations strings.xml (Bulgarian)
[ci skip]
2026-05-26 20:56:54 +05:30
Pranshul bbb4ad4ee6 New translations strings.xml (Spanish)
[ci skip]
2026-05-26 20:56:53 +05:30
Pranshul 6803e47468 New translations strings.xml (French)
[ci skip]
2026-05-26 20:56:51 +05:30
Pranshul 6ef3e8990d New translations strings.xml (Romanian)
[ci skip]
2026-05-26 20:56:49 +05:30
PranshulGG f3b452abf8 add gradle.properties to .gitignore 2026-05-26 20:43:50 +05:30
PranshulGG 75127ca676 update .gitignore to ignore root .idea directory 2026-05-26 20:41:10 +05:30
PranshulGG 7efafc1cfc add splash screen timeout, improve weather source update logic in WeatherViewModel, and conditionally show notifications in WeatherWorker 2026-05-26 20:37:50 +05:30
PranshulGG da84d13dd2 add conditional check for release keystore and remove duplicate dependencies in build.gradle.kts 2026-05-26 16:48:15 +05:30
PranshulGG d641194854 add MMHG pressure unit support, add Met Norway to weather sources, and remove gradle-daemon-jvm.properties #842 2026-05-26 16:38:49 +05:30
PranshulGG a6bd0ed1d6 bump version to 3.1.1, use dynamic icon in small pill widget, and replace string formatting with mathematical rounding for coordinates 2026-05-26 14:32:44 +05:30
PranshulGG 5847566569 current location crash fix 2026-05-26 14:23:21 +05:30
Pranshul f3ead6e31a New translations strings.xml (Polish)
[ci skip]
2026-05-26 14:03:52 +05:30
PranshulGG 38d4d6c508 remove @RequiresApi annotations and add SDK check in DeviceLocationHelpers, and set isLoading to false on location failure in IntroScreen.kt 2026-05-26 12:08:25 +05:30
PranshulGG de3ad2417f bump version to 3.1.0, update AboutScreen UI styling, fix onAction callback in AboutScreenViewModel, and conditionalize widget updates in WeatherViewModel 2026-05-26 11:56:11 +05:30
Pranshul 3e0290be66 Merge pull request #840 from PranshulGG/l10n_main
New Crowdin updates
2026-05-26 11:47:38 +05:30
PranshulGG 23632ac612 add WeatherWidgetStateJson and Glance components for hourly items and min/max temperatures 2026-05-26 11:47:09 +05:30
PranshulGG 8435294d8c add WidgetPill with responsive UI layouts for Tiny, Small, Medium, and Normal sizes 2026-05-26 11:47:00 +05:30
PranshulGG 31412750a6 add widget sizing logic and state definition using DataStore 2026-05-26 11:46:47 +05:30
PranshulGG c3a758b0b6 implement responsive WeatherWidget with multiple size layouts and orientations using Jetpack Glance 2026-05-26 11:46:34 +05:30
PranshulGG ff026b8926 rename current_and_hourly_widget_info to weather_widget_info, add API 31 widget configuration, and add startNow to WeatherUpdateScheduler 2026-05-26 11:46:06 +05:30
PranshulGG c94b7f3f1b add skipForegroundCheck option to WeatherWorker and set isForceRefresh to false in doWork 2026-05-26 11:45:53 +05:30
PranshulGG ae3ab5991e update WidgetWeatherUpdater to use WeatherWidget and WidgetPill and replace uvIndex with locationName in WidgetWeather model 2026-05-26 11:45:44 +05:30
PranshulGG 1cb1c61c1f trigger widget updates via WeatherUpdateScheduler in WeatherViewModel and adjust padding in MainScreenScaffold 2026-05-26 11:45:19 +05:30
PranshulGG 31d8a387dd rename CurrentAndHourlyWidget to WeatherWidget and FroggyWidget to WidgetPill and add widget shapes and preview assets 2026-05-26 11:45:00 +05:30
PranshulGG 339edcd45a remove CurrentAndHourlyWidget and FroggyWidget components and assets 2026-05-26 11:44:28 +05:30
Pranshul 2b8c23fa49 New translations strings.xml (Czech)
[ci skip]
2026-05-26 07:33:18 +05:30
Pranshul 8fa563c38f New translations strings.xml (Czech)
[ci skip]
2026-05-26 01:22:43 +05:30
Pranshul 56a26dfdd0 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-25 15:09:16 +05:30
Pranshul fa5ba10013 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-25 15:09:15 +05:30
Pranshul ef0714d139 New translations strings.xml (Filipino)
[ci skip]
2026-05-25 15:09:14 +05:30
Pranshul 97000d37d7 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-25 15:09:13 +05:30
Pranshul db2a896dcd New translations strings.xml (Thai)
[ci skip]
2026-05-25 15:09:11 +05:30
Pranshul 1e1b1e43e6 New translations strings.xml (Persian)
[ci skip]
2026-05-25 15:09:10 +05:30
Pranshul 9b847734c4 New translations strings.xml (Indonesian)
[ci skip]
2026-05-25 15:09:08 +05:30
Pranshul aeae3ceb3e New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-25 15:09:07 +05:30
Pranshul d44cd4766c New translations strings.xml (Vietnamese)
[ci skip]
2026-05-25 15:09:06 +05:30
Pranshul c0199a40cd New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-25 15:09:05 +05:30
Pranshul f67322e10b New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-25 15:09:03 +05:30
Pranshul e34b1aa6ba New translations strings.xml (Ukrainian)
[ci skip]
2026-05-25 15:09:02 +05:30
Pranshul d339430338 New translations strings.xml (Turkish)
[ci skip]
2026-05-25 15:09:01 +05:30
Pranshul d8a5186930 New translations strings.xml (Swedish)
[ci skip]
2026-05-25 15:08:59 +05:30
Pranshul 36fb13caa0 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-25 15:08:58 +05:30
Pranshul 7113b6bc10 New translations strings.xml (Slovenian)
[ci skip]
2026-05-25 15:08:56 +05:30
Pranshul 52d5777261 New translations strings.xml (Russian)
[ci skip]
2026-05-25 15:08:55 +05:30
Pranshul 77560f60cd New translations strings.xml (Portuguese)
[ci skip]
2026-05-25 15:08:54 +05:30
Pranshul cd041fac64 New translations strings.xml (Polish)
[ci skip]
2026-05-25 15:08:52 +05:30
Pranshul 619d7f299f New translations strings.xml (Dutch)
[ci skip]
2026-05-25 15:08:51 +05:30
Pranshul 5bc7dd7212 New translations strings.xml (Korean)
[ci skip]
2026-05-25 15:08:50 +05:30
Pranshul 6f98a82f91 New translations strings.xml (Japanese)
[ci skip]
2026-05-25 15:08:48 +05:30
Pranshul 5692d9aa0b New translations strings.xml (Italian)
[ci skip]
2026-05-25 15:08:47 +05:30
Pranshul 8bc1502dc5 New translations strings.xml (Hungarian)
[ci skip]
2026-05-25 15:08:46 +05:30
Pranshul 5f4a37a8ba New translations strings.xml (Finnish)
[ci skip]
2026-05-25 15:08:44 +05:30
Pranshul b86117a09b New translations strings.xml (Greek)
[ci skip]
2026-05-25 15:08:43 +05:30
Pranshul ca4a3f948a New translations strings.xml (German)
[ci skip]
2026-05-25 15:08:42 +05:30
Pranshul f2df1e93c4 New translations strings.xml (Czech)
[ci skip]
2026-05-25 15:08:41 +05:30
Pranshul 60ef3af665 New translations strings.xml (Catalan)
[ci skip]
2026-05-25 15:08:39 +05:30
Pranshul 243ba6ceb1 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-25 15:08:38 +05:30
Pranshul 3e4b4d5feb New translations strings.xml (Spanish)
[ci skip]
2026-05-25 15:08:36 +05:30
Pranshul 5f556571c6 New translations strings.xml (French)
[ci skip]
2026-05-25 15:08:35 +05:30
Pranshul 27efbcb17a New translations strings.xml (Romanian)
[ci skip]
2026-05-25 15:08:34 +05:30
PranshulGG 04ae4407dd add release signing configuration to build.gradle.kts 2026-05-25 13:31:20 +05:30
PranshulGG 0d571c0831 update GEO_NAMES_USERNAME retrieval logic, grant execute permission for gradlew in release workflow, remove unused imports in MainActivity.kt, and update project JDK name 2026-05-25 13:13:39 +05:30
PranshulGG 3cee5c387f Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-25 12:42:19 +05:30
PranshulGG 0a91ea1048 add database schemas 38 and 39, release workflow, google_sans_flex font, various drawable assets, and strings for settings and about section 2026-05-25 12:42:10 +05:30
PranshulGG a334f94278 add WeatherSourcesScreen to display weather data sources 2026-05-25 12:41:44 +05:30
PranshulGG 1c84d307b1 resolve snackbar actionLabel string resource in WeatherMasterApp, add imports to WeatherViewModel, and add modifier parameter to WeatherIconBox 2026-05-25 12:41:36 +05:30
PranshulGG 75b0ac72bb update GEO_NAMES_USERNAME to fetch from environment variables and remove foojay-resolver plugin 2026-05-25 12:41:20 +05:30
PranshulGG df63cec86b add lightsleet to MetNorway mapping, update SnackbarManager to use resource IDs for action labels, and add navigation routes for about, legal, and sources 2026-05-25 12:40:58 +05:30
PranshulGG b6184cc83f add isFroggyLayout parameter to RainCanvas and SnowCanvas to support dynamic canvas height adjustment in WeatherAnimations 2026-05-25 12:40:49 +05:30
PranshulGG 6bc584285a update MainSearchBar and MainScreenScaffold to support Froggy layout and theme preferences 2026-05-25 12:40:36 +05:30
PranshulGG ebbfc82097 remove @RequiresApi from LocationsScreen and IntroScreen and set isLoading to false in IntroScreen on permission denial 2026-05-25 12:40:23 +05:30
PranshulGG bffe591333 add weather sources, discord link, and about sections to SettingsScreen and define weatherMasterTitleFont in Type.kt 2026-05-25 12:40:12 +05:30
PranshulGG 409fb8eb16 add PixelStyleCurrentWeatherCard and support layout switching in CurrentWeatherCard 2026-05-25 12:39:47 +05:30
PranshulGG 570605d497 add routes for about, legal, and weather sources screens in AppNavHost and add froggy layout, weather animations, and weather-based theme preferences to AppPrefsState 2026-05-25 12:39:24 +05:30
PranshulGG 66055015cd update dynamic color strings and add weather animations, weather-based theme, and froggy layout settings in AppearanceScreen.kt 2026-05-25 12:39:03 +05:30
PranshulGG 4be0fb52da add GithubRepository to AppModule and add Froggy layout, weather animations, and weather-based theme settings to AppPrefs 2026-05-25 12:38:53 +05:30
PranshulGG 87a4d76de3 add LicenseScreen and TermsConditionsScreen, implement GitHub update checking with GithubApi and GithubRepository, and add bottom padding to CreditsBottomSection 2026-05-25 12:37:25 +05:30
PranshulGG 0362489b80 add AboutScreen and AboutScreenViewModel with version check and project links 2026-05-25 12:36:48 +05:30
Pranshul 479e38f656 Create LICENSE
Signed-off-by: Pranshul <pranshul.devmain@gmail.com>
2026-05-25 09:08:44 +05:30
Pranshul 2cf7f06d55 New translations strings.xml (Japanese)
[ci skip]
2026-05-25 01:20:15 +05:30
Pranshul abdf9e7a0d New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-24 19:18:27 +05:30
Pranshul 029978ae51 New translations strings.xml (Turkish)
[ci skip]
2026-05-24 19:18:26 +05:30
Pranshul 98f42f678f New translations strings.xml (Dutch)
[ci skip]
2026-05-24 19:18:24 +05:30
Pranshul ef2feca355 New translations strings.xml (Japanese)
[ci skip]
2026-05-24 19:18:23 +05:30
PranshulGG 560f19b018 add SMHI weather source to WeatherSource and WeatherRepositoryProvider 2026-05-24 19:12:31 +05:30
PranshulGG d4f6cd317f rename formatNumbers to formatLocalizedNumber and use stable item keys in WeatherBlocks 2026-05-24 19:12:20 +05:30
PranshulGG 3410213384 add SMHI weather provider including API, repository, and mappers closes #812 2026-05-24 19:12:02 +05:30
PranshulGG 2b4dffd005 use WeatherSource hourly aggregation limits in MetNorway and NWS mappers and fix weather condition lookup in MetNorwayJsonMapper 2026-05-24 19:11:33 +05:30
PranshulGG 2529c01249 round max and min temperature values to integers in DailyDaysHeader.kt 2026-05-24 19:11:17 +05:30
PranshulGG 8d5216e4bf split AppModule into DaoModule, ApiModule, SearchRepositoryModule, and WeatherRepositoryModule and add SMHI providers 2026-05-24 19:11:08 +05:30
PranshulGG 27f12d4909 fixes crash when using current location and cords are returned as a string closes #822 2026-05-24 14:34:59 +05:30
Pranshul 79c4588b40 Merge pull request #835 from PranshulGG/l10n_main
New Crowdin updates
2026-05-24 12:57:44 +05:30
Pranshul 39e85e2f83 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-24 12:56:33 +05:30
Pranshul d0b7e2be66 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-24 12:56:32 +05:30
Pranshul 47f88ed51a New translations strings.xml (Filipino)
[ci skip]
2026-05-24 12:56:31 +05:30
Pranshul cb49240d01 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-24 12:56:30 +05:30
Pranshul 277cf549c5 New translations strings.xml (Thai)
[ci skip]
2026-05-24 12:56:29 +05:30
Pranshul 746144f1d5 New translations strings.xml (Persian)
[ci skip]
2026-05-24 12:56:27 +05:30
Pranshul c30507d8eb New translations strings.xml (Indonesian)
[ci skip]
2026-05-24 12:56:26 +05:30
Pranshul 4b83c5eb09 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-24 12:56:25 +05:30
Pranshul f11c91b9e0 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-24 12:56:24 +05:30
Pranshul 9cbff2a294 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-24 12:56:23 +05:30
Pranshul 2d531b3b31 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-24 12:56:21 +05:30
Pranshul 02632c164d New translations strings.xml (Ukrainian)
[ci skip]
2026-05-24 12:56:20 +05:30
Pranshul 50ba85ba7c New translations strings.xml (Turkish)
[ci skip]
2026-05-24 12:56:19 +05:30
Pranshul 083cbfc362 New translations strings.xml (Swedish)
[ci skip]
2026-05-24 12:56:18 +05:30
Pranshul 41ed5f815b New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-24 12:56:16 +05:30
Pranshul 6fb94fb0c2 New translations strings.xml (Slovenian)
[ci skip]
2026-05-24 12:56:15 +05:30
Pranshul 137992e628 New translations strings.xml (Russian)
[ci skip]
2026-05-24 12:56:13 +05:30
Pranshul bb079960ec New translations strings.xml (Portuguese)
[ci skip]
2026-05-24 12:56:12 +05:30
Pranshul 460c8c1fe1 New translations strings.xml (Polish)
[ci skip]
2026-05-24 12:56:11 +05:30
Pranshul 109552e457 New translations strings.xml (Dutch)
[ci skip]
2026-05-24 12:56:10 +05:30
Pranshul 443b9a8bb4 New translations strings.xml (Korean)
[ci skip]
2026-05-24 12:56:09 +05:30
Pranshul 2557787eb7 New translations strings.xml (Japanese)
[ci skip]
2026-05-24 12:56:07 +05:30
Pranshul 0dce308782 New translations strings.xml (Italian)
[ci skip]
2026-05-24 12:56:06 +05:30
Pranshul e25454ad9f New translations strings.xml (Hungarian)
[ci skip]
2026-05-24 12:56:05 +05:30
Pranshul 7e214a0c09 New translations strings.xml (Finnish)
[ci skip]
2026-05-24 12:56:04 +05:30
Pranshul be19b994c2 New translations strings.xml (Greek)
[ci skip]
2026-05-24 12:56:03 +05:30
Pranshul 0b49cdbe9a New translations strings.xml (German)
[ci skip]
2026-05-24 12:56:01 +05:30
Pranshul 6e74c84421 New translations strings.xml (Czech)
[ci skip]
2026-05-24 12:56:00 +05:30
Pranshul 9349a57c99 New translations strings.xml (Catalan)
[ci skip]
2026-05-24 12:55:59 +05:30
Pranshul fcef5ab336 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-24 12:55:58 +05:30
Pranshul 0f77d11e87 New translations strings.xml (Spanish)
[ci skip]
2026-05-24 12:55:57 +05:30
Pranshul 37e1b04a7a New translations strings.xml (French)
[ci skip]
2026-05-24 12:55:56 +05:30
Pranshul 3baccffdfc New translations strings.xml (Romanian)
[ci skip]
2026-05-24 12:55:54 +05:30
Pranshul 3b3fee53ba Merge pull request #834 from PranshulGG/l10n_main
New Crowdin updates
2026-05-24 12:53:41 +05:30
PranshulGG 1cc8398f6a add icons and widget preview assets to drawables 2026-05-24 12:52:23 +05:30
PranshulGG 755cd69f51 add SharedDialogs for location permissions, background update strings and navigation route, and update Glance inspection profiles 2026-05-24 12:52:04 +05:30
PranshulGG d303462e47 update GetDeviceLocation import in MainActivity and add getLocationsOnce to LocationsDao 2026-05-24 12:51:51 +05:30
PranshulGG 8640cc282f bump version to 3.0.0, update compileSdk to 37, and add Glance, WorkManager, and Kotlin Serialization dependencies 2026-05-24 12:51:40 +05:30
PranshulGG af71187bde implement background location permission flow with rationale dialogs in IntroScreen and update location conversion to include country code fetching 2026-05-24 12:51:22 +05:30
PranshulGG f9ecc4be51 remove UnitConverter and add notification permission utilities 2026-05-24 12:51:10 +05:30
PranshulGG 778e7135d5 replace PressureUnits with PressureUnit and update conversion logic in PressureBlock.kt 2026-05-24 12:50:42 +05:30
PranshulGG 6be869d97f update DateTimeExtensions imports and refactor NwsJsonMapper to use unit conversion classes and local helper functions 2026-05-24 12:50:16 +05:30
PranshulGG de5f17d4ce add background updates option to SettingsScreen and rename weather unit models to singular in SettingsScreenViewModel 2026-05-24 12:50:01 +05:30
PranshulGG f4b8182763 implement WorkManager configuration, notification channels, and lifecycle tracking in WeatherMasterApplication and bump database version to 39 2026-05-24 12:49:49 +05:30
PranshulGG f98ebcd7ad rename targetTimeSecs to targetTimeMilli in WeatherCondition and make temperature fields nullable in WeatherHourly and WeatherDaily 2026-05-24 12:49:06 +05:30
PranshulGG a65c0314ab add WeatherNotification and WeatherNotificationConfig for weather update notifications 2026-05-24 12:48:34 +05:30
PranshulGG 0812b4e531 rename weather unit types from plural to singular in WeatherUnits, WeatherUnitsRepository, and WeatherUnitsDao 2026-05-24 12:48:11 +05:30
PranshulGG 2e2a9e4c44 add WeatherWorker and WeatherUpdateScheduler to handle background weather updates and widget refreshing 2026-05-24 12:47:58 +05:30
PranshulGG 99f604eeb7 add WidgetWeather data models, WidgetWeatherMapper, and WidgetWeatherUpdater for Glance widgets 2026-05-24 12:47:44 +05:30
PranshulGG 2a813ed062 refactor unit conversion to use PrecipitationUnit and WindSpeedUnit methods and update string in RainBlock.kt 2026-05-24 12:47:33 +05:30
PranshulGG 22201cffdc uncomment error handling and cache fallback in MetNorwayRepository and update DateTimeExtensions imports in MetNorwayJsonMapper 2026-05-24 12:47:17 +05:30
PranshulGG ee91e8f8d2 add ExperimentalMaterial3ExpressiveApi opt-in to MainScreenScaffold.kt 2026-05-24 12:47:05 +05:30
PranshulGG 8e58ecae68 add location permission rationale dialogs to LocationsScreen and add getLocationsOnce to LocationsRepository 2026-05-24 12:46:55 +05:30
PranshulGG e55f129cc1 add current_and_hourly and froggy widget info XML files 2026-05-24 12:46:45 +05:30
PranshulGG 7eac806c20 add Froggy widget using Jetpack Glance and rename targetTimeSecs to targetTimeMilli in FroggyContainer.kt 2026-05-24 12:40:15 +05:30
PranshulGG 7c99588743 move current and hourly widget files to ui subpackage, use Json.Default for decoding, and remove unused imports 2026-05-24 12:39:34 +05:30
PranshulGG 56e642f99e move DeviceLocationProvider to devicelocation package and add DeviceLocationHelpers for location permissions and geocoding 2026-05-24 12:38:27 +05:30
PranshulGG 60d79a6c01 rename Extensions to DateTimeExtensions, move to extensions package, and remove unit conversion functions 2026-05-24 12:38:17 +05:30
PranshulGG f0b9899143 refactor weather units to use singular naming and internal conversion logic 2026-05-24 12:38:06 +05:30
PranshulGG 296e59b911 add CurrentAndHourlyWidget and UI content using Jetpack Glance 2026-05-24 12:37:30 +05:30
PranshulGG cea6670ddc add background updates settings screen and viewmodel and rename weather unit classes to singular 2026-05-24 12:37:13 +05:30
PranshulGG 38a0a9a65e add AppVisibility lifecycle observer to track app foreground state 2026-05-24 12:37:00 +05:30
PranshulGG 63218c449e add background updates screen to AppNavHost and background update settings to AppPrefs and AppPrefsState 2026-05-24 12:36:51 +05:30
PranshulGG 828932bdb6 add background location and notification permissions, WorkManager startup configuration, and widget receivers to AndroidManifest.xml 2026-05-24 12:35:58 +05:30
Pranshul 4d73bcfc79 New translations strings.xml (Japanese)
[ci skip]
2026-05-23 01:58:23 +05:30
PranshulGG e509f81a67 rename WeatherSourcesChip to CreditsBottomSection and replace SplitButton with clickable Text 2026-05-22 21:04:24 +05:30
PranshulGG bde86b2ec7 migrate weather source and search provider dialogs to modal bottom sheets 2026-05-22 21:04:04 +05:30
Pranshul adbf28074a New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-22 20:01:26 +05:30
Pranshul 285511ad4d New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-22 20:01:25 +05:30
PranshulGG 7629749266 remove exported Room database schema files for versions 1 and 2 2026-05-22 17:22:47 +05:30
PranshulGG f551aba87a add weathermaster.jks to .gitignore 2026-05-22 17:16:07 +05:30
PranshulGG 9eee8c5b1b implement core architecture, data layers, and initial UI components for WeatherMaster 2026-05-22 17:15:58 +05:30
PranshulGG 2fe3a41522 rename base package to com.pranshulgg.weather_master_app and update applicationId and namespace in build.gradle.kts 2026-05-22 17:14:32 +05:30
PranshulGG cebb895108 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-22 15:43:02 +05:30
PranshulGG 230eae3118 bump version to 3.0.0-beta3 and versionCode to 46 2026-05-22 15:42:55 +05:30
Pranshul d7c3734f10 Merge pull request #833 from PranshulGG/l10n_main
New Crowdin updates
2026-05-22 15:42:46 +05:30
PranshulGG bd516e4f64 refactor WeatherSourcesChip to use SplitButtonLayout and add displayLink to WeatherSource enum 2026-05-22 15:40:18 +05:30
PranshulGG 08a7916a0a add active location weather sources info dialog and rename weather source dialog functions to plural in MainScreen and MainScreenViewModel 2026-05-22 15:40:05 +05:30
PranshulGG 649636f4ce add weather sources info dialog and update DialogBasic to support single action dialogs 2026-05-22 15:39:55 +05:30
Pranshul 2d58d1e564 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-22 13:42:31 +05:30
Pranshul 24c34f3426 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-22 13:42:30 +05:30
Pranshul cc217bf222 New translations strings.xml (Filipino)
[ci skip]
2026-05-22 13:42:28 +05:30
Pranshul fc017f2be5 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-22 13:42:27 +05:30
Pranshul db105f9571 New translations strings.xml (Thai)
[ci skip]
2026-05-22 13:42:25 +05:30
Pranshul 150a3cbd67 New translations strings.xml (Persian)
[ci skip]
2026-05-22 13:42:24 +05:30
Pranshul 5f83e7c090 New translations strings.xml (Indonesian)
[ci skip]
2026-05-22 13:42:22 +05:30
Pranshul 2903316208 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-22 13:42:20 +05:30
Pranshul 42eb1eddfa New translations strings.xml (Vietnamese)
[ci skip]
2026-05-22 13:42:19 +05:30
Pranshul fa35061a2d New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-22 13:42:17 +05:30
Pranshul ae3fc22716 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-22 13:42:16 +05:30
Pranshul ff9c9e5da0 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-22 13:42:14 +05:30
Pranshul 08f088f599 New translations strings.xml (Turkish)
[ci skip]
2026-05-22 13:42:13 +05:30
Pranshul 489367b325 New translations strings.xml (Swedish)
[ci skip]
2026-05-22 13:42:11 +05:30
Pranshul 7fbf8722d7 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-22 13:42:09 +05:30
Pranshul 0b873e6dd5 New translations strings.xml (Slovenian)
[ci skip]
2026-05-22 13:42:08 +05:30
Pranshul d82d2e70ec New translations strings.xml (Russian)
[ci skip]
2026-05-22 13:42:06 +05:30
Pranshul 0eb85249de New translations strings.xml (Portuguese)
[ci skip]
2026-05-22 13:42:05 +05:30
Pranshul a176acc702 New translations strings.xml (Polish)
[ci skip]
2026-05-22 13:42:03 +05:30
Pranshul e1af62d2f2 New translations strings.xml (Dutch)
[ci skip]
2026-05-22 13:42:02 +05:30
Pranshul c09e6876f6 New translations strings.xml (Korean)
[ci skip]
2026-05-22 13:42:00 +05:30
Pranshul f5919c6c7c New translations strings.xml (Japanese)
[ci skip]
2026-05-22 13:41:59 +05:30
Pranshul 5895c48221 New translations strings.xml (Italian)
[ci skip]
2026-05-22 13:41:57 +05:30
Pranshul 9991e367cb New translations strings.xml (Hungarian)
[ci skip]
2026-05-22 13:41:56 +05:30
Pranshul 17f3cccef7 New translations strings.xml (Finnish)
[ci skip]
2026-05-22 13:41:54 +05:30
Pranshul 9ff65e9169 New translations strings.xml (Greek)
[ci skip]
2026-05-22 13:41:53 +05:30
Pranshul dad63b08e5 New translations strings.xml (German)
[ci skip]
2026-05-22 13:41:51 +05:30
Pranshul c71e521c8b New translations strings.xml (Czech)
[ci skip]
2026-05-22 13:41:50 +05:30
Pranshul 2bd4f2b4a5 New translations strings.xml (Catalan)
[ci skip]
2026-05-22 13:41:48 +05:30
Pranshul 2304662dfd New translations strings.xml (Bulgarian)
[ci skip]
2026-05-22 13:41:46 +05:30
Pranshul 6e84bda6e2 New translations strings.xml (Spanish)
[ci skip]
2026-05-22 13:41:45 +05:30
Pranshul e0e9e5d730 New translations strings.xml (French)
[ci skip]
2026-05-22 13:41:44 +05:30
Pranshul 8b6dc584fd New translations strings.xml (Romanian)
[ci skip]
2026-05-22 13:41:42 +05:30
PranshulGG 6517d80013 add weather_total_amount string resource 2026-05-22 13:38:48 +05:30
PranshulGG da8caeea64 add MET_NORWAY support to WeatherRepositoryProvider and refactor initialization and async logic in WeatherViewModel 2026-05-22 13:38:39 +05:30
PranshulGG bbbc1115dd update daily weather computation to group by day and filter days with insufficient data in MetNorwayJsonMapper 2026-05-22 13:38:29 +05:30
PranshulGG 96236e85d7 add MET_NORWAY weather source and randomize item keys in HourlyCard and WeatherBlocks 2026-05-22 13:38:20 +05:30
PranshulGG 82104cb0c4 add TODO comment for missing weather conditions in WeatherCondition.kt 2026-05-22 13:14:35 +05:30
PranshulGG 8e060fd7ac adjust UvIndexBlock offsets, handle generic precipitation data in RainBlock, and use string resources in Rain and Snow blocks 2026-05-22 13:14:16 +05:30
PranshulGG 079cfb1ef7 rename OpenMeteoSearchDto to OpenMeteoSearchJson and remove unused imports in OpenMeteoJsonMapper.kt 2026-05-22 13:10:59 +05:30
PranshulGG 68ad6f17a0 rename OpenMeteoSearchDto and GeoNamesSearchDto to OpenMeteoSearchJson and GeoNamesSearchJson in LocationsMapper 2026-05-22 13:09:08 +05:30
PranshulGG 1fde3973e8 add MetNorway weather provider integration including API, repository, and JSON mappers 2026-05-22 13:08:50 +05:30
PranshulGG 5ed2463c68 rename GeoNames DTO classes to Json and reorganize packages for GeoNames search and timezone APIs 2026-05-22 13:08:34 +05:30
PranshulGG f98c54d4f4 handle nullable precipitation probability in DailyCard and simplify hourly start time logic in DailyScreen 2026-05-22 13:08:19 +05:30
PranshulGG 97a7c8fca2 add MetNorwayApi and MetNorwayRepository to AppModule and update GeoNamesTimezoneApi import path 2026-05-22 13:08:07 +05:30
PranshulGG 71a18b5174 add MetNorwayApi and MetNorwayRepository to AppModule and update GeoNamesTimezoneApi import path 2026-05-22 13:07:38 +05:30
Pranshul d85e6cd24f New translations strings.xml (Spanish)
[ci skip]
2026-05-22 07:03:14 +05:30
Pranshul 677adf7ae6 New translations strings.xml (Japanese)
[ci skip]
2026-05-21 22:42:17 +05:30
PranshulGG f5d44f9924 update versionCode to 45 and versionName to 3.0.0-beta2 in build.gradle.kts 2026-05-21 15:48:06 +05:30
Pranshul 37c718a1a7 Merge pull request #832 from PranshulGG/l10n_main
New Crowdin updates
2026-05-21 15:44:43 +05:30
Pranshul 6ab9f5d572 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-21 15:43:10 +05:30
Pranshul f9ae327c54 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-21 15:43:08 +05:30
Pranshul 8f706a17e9 New translations strings.xml (Filipino)
[ci skip]
2026-05-21 15:43:07 +05:30
Pranshul 35aff2c68c New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-21 15:43:05 +05:30
Pranshul c9f003b7e4 New translations strings.xml (Thai)
[ci skip]
2026-05-21 15:43:03 +05:30
Pranshul 9896f9c2bd New translations strings.xml (Persian)
[ci skip]
2026-05-21 15:43:01 +05:30
Pranshul 14714038f1 New translations strings.xml (Indonesian)
[ci skip]
2026-05-21 15:43:00 +05:30
Pranshul 14d1c3f39f New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-21 15:42:58 +05:30
Pranshul 06f4d94dc1 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-21 15:42:56 +05:30
Pranshul 91afe0adea New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-21 15:42:55 +05:30
Pranshul 508389db61 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-21 15:42:53 +05:30
Pranshul 9fb91c041f New translations strings.xml (Ukrainian)
[ci skip]
2026-05-21 15:42:51 +05:30
Pranshul 1725d7e0d4 New translations strings.xml (Turkish)
[ci skip]
2026-05-21 15:42:49 +05:30
Pranshul f08229c8d0 New translations strings.xml (Swedish)
[ci skip]
2026-05-21 15:42:48 +05:30
Pranshul a830135e1b New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-21 15:42:46 +05:30
Pranshul ac529084f4 New translations strings.xml (Slovenian)
[ci skip]
2026-05-21 15:42:44 +05:30
Pranshul 3b6a33f66e New translations strings.xml (Russian)
[ci skip]
2026-05-21 15:42:43 +05:30
Pranshul c93926119a New translations strings.xml (Portuguese)
[ci skip]
2026-05-21 15:42:41 +05:30
Pranshul e05e4a386e New translations strings.xml (Polish)
[ci skip]
2026-05-21 15:42:39 +05:30
Pranshul dbeb2c2996 New translations strings.xml (Dutch)
[ci skip]
2026-05-21 15:42:37 +05:30
Pranshul f002fa73be New translations strings.xml (Korean)
[ci skip]
2026-05-21 15:42:36 +05:30
Pranshul b50d136280 New translations strings.xml (Japanese)
[ci skip]
2026-05-21 15:42:34 +05:30
Pranshul f5e6409cb1 New translations strings.xml (Italian)
[ci skip]
2026-05-21 15:42:32 +05:30
Pranshul 1a483b33a9 New translations strings.xml (Hungarian)
[ci skip]
2026-05-21 15:42:31 +05:30
Pranshul f669c96643 New translations strings.xml (Finnish)
[ci skip]
2026-05-21 15:42:29 +05:30
Pranshul 428b23850b New translations strings.xml (Greek)
[ci skip]
2026-05-21 15:42:27 +05:30
Pranshul 1d029dbad5 New translations strings.xml (German)
[ci skip]
2026-05-21 15:42:26 +05:30
Pranshul 3b572cbf6d New translations strings.xml (Czech)
[ci skip]
2026-05-21 15:42:24 +05:30
Pranshul fb8fd17db3 New translations strings.xml (Catalan)
[ci skip]
2026-05-21 15:42:22 +05:30
Pranshul 14cc6f7012 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-21 15:42:21 +05:30
Pranshul 3f0653183e New translations strings.xml (Spanish)
[ci skip]
2026-05-21 15:42:19 +05:30
Pranshul cd3a4db031 New translations strings.xml (French)
[ci skip]
2026-05-21 15:42:18 +05:30
Pranshul 5a4b57b77d New translations strings.xml (Romanian)
[ci skip]
2026-05-21 15:42:16 +05:30
PranshulGG 64335add03 show snackbar message when loading in showWeatherSourceDialog in MainScreenViewModel 2026-05-21 15:39:39 +05:30
PranshulGG db06eaa3c6 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-21 15:37:53 +05:30
Pranshul b1203bf4a2 Merge pull request #831 from PranshulGG/l10n_main
New Crowdin updates
2026-05-21 15:37:37 +05:30
PranshulGG 16f8106423 add hourlyAggregationLimitHours to WeatherSource and compute daily weather conditions from hourly data in OpenMeteoJsonMapper 2026-05-21 15:37:18 +05:30
PranshulGG 39b118627d improve NWS data mapping with local day normalization and refactor station selection 2026-05-21 15:37:08 +05:30
PranshulGG 130dc8ea14 use source-specific hourly aggregation limit in findMatchingHourly and update HourlyCard 2026-05-21 15:36:54 +05:30
PranshulGG 2854977a1b add normalizeToDay and toLocalMillis extension functions in Extensions.kt 2026-05-21 15:36:41 +05:30
PranshulGG 6f26f66e48 add dual weather conditions to WeatherCondition enum and implement computeDailyWeatherCondition utility 2026-05-21 15:36:32 +05:30
PranshulGG ad3adfb751 add weather condition vector icons for various state combinations 2026-05-21 15:36:05 +05:30
Pranshul 851a96f147 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-21 10:51:32 +05:30
Pranshul b084f171e5 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-21 10:51:30 +05:30
Pranshul 5b66f0c339 New translations strings.xml (Filipino)
[ci skip]
2026-05-21 10:51:29 +05:30
Pranshul 1d3faa5dab New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-21 10:51:28 +05:30
Pranshul 66b70af0da New translations strings.xml (Thai)
[ci skip]
2026-05-21 10:51:26 +05:30
Pranshul e6457cbd49 New translations strings.xml (Persian)
[ci skip]
2026-05-21 10:51:25 +05:30
Pranshul c427ac9a4a New translations strings.xml (Indonesian)
[ci skip]
2026-05-21 10:51:23 +05:30
Pranshul ac35c572c2 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-21 10:51:22 +05:30
Pranshul 08c1e645bd New translations strings.xml (Vietnamese)
[ci skip]
2026-05-21 10:51:20 +05:30
Pranshul 724c246ba0 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-21 10:51:19 +05:30
Pranshul ea786db08a New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-21 10:51:18 +05:30
Pranshul 8649d19607 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-21 10:51:16 +05:30
Pranshul 87c685e137 New translations strings.xml (Turkish)
[ci skip]
2026-05-21 10:51:15 +05:30
Pranshul 1de294bce9 New translations strings.xml (Swedish)
[ci skip]
2026-05-21 10:51:14 +05:30
Pranshul f19ceb68fa New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-21 10:51:12 +05:30
Pranshul 9655b6dfe2 New translations strings.xml (Slovenian)
[ci skip]
2026-05-21 10:51:11 +05:30
Pranshul 861a5839a4 New translations strings.xml (Russian)
[ci skip]
2026-05-21 10:51:10 +05:30
Pranshul 35caeae22a New translations strings.xml (Portuguese)
[ci skip]
2026-05-21 10:51:09 +05:30
Pranshul c6719f1561 New translations strings.xml (Polish)
[ci skip]
2026-05-21 10:51:07 +05:30
Pranshul efe52c997c New translations strings.xml (Dutch)
[ci skip]
2026-05-21 10:51:06 +05:30
Pranshul 96279862bd New translations strings.xml (Korean)
[ci skip]
2026-05-21 10:51:04 +05:30
Pranshul 711606c957 New translations strings.xml (Japanese)
[ci skip]
2026-05-21 10:51:03 +05:30
Pranshul e3ec7a36ff New translations strings.xml (Italian)
[ci skip]
2026-05-21 10:51:02 +05:30
Pranshul d1fd589f4d New translations strings.xml (Hungarian)
[ci skip]
2026-05-21 10:51:00 +05:30
Pranshul 37d0541292 New translations strings.xml (Finnish)
[ci skip]
2026-05-21 10:50:59 +05:30
Pranshul 2973dbde18 New translations strings.xml (Greek)
[ci skip]
2026-05-21 10:50:58 +05:30
Pranshul 27f9d88f56 New translations strings.xml (German)
[ci skip]
2026-05-21 10:50:57 +05:30
Pranshul 7284036b40 New translations strings.xml (Czech)
[ci skip]
2026-05-21 10:50:55 +05:30
Pranshul b8fbc45491 New translations strings.xml (Catalan)
[ci skip]
2026-05-21 10:50:54 +05:30
Pranshul b022dec685 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-21 10:50:53 +05:30
Pranshul a56ab4ca7a New translations strings.xml (Spanish)
[ci skip]
2026-05-21 10:50:51 +05:30
Pranshul 059f39d199 New translations strings.xml (French)
[ci skip]
2026-05-21 10:50:50 +05:30
Pranshul bf94489a8b New translations strings.xml (Romanian)
[ci skip]
2026-05-21 10:50:49 +05:30
PranshulGG efba253ec0 remove duplicate weather_snow_then_clear string in strings.xml 2026-05-21 10:08:38 +05:30
Pranshul e0dad561b0 Merge pull request #830 from PranshulGG/l10n_main
New Crowdin updates
2026-05-21 09:38:39 +05:30
PranshulGG dbda11caa1 make temperature nullable in CurrentWeatherEntity, bump database version to 38, and add new weather strings 2026-05-21 09:10:54 +05:30
Pranshul e3349173e4 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-21 04:38:06 +05:30
PranshulGG 1771beeefc handle nullability in temperature calculations and refactor NWS data mapping logic 2026-05-20 22:21:57 +05:30
PranshulGG ad26e0316c fixed duplicate days issue with nws 2026-05-20 21:07:27 +05:30
Pranshul 28a7a8a59c Merge pull request #828 from PranshulGG/l10n_main
New Crowdin updates
2026-05-20 18:36:12 +05:30
PranshulGG 9b2b086080 add WeatherSourcesChip component and update WeatherSource display name and getWeatherSourcesForCountry signature 2026-05-20 18:35:07 +05:30
PranshulGG db6c5907ed rename MainScreenUiState to MainScreenWeatherUiState, add isForceRefresh parameter to getWeather, and implement updateSourceForLocation in WeatherViewModel 2026-05-20 18:34:56 +05:30
PranshulGG 2e39621457 add WeatherDomainMapper and update nullability handling in WeatherWithRelationsMapper 2026-05-20 18:34:47 +05:30
PranshulGG 2ec3320d8a add NWS repository to WeatherRepositoryProvider and introduce WeatherDataReconcilerRepository to clean up stale data 2026-05-20 18:34:36 +05:30
PranshulGG e9f7a963fe update WeatherDao to delete hourly and daily data before insertion, add isForceRefresh to WeatherRepository, and bump database version 2026-05-20 18:34:25 +05:30
PranshulGG a8da2670c1 add isForceRefresh parameter to shouldReturnWeatherCache in WeatherCachePolicy.kt 2026-05-20 18:34:12 +05:30
PranshulGG a527696db4 make various fields nullable and add validation methods in WeatherCurrent, WeatherHourly, and WeatherDaily 2026-05-20 18:33:26 +05:30
PranshulGG 7d0ed72150 update convertTemp to handle null values in UnitConverter 2026-05-20 18:33:11 +05:30
PranshulGG 6d809765ab replace isLocationProcessing with selectedLocationId in SearchScreen and update WeatherProvidersForLocationDialog to handle recommended sources and nullable country codes 2026-05-20 18:32:02 +05:30
PranshulGG 18d3e96cef refactor OpenMeteo mapping logic, move entity mappers, and add force refresh support to OpenMeteoRepository 2026-05-20 18:31:51 +05:30
PranshulGG 29fc30c545 implement NwsRepository and mapping logic for current, hourly, and daily NWS weather data 2026-05-20 18:31:36 +05:30
PranshulGG 7852665692 add edit location button to MainSearchBar and implement weather source selection dialog in MainScreen 2026-05-20 18:31:17 +05:30
PranshulGG dc8152b4fd update LocationsRepository to handle air quality cleanup and source updates, and refactor LocationsScreenViewModel to use LocationsRepository 2026-05-20 18:31:04 +05:30
PranshulGG fd773d4180 improve null safety in weather blocks and add validation logic for block visibility 2026-05-20 18:30:53 +05:30
PranshulGG 43d5014f2c make windSpeed and uvIndex nullable in HourlyWeatherEntity, handle nullable temperature in HourlyCard, and rename toMilliseconds to secondsToMilliseconds 2026-05-20 18:30:28 +05:30
PranshulGG d093cea9bd add findHourlyIndexForTime function in ForecastMatching.kt 2026-05-20 18:30:18 +05:30
PranshulGG 329b25befa add Extensions.kt with unit conversion utilities and remove toMilliseconds from DateTimeFormatters.kt 2026-05-20 18:30:00 +05:30
PranshulGG a1056d33b6 replace WeatherDataRepository with WeatherBlocksRepository in DailyScreenViewModel and handle null values in DailyWeatherEntity and forecast UI components 2026-05-20 18:29:51 +05:30
PranshulGG 605d4941f2 make fields nullable in CurrentWeatherEntity, improve null handling in CurrentWeatherCard, and add foreign key to CurrentAirQualityEntity 2026-05-20 18:29:39 +05:30
PranshulGG dc0709bc9e replace toMilliseconds with secondsToMilliseconds in Astronomy.kt 2026-05-20 18:29:27 +05:30
PranshulGG 72b93dec0b add WeatherDataReconcilerRepository provider and update LocationsRepository provider in AppModule 2026-05-20 18:29:16 +05:30
PranshulGG 89d9637fce add computeApparentTemperature utility function in ApparentTemperature.kt 2026-05-20 18:29:09 +05:30
PranshulGG c0875f1370 add deleteCurrentAirQuality to AirQualityDao 2026-05-20 18:28:59 +05:30
Pranshul ccf690089e New translations strings.xml (Vietnamese)
[ci skip]
2026-05-20 15:14:26 +05:30
Pranshul 0418689b65 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-19 20:25:29 +05:30
Pranshul 4e96df2101 New translations strings.xml (Japanese)
[ci skip]
2026-05-19 05:28:18 +05:30
Pranshul 562d36cfab New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-18 23:05:37 +05:30
Pranshul 9a693987cc New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-18 23:05:35 +05:30
Pranshul 65354554b0 New translations strings.xml (Filipino)
[ci skip]
2026-05-18 23:05:34 +05:30
Pranshul 58d624df54 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-18 23:05:33 +05:30
Pranshul cf278e02d1 New translations strings.xml (Thai)
[ci skip]
2026-05-18 23:05:31 +05:30
Pranshul 96ac9734fb New translations strings.xml (Persian)
[ci skip]
2026-05-18 23:05:30 +05:30
Pranshul 1a7e685679 New translations strings.xml (Indonesian)
[ci skip]
2026-05-18 23:05:29 +05:30
Pranshul 29d2b5d660 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-18 23:05:27 +05:30
Pranshul 624d07ca3a New translations strings.xml (Vietnamese)
[ci skip]
2026-05-18 23:05:26 +05:30
Pranshul 7bdc06d9d3 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-18 23:05:24 +05:30
Pranshul c0a37119a5 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-18 23:05:23 +05:30
Pranshul 0b23da4948 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-18 23:05:21 +05:30
Pranshul 4214358e7a New translations strings.xml (Turkish)
[ci skip]
2026-05-18 23:05:19 +05:30
Pranshul 41769b1a35 New translations strings.xml (Swedish)
[ci skip]
2026-05-18 23:05:18 +05:30
Pranshul 490cf4551d New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-18 23:05:17 +05:30
Pranshul 35b5f0c493 New translations strings.xml (Slovenian)
[ci skip]
2026-05-18 23:05:15 +05:30
Pranshul 440949b6a4 New translations strings.xml (Russian)
[ci skip]
2026-05-18 23:05:14 +05:30
Pranshul e3be9163d6 New translations strings.xml (Portuguese)
[ci skip]
2026-05-18 23:05:12 +05:30
Pranshul d6668deac1 New translations strings.xml (Polish)
[ci skip]
2026-05-18 23:05:11 +05:30
Pranshul 9e07cc070d New translations strings.xml (Dutch)
[ci skip]
2026-05-18 23:05:09 +05:30
Pranshul f8d9ff301c New translations strings.xml (Korean)
[ci skip]
2026-05-18 23:05:08 +05:30
Pranshul a9bf72cde1 New translations strings.xml (Japanese)
[ci skip]
2026-05-18 23:05:06 +05:30
Pranshul a9cc398699 New translations strings.xml (Italian)
[ci skip]
2026-05-18 23:05:05 +05:30
Pranshul dc123802b5 New translations strings.xml (Hungarian)
[ci skip]
2026-05-18 23:05:03 +05:30
Pranshul 79a010cc9c New translations strings.xml (Finnish)
[ci skip]
2026-05-18 23:05:02 +05:30
Pranshul 7e9a955676 New translations strings.xml (Greek)
[ci skip]
2026-05-18 23:05:00 +05:30
Pranshul 86afc5ebed New translations strings.xml (German)
[ci skip]
2026-05-18 23:04:59 +05:30
Pranshul e7642212ba New translations strings.xml (Czech)
[ci skip]
2026-05-18 23:04:58 +05:30
Pranshul f731a54048 New translations strings.xml (Catalan)
[ci skip]
2026-05-18 23:04:56 +05:30
Pranshul 8bc5ea7206 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-18 23:04:55 +05:30
Pranshul 23c676b085 New translations strings.xml (Spanish)
[ci skip]
2026-05-18 23:04:53 +05:30
Pranshul 757a86f6b6 New translations strings.xml (French)
[ci skip]
2026-05-18 23:04:52 +05:30
Pranshul 5818f5bb21 New translations strings.xml (Romanian)
[ci skip]
2026-05-18 23:04:50 +05:30
PranshulGG 5387c60cbe reorganize packages for models, entities, and DAOs, rename DAO accessors in WeatherMasterDatabase, and add NWS support [LOT OF ERRORS] 2026-05-18 22:54:20 +05:30
PranshulGG 062ea30137 refactor package structure for domain models and network repositories, rename weather repositories, and update WeatherSource enum with NWS support 2026-05-18 22:53:59 +05:30
PranshulGG ce01d16fcc rename AppWeatherUnitsRepository to WeatherUnitsRepository and update WeatherProvidersForLocationDialog with categorized source lists 2026-05-18 22:53:42 +05:30
PranshulGG b19deb54af add weather source selection when saving location and refactor SearchSource to use displayName property 2026-05-18 22:53:29 +05:30
PranshulGG 38805415be rename AppWeatherUnits to WeatherUnits, move domain models to subpackages, and refactor WindDirection logic into companion object 2026-05-18 22:53:11 +05:30
PranshulGG ccde3f9b3c add NWS weather provider support including API, Room entities, and data mappers 2026-05-18 22:52:47 +05:30
PranshulGG 03f00eba60 reorganize domain model package structure, rename AppWeatherUnits to WeatherUnits, and add getWeatherForAllLocations to LocationsRepository 2026-05-18 22:52:34 +05:30
PranshulGG 3c80768538 update WeatherDaily and WeatherHourly imports in ForecastMatching.kt 2026-05-18 22:52:17 +05:30
PranshulGG 4f1895aca4 rename AppWeatherUnits to WeatherUnits and AppWeatherUnitsRepository to WeatherUnitsRepository and update model imports in daily feature files 2026-05-18 22:15:53 +05:30
PranshulGG bcb17e8062 move CurrentWeatherEntity to weather package, update windDirection type to WindDirection, and update Weather domain model imports 2026-05-18 22:15:41 +05:30
PranshulGG 88c252ca75 reorganize project structure, rename AppWeatherUnits to WeatherUnits, and update weather models to use WindDirection type 2026-05-18 22:15:28 +05:30
PranshulGG 6150b563d8 rename several DAOs and repositories, update package structure for network sources, and add NWS API and repository to AppModule 2026-05-18 22:14:33 +05:30
PranshulGG 1f21f04ab8 move air quality models, entities, and DAOs to dedicated airquality packages and remove unused imports 2026-05-18 22:12:11 +05:30
Pranshul 2d73719850 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-18 14:55:47 +05:30
Pranshul a71256ef3a New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-18 14:55:46 +05:30
Pranshul 8e0d941a05 New translations strings.xml (Filipino)
[ci skip]
2026-05-18 14:55:44 +05:30
Pranshul 8b5ac233ee New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-18 14:55:43 +05:30
Pranshul 6d6548e60b New translations strings.xml (Thai)
[ci skip]
2026-05-18 14:55:42 +05:30
Pranshul 6f90bac63c New translations strings.xml (Persian)
[ci skip]
2026-05-18 14:55:40 +05:30
Pranshul 402284e511 New translations strings.xml (Indonesian)
[ci skip]
2026-05-18 14:55:39 +05:30
Pranshul 581b5c19d6 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-18 14:55:37 +05:30
Pranshul 1a50ca1626 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-18 14:55:36 +05:30
Pranshul f6af418211 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-18 14:55:35 +05:30
Pranshul 1d99d89a1e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-18 14:55:33 +05:30
Pranshul 6d3488d4e0 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-18 14:55:32 +05:30
Pranshul 9269ef1881 New translations strings.xml (Turkish)
[ci skip]
2026-05-18 14:55:31 +05:30
Pranshul 259a394abb New translations strings.xml (Swedish)
[ci skip]
2026-05-18 14:55:29 +05:30
Pranshul d9ba9d61d1 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-18 14:55:27 +05:30
Pranshul 5495f28da3 New translations strings.xml (Slovenian)
[ci skip]
2026-05-18 14:55:26 +05:30
Pranshul 2d5aa5a83d New translations strings.xml (Russian)
[ci skip]
2026-05-18 14:55:25 +05:30
Pranshul d9e4f211c0 New translations strings.xml (Portuguese)
[ci skip]
2026-05-18 14:55:23 +05:30
Pranshul 8f159da863 New translations strings.xml (Polish)
[ci skip]
2026-05-18 14:55:22 +05:30
Pranshul 629b73995c New translations strings.xml (Dutch)
[ci skip]
2026-05-18 14:55:21 +05:30
Pranshul a07ade6e27 New translations strings.xml (Korean)
[ci skip]
2026-05-18 14:55:19 +05:30
Pranshul f630c3ddc9 New translations strings.xml (Japanese)
[ci skip]
2026-05-18 14:55:18 +05:30
Pranshul 61e8d09d65 New translations strings.xml (Italian)
[ci skip]
2026-05-18 14:55:16 +05:30
Pranshul 17426f93e0 New translations strings.xml (Hungarian)
[ci skip]
2026-05-18 14:55:15 +05:30
Pranshul e448fd1171 New translations strings.xml (Finnish)
[ci skip]
2026-05-18 14:55:14 +05:30
Pranshul a5f67c0fbc New translations strings.xml (Greek)
[ci skip]
2026-05-18 14:55:12 +05:30
Pranshul 1e34f82f98 New translations strings.xml (German)
[ci skip]
2026-05-18 14:55:11 +05:30
Pranshul 80946165bd New translations strings.xml (Czech)
[ci skip]
2026-05-18 14:55:09 +05:30
Pranshul 651e7d2d64 New translations strings.xml (Catalan)
[ci skip]
2026-05-18 14:55:08 +05:30
Pranshul 8a17644e65 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-18 14:55:06 +05:30
Pranshul c7caa3f1da New translations strings.xml (Spanish)
[ci skip]
2026-05-18 14:55:05 +05:30
Pranshul 584f3179d5 New translations strings.xml (French)
[ci skip]
2026-05-18 14:55:03 +05:30
Pranshul 2900cc1f41 New translations strings.xml (Romanian)
[ci skip]
2026-05-18 14:55:02 +05:30
PranshulGG 96e837fe10 implement WeatherProvidersForLocationDialog in SharedDialogs.kt 2026-05-18 14:42:20 +05:30
PranshulGG 4729470f83 rename SearchProvider to SearchSource and add weather source selection dialog to SearchScreen 2026-05-18 14:42:10 +05:30
PranshulGG 4c84b92add rename WeatherProvider to WeatherSource and SearchProvider to SearchSource and update database version to 32 2026-05-18 14:41:56 +05:30
Pranshul 1f177190a4 Merge pull request #826 from PranshulGG/l10n_main
New Crowdin updates
2026-05-17 22:40:37 +05:30
PranshulGG 6f58334426 rename WeatherConditions to WeatherCondition, SearchProviders to SearchProvider, and WeatherProviders to WeatherProvider 2026-05-17 22:40:12 +05:30
PranshulGG 3dbcafcd50 format snow amount in SnowBlock and add WeatherProvidersForLocationDialog in SharedDialogs.kt 2026-05-17 22:39:28 +05:30
PranshulGG 9144ac7243 rename WeatherConditions, WeatherProviders, and SearchProviders to singular versions and refactor the search provider dialog into a separate SearchDialogs object. 2026-05-17 22:39:18 +05:30
PranshulGG 7f6ec30b0a update app icons and splash screen background color and remove unused launcher resources 2026-05-17 22:38:39 +05:30
Pranshul ca8a5c3236 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-17 21:25:19 +05:30
Pranshul 5418f0bdfb New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-17 21:25:18 +05:30
Pranshul 1daf3783c5 New translations strings.xml (Catalan)
[ci skip]
2026-05-17 21:25:16 +05:30
Pranshul f07248d4d9 New translations strings.xml (Japanese)
[ci skip]
2026-05-17 14:53:02 +05:30
PranshulGG 23783128db add rainy_light and snowflake vector drawables fixed #824 2026-05-17 14:31:47 +05:30
Pranshul 3a71797671 Merge pull request #821 from PranshulGG/l10n_main
New Crowdin updates
2026-05-17 13:55:56 +05:30
Pranshul 1e35c085ff New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-17 08:31:45 +05:30
Pranshul d8f268a1b2 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-17 02:08:46 +05:30
Pranshul 4b77f316ae New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-17 02:08:45 +05:30
Pranshul 0d4d17d78f New translations strings.xml (Filipino)
[ci skip]
2026-05-17 02:08:44 +05:30
Pranshul 5fbf13e02c New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-17 02:08:43 +05:30
Pranshul e861b4ccfa New translations strings.xml (Thai)
[ci skip]
2026-05-17 02:08:42 +05:30
Pranshul 27708b5099 New translations strings.xml (Persian)
[ci skip]
2026-05-17 02:08:41 +05:30
Pranshul d262c5f4c0 New translations strings.xml (Indonesian)
[ci skip]
2026-05-17 02:08:39 +05:30
Pranshul 8855cd792e New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-17 02:08:38 +05:30
Pranshul f0098314d8 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-17 02:08:37 +05:30
Pranshul 8873e8b703 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-17 02:08:36 +05:30
Pranshul 8c71b5077a New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-17 02:08:35 +05:30
Pranshul fc34fd9c1f New translations strings.xml (Ukrainian)
[ci skip]
2026-05-17 02:08:34 +05:30
Pranshul 62a51b5682 New translations strings.xml (Turkish)
[ci skip]
2026-05-17 02:08:33 +05:30
Pranshul 30498b905a New translations strings.xml (Swedish)
[ci skip]
2026-05-17 02:08:31 +05:30
Pranshul fa4b14fd73 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-17 02:08:30 +05:30
Pranshul 47d81d217e New translations strings.xml (Slovenian)
[ci skip]
2026-05-17 02:08:29 +05:30
Pranshul 3e40160c61 New translations strings.xml (Russian)
[ci skip]
2026-05-17 02:08:28 +05:30
Pranshul 9dc6218d78 New translations strings.xml (Portuguese)
[ci skip]
2026-05-17 02:08:27 +05:30
Pranshul 2a549d58d2 New translations strings.xml (Polish)
[ci skip]
2026-05-17 02:08:26 +05:30
Pranshul 035cfa9074 New translations strings.xml (Dutch)
[ci skip]
2026-05-17 02:08:25 +05:30
Pranshul fae6d7acee New translations strings.xml (Korean)
[ci skip]
2026-05-17 02:08:24 +05:30
Pranshul 1a89e28cbe New translations strings.xml (Japanese)
[ci skip]
2026-05-17 02:08:22 +05:30
Pranshul 8e02eed039 New translations strings.xml (Italian)
[ci skip]
2026-05-17 02:08:21 +05:30
Pranshul 5decb756cd New translations strings.xml (Hungarian)
[ci skip]
2026-05-17 02:08:20 +05:30
Pranshul 5eb54215b0 New translations strings.xml (Finnish)
[ci skip]
2026-05-17 02:08:19 +05:30
Pranshul 768915b703 New translations strings.xml (Greek)
[ci skip]
2026-05-17 02:08:18 +05:30
Pranshul 58cdbf4629 New translations strings.xml (German)
[ci skip]
2026-05-17 02:08:17 +05:30
Pranshul 695510edda New translations strings.xml (Czech)
[ci skip]
2026-05-17 02:08:15 +05:30
Pranshul bd6c358465 New translations strings.xml (Catalan)
[ci skip]
2026-05-17 02:08:14 +05:30
Pranshul d0e49b4e45 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-17 02:08:13 +05:30
Pranshul ce9e9278a5 New translations strings.xml (Spanish)
[ci skip]
2026-05-17 02:08:12 +05:30
Pranshul 648af98795 New translations strings.xml (French)
[ci skip]
2026-05-17 02:08:11 +05:30
Pranshul 4f5ab8a5be New translations strings.xml (Romanian)
[ci skip]
2026-05-17 02:08:10 +05:30
PranshulGG d02312c18c add rain and snow block strings to strings.xml 2026-05-16 23:55:47 +05:30
PranshulGG 031731cd45 add WindDirection enum and getWindDirectionValue utility function 2026-05-16 23:53:43 +05:30
PranshulGG 31e79978ba add WindBlock component to shared blocks 2026-05-16 23:53:36 +05:30
PranshulGG 67e16d6ffd replace Instant.now().epochSecond with System.currentTimeMillis() in WeatherWithRelationsMapper 2026-05-16 23:53:26 +05:30
PranshulGG 5e9b6734b1 add inShort parameter to WindSpeedUnits.toName in WeatherUnits.kt 2026-05-16 23:53:15 +05:30
PranshulGG f924218ac2 update loadBlocks to support daily blocks and include missing default blocks in WeatherDataRepository 2026-05-16 23:53:08 +05:30
PranshulGG 935877f6ad add SNOW_BLOCK and WIND_BLOCK types and implement conditional visibility logic in WeatherBlocks 2026-05-16 23:52:48 +05:30
PranshulGG 48f5c138ba add weather_wind_arrow_dominant drawable and update windDirection notes in Weather.kt 2026-05-16 23:52:38 +05:30
PranshulGG 89a9d58e20 add SnowBlock, refactor RainBlock to accept specific rain amounts, and update SunBlock and MoonBlock to hide canvas when dailyIndex is not zero 2026-05-16 23:51:19 +05:30
PranshulGG e34b2f0090 move showDeviceLocationCard logic inside LazyColumn in LocationsScreenContent and return instead of throwing exception if location coordinates are null in LocationsRepository 2026-05-16 23:51:06 +05:30
PranshulGG 6481664fcb capitalize Location and City labels in IntroScreen.kt 2026-05-16 23:50:57 +05:30
PranshulGG e27a79acb2 update loadBlocks in DailyScreenViewModel to pass isDaily = true and add debug logging 2026-05-16 23:50:46 +05:30
PranshulGG cd54032fed make airQuality parameter nullable in AirQualityBlock 2026-05-16 23:50:19 +05:30
Pranshul ac848e0975 New translations strings.xml (Polish)
[ci skip]
2026-05-16 19:01:37 +05:30
Pranshul b8e7bc31b0 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-15 23:33:56 +05:30
Pranshul 6a77b28854 New translations strings.xml (Spanish)
[ci skip]
2026-05-15 23:33:55 +05:30
PranshulGG ea4a16378c rename AIR_QUALITY to AIR_QUALITY_BLOCK, add RAIN_BLOCK and getDefaultForDaily in WeatherBlockType, and update unit formatting in WeatherUnits 2026-05-15 23:04:16 +05:30
PranshulGG 0f978aa9d6 add unit notes to Weather domain models and increment database version to 31 2026-05-15 23:04:06 +05:30
PranshulGG 8cc758cd96 simplify Uuid.random() call in UuidGenerator and add RainBlock component to display daily precipitation 2026-05-15 23:03:57 +05:30
PranshulGG c44a5b619d rename DailySelectableItemsContainer to DailyDaysHeader, update DailyForecastHeroHeader UI layout and styling, and only update blocks in DailyScreenViewModel if not empty 2026-05-15 23:03:51 +05:30
PranshulGG dcdf7bacc0 remove commented code in AppNavHost.kt 2026-05-15 23:03:40 +05:30
PranshulGG 7f4e1bd9c5 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-15 18:20:44 +05:30
PranshulGG 322798288e update rain drop colors to support light and dark themes in RainCanvas.kt 2026-05-15 18:20:35 +05:30
PranshulGG 27384828b2 bump database version to 30 and add getWeatherForLocation to WeatherLocationDao 2026-05-15 18:20:26 +05:30
PranshulGG bcd0452a2d update saveBlocks to support isDaily parameter in WeatherViewModel and use milliseconds in getDailyIndexForToday 2026-05-15 18:18:30 +05:30
PranshulGG 01cc77637a add isDaily parameter to saveBlocks and update clearing logic in WeatherDataRepository 2026-05-15 18:18:21 +05:30
PranshulGG b5de9f8284 add SelectableDayItem component in daily feature 2026-05-15 18:18:14 +05:30
PranshulGG 56424e0e9a add TODOs to use current time index for visibility and dew point in OpenMeteoMapper.kt 2026-05-15 18:18:05 +05:30
PranshulGG 5e096c062c add daily navigation route and helper function to NavRoutes.kt 2026-05-15 18:17:58 +05:30
PranshulGG 5579519570 move WeatherBlocks to shared components, pass navController to DailyCard in MainScreenScaffold, and update imports in MainScreen 2026-05-15 18:17:50 +05:30
PranshulGG 029a4b7fdc add getWeatherForLocation to LocationsRepository 2026-05-15 18:17:39 +05:30
PranshulGG d5d48596dc support daily forecast blocks by adding isDaily flag to models, updating DAO methods, and refactoring WeatherBlocks for shared use 2026-05-15 18:17:32 +05:30
PranshulGG 6cd764f2e6 add optional currentMilli parameter to HourlyCard and use it in findMatchingHourly 2026-05-15 18:16:53 +05:30
PranshulGG b941b53a5e prevent negative drop index in ForecastMatching.kt 2026-05-15 18:16:46 +05:30
PranshulGG bd221a1e49 add toDateString function to DateTimeFormatters.kt 2026-05-15 18:16:40 +05:30
PranshulGG 4b53c7d194 add navigation to DailyCard items and use roundToInt for temperature conversions in DailyItem 2026-05-15 18:16:31 +05:30
PranshulGG fae20973a6 add DailyScreen, DailyScreenViewModel, and daily forecast UI components 2026-05-15 18:16:24 +05:30
PranshulGG 4bc62ee9a4 add getUnitsOnce to AppWeatherUnitsRepository and getWeatherUnitsOnce to AppWeatherUnitsDao 2026-05-15 18:16:11 +05:30
PranshulGG da1a81d486 add DailyScreen navigation route to AppNavHost.kt 2026-05-15 18:16:04 +05:30
PranshulGG 32accaeab6 update track color and height of air quality indicator and refine level colors 2026-05-15 18:15:55 +05:30
Pranshul cc91bfb1a2 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-15 17:16:53 +05:30
Pranshul b3951a2623 New translations strings.xml (Japanese)
[ci skip]
2026-05-15 17:16:52 +05:30
Pranshul 7d0013afb8 Merge pull request #820 from PranshulGG/l10n_main
New Crowdin updates
2026-05-15 10:57:19 +05:30
Pranshul 0f5a7e780e New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-14 22:43:53 +05:30
Pranshul b14d07b7d6 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-14 22:43:51 +05:30
Pranshul 27a009b84b New translations strings.xml (Filipino)
[ci skip]
2026-05-14 22:43:50 +05:30
Pranshul 84b17f61e1 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-14 22:43:48 +05:30
Pranshul 708fb6b326 New translations strings.xml (Thai)
[ci skip]
2026-05-14 22:43:47 +05:30
Pranshul bdf70b499c New translations strings.xml (Persian)
[ci skip]
2026-05-14 22:43:45 +05:30
Pranshul a9e00f6881 New translations strings.xml (Indonesian)
[ci skip]
2026-05-14 22:43:43 +05:30
Pranshul e448380831 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-14 22:43:42 +05:30
Pranshul 5117abda25 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-14 22:43:40 +05:30
Pranshul 829e89aa8d New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-14 22:43:39 +05:30
Pranshul f8ff00817f New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-14 22:43:38 +05:30
Pranshul 81daa3f868 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-14 22:43:36 +05:30
Pranshul e1fcf1dc10 New translations strings.xml (Turkish)
[ci skip]
2026-05-14 22:43:34 +05:30
Pranshul dc7c195cbc New translations strings.xml (Swedish)
[ci skip]
2026-05-14 22:43:33 +05:30
Pranshul d286230e1d New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-14 22:43:32 +05:30
Pranshul a6400cfe3d New translations strings.xml (Slovenian)
[ci skip]
2026-05-14 22:43:30 +05:30
Pranshul 5fc6882dd9 New translations strings.xml (Russian)
[ci skip]
2026-05-14 22:43:29 +05:30
Pranshul 31fffa3be1 New translations strings.xml (Portuguese)
[ci skip]
2026-05-14 22:43:27 +05:30
Pranshul eb89eb0e9c New translations strings.xml (Polish)
[ci skip]
2026-05-14 22:43:26 +05:30
Pranshul 1791127dd7 New translations strings.xml (Dutch)
[ci skip]
2026-05-14 22:43:24 +05:30
Pranshul d5f73b330d New translations strings.xml (Korean)
[ci skip]
2026-05-14 22:43:23 +05:30
Pranshul 8b93a39e95 New translations strings.xml (Japanese)
[ci skip]
2026-05-14 22:43:21 +05:30
Pranshul 4d8c36d784 New translations strings.xml (Italian)
[ci skip]
2026-05-14 22:43:20 +05:30
Pranshul 187a0a7d87 New translations strings.xml (Hungarian)
[ci skip]
2026-05-14 22:43:18 +05:30
Pranshul 0c3e9bd694 New translations strings.xml (Finnish)
[ci skip]
2026-05-14 22:43:16 +05:30
Pranshul 4c4ffe459a New translations strings.xml (Greek)
[ci skip]
2026-05-14 22:43:15 +05:30
Pranshul 2a8ec8db74 New translations strings.xml (German)
[ci skip]
2026-05-14 22:43:13 +05:30
Pranshul f102fc68a4 New translations strings.xml (Czech)
[ci skip]
2026-05-14 22:43:12 +05:30
Pranshul 2b81e92bda New translations strings.xml (Catalan)
[ci skip]
2026-05-14 22:43:10 +05:30
Pranshul bffd3c4d40 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-14 22:43:08 +05:30
Pranshul cd6581e4af New translations strings.xml (Spanish)
[ci skip]
2026-05-14 22:43:07 +05:30
Pranshul 1a4bd704a8 New translations strings.xml (French)
[ci skip]
2026-05-14 22:43:05 +05:30
Pranshul e775d89f79 New translations strings.xml (Romanian)
[ci skip]
2026-05-14 22:43:04 +05:30
PranshulGG a0e8ed1b4c bump version to 3.0.0-alpha4, remove debug log in WeatherViewModel, update AUTO_REFRESH_MAX_MINUTES in CacheConfig, and add air quality description strings 2026-05-14 17:58:12 +05:30
Pranshul 97f19f7d38 New translations strings.xml (Japanese)
[ci skip]
2026-05-14 16:12:01 +05:30
PranshulGG 5bfc00cfce update database version to 27 in WeatherMasterDatabase 2026-05-14 15:08:07 +05:30
PranshulGG 65e8446068 rename lastUpdatedSecs to lastUpdatedInMilli and add air quality error logging in WeatherViewModel 2026-05-14 15:07:48 +05:30
PranshulGG 9623885d88 convert weather timestamps to milliseconds and rename lastUpdatedSecs to lastUpdatedInMilli in OpenMeteoMapper 2026-05-14 15:07:34 +05:30
PranshulGG 1bddd00952 update weather time properties from seconds to milliseconds in LocationsScreenContent.kt 2026-05-14 15:07:24 +05:30
PranshulGG 01c97551d8 update SunBlock and MoonBlock to use System.currentTimeMillis and adjust UI offsets in UvIndexBlock 2026-05-14 15:07:15 +05:30
PranshulGG 71b311119f use toMilliseconds for epoch time and remove manual millisecond conversion in HourlyCard.kt 2026-05-14 15:07:01 +05:30
PranshulGG f202e8d970 update findMatchingDaily and findMatchingHourly to use milliseconds instead of seconds in ForecastMatching.kt 2026-05-14 15:06:54 +05:30
PranshulGG eb022fd860 rename time parameters to timeMilli in DateTimeFormatters.kt and add toMilliseconds extension function 2026-05-14 15:06:32 +05:30
PranshulGG 7ab82dd182 use milliseconds instead of seconds for time in DailyCard.kt 2026-05-14 15:06:23 +05:30
PranshulGG f855f71283 rename lastUpdatedSecs to lastUpdatedInMilli in CurrentWeatherEntity and update time parameters to use milliseconds in CurrentWeatherCard.kt 2026-05-14 15:06:15 +05:30
PranshulGG 8581c9c939 refactor OpenMeteoAqiRepository to use AirQualityResultType and update air quality entity to use millisecond timestamps 2026-05-14 15:06:06 +05:30
PranshulGG 0516530bc0 update AUTO_REFRESH_MAX_MINUTES to 45 in CacheConfig.kt 2026-05-14 15:05:40 +05:30
PranshulGG e203c2d278 update getSunTimings and getMoonTimings to use milliseconds instead of seconds in Astronomy.kt 2026-05-14 15:05:15 +05:30
PranshulGG c2c8afd1de rename lastUpdatedSecs to lastUpdatedInMilli in AirQuality model, update AirQualityCachePolicy to return AirQualityResultType, and update typography in AirQualityBlock 2026-05-14 15:04:54 +05:30
Pranshul 8eb923f249 Merge pull request #819 from PranshulGG/l10n_main
New Crowdin updates
2026-05-14 11:53:39 +05:30
PranshulGG 8bc67822dc refactor WeatherViewModel to extract weather and air quality handling into separate functions and fetch AQI data asynchronously 2026-05-14 11:53:14 +05:30
PranshulGG f16391497e add AirQualityResult sealed class and update isCurrentAirQualitySafe to handle nullable AirQuality 2026-05-14 11:52:47 +05:30
PranshulGG 5bf555fc4f add AirQualityResult sealed class and update isCurrentAirQualitySafe to handle nullable AirQuality 2026-05-14 11:52:24 +05:30
Pranshul 2d5b58749d New translations strings.xml (French)
[ci skip]
2026-05-14 06:24:12 +05:30
Pranshul a58152e44b New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-14 00:25:14 +05:30
Pranshul 450bdd74fd New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-14 00:25:13 +05:30
Pranshul b0860a43d4 New translations strings.xml (Filipino)
[ci skip]
2026-05-14 00:25:12 +05:30
Pranshul 0fee3f94a6 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-14 00:25:10 +05:30
Pranshul 50047eae33 New translations strings.xml (Thai)
[ci skip]
2026-05-14 00:25:09 +05:30
Pranshul 29e787aa0c New translations strings.xml (Persian)
[ci skip]
2026-05-14 00:25:07 +05:30
Pranshul 2fb6aa5040 New translations strings.xml (Indonesian)
[ci skip]
2026-05-14 00:25:06 +05:30
Pranshul 8d8421a797 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-14 00:25:05 +05:30
Pranshul d152ad9fa8 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-14 00:25:04 +05:30
Pranshul ca8d8d31e1 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-14 00:25:02 +05:30
Pranshul 76d1e095f6 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-14 00:25:01 +05:30
Pranshul 3e2bc44a9d New translations strings.xml (Ukrainian)
[ci skip]
2026-05-14 00:25:00 +05:30
Pranshul 8c8acf2de1 New translations strings.xml (Turkish)
[ci skip]
2026-05-14 00:24:58 +05:30
Pranshul a3aeb3d86a New translations strings.xml (Swedish)
[ci skip]
2026-05-14 00:24:57 +05:30
Pranshul 045f8d4ed3 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-14 00:24:56 +05:30
Pranshul b947c5c5f3 New translations strings.xml (Slovenian)
[ci skip]
2026-05-14 00:24:55 +05:30
Pranshul 2e2d3efba8 New translations strings.xml (Russian)
[ci skip]
2026-05-14 00:24:53 +05:30
Pranshul 0cc447685a New translations strings.xml (Portuguese)
[ci skip]
2026-05-14 00:24:52 +05:30
Pranshul 061876711a New translations strings.xml (Polish)
[ci skip]
2026-05-14 00:24:51 +05:30
Pranshul 4e75afe35b New translations strings.xml (Dutch)
[ci skip]
2026-05-14 00:24:49 +05:30
Pranshul 8b2a546da6 New translations strings.xml (Korean)
[ci skip]
2026-05-14 00:24:48 +05:30
Pranshul 611757b86c New translations strings.xml (Japanese)
[ci skip]
2026-05-14 00:24:47 +05:30
Pranshul e556ffd568 New translations strings.xml (Italian)
[ci skip]
2026-05-14 00:24:45 +05:30
Pranshul 135f0b77ec New translations strings.xml (Hungarian)
[ci skip]
2026-05-14 00:24:44 +05:30
Pranshul a44bf84b3c New translations strings.xml (Finnish)
[ci skip]
2026-05-14 00:24:43 +05:30
Pranshul 6378c38f2c New translations strings.xml (Greek)
[ci skip]
2026-05-14 00:24:41 +05:30
Pranshul d0b4015fc9 New translations strings.xml (German)
[ci skip]
2026-05-14 00:24:40 +05:30
Pranshul 678b3e4182 New translations strings.xml (Czech)
[ci skip]
2026-05-14 00:24:39 +05:30
Pranshul bad5f14af0 New translations strings.xml (Catalan)
[ci skip]
2026-05-14 00:24:38 +05:30
Pranshul 5cb72e78c1 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-14 00:24:36 +05:30
Pranshul 7712c44246 New translations strings.xml (Spanish)
[ci skip]
2026-05-14 00:24:35 +05:30
Pranshul c3fbe0e71f New translations strings.xml (French)
[ci skip]
2026-05-14 00:24:34 +05:30
Pranshul 3f45b90222 New translations strings.xml (Romanian)
[ci skip]
2026-05-14 00:24:32 +05:30
PranshulGG 0d5e7c1469 add airwave_24px drawable and WeatherCachePolicy utility for weather data validation and cache management 2026-05-13 21:46:24 +05:30
PranshulGG b3b137a8f5 add air quality level strings to strings.xml 2026-05-13 21:46:15 +05:30
PranshulGG 20d4baf08f refactor core models into subpackages and add air quality validation in WeatherBlocks 2026-05-13 21:46:08 +05:30
PranshulGG 03478891fe update weather unit imports and remove unused imports in UnitsScreen.kt 2026-05-13 21:45:52 +05:30
PranshulGG 200bedb517 remove TimeFormatters, WeatherProviders, and WeatherUtils utility classes and models 2026-05-13 21:45:43 +05:30
PranshulGG c7a6242878 update weather unit package paths and refactor locale utility usage in SettingsScreen 2026-05-13 21:45:30 +05:30
PranshulGG 1bf38c4d4d update SearchProviders and domain model import paths and remove unused imports in SearchRepository, SearchScreen, and SearchScreenViewModel 2026-05-13 21:45:18 +05:30
PranshulGG c2cc4bab7c reorganize core package structure, move models and utilities to specialized subpackages, and convert UuidGenerator to an object 2026-05-13 21:36:26 +05:30
PranshulGG f7bb229c5c add Pollutants enum and logic to calculate air quality levels in Pollutants.kt 2026-05-13 21:36:09 +05:30
PranshulGG 8b815b9700 replace WeatherUtils calls with specialized utility functions and update weather model package imports 2026-05-13 21:36:00 +05:30
PranshulGG 3f65bb6485 add formatNumbers utility and import Log in MainScreen.kt 2026-05-13 21:35:49 +05:30
PranshulGG 1cfe14ec63 refactor package structure for models and utils and clean up unused imports in locations feature 2026-05-13 21:32:13 +05:30
PranshulGG be87d3494e move LocaleUtils to locale package, convert to top-level functions, and remove unused imports 2026-05-13 21:32:03 +05:30
PranshulGG e9d4d028d6 update package imports and UuidGenerator usage in IntroScreen.kt and remove unused imports 2026-05-13 21:31:46 +05:30
PranshulGG 1320093476 refactor weather blocks to use top-level utility functions and update package structure for models and utils 2026-05-13 21:31:31 +05:30
PranshulGG abca967cac update package structure for weather models and utilities, convert utility classes to top-level functions, and rename filterHourlyDataForDate to findMatchingHourly 2026-05-13 21:31:03 +05:30
PranshulGG 0122041f18 remove unused imports in DeviceLocationProvider.kt and add forecast matching utility functions in ForecastMatching.kt 2026-05-13 21:30:51 +05:30
PranshulGG 36158ef5cf add DateTimeFormatters with time, weekday, and relative time formatting utilities 2026-05-13 21:30:34 +05:30
PranshulGG 081d7dfc74 update package structure for weather and astro models and refactor DailyCard to use top-level utility functions 2026-05-13 21:30:27 +05:30
PranshulGG e173148cfc refactor weather-related package structures and remove unused imports in CurrentWeatherEntity.kt 2026-05-13 21:30:18 +05:30
PranshulGG a6cfd39c8e add CacheConfig with weather refresh constants 2026-05-13 21:30:08 +05:30
PranshulGG 493a8e2915 update imports and use top-level isWeatherDomainSafe instead of DataSafe in BackgroundGradients.kt 2026-05-13 21:30:00 +05:30
PranshulGG 3504d47713 add Astronomy.kt utility for sun and moon calculations and move AstroTimings.kt to astro subpackage 2026-05-13 21:29:50 +05:30
PranshulGG c43d167859 update weather units imports to use core.model.weather package and remove unused import in AppWeatherUnitsRepository 2026-05-13 21:29:41 +05:30
PranshulGG caae6ae64b update imports for SearchProviders and PreferencesHelper in AppPrefs and AppPrefsState 2026-05-13 21:29:31 +05:30
PranshulGG f78f2daaec move AppExceptions.kt to domain package and update package declaration 2026-05-13 21:29:23 +05:30
PranshulGG 69c536af22 remove unused imports in AppearanceScreen.kt 2026-05-13 21:29:12 +05:30
PranshulGG d7d3ef6a0d implement AQI calculation logic, add AirQualityLevel enum and cache policy, and update AirQualityBlock UI 2026-05-13 21:29:04 +05:30
Pranshul 60fa4297fb New translations strings.xml (Catalan)
[ci skip]
2026-05-13 18:24:46 +05:30
Pranshul f0130f6e9a New translations strings.xml (Spanish)
[ci skip]
2026-05-13 18:24:44 +05:30
Pranshul 5ab8c94886 New translations strings.xml (Spanish)
[ci skip]
2026-05-13 12:07:41 +05:30
Pranshul dc03506118 New translations strings.xml (Hungarian)
[ci skip]
2026-05-13 02:43:18 +05:30
PranshulGG 22a0b546e2 provide OpenMeteoAqiApi, OpenMeteoAqiRepository, and AirQualityDao in AppModule.kt 2026-05-12 20:40:45 +05:30
PranshulGG 16e94424e4 add comment to drop past days in WeatherWithRelationsMapper.kt 2026-05-12 20:40:38 +05:30
PranshulGG ea51058d69 integrate OpenMeteoAqiRepository in WeatherViewModel to fetch and update air quality data 2026-05-12 20:40:32 +05:30
PranshulGG d1216bbc58 rename getAllWeatherDataForLocation to getWeatherDataForLocation in WeatherDataDao and add AirQualityDao to WeatherMasterDatabase 2026-05-12 20:40:25 +05:30
PranshulGG 0772ad4934 add AIR_QUALITY to WeatherBlockType and display AirQualityBlock in WeatherBlocks 2026-05-12 20:40:17 +05:30
PranshulGG 953bf91223 move OpenMeteoMapper to weather package and rename getAllWeatherDataForLocation to getWeatherDataForLocation in OpenMeteoRepository 2026-05-12 20:40:04 +05:30
PranshulGG c14efb7268 add Open-Meteo Air Quality API integration and repository with caching logic 2026-05-12 20:39:53 +05:30
PranshulGG 7b935d22e0 pass airQuality to WeatherBlocks in MainScreenScaffold 2026-05-12 20:39:42 +05:30
PranshulGG cd765fd368 remove commented out id field from CurrentWeatherEntity 2026-05-12 20:39:35 +05:30
PranshulGG 466a314b12 add CurrentAirQualityEntity Room entity 2026-05-12 20:39:23 +05:30
PranshulGG 5397a8aaea add AirQuality domain models, Room DAO and entities, and initial AirQualityBlock UI component 2026-05-12 20:39:07 +05:30
Pranshul 9a92cc5848 Merge pull request #818 from PranshulGG/l10n_main
New Crowdin updates
2026-05-11 21:44:42 +05:30
PranshulGG cb7f5a2dd6 increase AUTO_REFRESH_MAX_MINUTES to 4500 in WeatherUtils 2026-05-11 21:44:14 +05:30
PranshulGG 3c17b38502 bump versionCode to 42 and versionName to 3.0.0-alpha3 2026-05-11 21:44:03 +05:30
PranshulGG 10f25559b3 implement click action to open Crowdin project link in LanguageScreen 2026-05-11 21:43:54 +05:30
Pranshul 8e1f96385e New translations strings.xml (Vietnamese)
[ci skip]
2026-05-11 01:00:04 +05:30
Pranshul 242a65e8f6 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-11 01:00:03 +05:30
Pranshul ca7ab6460a New translations strings.xml (Vietnamese)
[ci skip]
2026-05-10 19:02:12 +05:30
Pranshul 874fde0753 New translations strings.xml (Polish)
[ci skip]
2026-05-10 02:06:09 +05:30
Pranshul 7a714e15f8 New translations strings.xml (Polish)
[ci skip]
2026-05-09 19:45:06 +05:30
Pranshul 2efb5ee062 Merge pull request #815 from PranshulGG/l10n_main
New Crowdin updates
2026-05-08 21:46:11 +05:30
PranshulGG ee51d15750 update initialization logic, restrict device location updates to manual refreshes, and improve error reporting in WeatherViewModel 2026-05-08 21:43:12 +05:30
PranshulGG ab47feedba add refresh interval constants and update cache validation logic in WeatherUtils 2026-05-08 21:39:05 +05:30
PranshulGG 064e668d50 change message parameter to exception in WeatherResult.Error 2026-05-08 21:38:57 +05:30
PranshulGG f775e445ca add TODO comment to rename getAllLocationsWeather in WeatherDataRepository 2026-05-08 21:38:49 +05:30
PranshulGG 430f90230e fix string resource for VERY_COLD in WeatherConditions.kt 2026-05-08 21:36:59 +05:30
PranshulGG b6b93b152d remove extra blank line in Weather.kt 2026-05-08 21:36:51 +05:30
PranshulGG 17f28bab3e update temperature sentinel value from -1.0 to -99999.0 in UnitConverter.kt 2026-05-08 21:36:15 +05:30
PranshulGG 8ec3ea68d2 use toAppException for error handling in SearchScreenViewModel 2026-05-08 21:36:04 +05:30
PranshulGG ca5611fd61 update WeatherResult.Error to use exceptions instead of string messages in OpenMeteoRepository 2026-05-08 21:35:54 +05:30
PranshulGG 300586c00d update MainScreen to show IntroScreen when locations are empty and add isInitialized to MainUiState 2026-05-08 21:35:45 +05:30
PranshulGG 199b967634 update splash screen condition and manage device location updates in MainActivity 2026-05-08 21:35:35 +05:30
PranshulGG 904001cf00 refactor device location fetching to use coroutines, add loading indicators to LocationsScreen, and fix countryCode mapping in LocationsMapper 2026-05-08 21:35:19 +05:30
PranshulGG 87a365a75c update location fetching in IntroScreen to use GetDeviceLocation, add loading state, and replace Toasts with SnackbarManager 2026-05-08 21:34:52 +05:30
PranshulGG eb5c2df204 update dew point fallback value in HumidityBlock.kt 2026-05-08 21:34:34 +05:30
PranshulGG a1710f746b add toAppException extension function in AppExceptions.kt 2026-05-08 21:34:23 +05:30
PranshulGG eee86e2e84 add toAppException extension function in AppExceptions.kt 2026-05-08 21:34:14 +05:30
PranshulGG 352de5c50d update temperature sentinel value from -1.0 to -99999.0 in CurrentWeatherCard.kt 2026-05-08 21:34:06 +05:30
PranshulGG 9babd0d760 update scrollColor for FOG_HAZE in BackgroundGradients.kt 2026-05-08 21:33:43 +05:30
PranshulGG 17c563a007 remove isFirstStart preference and change default theme to Dark in AppPrefs and AppPrefsState 2026-05-08 21:33:26 +05:30
PranshulGG 6b56f09e3a remove unused LocalContext from AppearanceScreen 2026-05-08 21:33:15 +05:30
Pranshul fe7b185979 New translations strings.xml (Catalan)
[ci skip]
2026-05-08 20:04:46 +05:30
Pranshul b670bfcfcc New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-08 05:16:56 +05:30
Pranshul 630d66bbb9 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-07 23:12:33 +05:30
Pranshul c1cd543341 New translations strings.xml (Turkish)
[ci skip]
2026-05-07 23:12:32 +05:30
Pranshul a6e29ad0cb New translations strings.xml (Bulgarian)
[ci skip]
2026-05-07 17:14:05 +05:30
Pranshul de7a563bd7 New translations strings.xml (Japanese)
[ci skip]
2026-05-07 10:05:43 +05:30
Pranshul 114dc1f6a3 New translations strings.xml (Russian)
[ci skip]
2026-05-07 02:58:15 +05:30
PranshulGG b73d84b254 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-06 20:41:43 +05:30
PranshulGG 744246c0dc update error handling in SearchScreenViewModel to show specific AppException messages 2026-05-06 20:41:36 +05:30
Pranshul fed27a9a76 Merge pull request #814 from PranshulGG/l10n_main
New Crowdin updates
2026-05-06 20:40:32 +05:30
Pranshul 5cc8b1573f New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-06 20:37:13 +05:30
Pranshul 5771f196a3 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-06 20:37:12 +05:30
Pranshul c0ba75f4ba New translations strings.xml (Filipino)
[ci skip]
2026-05-06 20:37:10 +05:30
Pranshul 8b516c7435 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-06 20:37:09 +05:30
Pranshul 7e55b74f1f New translations strings.xml (Thai)
[ci skip]
2026-05-06 20:37:07 +05:30
Pranshul 1eeef4304b New translations strings.xml (Persian)
[ci skip]
2026-05-06 20:37:05 +05:30
Pranshul d800cfdbed New translations strings.xml (Indonesian)
[ci skip]
2026-05-06 20:37:04 +05:30
Pranshul 6eee3b5d0d New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-06 20:37:02 +05:30
Pranshul eda7a4891c New translations strings.xml (Vietnamese)
[ci skip]
2026-05-06 20:37:01 +05:30
Pranshul 550920125c New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-06 20:36:59 +05:30
Pranshul 01d9423c08 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-06 20:36:58 +05:30
Pranshul 67181bb298 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-06 20:36:56 +05:30
Pranshul 76cd80eac3 New translations strings.xml (Turkish)
[ci skip]
2026-05-06 20:36:55 +05:30
Pranshul a500cefdf8 New translations strings.xml (Swedish)
[ci skip]
2026-05-06 20:36:53 +05:30
Pranshul cf31fc2aad New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-06 20:36:52 +05:30
Pranshul 80335c2a62 New translations strings.xml (Slovenian)
[ci skip]
2026-05-06 20:36:50 +05:30
Pranshul 8fe2b27314 New translations strings.xml (Russian)
[ci skip]
2026-05-06 20:36:48 +05:30
Pranshul 68230ece56 New translations strings.xml (Portuguese)
[ci skip]
2026-05-06 20:36:47 +05:30
Pranshul f948e68841 New translations strings.xml (Polish)
[ci skip]
2026-05-06 20:36:45 +05:30
Pranshul b9457e3ed2 New translations strings.xml (Dutch)
[ci skip]
2026-05-06 20:36:44 +05:30
Pranshul b581111e6d New translations strings.xml (Korean)
[ci skip]
2026-05-06 20:36:43 +05:30
Pranshul 46c5b7aea4 New translations strings.xml (Japanese)
[ci skip]
2026-05-06 20:36:41 +05:30
Pranshul cdd052749e New translations strings.xml (Italian)
[ci skip]
2026-05-06 20:36:40 +05:30
Pranshul c64bedd5b6 New translations strings.xml (Hungarian)
[ci skip]
2026-05-06 20:36:38 +05:30
Pranshul 7c40ba1a7f New translations strings.xml (Finnish)
[ci skip]
2026-05-06 20:36:36 +05:30
Pranshul 9df5583e91 New translations strings.xml (Greek)
[ci skip]
2026-05-06 20:36:35 +05:30
Pranshul ff9a440f04 New translations strings.xml (German)
[ci skip]
2026-05-06 20:36:33 +05:30
Pranshul ad777e2a4c New translations strings.xml (Czech)
[ci skip]
2026-05-06 20:36:32 +05:30
Pranshul bffdb9a97a New translations strings.xml (Catalan)
[ci skip]
2026-05-06 20:36:30 +05:30
Pranshul 71a88899ad New translations strings.xml (Bulgarian)
[ci skip]
2026-05-06 20:36:29 +05:30
Pranshul d7855ac2c1 New translations strings.xml (Spanish)
[ci skip]
2026-05-06 20:36:27 +05:30
Pranshul af2a02a0b7 New translations strings.xml (French)
[ci skip]
2026-05-06 20:36:26 +05:30
Pranshul 1c54a1fa7c New translations strings.xml (Romanian)
[ci skip]
2026-05-06 20:36:24 +05:30
PranshulGG c3b471c9c2 add AppException for error handling and display snackbar when device location is unavailable in LocationsScreenViewModel 2026-05-06 20:35:11 +05:30
PranshulGG b366297c15 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-06 15:15:44 +05:30
PranshulGG f9f73d7cb6 add .idea/deviceManager.xml 2026-05-06 15:15:39 +05:30
PranshulGG 05aa65ebc5 use weather_no_data resource in LocationsScreenContent and add new location string resources to strings.xml 2026-05-06 15:11:38 +05:30
Pranshul 357989091c Merge pull request #813 from PranshulGG/l10n_main
New Crowdin updates
2026-05-06 15:08:04 +05:30
PranshulGG 6fbb592557 remove finally block for onReset in SearchScreenViewModel 2026-05-06 15:07:52 +05:30
PranshulGG 0f4da2e16f change rise and set icon color to white in SunBlock and MoonBlock and update icon assets 2026-05-06 15:07:24 +05:30
PranshulGG c29c57ceb3 add vector icons for air, brush, circle, thermostat, paint, language, location, photo, and water drop 2026-05-06 14:39:32 +05:30
PranshulGG c13bfe545e add debug log for device location in WeatherViewModel 2026-05-06 14:39:18 +05:30
PranshulGG d3ed9a4eea add onBack and onReset callbacks to saveLocation in SearchScreenViewModel 2026-05-06 14:39:13 +05:30
PranshulGG 788eda45b4 add loading indicator to search result items and handle saving state in SearchScreen.kt 2026-05-06 14:39:06 +05:30
PranshulGG a435e92303 add "Use current location" option to LocationsScreen and implement device location saving with permission handling 2026-05-06 14:38:59 +05:30
PranshulGG 2ee61f88c4 use rememberLocationPermissionLauncher for location permission handling in IntroScreen.kt 2026-05-06 14:38:15 +05:30
PranshulGG 2a29057782 add rememberLocationPermissionLauncher composable to DeviceLocationProvider.kt 2026-05-06 14:38:08 +05:30
PranshulGG fe13499498 add device location update logic to WeatherViewModel and remove unused appWeatherUnitsRepo property 2026-05-05 21:50:52 +05:30
PranshulGG 12b46249d1 bump database version to 22 in WeatherMasterDatabase 2026-05-05 21:50:44 +05:30
PranshulGG 207d6bde08 add updateDeviceLocationPosition to WeatherLocationDao 2026-05-05 21:50:37 +05:30
PranshulGG cab376ee7e update splash screen condition in MainActivity, improve location text formatting in MainSearchBar, and add location permission requirements to MainScreen 2026-05-05 21:50:31 +05:30
PranshulGG 1819a4db01 add isDeviceLocation to LocationsMapper and LocationItem and implement updateDeviceLocationPosition in LocationsRepository 2026-05-05 21:50:21 +05:30
PranshulGG 3914a16c72 add IntroScreenViewModel and implement location saving logic in IntroScreen 2026-05-05 21:50:13 +05:30
PranshulGG d7b59f5699 add permission check and refactor provider selection in DeviceLocationProvider.kt 2026-05-05 21:50:02 +05:30
PranshulGG 132b5b5b2e update provideLocationsRepository to pass application context to LocationsRepository in AppModule 2026-05-05 21:49:53 +05:30
Pranshul c65f253a58 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-05 16:57:03 +05:30
Pranshul e147aaa85b New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-05 16:57:01 +05:30
Pranshul 79e08ded07 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-05 10:42:26 +05:30
Pranshul cfbdc35016 New translations strings.xml (Japanese)
[ci skip]
2026-05-04 21:47:03 +05:30
Pranshul cb7adb09d9 Merge pull request #810 from PranshulGG/l10n_main
New Crowdin updates
2026-05-04 21:28:50 +05:30
PranshulGG bcb01add83 implement IntroScreen with location permission handling and add isDeviceLocation to Location domain model 2026-05-04 21:28:29 +05:30
PranshulGG 75796d861a update search provider text styling and clear search results when provider is changed in SearchScreen.kt 2026-05-04 21:28:21 +05:30
PranshulGG 4c694a30de add removeResults to SearchScreenViewModel 2026-05-04 21:28:13 +05:30
PranshulGG 266e3af422 add isDeviceLocation to WeatherLocationEntity 2026-05-04 21:28:07 +05:30
PranshulGG a50968ffd2 add IntroScreen for first start and remove drawer opening logic in MainScreen 2026-05-04 21:28:01 +05:30
PranshulGG 1d84792430 add translate app tile and update selection colors in LanguageScreen 2026-05-04 21:27:54 +05:30
PranshulGG 8c2b165363 add DeviceLocationProvider to fetch device coordinates via LocationManager 2026-05-04 21:27:46 +05:30
PranshulGG b30be49e9c replace hardcoded strings with string resources in AppearanceScreen.kt 2026-05-04 21:27:36 +05:30
PranshulGG 64b1be11aa add location permissions to AndroidManifest.xml 2026-05-04 21:27:28 +05:30
Pranshul 395483913d New translations strings.xml (Catalan)
[ci skip]
2026-05-04 04:49:11 +05:30
Pranshul c33fa77414 Merge pull request #809 from PranshulGG/l10n_main
New Crowdin updates
2026-05-03 19:54:46 +05:30
Pranshul 69359af861 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-03 19:52:28 +05:30
Pranshul de8ad3b762 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-03 19:52:27 +05:30
Pranshul a67d8ca96d New translations strings.xml (Filipino)
[ci skip]
2026-05-03 19:52:26 +05:30
Pranshul fe0b6cb8d6 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-03 19:52:25 +05:30
Pranshul 1fa6b8329a New translations strings.xml (Thai)
[ci skip]
2026-05-03 19:52:24 +05:30
Pranshul d3a7392806 New translations strings.xml (Persian)
[ci skip]
2026-05-03 19:52:22 +05:30
Pranshul c90b3bc354 New translations strings.xml (Indonesian)
[ci skip]
2026-05-03 19:52:21 +05:30
Pranshul 52b17559f4 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-03 19:52:20 +05:30
Pranshul 018c7ab4c8 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-03 19:52:19 +05:30
Pranshul 289a096c4d New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-03 19:52:18 +05:30
Pranshul a519168afc New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-03 19:52:17 +05:30
Pranshul 2c3ce95058 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-03 19:52:16 +05:30
Pranshul ce629c8157 New translations strings.xml (Turkish)
[ci skip]
2026-05-03 19:52:15 +05:30
Pranshul 0fc31f21d8 New translations strings.xml (Swedish)
[ci skip]
2026-05-03 19:52:14 +05:30
Pranshul c9cc52f794 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-03 19:52:13 +05:30
Pranshul fc3ad0b798 New translations strings.xml (Slovenian)
[ci skip]
2026-05-03 19:52:12 +05:30
Pranshul 90c505db49 New translations strings.xml (Russian)
[ci skip]
2026-05-03 19:52:11 +05:30
Pranshul 7cb37fca41 New translations strings.xml (Portuguese)
[ci skip]
2026-05-03 19:52:10 +05:30
Pranshul e948117590 New translations strings.xml (Polish)
[ci skip]
2026-05-03 19:52:08 +05:30
Pranshul ba45b41854 New translations strings.xml (Dutch)
[ci skip]
2026-05-03 19:52:07 +05:30
Pranshul 9de446ff68 New translations strings.xml (Korean)
[ci skip]
2026-05-03 19:52:06 +05:30
Pranshul 8721a366a4 New translations strings.xml (Japanese)
[ci skip]
2026-05-03 19:52:05 +05:30
Pranshul 95ca2a001f New translations strings.xml (Italian)
[ci skip]
2026-05-03 19:52:04 +05:30
Pranshul 7f14e2322a New translations strings.xml (Hungarian)
[ci skip]
2026-05-03 19:52:03 +05:30
Pranshul 97579474c2 New translations strings.xml (Finnish)
[ci skip]
2026-05-03 19:52:01 +05:30
Pranshul 76d5cc62ec New translations strings.xml (Greek)
[ci skip]
2026-05-03 19:52:00 +05:30
Pranshul 221b9c5d96 New translations strings.xml (German)
[ci skip]
2026-05-03 19:51:59 +05:30
Pranshul 583b3db3fb New translations strings.xml (Czech)
[ci skip]
2026-05-03 19:51:58 +05:30
Pranshul d6cb5fa029 New translations strings.xml (Catalan)
[ci skip]
2026-05-03 19:51:57 +05:30
Pranshul 1bc7a31e15 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-03 19:51:56 +05:30
Pranshul c2fcaf2efd New translations strings.xml (Spanish)
[ci skip]
2026-05-03 19:51:55 +05:30
Pranshul 173ed9b985 New translations strings.xml (French)
[ci skip]
2026-05-03 19:51:54 +05:30
Pranshul 53f9ca558d New translations strings.xml (Romanian)
[ci skip]
2026-05-03 19:51:53 +05:30
PranshulGG 07e6f8a23a add empty lines to strings.xml 2026-05-03 19:47:14 +05:30
PranshulGG a09c9f5f52 add weather metrics, network error, and translation setting strings to strings.xml 2026-05-03 19:41:43 +05:30
Pranshul 584edf25d0 Merge pull request #808 from PranshulGG/l10n_main
New Crowdin updates
2026-05-03 19:39:53 +05:30
Pranshul 214d6b2f7c New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-03 19:39:03 +05:30
Pranshul 7239ccb946 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-03 19:39:02 +05:30
Pranshul e3b4c01d5f New translations strings.xml (Filipino)
[ci skip]
2026-05-03 19:39:01 +05:30
Pranshul 4533ec351e New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-03 19:39:00 +05:30
Pranshul 038ae714e8 New translations strings.xml (Thai)
[ci skip]
2026-05-03 19:38:58 +05:30
Pranshul 8f7008c412 New translations strings.xml (Persian)
[ci skip]
2026-05-03 19:38:57 +05:30
Pranshul b47d218ffc New translations strings.xml (Indonesian)
[ci skip]
2026-05-03 19:38:56 +05:30
Pranshul ca7ac4b7bf New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-03 19:38:55 +05:30
Pranshul 1ebe3d3755 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-03 19:38:54 +05:30
Pranshul 929be1c1ef New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-03 19:38:53 +05:30
Pranshul c749f9ef29 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-03 19:38:52 +05:30
Pranshul cf7083e24b New translations strings.xml (Ukrainian)
[ci skip]
2026-05-03 19:38:51 +05:30
Pranshul 67cbbcb2ed New translations strings.xml (Turkish)
[ci skip]
2026-05-03 19:38:50 +05:30
Pranshul 5ec84661ab New translations strings.xml (Swedish)
[ci skip]
2026-05-03 19:38:49 +05:30
Pranshul 6c1b021868 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-03 19:38:48 +05:30
Pranshul f76fd5e447 New translations strings.xml (Slovenian)
[ci skip]
2026-05-03 19:38:47 +05:30
Pranshul 960af595d3 New translations strings.xml (Russian)
[ci skip]
2026-05-03 19:38:45 +05:30
Pranshul e87333f79e New translations strings.xml (Portuguese)
[ci skip]
2026-05-03 19:38:44 +05:30
Pranshul d43ce25bd6 New translations strings.xml (Polish)
[ci skip]
2026-05-03 19:38:43 +05:30
Pranshul 18705f4bf7 New translations strings.xml (Dutch)
[ci skip]
2026-05-03 19:38:42 +05:30
Pranshul 51e3d31d15 New translations strings.xml (Korean)
[ci skip]
2026-05-03 19:38:41 +05:30
Pranshul 981c46aa6d New translations strings.xml (Japanese)
[ci skip]
2026-05-03 19:38:40 +05:30
Pranshul e078707d0a New translations strings.xml (Italian)
[ci skip]
2026-05-03 19:38:39 +05:30
Pranshul e9b5ff9588 New translations strings.xml (Hungarian)
[ci skip]
2026-05-03 19:38:38 +05:30
Pranshul e541c49708 New translations strings.xml (Finnish)
[ci skip]
2026-05-03 19:38:37 +05:30
Pranshul c216789866 New translations strings.xml (Greek)
[ci skip]
2026-05-03 19:38:36 +05:30
Pranshul 2446bcaabf New translations strings.xml (German)
[ci skip]
2026-05-03 19:38:35 +05:30
Pranshul 39ed52072b New translations strings.xml (Czech)
[ci skip]
2026-05-03 19:38:33 +05:30
Pranshul df79442664 New translations strings.xml (Catalan)
[ci skip]
2026-05-03 19:38:32 +05:30
Pranshul c9c9ef9e86 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-03 19:38:31 +05:30
Pranshul 334f972a8c New translations strings.xml (Spanish)
[ci skip]
2026-05-03 19:38:30 +05:30
Pranshul d0f90cc57e New translations strings.xml (French)
[ci skip]
2026-05-03 19:38:29 +05:30
Pranshul 47f3ccf13d New translations strings.xml (Romanian)
[ci skip]
2026-05-03 19:38:28 +05:30
PranshulGG 46676ee3dd add weather metrics, network error, and translation setting strings to strings.xml 2026-05-03 19:03:34 +05:30
Pranshul f0c3df4bec Merge pull request #807 from PranshulGG/l10n_main
New Crowdin updates
2026-05-03 17:11:10 +05:30
PranshulGG 080a2b2f40 add search results, confirm action, and theme setting strings to strings.xml 2026-05-03 17:10:42 +05:30
PranshulGG 4b482a85c8 use string resources for weather unit names and update refresh delay snackbar argument 2026-05-03 17:10:34 +05:30
PranshulGG be480c0955 add support for message arguments in snackbar in WeatherMasterApp.kt 2026-05-03 17:10:24 +05:30
PranshulGG d017572594 pass context to VisibilityBlock and PressureBlock in WeatherBlocks.kt 2026-05-03 17:10:11 +05:30
PranshulGG a9dcfea13c add icons to unit settings and pass context to toName functions in UnitsScreen.kt 2026-05-03 17:10:03 +05:30
PranshulGG 4bae006627 add messageArgs to SnackbarEvent and show function in SnackbarManager.kt 2026-05-03 17:09:53 +05:30
PranshulGG 94f4da3290 add support for multiple search providers and provider selection dialog 2026-05-03 17:09:46 +05:30
PranshulGG d31f4f3de7 add RadioRow component to core ui components 2026-05-03 17:09:33 +05:30
PranshulGG a855c0fdcd move OpenMeteoSearchDto and OpenMeteoSearchApi to openmeteo package, add OpenMeteoSearchRepository, and remove unused import in OpenMeteoSearchApi 2026-05-03 17:09:24 +05:30
PranshulGG 79f2d2075d add toDomain mapper for GeoNamesSearchDto in LocationsMapper.kt 2026-05-03 17:08:47 +05:30
PranshulGG 5477330874 add text overflow ellipsis to weather block titles and update PressureBlock and VisibilityBlock to support localized units and formatting 2026-05-03 17:08:38 +05:30
PranshulGG 4c920d7c40 add GeoNames search and timezone repositories and APIs 2026-05-03 17:08:19 +05:30
PranshulGG 8497e4398f use string resources for Cancel and Save actions in DialogOptionTile.kt 2026-05-03 17:08:10 +05:30
PranshulGG 9cad11254c add searchProvider to AppPrefsState and AppPrefs and remove comment in AppNavHost 2026-05-03 17:08:01 +05:30
PranshulGG 9278375554 add GeoNames search and timezone providers and replace generic SearchRepository with specific implementations in AppModule 2026-05-03 17:07:51 +05:30
Pranshul 50fed408a3 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-03 16:48:20 +05:30
Pranshul 91df4628b3 New translations strings.xml (Japanese)
[ci skip]
2026-05-03 16:48:19 +05:30
Pranshul 7b1a062b93 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-03 16:48:18 +05:30
Pranshul 850230db2f Merge pull request #806 from PranshulGG/l10n_main
New Crowdin updates
2026-05-03 11:07:47 +05:30
PranshulGG f9f5a26fb5 update formatting in README.md 2026-05-03 11:06:30 +05:30
Pranshul a50fca2940 New translations strings.xml (Spanish)
[ci skip]
2026-05-03 09:57:09 +05:30
Pranshul 31f9e98582 New translations strings.xml (Spanish)
[ci skip]
2026-05-03 03:38:21 +05:30
PranshulGG b1ee142e7d update app icon path in README and bump version to 3.0.0-alpha2 2026-05-02 22:35:27 +05:30
PranshulGG bd0ff8975b implement UnitsScreen UI, add units navigation route, and link it from AppearanceScreen 2026-05-02 22:21:19 +05:30
PranshulGG ae6e4511e3 update AvatarCheck colors and remove custom colors from AvatarMonogram in LanguageScreen.kt 2026-05-02 22:07:01 +05:30
PranshulGG f506adb564 update deleteLocation to reset active location to default in WeatherViewModel and add animation imports in MainScreenScaffold 2026-05-02 22:06:46 +05:30
PranshulGG 3e5b3370c1 adjust fog animation colors and opacity based on theme in FogHazeCanvas 2026-05-02 22:06:37 +05:30
PranshulGG 1c0a9e51cf update WeatherMasterTheme to use preferences for theme variant, dynamic theme, and seed color in WeatherMasterApp.kt 2026-05-02 22:06:24 +05:30
PranshulGG 3dd4fe7130 rename dynamicColor to dynamicTheme and add support for theme variants and custom color selection components 2026-05-02 22:06:14 +05:30
PranshulGG d6b7fd5c09 refactor DialogOptionTile and SettingTile.Option to use DialogOption data class and remove displayOptions and optionLabel parameters 2026-05-02 22:05:29 +05:30
PranshulGG 86e0167d39 update SNOW, RAIN, FOG_HAZE, and THUNDERSTORM background colors in BackgroundGradients.kt 2026-05-02 22:05:11 +05:30
PranshulGG 50a8fe299c add containerColor and contentColor parameters to AvatarCheck in Avatar.kt 2026-05-02 22:04:32 +05:30
PranshulGG 162c2e7a84 rename setCustomTheme to setUseCustomTheme, add theme variant type support, and update default theme to Dark in AppPrefs 2026-05-02 22:04:21 +05:30
PranshulGG d2ae648abc add custom color and dynamic color options to AppearanceScreen and refactor theme selection 2026-05-02 22:04:12 +05:30
Pranshul 416d16f7a7 Merge pull request #805 from PranshulGG/l10n_main
New Crowdin updates
2026-05-02 20:30:49 +05:30
Pranshul f444a8b010 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-02 20:29:23 +05:30
Pranshul d3dd15320d New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-02 20:29:22 +05:30
Pranshul 957284227b New translations strings.xml (Filipino)
[ci skip]
2026-05-02 20:29:21 +05:30
Pranshul 654be8e5cc New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-02 20:29:20 +05:30
Pranshul 0424a44caf New translations strings.xml (Thai)
[ci skip]
2026-05-02 20:29:19 +05:30
Pranshul e1a4a476f2 New translations strings.xml (Persian)
[ci skip]
2026-05-02 20:29:18 +05:30
Pranshul 34b2af5823 New translations strings.xml (Indonesian)
[ci skip]
2026-05-02 20:29:17 +05:30
Pranshul 7bb8f74a0b New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-02 20:29:16 +05:30
Pranshul c1da2fe2ec New translations strings.xml (Vietnamese)
[ci skip]
2026-05-02 20:29:14 +05:30
Pranshul 0678025207 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-02 20:29:13 +05:30
Pranshul e7a3787e5b New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-02 20:29:12 +05:30
Pranshul e8a09267bd New translations strings.xml (Ukrainian)
[ci skip]
2026-05-02 20:29:11 +05:30
Pranshul 9b3eb75485 New translations strings.xml (Turkish)
[ci skip]
2026-05-02 20:29:10 +05:30
Pranshul 0a2f447440 New translations strings.xml (Swedish)
[ci skip]
2026-05-02 20:29:09 +05:30
Pranshul ceb372df1e New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-02 20:29:08 +05:30
Pranshul b7a9094038 New translations strings.xml (Slovenian)
[ci skip]
2026-05-02 20:29:07 +05:30
Pranshul 5aa86cca97 New translations strings.xml (Russian)
[ci skip]
2026-05-02 20:29:06 +05:30
Pranshul db5be74a76 New translations strings.xml (Portuguese)
[ci skip]
2026-05-02 20:29:05 +05:30
Pranshul 162f17ff3e New translations strings.xml (Polish)
[ci skip]
2026-05-02 20:29:04 +05:30
Pranshul 773a98fd06 New translations strings.xml (Dutch)
[ci skip]
2026-05-02 20:29:03 +05:30
Pranshul c161ad3c7e New translations strings.xml (Korean)
[ci skip]
2026-05-02 20:29:01 +05:30
Pranshul f88373848c New translations strings.xml (Japanese)
[ci skip]
2026-05-02 20:29:00 +05:30
Pranshul b1d0d52998 New translations strings.xml (Italian)
[ci skip]
2026-05-02 20:28:59 +05:30
Pranshul 10bc985ee5 New translations strings.xml (Hungarian)
[ci skip]
2026-05-02 20:28:58 +05:30
Pranshul 2ab6d1385a New translations strings.xml (Finnish)
[ci skip]
2026-05-02 20:28:57 +05:30
Pranshul b7f735939f New translations strings.xml (Greek)
[ci skip]
2026-05-02 20:28:56 +05:30
Pranshul aa4e7adf5c New translations strings.xml (German)
[ci skip]
2026-05-02 20:28:55 +05:30
Pranshul 7d418db65e New translations strings.xml (Czech)
[ci skip]
2026-05-02 20:28:54 +05:30
Pranshul 4841db4eb5 New translations strings.xml (Catalan)
[ci skip]
2026-05-02 20:28:53 +05:30
Pranshul 9d09728837 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-02 20:28:52 +05:30
Pranshul 641f1a7340 New translations strings.xml (Spanish)
[ci skip]
2026-05-02 20:28:51 +05:30
Pranshul fa3c16a158 New translations strings.xml (French)
[ci skip]
2026-05-02 20:28:50 +05:30
Pranshul 9405477ab0 New translations strings.xml (Romanian)
[ci skip]
2026-05-02 20:28:49 +05:30
PranshulGG 7acb551239 add LanguageScreen and update SettingsScreen with language selection tile 2026-05-02 20:27:30 +05:30
PranshulGG 16b3eb357f update TimeFormatters to use current app locale for 12-hour time and weekday strings 2026-05-02 20:27:23 +05:30
PranshulGG 769c24bfc9 remove manual language setup in MainActivity and add LANGUAGE route to NavRoutes.kt 2026-05-02 20:27:15 +05:30
PranshulGG c31d476ea2 add LocaleUtils.kt for language management and locale retrieval 2026-05-02 20:27:05 +05:30
PranshulGG 27dc3b1f4c add tempSelectionDisplay and update label logic in DialogOptionTile.kt 2026-05-02 20:26:57 +05:30
PranshulGG 3df43b2272 use string resources for forecast headers and dew point label in shared UI components 2026-05-02 20:26:48 +05:30
PranshulGG 8f3c638298 replace hardcoded strings with string resources in CurrentWeatherCard.kt 2026-05-02 20:26:37 +05:30
PranshulGG 3853cc3ff7 set MAIN as start destination and add LanguageScreen to AppNavHost 2026-05-02 20:26:30 +05:30
PranshulGG 0048a9c5b2 remove language switching buttons and helper functions from AppearanceScreen.kt 2026-05-02 20:26:22 +05:30
PranshulGG 5ec710ceb4 add AppLocalesMetadataHolderService to enable automatic locale storage in AndroidManifest.xml 2026-05-02 20:26:15 +05:30
PranshulGG 80552053d4 update temp_feels_like and add temp_max and temp_min to strings.xml 2026-05-02 19:58:57 +05:30
PranshulGG dfd926e4b3 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-02 15:56:59 +05:30
PranshulGG 3dd4b9e061 implement per-app language support, migrate MainActivity to AppCompatActivity, and use string resources in settings screens 2026-05-02 15:56:41 +05:30
Pranshul e77838df7c Merge pull request #804 from PranshulGG/l10n_main
New Crowdin updates
2026-05-02 15:56:06 +05:30
Pranshul 429d9f3fa2 New translations strings.xml (Catalan)
[ci skip]
2026-05-02 08:30:28 +05:30
Pranshul f40d55e6e9 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-02 02:15:04 +05:30
Pranshul cc36d1044a New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-02 02:15:03 +05:30
Pranshul 9b41556730 New translations strings.xml (Filipino)
[ci skip]
2026-05-02 02:15:01 +05:30
Pranshul 69faeff7c1 New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-02 02:15:00 +05:30
Pranshul 249fe8f58f New translations strings.xml (Thai)
[ci skip]
2026-05-02 02:14:59 +05:30
Pranshul e94b6d29ec New translations strings.xml (Persian)
[ci skip]
2026-05-02 02:14:58 +05:30
Pranshul cecff476b4 New translations strings.xml (Indonesian)
[ci skip]
2026-05-02 02:14:57 +05:30
Pranshul 3a1b47e520 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-02 02:14:56 +05:30
Pranshul df011e241d New translations strings.xml (Vietnamese)
[ci skip]
2026-05-02 02:14:54 +05:30
Pranshul 41a9f1ba86 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-02 02:14:53 +05:30
Pranshul 9cd4d9f67e New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-02 02:14:52 +05:30
Pranshul 4291cda62f New translations strings.xml (Ukrainian)
[ci skip]
2026-05-02 02:14:51 +05:30
Pranshul a561c030e5 New translations strings.xml (Turkish)
[ci skip]
2026-05-02 02:14:50 +05:30
Pranshul 5ce5c1a4fe New translations strings.xml (Swedish)
[ci skip]
2026-05-02 02:14:49 +05:30
Pranshul df376064cd New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-02 02:14:47 +05:30
Pranshul e3beef906e New translations strings.xml (Slovenian)
[ci skip]
2026-05-02 02:14:46 +05:30
Pranshul 124b624fa2 New translations strings.xml (Russian)
[ci skip]
2026-05-02 02:14:45 +05:30
Pranshul 81df1e0cab New translations strings.xml (Portuguese)
[ci skip]
2026-05-02 02:14:44 +05:30
Pranshul 79f9f49e99 New translations strings.xml (Polish)
[ci skip]
2026-05-02 02:14:42 +05:30
Pranshul 5ba6c8b26e New translations strings.xml (Dutch)
[ci skip]
2026-05-02 02:14:41 +05:30
Pranshul 0a71a2b22e New translations strings.xml (Korean)
[ci skip]
2026-05-02 02:14:40 +05:30
Pranshul 1ac190ab0f New translations strings.xml (Japanese)
[ci skip]
2026-05-02 02:14:39 +05:30
Pranshul 5887b501c3 New translations strings.xml (Italian)
[ci skip]
2026-05-02 02:14:38 +05:30
Pranshul 7b7706c492 New translations strings.xml (Hungarian)
[ci skip]
2026-05-02 02:14:36 +05:30
Pranshul d51cf7c090 New translations strings.xml (Finnish)
[ci skip]
2026-05-02 02:14:35 +05:30
Pranshul e5907f7d4b New translations strings.xml (Greek)
[ci skip]
2026-05-02 02:14:34 +05:30
Pranshul 1d4a5a7b21 New translations strings.xml (German)
[ci skip]
2026-05-02 02:14:33 +05:30
Pranshul 04040d301e New translations strings.xml (Czech)
[ci skip]
2026-05-02 02:14:32 +05:30
Pranshul fef894a629 New translations strings.xml (Catalan)
[ci skip]
2026-05-02 02:14:30 +05:30
Pranshul df644882df New translations strings.xml (Bulgarian)
[ci skip]
2026-05-02 02:14:29 +05:30
Pranshul 336230867d New translations strings.xml (Spanish)
[ci skip]
2026-05-02 02:14:28 +05:30
Pranshul 9955e03941 New translations strings.xml (French)
[ci skip]
2026-05-02 02:14:27 +05:30
Pranshul e6b40ad812 New translations strings.xml (Romanian)
[ci skip]
2026-05-02 02:14:26 +05:30
PranshulGG e72d0c4c03 remove unused imports in MainActivity.kt and remove LANGUAGE route from NavRoutes.kt 2026-05-01 22:26:12 +05:30
PranshulGG bce1e47220 update snackbar to use string resources and call loadBlocks in WeatherViewModel 2026-05-01 22:26:01 +05:30
PranshulGG 5c42288409 use Locale.getDefault in to12HourTimeString in TimeFormatters.kt 2026-05-01 22:25:51 +05:30
PranshulGG 01e5571da7 update SnackbarManager to use string resource IDs instead of raw strings 2026-05-01 22:25:43 +05:30
PranshulGG dda81d35c3 add displayOptions to SettingTile and update appearance tile in SettingsScreen with icon and string resources 2026-05-01 22:25:21 +05:30
PranshulGG 95ff82e57e replace hardcoded error message with string resource in SearchScreenViewModel 2026-05-01 22:25:14 +05:30
PranshulGG 2ecffecbc6 replace hardcoded strings with string resources in SearchScreen and SearchFloatingToolbar 2026-05-01 22:25:07 +05:30
PranshulGG c8449a28d5 replace hardcoded strings with string resources in SunBlock, PressureBlock, UvIndexBlock, VisibilityBlock, and MoonBlock 2026-05-01 22:24:57 +05:30
PranshulGG 74ac5cbcee use string resources for locations title and delete default location error message 2026-05-01 22:24:42 +05:30
PranshulGG 4474adc9bb remove language settings screen and associated files, and use string resource in HumidityBlock.kt 2026-05-01 22:24:34 +05:30
PranshulGG a91cae3d58 add displayOptions parameter to DialogOptionTile and update selection logic to use indexed items 2026-05-01 22:24:25 +05:30
PranshulGG acec438fdb implement nested navigation in AppNavHost, change start destination to appearance screen, and remove LanguageScreen composable and unused imports 2026-05-01 22:24:17 +05:30
PranshulGG aab1f88ee2 add setting_app_looks to strings.xml 2026-05-01 21:05:35 +05:30
Pranshul ac3f66f9b7 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-01 20:17:35 +05:30
Pranshul 19968b6fd3 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-01 20:17:34 +05:30
Pranshul 5d7fb79fef New translations strings.xml (Filipino)
[ci skip]
2026-05-01 20:17:33 +05:30
Pranshul e22354ed0a New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-01 20:17:31 +05:30
Pranshul 03ac4a9c05 New translations strings.xml (Thai)
[ci skip]
2026-05-01 20:17:30 +05:30
Pranshul 1f32bc2012 New translations strings.xml (Persian)
[ci skip]
2026-05-01 20:17:29 +05:30
Pranshul cfb9a5fa63 New translations strings.xml (Indonesian)
[ci skip]
2026-05-01 20:17:28 +05:30
Pranshul 4cb7337991 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-01 20:17:27 +05:30
Pranshul d4990227e4 New translations strings.xml (Vietnamese)
[ci skip]
2026-05-01 20:17:26 +05:30
Pranshul 84c981c57d New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-01 20:17:24 +05:30
Pranshul 94e3dc5c95 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-01 20:17:23 +05:30
Pranshul e91f92a4da New translations strings.xml (Ukrainian)
[ci skip]
2026-05-01 20:17:22 +05:30
Pranshul 89bca58e23 New translations strings.xml (Turkish)
[ci skip]
2026-05-01 20:17:21 +05:30
Pranshul 7168f0d739 New translations strings.xml (Swedish)
[ci skip]
2026-05-01 20:17:20 +05:30
Pranshul 49c70748e9 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-01 20:17:19 +05:30
Pranshul 2cd6727c5b New translations strings.xml (Slovenian)
[ci skip]
2026-05-01 20:17:17 +05:30
Pranshul ad6418b9c1 New translations strings.xml (Russian)
[ci skip]
2026-05-01 20:17:16 +05:30
Pranshul 08915c27d2 New translations strings.xml (Portuguese)
[ci skip]
2026-05-01 20:17:15 +05:30
Pranshul 0588987890 New translations strings.xml (Polish)
[ci skip]
2026-05-01 20:17:14 +05:30
Pranshul 436c3be19b New translations strings.xml (Dutch)
[ci skip]
2026-05-01 20:17:13 +05:30
Pranshul 7ccd7596d5 New translations strings.xml (Korean)
[ci skip]
2026-05-01 20:17:12 +05:30
Pranshul 44a7e69d7c New translations strings.xml (Japanese)
[ci skip]
2026-05-01 20:17:10 +05:30
Pranshul 51234574fa New translations strings.xml (Italian)
[ci skip]
2026-05-01 20:17:09 +05:30
Pranshul 556ff318b6 New translations strings.xml (Hungarian)
[ci skip]
2026-05-01 20:17:08 +05:30
Pranshul c31bb2abd4 New translations strings.xml (Finnish)
[ci skip]
2026-05-01 20:17:07 +05:30
Pranshul e7a2c457d0 New translations strings.xml (Greek)
[ci skip]
2026-05-01 20:17:06 +05:30
Pranshul 69025d6ac4 New translations strings.xml (German)
[ci skip]
2026-05-01 20:17:05 +05:30
Pranshul 9226cc8fcd New translations strings.xml (Czech)
[ci skip]
2026-05-01 20:17:03 +05:30
Pranshul 54adf9d9cb New translations strings.xml (Catalan)
[ci skip]
2026-05-01 20:17:02 +05:30
Pranshul d84a8fec34 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-01 20:17:01 +05:30
Pranshul 11461e719c New translations strings.xml (Spanish)
[ci skip]
2026-05-01 20:17:00 +05:30
Pranshul f7a0bc19dd New translations strings.xml (French)
[ci skip]
2026-05-01 20:16:58 +05:30
Pranshul cf213802d1 New translations strings.xml (Romanian)
[ci skip]
2026-05-01 20:16:57 +05:30
PranshulGG 597c3e3a6c fix malformed string resources for Fahrenheit and Miles units in strings.xml 2026-05-01 19:48:42 +05:30
PranshulGG ec99d3dca6 remove features, weather providers, and built with sections from README 2026-05-01 14:10:54 +05:30
PranshulGG f33a2ccc55 add README and preview assets for WeatherMaster project 2026-05-01 14:07:09 +05:30
PranshulGG 8883bbe6d2 Merge branch 'main' of https://github.com/PranshulGG/WeatherMaster 2026-05-01 14:00:18 +05:30
Pranshul 0a4c275842 Merge pull request #803 from PranshulGG/l10n_main
New Crowdin updates
2026-05-01 13:59:52 +05:30
Pranshul 8928cc9082 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-05-01 13:59:01 +05:30
Pranshul 9c8da99a6d New translations strings.xml (Serbian (Latin))
[ci skip]
2026-05-01 13:59:00 +05:30
Pranshul 165e212089 New translations strings.xml (Filipino)
[ci skip]
2026-05-01 13:58:59 +05:30
Pranshul 18e2c1025b New translations strings.xml (Azerbaijani)
[ci skip]
2026-05-01 13:58:58 +05:30
Pranshul fca27436b1 New translations strings.xml (Thai)
[ci skip]
2026-05-01 13:58:56 +05:30
Pranshul 617b752982 New translations strings.xml (Persian)
[ci skip]
2026-05-01 13:58:55 +05:30
Pranshul 5b609abccc New translations strings.xml (Indonesian)
[ci skip]
2026-05-01 13:58:54 +05:30
Pranshul d2cd1c7154 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-05-01 13:58:53 +05:30
Pranshul aa32e7acdf New translations strings.xml (Vietnamese)
[ci skip]
2026-05-01 13:58:52 +05:30
Pranshul 88e983695a New translations strings.xml (Chinese Traditional)
[ci skip]
2026-05-01 13:58:51 +05:30
Pranshul 6792455dfe New translations strings.xml (Chinese Simplified)
[ci skip]
2026-05-01 13:58:50 +05:30
Pranshul 799873b902 New translations strings.xml (Ukrainian)
[ci skip]
2026-05-01 13:58:48 +05:30
Pranshul 8098bebd2d New translations strings.xml (Turkish)
[ci skip]
2026-05-01 13:58:47 +05:30
Pranshul 71a8a6530f New translations strings.xml (Swedish)
[ci skip]
2026-05-01 13:58:46 +05:30
Pranshul e8d6a63a11 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-05-01 13:58:45 +05:30
Pranshul a6fcc711d3 New translations strings.xml (Slovenian)
[ci skip]
2026-05-01 13:58:44 +05:30
Pranshul 6dccfc8796 New translations strings.xml (Russian)
[ci skip]
2026-05-01 13:58:43 +05:30
Pranshul b3f4884b37 New translations strings.xml (Portuguese)
[ci skip]
2026-05-01 13:58:42 +05:30
Pranshul 65392899cf New translations strings.xml (Polish)
[ci skip]
2026-05-01 13:58:40 +05:30
Pranshul 755bc8ac2a New translations strings.xml (Dutch)
[ci skip]
2026-05-01 13:58:39 +05:30
Pranshul ba838951c6 New translations strings.xml (Korean)
[ci skip]
2026-05-01 13:58:38 +05:30
Pranshul f407581264 New translations strings.xml (Japanese)
[ci skip]
2026-05-01 13:58:37 +05:30
PranshulGG c4b3e63894 remove unused imports in MainScreen.kt 2026-05-01 13:58:36 +05:30
Pranshul 6f9c9db226 New translations strings.xml (Italian)
[ci skip]
2026-05-01 13:58:36 +05:30
Pranshul d0299955c9 New translations strings.xml (Hungarian)
[ci skip]
2026-05-01 13:58:35 +05:30
Pranshul 4231b9eb3a New translations strings.xml (Finnish)
[ci skip]
2026-05-01 13:58:34 +05:30
Pranshul b5344904a7 New translations strings.xml (Greek)
[ci skip]
2026-05-01 13:58:32 +05:30
Pranshul 26da02917c New translations strings.xml (German)
[ci skip]
2026-05-01 13:58:31 +05:30
Pranshul cbe6de6643 New translations strings.xml (Czech)
[ci skip]
2026-05-01 13:58:30 +05:30
Pranshul a798dbde6c New translations strings.xml (Catalan)
[ci skip]
2026-05-01 13:58:29 +05:30
Pranshul 920c1558b7 New translations strings.xml (Bulgarian)
[ci skip]
2026-05-01 13:58:28 +05:30
Pranshul 9c19398dee New translations strings.xml (Spanish)
[ci skip]
2026-05-01 13:58:27 +05:30
Pranshul e83d878099 New translations strings.xml (French)
[ci skip]
2026-05-01 13:58:26 +05:30
Pranshul 09492581f0 New translations strings.xml (Romanian)
[ci skip]
2026-05-01 13:58:25 +05:30
PranshulGG 11e36e3cab rename saveBlocksOrder to saveBlocks and loadBlocksOrder to loadBlocks in WeatherViewModel and remove unused WeatherViewModel from SearchScreen 2026-05-01 13:24:24 +05:30
PranshulGG 760c549f2e rename blocksOrder to blocks in MainScreen and update colors for MOSTLY_CLEAR_PARTLY_CLOUDY background gradient 2026-05-01 12:57:14 +05:30
PranshulGG 626136adc2 add string resources for settings, weather units, search empty states, and location actions 2026-05-01 12:29:38 +05:30
PranshulGG 9fcdde668d add androidx.appcompat dependency to gradle configuration 2026-04-30 22:49:09 +05:30
PranshulGG 2b9c1cfe4c add palette icon resource palette_24px.xml 2026-04-30 22:49:03 +05:30
PranshulGG 8cd41b9357 update weather caching logic and refactor location management in WeatherViewModel 2026-04-30 22:48:55 +05:30
PranshulGG 5c7a0f5427 update WeatherBlocks to accept blocks list as a parameter 2026-04-30 22:48:49 +05:30
PranshulGG 8387134d57 implement UnitsScreen with options to configure temperature, wind speed, pressure, distance, and precipitation units 2026-04-30 22:48:39 +05:30
PranshulGG ce5e870649 add isThemeDark function and update time formatting to use application locale instead of Locale.CHINESE 2026-04-30 22:48:33 +05:30
PranshulGG b8c48121d1 add weatherUnits flow to SettingsScreenViewModel and replace unit settings with appearance navigation in SettingsScreen 2026-04-30 22:48:19 +05:30
PranshulGG 7337916b2e update SearchScreen to include WeatherViewModel and simplify location description formatting 2026-04-30 22:48:12 +05:30
PranshulGG e1b2026664 rename isRefresh parameter to isManualRefresh in OpenMeteoRepository's getWeather function 2026-04-30 22:48:07 +05:30
PranshulGG 3c0131e3d0 add LANGUAGE, UNITS, and APPEARANCE routes to NavRoutes 2026-04-30 22:47:59 +05:30
PranshulGG def8bbe290 update MainScreen UI state to support weather block ordering and adjust search bar colors based on theme 2026-04-30 22:47:54 +05:30
PranshulGG cfc2de9de5 remove ActiveLocationStore dependency and usage from LocationsRepository 2026-04-30 22:47:48 +05:30
PranshulGG 8dfc3a7251 implement LanguageScreen with support for application-wide language selection 2026-04-30 22:47:41 +05:30
PranshulGG 731de658b6 implement light and dark theme support for background gradients using a new ColorPalette interface and ColorsLight object 2026-04-30 22:47:36 +05:30
PranshulGG f46c6b86af remove ActiveLocationStore and implement AppearanceScreen and LanguageScreen with corresponding navigation routes 2026-04-30 22:47:30 +05:30
PranshulGG 82e9de91be Merge branch 'kotlin-rewrite' of https://github.com/PranshulGG/WeatherMaster into kotlin-rewrite 2026-04-30 13:44:22 +05:30
PranshulGG 7b2ee5f06a implement string resources for weather conditions, UV index, and time labels to support localization 2026-04-30 13:44:14 +05:30
PranshulGG 90b5a0a00c remove localization resource files for multiple languages 2026-04-30 13:43:56 +05:30
Pranshul 7f264accc3 Merge pull request #801 from PranshulGG/l10n_kotlin-rewrite
New Crowdin updates
2026-04-30 13:42:05 +05:30
Pranshul f7e4196300 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-04-30 13:41:21 +05:30
Pranshul 95ab1683e2 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-04-30 13:41:20 +05:30
Pranshul 7ccbeb4a63 New translations strings.xml (Filipino)
[ci skip]
2026-04-30 13:41:19 +05:30
Pranshul 81bfbbb1a1 New translations strings.xml (Azerbaijani)
[ci skip]
2026-04-30 13:41:18 +05:30
Pranshul 069435849d New translations strings.xml (Thai)
[ci skip]
2026-04-30 13:41:17 +05:30
Pranshul add4eebc7d New translations strings.xml (Persian)
[ci skip]
2026-04-30 13:41:15 +05:30
Pranshul 77bdfa06f5 New translations strings.xml (Indonesian)
[ci skip]
2026-04-30 13:41:14 +05:30
Pranshul 6ffb278425 New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-04-30 13:41:13 +05:30
Pranshul 49d4acd13a New translations strings.xml (Vietnamese)
[ci skip]
2026-04-30 13:41:12 +05:30
Pranshul ba7a4daffc New translations strings.xml (Chinese Traditional)
[ci skip]
2026-04-30 13:41:11 +05:30
Pranshul eb5f38fb27 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-04-30 13:41:10 +05:30
Pranshul 70a2005580 New translations strings.xml (Ukrainian)
[ci skip]
2026-04-30 13:41:08 +05:30
Pranshul cdd453d8e8 New translations strings.xml (Turkish)
[ci skip]
2026-04-30 13:41:07 +05:30
Pranshul 53886dd5c2 New translations strings.xml (Swedish)
[ci skip]
2026-04-30 13:41:06 +05:30
Pranshul 4d344d9612 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-04-30 13:41:05 +05:30
Pranshul 2f7c963e6d New translations strings.xml (Slovenian)
[ci skip]
2026-04-30 13:41:04 +05:30
Pranshul af190c898d New translations strings.xml (Russian)
[ci skip]
2026-04-30 13:41:03 +05:30
Pranshul f2af47bb3c New translations strings.xml (Portuguese)
[ci skip]
2026-04-30 13:41:01 +05:30
Pranshul f33f4ec7fd New translations strings.xml (Polish)
[ci skip]
2026-04-30 13:41:00 +05:30
Pranshul 905ed41129 New translations strings.xml (Dutch)
[ci skip]
2026-04-30 13:40:59 +05:30
Pranshul d5c4efd467 New translations strings.xml (Korean)
[ci skip]
2026-04-30 13:40:58 +05:30
Pranshul 9a58751341 New translations strings.xml (Japanese)
[ci skip]
2026-04-30 13:40:57 +05:30
Pranshul 48a0c9472e New translations strings.xml (Italian)
[ci skip]
2026-04-30 13:40:55 +05:30
Pranshul f23e75c376 New translations strings.xml (Hungarian)
[ci skip]
2026-04-30 13:40:54 +05:30
Pranshul 7c09adf20d New translations strings.xml (Finnish)
[ci skip]
2026-04-30 13:40:53 +05:30
Pranshul 2da996b035 New translations strings.xml (Greek)
[ci skip]
2026-04-30 13:40:52 +05:30
Pranshul 16dc49e17b New translations strings.xml (German)
[ci skip]
2026-04-30 13:40:51 +05:30
Pranshul e30dd78964 New translations strings.xml (Czech)
[ci skip]
2026-04-30 13:40:50 +05:30
Pranshul bf06f089fe New translations strings.xml (Catalan)
[ci skip]
2026-04-30 13:40:49 +05:30
Pranshul bf4e21ac32 New translations strings.xml (Bulgarian)
[ci skip]
2026-04-30 13:40:48 +05:30
Pranshul 69e9f03de5 New translations strings.xml (Spanish)
[ci skip]
2026-04-30 13:40:46 +05:30
Pranshul e4bbb200b9 New translations strings.xml (French)
[ci skip]
2026-04-30 13:40:45 +05:30
Pranshul 1f200f2dbf New translations strings.xml (Romanian)
[ci skip]
2026-04-30 13:40:44 +05:30
Pranshul ed2a9d451a Update Crowdin configuration file
[ci skip]
2026-04-30 13:40:20 +05:30
Pranshul 36d45ac059 Merge pull request #800 from PranshulGG/l10n_kotlin-rewrite
New Crowdin updates
2026-04-30 13:36:56 +05:30
Pranshul 65e1176094 New translations strings.xml (Arabic, Saudi Arabia)
[ci skip]
2026-04-30 13:35:27 +05:30
Pranshul f7fb6d47c1 New translations strings.xml (Serbian (Latin))
[ci skip]
2026-04-30 13:35:25 +05:30
Pranshul df2156fb1f New translations strings.xml (Filipino)
[ci skip]
2026-04-30 13:35:24 +05:30
Pranshul 4be55cea06 New translations strings.xml (Azerbaijani)
[ci skip]
2026-04-30 13:35:22 +05:30
Pranshul 7ad0b64d93 New translations strings.xml (Thai)
[ci skip]
2026-04-30 13:35:21 +05:30
Pranshul 3a99e0e5e9 New translations strings.xml (Persian)
[ci skip]
2026-04-30 13:35:20 +05:30
Pranshul 93e8a5cdfc New translations strings.xml (Indonesian)
[ci skip]
2026-04-30 13:35:18 +05:30
Pranshul 8ed4af1b2d New translations strings.xml (Portuguese, Brazilian)
[ci skip]
2026-04-30 13:35:17 +05:30
Pranshul 232c18964d New translations strings.xml (Vietnamese)
[ci skip]
2026-04-30 13:35:16 +05:30
Pranshul 767471c1a3 New translations strings.xml (Chinese Traditional)
[ci skip]
2026-04-30 13:35:14 +05:30
Pranshul 9043e09bc6 New translations strings.xml (Chinese Simplified)
[ci skip]
2026-04-30 13:35:13 +05:30
Pranshul 8ac8149a2e New translations strings.xml (Ukrainian)
[ci skip]
2026-04-30 13:35:12 +05:30
Pranshul 8b00878058 New translations strings.xml (Turkish)
[ci skip]
2026-04-30 13:35:10 +05:30
Pranshul 35df4a3cb6 New translations strings.xml (Swedish)
[ci skip]
2026-04-30 13:35:09 +05:30
Pranshul 330fd801a7 New translations strings.xml (Serbian (Cyrillic))
[ci skip]
2026-04-30 13:35:08 +05:30
Pranshul f2e6a909b3 New translations strings.xml (Slovenian)
[ci skip]
2026-04-30 13:35:06 +05:30
Pranshul 410f520242 New translations strings.xml (Russian)
[ci skip]
2026-04-30 13:35:05 +05:30
Pranshul bd80ad543f New translations strings.xml (Portuguese)
[ci skip]
2026-04-30 13:35:04 +05:30
Pranshul ef533a8d44 New translations strings.xml (Polish)
[ci skip]
2026-04-30 13:35:02 +05:30
Pranshul c20cb94fb6 New translations strings.xml (Dutch)
[ci skip]
2026-04-30 13:35:01 +05:30
Pranshul 97441747de New translations strings.xml (Korean)
[ci skip]
2026-04-30 13:34:59 +05:30
Pranshul da137ca6dd New translations strings.xml (Japanese)
[ci skip]
2026-04-30 13:34:58 +05:30
Pranshul 010e14519f New translations strings.xml (Italian)
[ci skip]
2026-04-30 13:34:57 +05:30
Pranshul 11ee50d79c New translations strings.xml (Hungarian)
[ci skip]
2026-04-30 13:34:55 +05:30
Pranshul 51fd4d98de New translations strings.xml (Finnish)
[ci skip]
2026-04-30 13:34:54 +05:30
Pranshul 51a2519597 New translations strings.xml (Greek)
[ci skip]
2026-04-30 13:34:52 +05:30
Pranshul 9f84ee8dd0 New translations strings.xml (German)
[ci skip]
2026-04-30 13:34:51 +05:30
Pranshul 378f31bd1b New translations strings.xml (Czech)
[ci skip]
2026-04-30 13:34:50 +05:30
Pranshul 23236c68a8 New translations strings.xml (Catalan)
[ci skip]
2026-04-30 13:34:49 +05:30
Pranshul 8e48db66af New translations strings.xml (Bulgarian)
[ci skip]
2026-04-30 13:34:47 +05:30
Pranshul af5d157b24 New translations strings.xml (Spanish)
[ci skip]
2026-04-30 13:34:46 +05:30
Pranshul 105c5e34ca New translations strings.xml (French)
[ci skip]
2026-04-30 13:34:44 +05:30
Pranshul da1cc1065e New translations strings.xml (Romanian)
[ci skip]
2026-04-30 13:34:43 +05:30
Pranshul db8510dab8 Update Crowdin configuration file
[ci skip]
2026-04-30 13:18:37 +05:30
PranshulGG b41e4b2352 add comprehensive string resources and plurals for weather conditions, UI actions, and time formatting 2026-04-30 13:11:19 +05:30
PranshulGG 0781350044 add comprehensive string resources and plurals for weather conditions, UI actions, and time formatting 2026-04-30 12:26:53 +05:30
PranshulGG bef9d1f482 update dependencies, remove lottie, and add common-suncalc and reorderable libraries 2026-04-29 22:29:50 +05:30
PranshulGG fc5fbc67a4 add vector drawables for bedtime, delete, edit, and home_pin icons along with moon_rise_set_icon image asset 2026-04-29 22:29:43 +05:30
PranshulGG 65fc7eb5dd update WeatherWithRelationsMapper to include moonrise, moonset, and moonPhase in daily weather data mapping 2026-04-29 22:29:28 +05:30
PranshulGG cb4894a7d2 update WeatherViewModel to use WeatherDataRepository for managing and persisting weather block order and states 2026-04-29 22:29:23 +05:30
PranshulGG 6f120f359a implement sun and moon timing calculations and refactor cache validation logic in WeatherUtils 2026-04-29 22:29:17 +05:30
PranshulGG 780deba508 add WeatherBlockEntity to database, register WeatherBlocksDao, and update schema version to 21 2026-04-29 22:29:11 +05:30
PranshulGG 23c90b12f4 order weather locations by default status and add clearDefaultLocations to WeatherLocationDao 2026-04-29 22:29:04 +05:30
PranshulGG ab9459d70c update WeatherDataRepository to support saving and loading weather blocks using WeatherBlocksDao 2026-04-29 22:28:54 +05:30
PranshulGG 3b71eedd25 implement reorderable weather blocks with Room persistence and updated domain models 2026-04-29 22:28:42 +05:30
PranshulGG b71c46f0b1 add weather animations for snow, fog, haze, and thunderstorm conditions 2026-04-29 22:28:33 +05:30
PranshulGG 02cdc80f81 add moonrise, moonset, and moonPhase fields to DailyWeather domain model 2026-04-29 22:28:04 +05:30
PranshulGG aa705357bf add handling for invalid temperature values in UnitConverter 2026-04-29 22:27:58 +05:30
PranshulGG ae903d32b7 add null safety check for daily weather data in SunBlock using DataSafe validation 2026-04-29 22:27:52 +05:30
PranshulGG 2a0e4c2aca add sun_rise_set_icon.png to drawables 2026-04-29 22:27:47 +05:30
PranshulGG f383d5ffa0 implement SnowCanvas for snow weather animations using Jetpack Compose Canvas 2026-04-29 22:27:30 +05:30
PranshulGG c25a5f3302 update OpenMeteoMapper to include sun and moon timings and use DataSafe for cache validation in OpenMeteoRepository 2026-04-29 22:27:24 +05:30
PranshulGG 4f66951183 update NavigateUpButton description from settings icon to arrow back icon 2026-04-29 22:27:18 +05:30
PranshulGG 79fbbd0d0e implement MoonBlock component for visualizing moonrise and moonset times with an arc animation 2026-04-29 22:27:12 +05:30
PranshulGG 4c35e59d80 refactor MainScreenScaffold, extract WeatherBlocks, and update search bar loading state 2026-04-29 22:27:06 +05:30
PranshulGG 6ed7334d67 implement location management with delete and set-as-default functionality 2026-04-29 22:26:58 +05:30
PranshulGG 2eef55f06a add DataSafe validation check for weather data in HourlyCard 2026-04-29 22:26:43 +05:30
PranshulGG c69ce97679 implement FogHazeCanvas for weather animations using Compose Canvas and infinite transitions 2026-04-29 22:26:37 +05:30
PranshulGG d96e5abc58 add moonrise, moonset, and moonPhase to DailyWeatherEntity and implement data safety check in DailyCard 2026-04-29 22:26:32 +05:30
PranshulGG 8f9ea51974 update CurrentWeatherCard to handle null daily weather data and display N/A for temperature values 2026-04-29 22:26:23 +05:30
PranshulGG a031e19b59 implement BackgroundGradient composable and update weather background color logic for different conditions 2026-04-29 22:26:09 +05:30
PranshulGG 8c48037349 add SunTimings and MoonTimings models with MoonPhase enum and provide WeatherBlocksDao in AppModule 2026-04-29 22:26:03 +05:30
PranshulGG 1ce7b3b538 add cloudy weather animation drawable resources 2026-04-27 21:51:22 +05:30
PranshulGG 65470004c4 add TODO comment to use Room for saving blocks order in WeatherViewModel 2026-04-27 21:51:06 +05:30
PranshulGG 644202ea32 add WeatherAnimations composable to render canvas-based weather effects based on conditions and time of day 2026-04-27 21:51:01 +05:30
PranshulGG b8033bad46 update SunBlock component to use the first daily weather entry for sunrise and sunset calculations 2026-04-27 21:50:54 +05:30
PranshulGG 86861ad84f implement SunCanvas and StarsCanvas animations and update RainCanvas layout 2026-04-27 21:50:47 +05:30
PranshulGG ce6e869243 implement OvercastCanvas for weather animations using Compose Canvas and infinite transitions 2026-04-27 21:50:39 +05:30
PranshulGG 35075725fb update MainScreenScaffold to include scroll-aware animation visibility and integrate SnowCanvas background performance improvements 2026-04-27 21:50:34 +05:30
PranshulGG 1590dd4796 update text style and add imports in CurrentWeatherCard.kt 2026-04-27 21:50:29 +05:30
PranshulGG 18783b6d13 add location icon vector and various froggy weather condition drawables 2026-04-27 21:50:22 +05:30
PranshulGG 6f8e714f3e add location icon vector and various froggy weather condition drawables 2026-04-26 22:32:47 +05:30
PranshulGG ad8b04595a update WeatherWithRelationsMapper to filter daily weather data starting from the current date based on timezone 2026-04-26 22:32:33 +05:30
PranshulGG 241e1f542a only load default location in WeatherViewModel if active location is null 2026-04-26 22:32:28 +05:30
PranshulGG d5170ccd29 add imports for Configuration, Compose, and SQLite to WeatherUtils 2026-04-26 22:32:23 +05:30
PranshulGG 7988cbde38 add toFroggy extension function to map WeatherConditions to froggy drawable resources 2026-04-26 22:32:13 +05:30
PranshulGG e7f859bbd1 replace canvasHeight parameter with modifier in RainCanvas 2026-04-26 22:32:02 +05:30
PranshulGG 55bce44b68 add blank line in OpenMeteoMapper daily weather list initialization 2026-04-26 22:31:53 +05:30
PranshulGG 30a5a22974 implement NavigationDrawer with support for tablet-like and mobile layouts 2026-04-26 22:31:49 +05:30
PranshulGG 00bd32f184 implement adaptive layout support for tablets in MainScreen and MainSearchBar systems 2026-04-26 22:31:45 +05:30
PranshulGG e7dd50929b add tablet support to LocationsScreen by conditionally setting width and hiding navigation icon 2026-04-26 22:31:36 +05:30
PranshulGG 7417e9717c add WeatherUtils import to DailyCard.kt 2026-04-26 22:31:18 +05:30
PranshulGG b57aa6505b add WeatherUtils import to DailyCard.kt 2026-04-26 22:30:21 +05:30
PranshulGG 98a634ea6b update isDay calculation in BackgroundGradients to use weather current time instead of system time 2026-04-26 22:30:17 +05:30
PranshulGG adba70a7fa add vector drawables for downward arrow, upward arrow, and sunny icons alongside sun rise/set asset 2026-04-26 22:27:54 +05:30
PranshulGG 4fcc640747 add vector drawables for downward arrow, upward arrow, and sunny icons alongside sun rise/set asset 2026-04-25 22:13:34 +05:30
PranshulGG 2881a6a03a add sun_moon_arc_block vector drawable 2026-04-25 22:13:24 +05:30
PranshulGG 29a05b1345 implement lastUpdatedSecs mapping in WeatherWithRelationsMapper 2026-04-25 22:13:19 +05:30
PranshulGG e4f0540f82 refactor WeatherViewModel to improve loading state handling and add weather block persistence 2026-04-25 22:13:14 +05:30
PranshulGG 2fd6b91f33 convert WeatherUtils to an object and add helper functions for cache validation, relative time formatting, and weather data filtering 2026-04-25 22:11:23 +05:30
PranshulGG be88d2b64c update WeatherResult.Error to support cached data and add WeatherResultType enum 2026-04-25 22:11:18 +05:30
PranshulGG 93db38d6e7 update database schema to version 17 2026-04-25 22:11:12 +05:30
PranshulGG 23db054f32 implement WeatherDataRepository and add DAO method to fetch weather for all locations 2026-04-25 22:11:06 +05:30
PranshulGG a76ceba995 update toIcon function in WeatherConditions to determine day/night status based on sunrise and sunset times 2026-04-25 22:10:55 +05:30
PranshulGG ca88781d7a add WeatherBlockType enum for humidity, visibility, UV index, pressure, and sun data types 2026-04-25 22:10:49 +05:30
PranshulGG 621dd0c819 add lastUpdatedSecs to WeatherCurrent and update sunrise and sunset to non-nullable in WeatherDaily 2026-04-25 22:10:42 +05:30
PranshulGG 0d769af0b1 update VisibilityBlock to use fillMaxSize and call WeatherUtils.formatNumbers statically 2026-04-25 22:10:37 +05:30
PranshulGG 1a6db4f2fa update UvIndexBlock to use responsive sizing with aspectRatio and matchParentSize 2026-04-25 22:10:31 +05:30
PranshulGG 961d794c99 update to12HourTimeString to support custom formatting patterns 2026-04-25 22:10:24 +05:30
PranshulGG 6fbdbcd77b implement SunBlock component to visualize sunrise and sunset progress with a custom path animation and detailed time information 2026-04-25 22:10:13 +05:30
PranshulGG d96c6620ab update PressureBlock to use fillMaxSize instead of fixed size in Box layout 2026-04-25 22:10:06 +05:30
PranshulGG 3887bb0e60 add lastUpdatedSecs to CurrentWeatherEntity and implement cache validation logic in OpenMeteoRepository 2026-04-25 22:10:01 +05:30
PranshulGG 678e37244c implement reorderable weather blocks and update navigation drawer behavior 2026-04-25 22:09:51 +05:30
PranshulGG bfa9948f5b integrate WeatherDataRepository in LocationsScreenViewModel and update LocationsScreen to display live weather data for saved locations 2026-04-25 22:09:41 +05:30
PranshulGG 9fc6cbac69 update layout constraints and change dew point colors to primary in HumidityBlock 2026-04-25 22:09:20 +05:30
PranshulGG 491c0711a7 update HourlyCard to calculate correct weather icons and use static WeatherUtils methods 2026-04-25 22:09:13 +05:30
PranshulGG bf783f6add update DailyWeatherEntity fields and modify weather icon logic in DailyCard 2026-04-25 22:09:07 +05:30
PranshulGG 8518438453 add lastUpdatedSecs to CurrentWeatherEntity and refactor CurrentWeatherCard UI and timestamp logic 2026-04-25 22:08:59 +05:30
PranshulGG 824acca927 remove lottie and replace with reorderable dependency 2026-04-25 22:08:51 +05:30
PranshulGG e79389c1b6 update backgroundGradients to handle day/night transitions and expand color constants for different weather conditions 2026-04-25 22:08:44 +05:30
PranshulGG 6aa302580f provide WeatherDataRepository in AppModule 2026-04-25 22:00:45 +05:30
PranshulGG 50d692b36b add vector drawables for compress, humidity, visibility, and sunny icons 2026-04-22 21:59:27 +05:30
PranshulGG aebcbe80ad add optional inShort parameter to PressureUnits and DistanceUnits toName functions 2026-04-22 21:59:17 +05:30
PranshulGG 58472d00d2 add formatNumbers utility function to WeatherUtils for localized decimal formatting 2026-04-22 21:59:10 +05:30
PranshulGG 4ed8f70cbd implement VisibilityBlock component for displaying weather visibility data 2026-04-22 21:59:03 +05:30
PranshulGG e3c905e6b1 implement UvIndexBlock component with custom canvas visualization and status indicators 2026-04-22 21:58:58 +05:30
PranshulGG 59b9965fb7 add UvIndex enum and utility functions for UV level classification and labeling 2026-04-22 21:58:53 +05:30
PranshulGG 1daf754a12 implement SunBlock component with sun/moon arc imagery and Material 3 Surface styling 2026-04-22 21:58:40 +05:30
PranshulGG 250289be7d add visibility_block and sun_moon_arc vector drawables 2026-04-22 21:58:34 +05:30
PranshulGG abb057dd88 replace manual string conversion with explicit mapping for weather units in SettingsScreen 2026-04-22 21:58:27 +05:30
PranshulGG 03652891e3 implement PressureBlock component for displaying weather pressure with unit conversion and visual progress indicators 2026-04-22 21:58:19 +05:30
PranshulGG bc84fb2a6c increase maxAge for cached weather data in OpenMeteoRepository 2026-04-22 21:57:47 +05:30
PranshulGG 05c3a8fdbd update main screen layout with DailyCard, SunBlock, and spacing while renaming CurrentWeatherCard 2026-04-22 21:57:38 +05:30
PranshulGG 7446040174 remove BlocksHeader component 2026-04-22 21:57:32 +05:30
PranshulGG ff57ba6e54 implement HumidityBlock component with dynamic icons and dew point display 2026-04-22 21:57:27 +05:30
PranshulGG e044028b96 add vector drawables for pressure progress levels and container 2026-04-22 21:57:20 +05:30
PranshulGG c721eb6630 add vector drawables for various humidity percentage levels 2026-04-22 21:57:11 +05:30
PranshulGG 094de4500e update surface colors and adjust gap spacing in HourlyCard and DailyCard components 2026-04-22 21:57:05 +05:30
PranshulGG 83d601a4b1 add date_range_24px vector drawable icon 2026-04-21 22:23:17 +05:30
PranshulGG e9d442c3fd update database schema to version 15 and remove initial weather units insertion callback 2026-04-21 22:23:10 +05:30
PranshulGG 8eea53152f add utcOffsetSeconds to current weather mapping in WeatherWithRelationsMapper 2026-04-21 22:23:04 +05:30
PranshulGG fff100d8af update filterHourlyDataForDate to include the previous hour and increase the data limit to 24 2026-04-21 22:22:58 +05:30
PranshulGG c64df661b6 add utcOffsetSeconds to Weather domain model and implement toLabel extension function for WeatherConditions 2026-04-21 22:22:52 +05:30
PranshulGG c60ae06773 update TimeFormatters to support time zones and add toWeekdayString method 2026-04-21 22:22:43 +05:30
PranshulGG bd53ea97a8 add ShadowElevation object with elevation levels 1 through 5 2026-04-21 22:22:32 +05:30
PranshulGG 53b9917bf4 add utcOffsetSeconds to OpenMeteoMapper current weather mapping 2026-04-21 22:22:26 +05:30
PranshulGG ef87e7e8a2 add utcOffsetSeconds field to OpenMeteoWeatherDto 2026-04-21 22:22:20 +05:30
PranshulGG 92589ef537 update background opacity of MainSearchBar surface to 50% 2026-04-21 22:22:14 +05:30
PranshulGG 5eac53eee3 update HourlyCard styling and add DailyCard component 2026-04-21 22:22:08 +05:30
PranshulGG c0d95b7c7a add utcOffsetSeconds to CurrentWeatherEntity and rename FroggyCurrentWeatherCard to CurrentWeatherCard with updated UI and last updated timestamp 2026-04-21 22:22:01 +05:30
PranshulGG 08f6bae789 add CardsHeader and BlocksHeader components to shared feature components 2026-04-21 22:21:55 +05:30
PranshulGG 9312654f8b implement weather unit models, result handling, and updated repository mapping logic 2026-04-20 20:30:24 +05:30
PranshulGG ff9080ba05 update database schema to version 12 and add AppWeatherUnitsEntity with default values 2026-04-20 20:30:17 +05:30
PranshulGG 352fb0f51a move Weather model to domain package and replace WeatherLocation with Location 2026-04-20 20:29:31 +05:30
PranshulGG 6be39b41ae add TimeFormatters utility class with 12-hour time formatting support 2026-04-20 20:29:22 +05:30
PranshulGG 12256575d6 add TimeFormatters utility class with 12-hour time formatting support 2026-04-20 20:29:06 +05:30
PranshulGG 04d2b0a39c implement SettingsScreen and SettingsScreenViewModel for unit preference management 2026-04-20 20:28:59 +05:30
PranshulGG e5c1ec2a20 update Location model import path to domain package in SearchRepository and SearchScreenViewModel 2026-04-20 20:28:52 +05:30
PranshulGG 97c4ea6ad4 move OpenMeteoMapper to weatherProviders package and implement caching logic in OpenMeteoRepository 2026-04-20 20:28:43 +05:30
PranshulGG b705d9219f add SETTINGS route to NavRoutes 2026-04-20 20:28:38 +05:30
PranshulGG 260eb5f6e9 integrate AppWeatherUnits into MainScreen and implement navigation to settings screen 2026-04-20 20:28:32 +05:30
PranshulGG d1a277d76c move Location model to domain package and update LocationItem shape selection logic 2026-04-20 20:28:27 +05:30
PranshulGG 5997919525 implement HourlyCard with LazyRow to display hourly weather data and add HourlyItem component 2026-04-20 20:28:19 +05:30
PranshulGG 584e93cde1 update FroggyCurrentWeatherCard to support temperature unit conversion using AppWeatherUnits and UnitConverter 2026-04-20 20:28:14 +05:30
PranshulGG 9f1243dbcb add AppWeatherUnits domain model, Room entity, DAO, and repository for unit preferences management 2026-04-20 20:28:06 +05:30
PranshulGG cedd0e5849 update AppModule with weather units dependency injection and add SettingsScreen to navigation host 2026-04-20 20:28:00 +05:30
PranshulGG 230afe37ca update package import for Location from core.model to core.model.domain in ActiveLocationStore 2026-04-20 20:27:39 +05:30
PranshulGG a7398430d1 update database schema to version 5 and implement WeatherViewModel with repository integration 2026-04-19 21:54:00 +05:30
PranshulGG 7a6a75405b update database schema version to 5 2026-04-19 21:53:44 +05:30
PranshulGG 8d7ab8dee7 add state, isFavorite, isPinned, countryCode, and isDefault fields to WeatherLocationEntity 2026-04-19 21:53:38 +05:30
PranshulGG 5f18374c96 add WeatherIconBox component for displaying weather icons 2026-04-19 21:53:33 +05:30
PranshulGG 5e7e921265 add NO_CONDITION_FOUND to WeatherConditions and map to weather_not_available drawable 2026-04-19 21:53:27 +05:30
PranshulGG 07553703ee add location management and relational weather query methods to DAOs 2026-04-19 21:53:19 +05:30
PranshulGG 3be84a260c add menu_24px and weather_not_available vector drawables and mark app name strings as non-translatable 2026-04-19 21:53:03 +05:30
PranshulGG 7bf6668ee1 update Weather model with location metadata and ensure non-nullable time fields in current, hourly, and daily data classes 2026-04-19 21:52:55 +05:30
PranshulGG 2832d85948 implement UnitConverter utility with support for length, temperature, wind speed, and pressure units 2026-04-19 21:52:49 +05:30
PranshulGG 5ba7319820 implement location saving functionality in SearchScreen and update repository to use Location model 2026-04-19 21:52:42 +05:30
PranshulGG 0ce7bcdca4 remove unused RefreshIds import and remove default value for isRefresh in OpenMeteoRepository.getWeather 2026-04-19 21:52:35 +05:30
PranshulGG 3a5527562c refactor OpenMeteoMapper and update OpenMeteoRepository to support weather data caching and refresh functionality
- Move `OpenMeteoMapper` to a new subpackage and update mapping logic to use `Location` domain models
- Update `OpenMeteoApi` to accept explicit timezone and separate query parameters for hourly, daily, and current weather fields
- Implement caching logic in `OpenMeteoRepository` to fetch data from local DAO before hitting the network
- Fix a serialized name mismatch for `wind_direction_10m_dominant` in `OpenMeteoDto`
- Enable body-level logging in the network interceptor for better debugging
2026-04-19 21:52:04 +05:30
PranshulGG 55961bea94 implement navigation drawer for location management and update MainScreen UI 2026-04-19 21:51:55 +05:30
PranshulGG 535604de28 implement LocationsRepository, LocationsScreenContent, and LocationItem while refactoring SearchItem to Location 2026-04-19 21:51:36 +05:30
PranshulGG 04d49ff749 update FroggyCurrentWeatherCard to display dynamic weather data and pass DrawerState to MainSearchBar 2026-04-19 21:51:29 +05:30
PranshulGG 7557ebfb20 update DailyWeatherEntity and HourlyWeatherEntity to use composite primary keys and non-nullable time fields 2026-04-19 21:51:23 +05:30
PranshulGG 839bc31973 update CurrentWeatherEntity to use locationId as primary key and make time field non-nullable 2026-04-19 21:51:10 +05:30
PranshulGG 7edfe4126b rename _setDynamicColors to _isDynamicTheme and add isFirstStart state to AppPrefs 2026-04-19 21:51:02 +05:30
PranshulGG cf7dd60a80 update start destination to MAIN and reposition SnackbarHost in AppNavHost 2026-04-19 21:50:57 +05:30
PranshulGG 5e8712d2b4 implement ActiveLocationStore and update AppModule to provide LocationsRepository and ActiveLocationStore 2026-04-19 21:50:50 +05:30
PranshulGG 07f544452d implement core UI components and design system elements including settings tiles, dialogs, and custom buttons 2026-04-17 17:08:34 +05:30
PranshulGG ae2e0e28bb add WeatherLocationDao and update database schema to version 2 with new weather entities 2026-04-17 17:08:16 +05:30
PranshulGG 4154041edf remove WeatherDataEntity and add WeatherLocationEntity 2026-04-17 17:08:04 +05:30
PranshulGG b21135f24f update Weather domain models and refactor WeatherConditions enum with daytime icon logic 2026-04-17 17:07:51 +05:30
PranshulGG 3ce1696469 add UuidGenerator utility class for generating random UUIDs 2026-04-17 17:07:36 +05:30
PranshulGG f5934bb820 delete showers_rain_foreground.lottie asset 2026-04-17 17:07:29 +05:30
PranshulGG 23e70e1277 add OpenMeteo weather code mapping to WeatherConditions enum values 2026-04-17 17:07:21 +05:30
PranshulGG 6ff1e89dbe implement location search feature with SearchScreen, SearchRepository, and SearchScreenViewModel 2026-04-17 17:07:11 +05:30
PranshulGG 7c9ca2b9b2 add OpenMeteoSearchApi and OpenMeteoSearchDto for geocoding search functionality 2026-04-17 17:07:01 +05:30
PranshulGG a1ab88442e update OpenMeteo API query parameters and refactor weather data mappers to support granular entities 2026-04-17 17:06:29 +05:30
PranshulGG 4c5016c810 add SEARCH route to NavRoutes 2026-04-17 17:06:16 +05:30
PranshulGG 59d28f1885 wrap MainScreen content in a Scaffold and implement MainSearchBar component with location search functionality 2026-04-17 17:06:10 +05:30
PranshulGG 723f2b71f5 add system bar styling imports to MainActivity 2026-04-17 17:05:58 +05:30
PranshulGG 9b81349fb3 implement LocationsScreen with search bar and floating action button for navigation 2026-04-17 17:05:46 +05:30
PranshulGG f32513a5a4 remove FroggySearchBar and replace with MainSearchBar in FroggyCurrentWeatherCard 2026-04-17 17:05:35 +05:30
PranshulGG 80e6fb4d36 add Room entities for daily, hourly, and current weather data 2026-04-17 17:05:10 +05:30
PranshulGG 42ec6351a8 update weather condition constant from CLEAR_DAY to CLEAR_SKY in background gradients 2026-04-17 17:04:45 +05:30
PranshulGG adb5cbe57c update database schema to version 2 and implement search feature components 2026-04-17 17:04:06 +05:30
PranshulGG 3c70e3a5b3 rewrite kotlin 2026-04-16 12:26:20 +05:30
1488 changed files with 97837 additions and 64963 deletions

No files matched your search

-5
View File
@@ -1,5 +0,0 @@
# Rename this file to .env and add your actual API keys
API_TOKEN=crowdin_token
API_KEY_WEATHERAPI=weatherapi.com_api
API_KEY_OPENROUTER=https://openrouter.ai/
+4
View File
@@ -0,0 +1,4 @@
# These are supported funding model platforms
github: [PranshulGG]
ko_fi: pranshulgg
liberapay: PranshulGG
+51
View File
@@ -0,0 +1,51 @@
name: Bug Report
description: Report a bug
labels: [ "bug" ]
body:
- type: markdown
attributes:
value: |
Please fill out the sections below to help everyone identify and fix the bug
- type: textarea
id: description
attributes:
label: Describe your issue
placeholder: When I click here this happens
validations:
required: true
- type: textarea
id: steps
attributes:
label: Steps to reproduce
placeholder: |
1. Go to page X
2. Click here
3. Click there
validations:
required: true
- type: textarea
id: expected
attributes:
label: What was the expected result?
placeholder: I expected this to happen
- type: input
id: source_used
attributes:
label: Which weather source are you using?
placeholder: Example "Open Meteo"
validations:
required: true
- type: textarea
id: screenshots
attributes:
label: Put here any screenshots or videos (optional)
- type: checkboxes
id: acknowledgementsCheck
attributes:
label: Acknowledgements
description: Your issue will be closed if you don’t read this carefully.
options:
- label: I have reviewed the existing issues to confirm that this is a unique report and not related to any currently open or closed tickets.
required: true
- label: I understand that this app is provided as-is, without any guarantees, and I might not receive a response to my request. Sometimes you might not get the response you want.
required: true
@@ -0,0 +1,51 @@
name: Feature Request
description: Suggest an idea to improve this project
body:
- type: markdown
attributes:
value: |
Please provide detailed information to help us understand your idea and its potential impact.
- type: textarea
id: description
attributes:
label: Problem Statement
placeholder: Describe the problem or limitation you're facing that the new feature would solve.
description: Clearly explain the challenge or issue you're encountering to help us understand the context.
validations:
required: true
- type: textarea
id: solution
attributes:
label: Proposed Solution
placeholder: Explain how you think the feature should work and address the problem.
description: Describe the solution in detail, including any specific behaviors or functionality it should have.
validations:
required: true
- type: textarea
id: alternatives
attributes:
label: Alternatives Considered
placeholder: Describe any alternative solutions or features you've considered.
description: If there are other ways to solve the issue, please share them here.
- type: textarea
id: additional
attributes:
label: Additional Context
placeholder: Provide any extra details, links, or examples that might help clarify your request.
description: This field is optional but highly encouraged if you have additional information.
- type: checkboxes
id: acknowledgementsCheck
attributes:
label: Acknowledgements
description: Please confirm the following before submitting your feature request
options:
- label: I have searched the existing issues and discussions to ensure this feature has not already been requested.
required: true
- label: I understand that submitting a request does not guarantee it will be implemented.
required: true
- label: I have provided all necessary information to clearly explain my request.
required: true
- type: markdown
attributes:
value: |
Thank you for suggesting an improvement! Your feedback is valuable, and we will review it as soon as possible.
+30
View File
@@ -0,0 +1,30 @@
name: New source
description: Suggest an new source
body:
- type: markdown
attributes:
value: |
Please fill out the sections below
- type: textarea
id: api_link
attributes:
label: Link to publicly available API or Docs
placeholder: Link here
validations:
required: true
- type: textarea
id: details
attributes:
label: Additional details/context about this source
validations:
required: true
- type: checkboxes
id: acknowledgementsCheck
attributes:
label: Acknowledgements
description: Your issue will be closed if you don’t read this carefully.
options:
- label: I have reviewed the existing issues to confirm that this is a unique report and not related to any currently open or closed tickets.
required: true
- label: I understand that this app is provided as-is, without any guarantees, and I might not receive a response to my request. Sometimes you might not get the response you want.
required: true
-57
View File
@@ -1,57 +0,0 @@
name: Flutter Split APK Build
on:
workflow_dispatch:
push:
tags:
- "v*"
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v3
- name: Setup Flutter
uses: subosito/flutter-action@v2
with:
flutter-version: "3.32.4"
- name: Install dependencies
run: flutter pub get
- name: Setup environment file
run: |
echo "API_TOKEN=${{ secrets.API_TOKEN }}" >> .env
echo "API_KEY_WEATHERAPI=${{ secrets.API_KEY_WEATHERAPI }}" >> .env
echo "API_KEY_OPENROUTER=${{ secrets.API_KEY_OPENROUTER }}" >> .env
- name: Setup keystore
run: |
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > android/app/weathermaster.jks
- name: Setup key.properties
run: |
echo "storePassword=${{ secrets.KEYSTORE_PASSWORD }}" > android/key.properties
echo "keyPassword=${{ secrets.KEY_PASSWORD }}" >> android/key.properties
echo "keyAlias=${{ secrets.KEY_ALIAS }}" >> android/key.properties
echo "storeFile=app/weathermaster.jks" >> android/key.properties
- name: Build Split APKs
run: flutter build apk --release --split-per-abi
- name: Rename APKs
run: |
VERSION_NAME=$(grep 'version:' pubspec.yaml | awk '{print $2}' | cut -d'+' -f1)
mkdir release_apks
cp build/app/outputs/flutter-apk/app-arm64-v8a-release.apk release_apks/WeatherMaster.${VERSION_NAME}.arm64-v8a.apk
cp build/app/outputs/flutter-apk/app-armeabi-v7a-release.apk release_apks/WeatherMaster.${VERSION_NAME}.armeabi-v7a.apk
cp build/app/outputs/flutter-apk/app-x86_64-release.apk release_apks/WeatherMaster.${VERSION_NAME}.x86_64.apk
- name: Upload APKs
uses: actions/upload-artifact@v4
with:
name: release-apks
path: release_apks/
+65
View File
@@ -0,0 +1,65 @@
name: WeatherMaster Signed Release
on:
workflow_dispatch:
push:
tags:
- "*"
jobs:
build:
runs-on: ubuntu-24.04
env:
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
GEO_NAMES_USERNAME: ${{ secrets.GEO_NAMES_USERNAME }}
MF_KEY: ${{ secrets.MF_KEY }}
ACCU_KEY: ${{ secrets.ACCU_KEY }}
WEATHERAPI_KEY: ${{ secrets.WEATHERAPI_KEY }}
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Grant execute permission for gradlew
run: chmod +x gradlew
- name: Set up JDK 21
uses: actions/setup-java@v5
with:
distribution: temurin
java-version: "21.0.7"
- name: Setup Android SDK
uses: android-actions/setup-android@v3
with:
packages: 'platform-tools'
- name: Decode keystore
run: |
mkdir keystore
echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 -d > keystore/release.jks
- name: Verify environment
run: |
java -version
./gradlew --version
- name: Build signed APK
run: |
./gradlew \
--no-daemon \
--no-build-cache \
-PGEO_NAMES_USERNAME="${{ secrets.GEO_NAMES_USERNAME }}" \
-PMF_KEY="${{ secrets.MF_KEY }}" \
-PACCU_KEY="${{ secrets.ACCU_KEY }}" \
-PWEATHERAPI_KEY="${{ secrets.WEATHERAPI_KEY }}" \
clean assembleRelease
- name: Upload APK
uses: actions/upload-artifact@v4
with:
name: signed-release-apk
path: app/build/outputs/apk/release/*.apk
+17 -55
View File
@@ -1,56 +1,18 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.build/
.buildlog/
.history
.svn/
.swiftpm/
migrate_working_dir/
# IntelliJ related
*.iml
*.ipr
*.iws
.idea/
# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/
# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.pub-cache/
.pub/
/build/
# Symbolication related
app.*.symbols
# Obfuscation related
app.*.map.json
# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
# Keystore
*.jks
*.keystore
android/*.jks
android/*.keystore
android/key.properties
*.jks.base64
# Environment files
.env
.gradle
/local.properties
/.idea/caches
/.idea/libraries
/.idea/modules.xml
/.idea/workspace.xml
/.idea/navEditor.xml
/.idea/assetWizardSettings.xml
.DS_Store
/build
/captures
.externalNativeBuild
.cxx
local.properties
/weathermaster.jks
/.idea
gradle.properties
-3
View File
@@ -1,3 +0,0 @@
## 2024-05-22 - [Refactoring Data Processing out of Build]
**Learning:** In Flutter, complex data processing (parsing Dates, loops) inside `build` or `FutureBuilder.builder` runs on every rebuild, which can be frequent. Moving this logic to a separate processing step that returns a dedicated data object significantly reduces CPU usage during UI updates.
**Action:** Always process API data into a display-ready View Model before passing it to the Widget tree, especially when using Futures.
-45
View File
@@ -1,45 +0,0 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.
version:
revision: "6fba2447e95c451518584c35e25f5433f14d888c"
channel: "stable"
project_type: app
# Tracks metadata for the flutter migrate command
migration:
platforms:
- platform: root
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: android
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: ios
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: linux
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: macos
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: web
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
- platform: windows
create_revision: 6fba2447e95c451518584c35e25f5433f14d888c
base_revision: 6fba2447e95c451518584c35e25f5433f14d888c
# User provided section
# List of Local paths (relative to this file) that should be
# ignored by the migrate tool.
#
# Files that are not part of the templates will be ignored by default.
unmanaged_files:
- 'lib/main.dart'
- 'ios/Runner.xcodeproj/project.pbxproj'
-3
View File
@@ -1,3 +0,0 @@
{
"cmake.ignoreCMakeListsMissing": true
}
+66
View File
@@ -0,0 +1,66 @@
# Contributing to WeatherMaster
Thanks for contributing to WeatherMaster :P Before opening a PR, please read
through the guidelines below. They are intended to keep the codebase
consistent and make contributions easier to review and maintain
## Before Contributing
Before starting work on a contribution, please open an issue first and
describe what you would like to change.
For small changes like typo fixe or other
obvious minor fixes, opening an issue is optional
## General stuff
- Keep changes focused and avoid unrelated refactors.
- Follow the existing architecture and patterns used in the project.
- Prefer reusing existing abstractions over introducing new ones.
- Don't introduce a new pattern or framework for a single feature.
- Keep platform-independent logic independent of UI code where
possible
- Avoid unnecessary changes to existing behavior.
## Adding a New Weather Source
The goal is that adding a new source should primarily require changes to the
source itself, rather than adding special cases throughout the codebase
When implementing a new source:
- Use the existing source abstractions and interfaces.
- Do not add source-specific UI.
- Do not add source-specific logic to existing UI components.
- If the source requires information that the existing architecture cannot
represent, discuss the change before implementing a
source-specific workaround
## AI-Assisted Contributions
AI tools are allowed, but contributors are expected to understand and take
ownership of the code they submit
Please disclose AI usage in your PR description, including what the AI was
used for
PRs that appear to be largely or entirely AI-generated without meaningful
review, understanding, or contribution from the author will be closed
## Attributions
Add your attribution above the feature you implemented. Attribution should only be added for feature
implementations
For example:
```kt
/**
* Initial YOUR_FEATURE integration implemented by https://github.com/YOUR_GITHUB
*/
```
_Thanks :P_
+48 -16
View File
@@ -1,25 +1,57 @@
# Privacy Policy
**WeatherMaster is an open-source application.**
WeatherMaster is an open-source application.
We respect your privacy. This application:
We respect your privacy. The application itself does **not**:
- Does **not collect, store, or share** any personal information.
- Does **not track** your IP address, usage data, or any identifiers.
- Does **not send data** to us or to third parties.
- Collect, store, or share personal information.
- Track your IP address, usage data, or device identifiers.
- Send personal data to us directly.
## Location Permission
- The app may request access to your device’s **location** in order to show you local weather information.
- Granting location permission is **optional**.
- Your location data is used **only within the app** to provide weather information and is **never collected, stored, or shared**.
---
## Children
This application does not knowingly collect any personal information from anyone, including children under 13.
## Third-Party Services & APIs
## Changes
If this Privacy Policy changes, we will update it here. Continued use of the app after changes means you accept the revised policy.
WeatherMaster relies on external weather and geolocation services to provide forecasts and
location-based functionality.
## Contact
If you have any questions about privacy while using WeatherMaster, please contact at:
These third-party services may process certain technical information, including:
**pranshul.devmain@gmail.com**
- IP address
- Approximate or precise location data
- Device or network-related information required for API requests
This data processing is handled by the respective service providers under their own privacy
policies. WeatherMaster itself does not control or store this data.
---
## Location Permission
The app may request access to your device's location to display local weather information.
- Granting location permission is optional.
- Your precise location is used locally within the app to fetch weather data from external APIs.
- WeatherMaster does not store your precise location.
---
## Children
This application is not directed toward children under the age of 13 and does not knowingly collect
personal information.
---
## Changes
This Privacy Policy may be updated from time to time. Continued use of the app after changes become
effective constitutes acceptance of the revised policy.
---
## Contact
If you have any questions about privacy, please contact:
**Email:** <pranshul.devmain@gmail.com>
+90 -75
View File
@@ -1,6 +1,6 @@
<div align="center">
<img src="https://github.com/PranshulGG/WeatherMaster/blob/master/preview/readme_app_icon.svg" alt="" width="150px">
</div>
<img src="preview/icon.png" alt="" width="150px">
</div>
<h1 align="center">
WeatherMaster
</h1>
@@ -15,26 +15,26 @@
<img src="https://img.shields.io/discord/1302477023410782229?label=Discord&style=for-the-badge&color=ffb0c8&labelColor=541d32">
</a>
</div>
<div align="center">
<img src="https://shields.rbtlog.dev/simple/com.pranshulgg.weather_master_app?style=for-the-badge" alt="RB Status">
</div>
<div align="center">
<h3>WeatherMaster: inspired by the Google Pixel weather app.</h3>
</div>
<div align="center">
[Features](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#-features) • [Contact](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#%EF%B8%8F-contact) • [License](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#%EF%B8%8F-license) • [Translate](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#-translate-the-app-on-crowdin)
[Features](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#-features) • [Contact](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#%EF%B8%8F-contact) • [License](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#%EF%B8%8F-license) • [Translate](https://github.com/PranshulGG/WeatherMaster?tab=readme-ov-file#-translate-the-app-on-crowdin)
</div>
<div align="center">
<a href="https://github.com/PranshulGG/WeatherMaster/releases"><img alt="GitHub" src="https://user-images.githubusercontent.com/69304392/148696068-0cfea65d-b18f-4685-82b5-329a330b1c0d.png" height="80"/></a>
<a href="https://apt.izzysoft.de/fdroid/index/apk/com.pranshulgg.weather_master_app"><img alt="GitHub" src="preview/download_Btn.png" height="80"/></a></div>
<a href="https://github.com/PranshulGG/WeatherMaster/releases"><img alt="GitHub" src="preview/get_on_github_btn.png" height="80"/></a>
<a href="https://apt.izzysoft.de/fdroid/index/apk/com.pranshulgg.weather_master_app"><img alt="GitHub" src="preview/get_on_izzy_btn.png" height="80"/></a>
<a href="https://play.google.com/store/apps/details?id=com.pranshulgg.weather_master"><img alt="GitHub" src="preview/get_on_googleplay_btn.png" height="80"/></a></div>
<br>
![app_thumbnail](preview/new_thumbnail.png)
@@ -42,80 +42,95 @@
# 👁️ Screenshots
<div align="center">
<img src="preview/prev_2.png" width="250">
<img src="preview/prev_3.png" width="250">
<img src="preview/prev_4.png" width="250">
<img src="preview/2.png" width="250">
<img src="preview/prev_5.png" width="250">
<img src="preview/prev_1.png" width="250">
<img src="preview/preview_1.png" width="250">
<img src="preview/preview_2.png" width="250">
<img src="preview/preview_3.png" width="250">
<img src="preview/preview_4.png" width="250">
</div>
<br>
# 🌦️ Supported weather sources
- **Open Meteo**
- **Met Norway**
- **NWS**
- **SMHI**
- **DWD**
- **Meteo-France**
- **FMI**
- **ECCC**
- **BMKG**
- **China**
- **AccuWeather**
- **Meteo AM**
- **IPMA**
- **WeatherApi.com**
- **Gismeteo**
- **Met Office** _(requires your own API key — sign up [here](https://www.metoffice.gov.uk/))_
- **AEMET** _(requires your own API key — sign
up [here](https://opendata.aemet.es/centrodedescargas/altaUsuario))_
- **IMD**
- **WMO Severe Weather Information Centre**
- **FOSS Public Alert Server**
- **CWA**
- **Pirate Weather**
- **JMA**
- **IMET**
- **OpenWeather**
- _**And more to be added**_
Some sources need a free API key from the provider before you can select them — add yours from a
location's weather source picker, or from **Settings → Weather Sources → API key config**.
# 🌐 Translate the app on [Crowdin](https://crowdin.com/project/weathermaster)
- **Feel free to open an issue if you want to request a language**
_**Feel free to open an issue if you want to request a language**_
<a href="https://crowdin.com/project/weathermaster"><img src="https://badges.crowdin.net/weathermaster/localized.svg" width="200"> </a>
# ✨ Features:
- 🌍 **Offline Mode:** Access previously loaded weather data even without an internet connection.
- 🌤️ **Current Weather:** Get real-time updates on weather conditions in your area.
- 📢 **Government Weather Alerts:** Receive official alerts and warnings to stay safe.
- ⏳ **24-Hour Forecast:** Plan your short-term activities with accurate forecasts for the next two days.
- 📅 **14-Day Forecast:** View detailed weather predictions for the upcoming week.
- 🌙 **Moon Phases:** Track the phases of the moon and plan accordingly.
- 🌑 **Moonrise & Moonset:** Know the exact times for moonrise and moonset each day.
- 🌅 **Sunrise & Sunset:** Stay informed about sunrise and sunset times to optimize your day.
- 📏 **Day Length:** Check how long the daylight lasts each day.
- 📝 **Day Description:** Get a brief summary of the day’s weather conditions.
- 🌧️ **Rain Bar:** See a visual representation of expected rainfall.
- 👁️ **Visibility:** Monitor how far you can see clearly based on weather conditions.
- 💧 **Humidity:** Check the current humidity levels to stay comfortable.
- 🧭 **Pressure:** Track atmospheric pressure to understand weather changes.
- 🌬️ **Wind Direction & Speed:** Stay aware of wind patterns and strength.
- ❄️ **Snow Amount:** Know the expected snowfall for winter planning.
- ☁️ **Cloudiness:** See how much of the sky is covered by clouds.
- 🌡️ **Min-Max Temperature:** View the range of temperatures for the day.
- 🌬️ **Feels Like Temperature:** Understand how the temperature feels based on wind and humidity.
- 🌧️ **Precipitation Type & Area Coverage:** Get details on what kind of precipitation is expected and its coverage area.
- 🌞 **UV Index:** Stay protected from harmful UV rays with UV index updates.
- 🌿 **Air Quality:** Monitor air quality to stay informed about pollution levels.
- 📍 **Location Picker:** Easily select and view weather information for different locations.
- ⭐ **Save Favorite Locations:** Save your preferred locations for quick access to their weather updates.
- 👗 **Clothing Recommendations:** Get suggestions on what to wear based on the current weather conditions.
- 🌾 **Pollen Data (Europe Only):** View pollen levels for grass, trees, and weeds in your area.
- **⚙️ Customizable Layout:** Arrange and customize the app’s layout to display weather features in your preferred order and style. Example: Saved locations, condition widgets etc.
# 🌞 Weather providers:
- [**open-meteo**](https://open-meteo.com)
- [**Met norway**](https://www.met.no/en)
- [**WeatherApi**](https://www.weatherapi.com/)
- [**accuweather**](https://www.accuweather.com/)
- [**Météo-France**](https://www.meteofrance.com)
- [**DWD**](https://www.dwd.de/EN/Home/home_node.html)
- [**NOAA**](https://www.noaa.gov)
- [**ECMWF**](https://www.ecmwf.int)
- [**UK Met Office**](https://www.metoffice.gov.uk)
- [**JMA**](https://www.jma.go.jp/jma/indexe.html)
- [**GEM**](https://www.ec.gc.ca/meteo-weather/default.asp?lang=En&n=FB1BB3E4-1)
- [**BOM**](http://www.bom.gov.au)
- [**CMA**](http://www.cma.gov.cn/en/)
- [**KNMI**](https://www.knmi.nl)
- [**DMI**](https://www.dmi.dk/en/)
# 🛠️ Built With:
- <strong>Flutter: </stronge>Completely rebuilt from web-based JS to native Flutter.
- <strong>Weather icons</strong>: <a href="https://gitlab.com/bignutty/google-weather-icons">Google weather icons
<a href="https://crowdin.com/project/weathermaster" style="background-color: red"></a>
[![ar-SA translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ar-SA&style=flat&logo=crowdin&query=%24.progress.0.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![az translation](https://img.shields.io/badge/dynamic/json?color=blue&label=az&style=flat&logo=crowdin&query=%24.progress.1.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![bg translation](https://img.shields.io/badge/dynamic/json?color=blue&label=bg&style=flat&logo=crowdin&query=%24.progress.2.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ca translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ca&style=flat&logo=crowdin&query=%24.progress.3.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![cs translation](https://img.shields.io/badge/dynamic/json?color=blue&label=cs&style=flat&logo=crowdin&query=%24.progress.4.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![de translation](https://img.shields.io/badge/dynamic/json?color=blue&label=de&style=flat&logo=crowdin&query=%24.progress.5.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![el translation](https://img.shields.io/badge/dynamic/json?color=blue&label=el&style=flat&logo=crowdin&query=%24.progress.6.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![es-ES translation](https://img.shields.io/badge/dynamic/json?color=blue&label=es-ES&style=flat&logo=crowdin&query=%24.progress.7.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![fa translation](https://img.shields.io/badge/dynamic/json?color=blue&label=fa&style=flat&logo=crowdin&query=%24.progress.8.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![fi translation](https://img.shields.io/badge/dynamic/json?color=blue&label=fi&style=flat&logo=crowdin&query=%24.progress.9.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![fil translation](https://img.shields.io/badge/dynamic/json?color=blue&label=fil&style=flat&logo=crowdin&query=%24.progress.10.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![fr translation](https://img.shields.io/badge/dynamic/json?color=blue&label=fr&style=flat&logo=crowdin&query=%24.progress.11.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![hu translation](https://img.shields.io/badge/dynamic/json?color=blue&label=hu&style=flat&logo=crowdin&query=%24.progress.12.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![id translation](https://img.shields.io/badge/dynamic/json?color=blue&label=id&style=flat&logo=crowdin&query=%24.progress.13.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![it translation](https://img.shields.io/badge/dynamic/json?color=blue&label=it&style=flat&logo=crowdin&query=%24.progress.14.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ja translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ja&style=flat&logo=crowdin&query=%24.progress.15.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ko translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ko&style=flat&logo=crowdin&query=%24.progress.16.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![lt translation](https://img.shields.io/badge/dynamic/json?color=blue&label=lt&style=flat&logo=crowdin&query=%24.progress.17.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![nl translation](https://img.shields.io/badge/dynamic/json?color=blue&label=nl&style=flat&logo=crowdin&query=%24.progress.18.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![pl translation](https://img.shields.io/badge/dynamic/json?color=blue&label=pl&style=flat&logo=crowdin&query=%24.progress.19.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![pt-BR translation](https://img.shields.io/badge/dynamic/json?color=blue&label=pt-BR&style=flat&logo=crowdin&query=%24.progress.20.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![pt-PT translation](https://img.shields.io/badge/dynamic/json?color=blue&label=pt-PT&style=flat&logo=crowdin&query=%24.progress.21.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ro translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ro&style=flat&logo=crowdin&query=%24.progress.22.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ru translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ru&style=flat&logo=crowdin&query=%24.progress.23.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![sl translation](https://img.shields.io/badge/dynamic/json?color=blue&label=sl&style=flat&logo=crowdin&query=%24.progress.24.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![sr translation](https://img.shields.io/badge/dynamic/json?color=blue&label=sr&style=flat&logo=crowdin&query=%24.progress.25.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![sr-CS translation](https://img.shields.io/badge/dynamic/json?color=blue&label=sr-CS&style=flat&logo=crowdin&query=%24.progress.26.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![sv-SE translation](https://img.shields.io/badge/dynamic/json?color=blue&label=sv-SE&style=flat&logo=crowdin&query=%24.progress.27.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![th translation](https://img.shields.io/badge/dynamic/json?color=blue&label=th&style=flat&logo=crowdin&query=%24.progress.28.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![tr translation](https://img.shields.io/badge/dynamic/json?color=blue&label=tr&style=flat&logo=crowdin&query=%24.progress.29.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![uk translation](https://img.shields.io/badge/dynamic/json?color=blue&label=uk&style=flat&logo=crowdin&query=%24.progress.30.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![vi translation](https://img.shields.io/badge/dynamic/json?color=blue&label=vi&style=flat&logo=crowdin&query=%24.progress.31.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![zh-CN translation](https://img.shields.io/badge/dynamic/json?color=blue&label=zh-CN&style=flat&logo=crowdin&query=%24.progress.32.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![zh-TW translation](https://img.shields.io/badge/dynamic/json?color=blue&label=zh-TW&style=flat&logo=crowdin&query=%24.progress.33.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![ar-SA translation](https://img.shields.io/badge/dynamic/json?color=blue&label=ar-SA&style=flat&logo=crowdin&query=%24.progress.0.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![lt translation](https://img.shields.io/badge/dynamic/json?color=blue&label=lt&style=flat&logo=crowdin&query=%24.progress.18.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
[![he translation](https://img.shields.io/badge/dynamic/json?color=blue&label=he&style=flat&logo=crowdin&query=%24.progress.12.data.translationProgress&url=https%3A%2F%2Fbadges.awesome-crowdin.com%2Fstats-16727791-741419.json)](https://crowdin.com/project/weathermaster)
# ✉️ Contact
For any questions or feedback, feel free to open an issue on GitHub or contact pranshul.devmain@gmail.com
For any questions or feedback, feel free to open an issue on GitHub or contact
pranshul.devmain@gmail.com
# ©️ License
-28
View File
@@ -1,28 +0,0 @@
# This file configures the analyzer, which statically analyzes Dart code to
# check for errors, warnings, and lints.
#
# The issues identified by the analyzer are surfaced in the UI of Dart-enabled
# IDEs (https://dart.dev/tools#ides-and-editors). The analyzer can also be
# invoked from the command line by running `flutter analyze`.
# The following line activates a set of recommended lints for Flutter apps,
# packages, and plugins designed to encourage good coding practices.
include: package:flutter_lints/flutter.yaml
linter:
# The lint rules applied to this project can be customized in the
# section below to disable rules from the `package:flutter_lints/flutter.yaml`
# included above or to enable additional rules. A list of all available lints
# and their documentation is published at https://dart.dev/lints.
#
# Instead of disabling a lint rule for the entire project in the
# section below, it can also be suppressed for a single line of code
# or a specific dart file by using the `// ignore: name_of_lint` and
# `// ignore_for_file: name_of_lint` syntax on the line or in the file
# producing the lint.
rules:
# avoid_print: false # Uncomment to disable the `avoid_print` rule
# prefer_single_quotes: true # Uncomment to enable the `prefer_single_quotes` rule
# Additional information about this file can be found at
# https://dart.dev/guides/language/analysis-options
-24
View File
@@ -1,24 +0,0 @@
# Gradle
.gradle/
gradlew
gradlew.bat
local.properties
/captures/
.cxx/
GeneratedPluginRegistrant.java
# Keystore & signing
# Never share this publicly
android/key.properties
weathermaster.jks
**/*.jks
**/*.keystore
# Flutter-specific
build/
.flutter-plugins
.flutter-plugins-dependencies
.dart_tool/
.packages
pubspec.lock
-85
View File
@@ -1,85 +0,0 @@
import com.android.build.api.dsl.Packaging
import java.util.Properties
import java.io.FileInputStream
val keyProperties = Properties().apply {
val keyPropertiesFile = rootProject.file("key.properties")
load(FileInputStream(keyPropertiesFile))
}
plugins {
id("com.android.application")
id("kotlin-android")
id("dev.flutter.flutter-gradle-plugin")
}
android {
namespace = "com.pranshulgg.weather_master_app"
compileSdk = flutter.compileSdkVersion
ndkVersion = "27.0.12077973"
compileOptions {
sourceCompatibility = JavaVersion.VERSION_17
targetCompatibility = JavaVersion.VERSION_17
isCoreLibraryDesugaringEnabled = true
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
defaultConfig {
// TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
applicationId = "com.pranshulgg.weather_master_app"
// You can update the following values to match your application needs.
// For more information, see: https://flutter.dev/to/review-gradle-config.
minSdk = 23
targetSdk = flutter.targetSdkVersion
versionCode = flutter.versionCode
versionName = flutter.versionName
}
signingConfigs {
create("release") {
keyAlias = keyProperties["keyAlias"] as String
keyPassword = keyProperties["keyPassword"] as String
storeFile = File(rootProject.projectDir, "${keyProperties["storeFile"]}")
storePassword = keyProperties["storePassword"] as String
}
}
buildTypes {
getByName("release") {
signingConfig = signingConfigs.getByName("release")
isMinifyEnabled = false
isShrinkResources = false
}
}
dependenciesInfo {
includeInApk = false
includeInBundle = false
}
packaging {
jniLibs {
useLegacyPackaging = true
}
}
}
flutter {
source = "../.."
}
dependencies {
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.4")
implementation("androidx.work:work-runtime-ktx:2.9.0")
implementation("androidx.glance:glance-appwidget:1.0.0-alpha05")
implementation("com.google.android.material:material:1.12.0")
}
@@ -1,7 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<!-- The INTERNET permission is required for development. Specifically,
the Flutter tool needs it to communicate with the running application
to allow setting breakpoints, to provide hot reload, etc.
-->
<uses-permission android:name="android.permission.INTERNET"/>
</manifest>
-151
View File
@@ -1,151 +0,0 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS"/>
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_DATA_SYNC" />
<application
android:label="Weather Master"
android:name="${applicationName}"
android:icon="@mipmap/ic_launcher">
<activity
android:name=".MainActivity"
android:exported="true"
android:launchMode="singleTop"
android:taskAffinity=""
android:theme="@style/LaunchTheme"
android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
android:hardwareAccelerated="true"
android:windowSoftInputMode="adjustResize">
<!-- Specifies an Android theme to apply to this Activity as soon as
the Android process has started. This theme is visible to the user
while the Flutter UI initializes. After that, this theme continues
to determine the Window background behind the Flutter UI. -->
<meta-data
android:name="io.flutter.embedding.android.NormalTheme"
android:resource="@style/NormalTheme"
/>
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Don't delete the meta-data below.
This is used by the Flutter tool to generate GeneratedPluginRegistrant.java -->
<meta-data
android:name="flutterEmbedding"
android:value="2" />
<!-- WIDGETS -->
<receiver
android:name="dev.fluttercommunity.plus.homewidget.HomeWidgetBackgroundReceiver"
android:exported="true"
>
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
</receiver>
<receiver android:name=".WeatherWidgetProvider" android:exported="true" android:label="Current horizontal pill">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/weather_widget_info" />
</receiver>
<receiver android:name=".WeatherWidgetCastProvider" android:exported="true" android:label="Current + hourly + daily">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/weather_widget_info_cast" />
</receiver>
<receiver android:name=".PillWidgetProvider" android:exported="true" android:label="Current pill">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/pill_widget_info" />
</receiver>
<receiver android:name=".ClockHourlyWidgetProvider" android:exported="true" android:label="Clock + hourly + current">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/clock_hourly_info" />
</receiver>
<receiver android:name=".DateCurrentWidgetProvider" android:exported="true" android:label="Date + Current">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/date_temp_widget_info" />
</receiver>
<activity android:name=".clockDateWidgetConfigActivity"
android:theme="@style/Theme.widgetsThemeConfigs"
android:exported="true">
</activity>
<receiver android:name=".clockDateWidgetProvider" android:exported="true" android:label="Glance">
<intent-filter>
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
</intent-filter>
<meta-data
android:name="android.appwidget.provider"
android:resource="@xml/clockdate_widget_info" />
</receiver>
<service
android:name="androidx.work.impl.foreground.SystemForegroundService"
android:foregroundServiceType="dataSync"
android:exported="false"
tools:node="merge" />
<service
android:name=".WeatherPersistentNotificationService"
android:exported="false"
android:foregroundServiceType="dataSync" />
<!-- WIDGETS END -->
</application>
<!-- Required to query activities that can process text, see:
https://developer.android.com/training/package-visibility and
https://developer.android.com/reference/android/content/Intent#ACTION_PROCESS_TEXT.
In particular, this is used by the Flutter engine in io.flutter.plugin.text.ProcessTextPlugin. -->
<queries>
<intent>
<action android:name="android.intent.action.PROCESS_TEXT"/>
<data android:mimeType="text/plain"/>
</intent>
</queries>
</manifest>
@@ -1,32 +0,0 @@
package com.pranshulgg.weather_master_app
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.PowerManager
import android.provider.Settings
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel
class BatteryOptimizationHandler(private val context: Context) : MethodChannel.MethodCallHandler {
override fun onMethodCall(call: MethodCall, result: MethodChannel.Result) {
when (call.method) {
"isIgnoringBatteryOptimizations" -> {
val pm = context.getSystemService(Context.POWER_SERVICE) as PowerManager
val isIgnoring = pm.isIgnoringBatteryOptimizations(context.packageName)
result.success(isIgnoring)
}
"requestIgnoreBatteryOptimizations" -> {
val intent = Intent(Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS)
intent.data = Uri.parse("package:${context.packageName}")
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
context.startActivity(intent)
result.success(null)
}
else -> result.notImplemented()
}
}
}
@@ -1,154 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.RemoteViews
import android.app.PendingIntent
import android.content.Intent
import android.provider.AlarmClock
import android.provider.CalendarContract
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class ClockHourlyWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
for (id in ids) {
updateWidget(context, manager, id, null)
}
}
override fun onAppWidgetOptionsChanged(
context: Context,
manager: AppWidgetManager,
id: Int,
newOptions: Bundle?
) {
updateWidget(context, manager, id, newOptions)
super.onAppWidgetOptionsChanged(context, manager, id, newOptions)
}
private fun updateWidget(
context: Context,
manager: AppWidgetManager,
id: Int,
newOptions: Bundle?
) {
val views = RemoteViews(context.packageName, R.layout.clock_date_hourly)
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
val conditionName = prefs.getString("locationCurrentConditon", "--")
val locationName = prefs.getString("locationNameWidget", "--")
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
val max = prefs.getString("todayMax", "--")
val min = prefs.getString("todayMin", "--")
views.setTextViewText(R.id.current_widget_temp_cast_clock_hourly, "$temp°")
// views.setTextViewText(R.id.temp_high_cast_clock_hourly, "$max° •")
// views.setTextViewText(R.id.temp_low_cast_clock_hourly, " $min°")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.widget_icon_hourly_cast_clock_hourly, iconRes)
val containerId = R.id.hourly_cast_clock_hourly
views.removeAllViews(containerId)
val options = newOptions ?: manager.getAppWidgetOptions(id)
val minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
val widgetSize = when {
minWidth > 300 -> WidgetSize.LARGE
minWidth > 250 -> WidgetSize.MEDIUM
else -> WidgetSize.SMALL
}
when (widgetSize) {
WidgetSize.LARGE -> {
views.setTextViewText(R.id.weather_condition_current_clock_hourly, conditionName)
// views.setTextViewText(R.id.current_widget_locationName, locationName)
views.setViewVisibility(R.id.weather_condition_current_clock_hourly, View.VISIBLE)
// views.setViewVisibility(R.id.current_widget_locationName, View.VISIBLE)
}
WidgetSize.MEDIUM -> {
views.setTextViewText(R.id.weather_condition_current_clock_hourly, conditionName)
views.setViewVisibility(R.id.weather_condition_current_clock_hourly, View.VISIBLE)
// views.setViewVisibility(R.id.current_widget_locationName, View.GONE)
}
WidgetSize.SMALL -> {
views.setViewVisibility(R.id.weather_condition_current_clock_hourly, View.GONE)
// views.setViewVisibility(R.id.current_widget_locationName, View.GONE)
}
}
val numItems = when (widgetSize) {
WidgetSize.LARGE -> 4
WidgetSize.MEDIUM -> 2
WidgetSize.SMALL -> 0
}
for (i in 0 until numItems) {
val hTemp = prefs.getString("hourly_temp_$i", "--")
val hTime = prefs.getString("hourly_time_$i", "--") ?: "--"
val hCode = prefs.getString("hourly_code_$i", "--")
val itemView = RemoteViews(context.packageName, R.layout.hourly_item)
itemView.setTextViewText(R.id.hourly_temp, "$hTemp°")
itemView.setTextViewText(R.id.hourly_time, hTime)
val hourlyIcon = WeatherIconMapper.getIconResource(hCode, isDay)
itemView.setImageViewResource(R.id.hourly_icon, hourlyIcon)
views.addView(containerId, itemView)
}
val calendarUri = CalendarContract.CONTENT_URI.buildUpon().appendPath("time").build()
val calendarIntent = Intent(Intent.ACTION_VIEW).apply {
data = calendarUri
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
val calendarPendingIntent = PendingIntent.getActivity(
context,
1,
calendarIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.clockTextHourlyDate, calendarPendingIntent)
val clockIntent = Intent(AlarmClock.ACTION_SHOW_ALARMS)
val pendingIntentTime = PendingIntent.getActivity(
context,
0,
clockIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.clockTextHourlyTime, pendingIntentTime)
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root_cast_clock_hourly, pendingIntent)
manager.updateAppWidget(id, views)
}
private enum class WidgetSize {
LARGE, MEDIUM, SMALL
}
}
@@ -1,67 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.widget.RemoteViews
import android.app.PendingIntent
import android.content.Intent
import android.provider.CalendarContract
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class DateCurrentWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
for (id in ids) {
val views = RemoteViews(context.packageName, R.layout.date_current_temp_widget)
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
val conditionName = prefs.getString("locationCurrentConditon", "--")
// Prevents crash when isDayWidget was stored as Boolean instead of String
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
views.setTextViewText(R.id.condition_current_time_date_temp, conditionName)
views.setTextViewText(R.id.temp_time_temp_date_current, "$temp° • ")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.current_widget_temp_date_time_img, iconRes)
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val calendarUri = CalendarContract.CONTENT_URI.buildUpon().appendPath("time").build()
val calendarIntent = Intent(Intent.ACTION_VIEW).apply {
data = calendarUri
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
val calendarPendingIntent = PendingIntent.getActivity(
context,
1,
calendarIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.current_widget_date, calendarPendingIntent)
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root_date_temp, pendingIntent)
manager.updateAppWidget(id, views)
}
}
}
@@ -1,98 +0,0 @@
package com.pranshulgg.weather_master_app
import android.content.Context
import android.location.Address
import android.location.Geocoder
import android.os.Build
import android.os.Handler
import android.os.Looper
object GeocodeHelper {
fun reverseGeocode(
context: Context,
latitude: Double,
longitude: Double,
callback: (Map<String, String>) -> Unit
) {
val mainHandler = Handler(Looper.getMainLooper())
val geocoder = Geocoder(context)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
geocoder.getFromLocation(
latitude,
longitude,
1,
object : Geocoder.GeocodeListener {
override fun onGeocode(addresses: MutableList<Address>) {
val address = addresses.firstOrNull()
val city =
address?.locality
?: address?.subLocality
?: address?.subAdminArea
?: address?.adminArea
?: address?.featureName
?: "Current Location"
val country =
address?.countryName
?: address?.countryCode
?: ""
mainHandler.post {
callback(mapOf("city" to city, "country" to country))
}
}
override fun onError(errorMessage: String?) {
mainHandler.post {
callback(
mapOf(
"city" to "Current Location",
"country" to ""
)
)
}
}
}
)
} else {
Thread {
val result = try {
val addresses = geocoder.getFromLocation(latitude, longitude, 1)
if (!addresses.isNullOrEmpty()) {
val address = addresses[0]
val city =
address.locality
?: address.subLocality
?: address.subAdminArea
?: address.adminArea
?: address.featureName
?: "Current Location"
val country =
address.countryName
?: address.countryCode
?: ""
mapOf("city" to city, "country" to country)
} else {
mapOf("city" to "Current Location", "country" to "")
}
} catch (e: Exception) {
mapOf("city" to "Current Location", "country" to "")
}
mainHandler.post {
callback(result)
}
}.start()
}
}
}
@@ -1,150 +0,0 @@
package com.pranshulgg.weather_master_app
import android.Manifest
import android.app.Activity
import android.content.Context
import android.content.pm.PackageManager
import android.location.Location
import android.location.LocationListener
import android.location.LocationManager
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.util.Log
import androidx.core.app.ActivityCompat
class LocationHelper(private val activity: Activity) {
private val locationManager =
activity.getSystemService(Context.LOCATION_SERVICE) as LocationManager
private var pendingCallback: LocationResult? = null
private var listener: LocationListener? = null
private val handler = Handler(Looper.getMainLooper())
companion object {
private const val LOCATION_REQUEST_CODE = 999
private const val TIMEOUT_MS = 60_000L
}
fun getCurrentPosition(callback: LocationResult) {
pendingCallback = callback
val hasFine = ActivityCompat.checkSelfPermission(
activity, Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
val hasCoarse = ActivityCompat.checkSelfPermission(
activity, Manifest.permission.ACCESS_COARSE_LOCATION
) == PackageManager.PERMISSION_GRANTED
if (!hasFine && !hasCoarse) {
ActivityCompat.requestPermissions(
activity,
arrayOf(
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION
),
LOCATION_REQUEST_CODE
)
return
}
val lastLocation = when {
hasFine -> locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER)
?: locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
hasCoarse -> locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)
else -> null
} ?: locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER)
lastLocation?.let {
callback.onSuccess(it.latitude, it.longitude)
return
}
val providersToUse = mutableListOf<String>()
if (hasFine && locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
providersToUse.add(LocationManager.GPS_PROVIDER)
}
if (hasCoarse && locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
providersToUse.add(LocationManager.NETWORK_PROVIDER)
}
if (locationManager.isProviderEnabled(LocationManager.PASSIVE_PROVIDER)) {
providersToUse.add(LocationManager.PASSIVE_PROVIDER)
}
if (providersToUse.isEmpty()) {
callback.onFailure("No location provider available for granted permission")
return
}
listener = object : LocationListener {
override fun onLocationChanged(location: Location) {
Log.d("LocationHelper", "Location received: ${location.latitude}, ${location.longitude}")
pendingCallback?.onSuccess(location.latitude, location.longitude)
removeUpdates()
}
override fun onProviderEnabled(provider: String) {}
override fun onProviderDisabled(provider: String) {}
override fun onStatusChanged(provider: String?, status: Int, extras: Bundle?) {}
}
providersToUse.forEach { provider ->
try {
locationManager.requestLocationUpdates(
provider,
1000L,
0f,
listener!!
)
} catch (e: SecurityException) {
Log.e("LocationHelper", "Permission issue for $provider: $e")
} catch (e: Exception) {
Log.e("LocationHelper", "Failed to request updates for $provider: $e")
}
}
handler.postDelayed({
pendingCallback?.onFailure("Location timeout")
removeUpdates()
}, TIMEOUT_MS)
}
private fun removeUpdates() {
listener?.let { locationManager.removeUpdates(it) }
listener = null
pendingCallback = null
}
fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
if (requestCode != LOCATION_REQUEST_CODE) return
val hasFine = ActivityCompat.checkSelfPermission(
activity, Manifest.permission.ACCESS_FINE_LOCATION
) == PackageManager.PERMISSION_GRANTED
val hasCoarse = ActivityCompat.checkSelfPermission(
activity, Manifest.permission.ACCESS_COARSE_LOCATION
) == PackageManager.PERMISSION_GRANTED
val callback = pendingCallback
pendingCallback = null
if (hasFine || hasCoarse) {
callback?.let { getCurrentPosition(it) }
} else {
callback?.onFailure("Location permission denied")
}
}
interface LocationResult {
fun onSuccess(latitude: Double, longitude: Double)
fun onFailure(error: String)
}
}
@@ -1,212 +0,0 @@
package com.pranshulgg.weather_master_app
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import androidx.annotation.RequiresApi
import androidx.work.*
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import java.util.concurrent.TimeUnit
import android.os.Bundle
import android.net.ConnectivityManager
class MainActivity : FlutterActivity() {
private val BATTERY_CHANNEL = "com.pranshulgg.battery_optimization"
private val SERVICE_CHANNEL = "com.pranshulgg.weather_master_app/service"
private val LOCATION_CHANNEL = "native_location"
private val REQUEST_CODE_POST_NOTIFICATIONS = 1001
private var permissionResultPending: MethodChannel.Result? = null
private lateinit var locationHelper: LocationHelper
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
locationHelper = LocationHelper(this)
}
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
WorkInfoPlugin(this).registerWith(flutterEngine)
// Battery optimization channel
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, BATTERY_CHANNEL)
.setMethodCallHandler(BatteryOptimizationHandler(this))
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, LOCATION_CHANNEL).setMethodCallHandler { call, result ->
when (call.method) {
"getCurrentPosition" -> {
locationHelper.getCurrentPosition(object : LocationHelper.LocationResult {
override fun onSuccess(latitude: Double, longitude: Double) {
result.success(mapOf(
"latitude" to latitude.toString(),
"longitude" to longitude.toString()
))
}
override fun onFailure(error: String) {
result.error("LOCATION_ERROR", error, null)
}
})
}
"reverseGeocode" -> {
val lat = call.argument<Double>("latitude") ?: 0.0
val lon = call.argument<Double>("longitude") ?: 0.0
// Use the new async callback version
GeocodeHelper.reverseGeocode(this, lat, lon) { geo ->
result.success(geo)
}
}
else -> result.notImplemented()
}
}
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, SERVICE_CHANNEL)
.setMethodCallHandler { call, result ->
when (call.method) {
"checkNotificationPermission" -> {
result.success(isNotificationPermissionGranted())
}
"requestNotificationPermission" -> {
requestNotificationPermission(result)
}
"startService" -> {
val intervalMinutes = when (val value = call.argument<Any>("intervalMinutes")) {
is Int -> value.toLong()
is Long -> value
else -> 90L
}
scheduleWeatherUpdates(this, intervalMinutes)
result.success(true)
}
"stopService" -> {
cancelWeatherUpdates(this)
result.success(true)
}
"isOnline" -> {
result.success(isOnline(this))
}
"startPersistentNotification" -> {
val intent = Intent(this, WeatherPersistentNotificationService::class.java)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent)
} else {
startService(intent)
}
result.success(true)
}
"stopPersistentNotification" -> {
stopService(Intent(this, WeatherPersistentNotificationService::class.java))
result.success(true)
}
else -> result.notImplemented()
}
}
}
private fun isNotificationPermissionGranted(): Boolean {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
checkSelfPermission(android.Manifest.permission.POST_NOTIFICATIONS) == PackageManager.PERMISSION_GRANTED
} else {
// Below Android 13, permission not needed
true
}
}
private fun isOnline(context: Context): Boolean {
val cm = context.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
val capabilities = cm.getNetworkCapabilities(cm.activeNetwork)
return capabilities != null
}
private fun requestNotificationPermission(result: MethodChannel.Result) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
if (!isNotificationPermissionGranted()) {
permissionResultPending = result
requestPermissions(
arrayOf(android.Manifest.permission.POST_NOTIFICATIONS),
REQUEST_CODE_POST_NOTIFICATIONS
)
} else {
result.success(true)
}
} else {
result.success(true)
}
}
override fun onRequestPermissionsResult(
requestCode: Int,
permissions: Array<out String>,
grantResults: IntArray
) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults)
locationHelper.onRequestPermissionsResult(requestCode, permissions, grantResults)
if (requestCode == REQUEST_CODE_POST_NOTIFICATIONS) {
if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
permissionResultPending?.success(true)
} else {
permissionResultPending?.success(false)
}
permissionResultPending = null
}
}
@RequiresApi(Build.VERSION_CODES.M)
private fun scheduleWeatherUpdates(context: Context, intervalMinutes: Long) {
// Cancel existing work first to avoid duplicates
WorkManager.getInstance(context).cancelUniqueWork("weather_update_work")
// Define constraints - only run if network connected
val constraints = Constraints.Builder()
.setRequiredNetworkType(NetworkType.CONNECTED)
.build()
// Create periodic work request
val periodicWorkRequest = PeriodicWorkRequestBuilder<WeatherUpdateWorker>(
intervalMinutes, TimeUnit.MINUTES
)
.setConstraints(constraints)
.setInitialDelay(5, TimeUnit.SECONDS) // initial quick start delay
.build()
WorkManager.getInstance(context).enqueueUniquePeriodicWork(
"weather_update_work",
ExistingPeriodicWorkPolicy.REPLACE,
periodicWorkRequest
)
}
private fun cancelWeatherUpdates(context: Context) {
WorkManager.getInstance(context).cancelUniqueWork("weather_update_work")
}
}
@@ -1,75 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.os.Bundle
import android.widget.RemoteViews
import android.app.PendingIntent
import android.content.Intent
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class PillWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
for (id in ids) {
updateWidget(context, manager, id)
}
}
override fun onAppWidgetOptionsChanged(
context: Context,
appWidgetManager: AppWidgetManager,
appWidgetId: Int,
newOptions: Bundle
) {
super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId, newOptions)
updateWidget(context, appWidgetManager, appWidgetId)
}
private fun updateWidget(context: Context, manager: AppWidgetManager, id: Int) {
val options = manager.getAppWidgetOptions(id)
val minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
val minHeight = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
val layoutId = when {
minWidth > 100 && minHeight < 100 -> R.layout.pill_widget_mid
minWidth > 300 -> R.layout.pill_widget_large
minWidth > 200 && minWidth <= 250 && minHeight > 200 && minHeight <= 250 -> R.layout.pill_widget_mid_vert
else -> R.layout.pill_widget
}
val views = RemoteViews(context.packageName, layoutId)
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
views.setTextViewText(R.id.current_widget_temp_pill_pixel, "$temp°")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.widget_icon_current_pill_pixel, iconRes)
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root_pill, pendingIntent)
// views.setOnClickPendingIntent(R.id.widget_root_glance, pendingIntent)
manager.updateAppWidget(id, views)
}
}
@@ -1,96 +0,0 @@
package com.pranshulgg.weather_master_app.util
import com.pranshulgg.weather_master_app.R
object WeatherIconMapper {
private val iconMap = mapOf(
// 0: Clear sky
"0_1" to R.drawable.sunny,
"0_0" to R.drawable.clear_night,
// 1,2,3: Mainly clear, partly cloudy, overcast
"1_1" to R.drawable.mostly_sunny,
"1_0" to R.drawable.mostly_clear_night,
"2_1" to R.drawable.partly_cloudy,
"2_0" to R.drawable.partly_cloudy_night,
"3_1" to R.drawable.cloudy,
"3_0" to R.drawable.cloudy,
// 45,48: Fog
"45_1" to R.drawable.haze_fog_dust_smoke,
"45_0" to R.drawable.haze_fog_dust_smoke,
"48_1" to R.drawable.haze_fog_dust_smoke,
"48_0" to R.drawable.haze_fog_dust_smoke,
// 51,53,55: Drizzle
"51_1" to R.drawable.drizzle,
"51_0" to R.drawable.drizzle,
"53_1" to R.drawable.drizzle,
"53_0" to R.drawable.drizzle,
"55_1" to R.drawable.drizzle,
"55_0" to R.drawable.drizzle,
// 56,57: Freezing Drizzle
"56_1" to R.drawable.wintry_mix_rain_snow,
"56_0" to R.drawable.wintry_mix_rain_snow,
"57_1" to R.drawable.wintry_mix_rain_snow,
"57_0" to R.drawable.wintry_mix_rain_snow,
// 61,63,65: Rain
"61_1" to R.drawable.scattered_showers_day,
"61_0" to R.drawable.scattered_showers_night,
"63_1" to R.drawable.showers_rain,
"63_0" to R.drawable.showers_rain,
"65_1" to R.drawable.heavy_rain,
"65_0" to R.drawable.heavy_rain,
// 66,67: Freezing Rain
"66_1" to R.drawable.wintry_mix_rain_snow,
"66_0" to R.drawable.wintry_mix_rain_snow,
"67_1" to R.drawable.wintry_mix_rain_snow,
"67_0" to R.drawable.wintry_mix_rain_snow,
// 71,73,75: Snowfall
"71_1" to R.drawable.snow_showers_snow,
"71_0" to R.drawable.heavy_snow,
"73_1" to R.drawable.heavy_snow,
"73_0" to R.drawable.heavy_snow,
"75_1" to R.drawable.heavy_snow,
"75_0" to R.drawable.heavy_snow,
// 77: Snow grains
"77_1" to R.drawable.flurries,
"77_0" to R.drawable.flurries,
// 80,81,82: Rain showers
"80_1" to R.drawable.scattered_showers_day,
"80_0" to R.drawable.scattered_showers_night,
"81_1" to R.drawable.showers_rain,
"81_0" to R.drawable.showers_rain,
"82_1" to R.drawable.heavy_rain,
"82_0" to R.drawable.heavy_rain,
// 85,86: Snow showers
"85_1" to R.drawable.flurries,
"85_0" to R.drawable.flurries,
"86_1" to R.drawable.heavy_snow,
"86_0" to R.drawable.heavy_snow,
// 95: Thunderstorm (no hail)
"95_1" to R.drawable.isolated_scattered_tstorms_day,
"95_0" to R.drawable.isolated_scattered_tstorms_night,
// 96,99: Thunderstorm with hail
"96_1" to R.drawable.strong_tstorms,
"96_0" to R.drawable.strong_tstorms,
"99_1" to R.drawable.strong_tstorms,
"99_0" to R.drawable.strong_tstorms
)
fun getIconResource(code: String?, isDay: String?): Int {
val key = "${code ?: "-1"}_${isDay ?: "-1"}"
return iconMap[key] ?: R.drawable.showers_rain // fallback
}
}
@@ -1,125 +0,0 @@
package com.pranshulgg.weather_master_app
import android.app.*
import android.content.Context
import android.content.Intent
import android.graphics.Bitmap
import android.graphics.BitmapFactory
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.Paint
import android.graphics.Typeface
import android.os.Build
import android.os.IBinder
import androidx.core.app.NotificationCompat
import androidx.core.graphics.drawable.IconCompat
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class WeatherPersistentNotificationService : Service() {
companion object {
const val CHANNEL_ID = "WeatherPersistentChannel"
const val NOTIFICATION_ID = 424242
}
override fun onCreate() {
super.onCreate()
createNotificationChannel()
}
override fun onStartCommand(intent: Intent?, flags: Int, startId: Int): Int {
startForeground(NOTIFICATION_ID, buildNotification())
return START_STICKY
}
override fun onDestroy() {
stopForeground(true)
super.onDestroy()
}
override fun onBind(intent: Intent?): IBinder? = null
private fun buildNotification(): Notification {
val prefs = getSharedPreferences(
"HomeWidgetPreferences",
Context.MODE_PRIVATE
)
val temp = prefs.getString("temperatureCurrentPill", "--")
val condition = prefs.getString("locationCurrentConditon", "--")
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
val code = prefs.getString("weather_codeCurrentPill", "--")
val min = prefs.getString("todayMin", "--")
val max = prefs.getString("todayMax", "--")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
val largeIcon = BitmapFactory.decodeResource(resources, iconRes)
val intent = packageManager.getLaunchIntentForPackage(packageName)
val pendingIntent = PendingIntent.getActivity(
this,
0,
intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
val tempIcon = createTempIcon(temp ?: "--")
return NotificationCompat.Builder(this, CHANNEL_ID)
// .setSmallIcon(R.drawable.ic_stat_cloud_download)
.setSmallIcon(tempIcon)
.setContentTitle("$temp° • $condition")
.setContentText("H: $max° • L: $min°")
.setLargeIcon(largeIcon)
.setOngoing(true)
.setOnlyAlertOnce(true)
.setPriority(NotificationCompat.PRIORITY_LOW)
.setContentIntent(pendingIntent)
.build()
}
private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
CHANNEL_ID,
"Persistent Weather",
NotificationManager.IMPORTANCE_LOW
)
getSystemService(NotificationManager::class.java)
.createNotificationChannel(channel)
}
}
}
private fun createTempIcon(temp: String): IconCompat {
val size = 128
val bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888)
val canvas = Canvas(bitmap)
val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
color = Color.WHITE
textSize = 96f
textAlign = Paint.Align.CENTER
typeface = Typeface.create(Typeface.DEFAULT, Typeface.BOLD)
}
val x = size / 2f
val y = size / 2f - (paint.descent() + paint.ascent()) / 2
canvas.drawText("${temp}°", x, y, paint)
return IconCompat.createWithBitmap(bitmap)
}
@@ -1,114 +0,0 @@
package com.pranshulgg.weather_master_app
import android.app.Notification
import android.app.NotificationChannel
import android.app.NotificationManager
import android.content.Context
import android.content.pm.PackageManager
import android.os.Build
import android.util.Log
import androidx.core.app.NotificationCompat
import androidx.work.CoroutineWorker
import androidx.work.ForegroundInfo
import androidx.work.WorkerParameters
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.embedding.engine.dart.DartExecutor
import io.flutter.FlutterInjector
import android.content.pm.ServiceInfo
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.withContext
class WeatherUpdateWorker(
appContext: Context,
workerParams: WorkerParameters
) : CoroutineWorker(appContext, workerParams) {
companion object {
private const val CHANNEL_ID = "WeatherUpdateChannel"
private const val NOTIFICATION_ID = 99999999
}
private var flutterEngine: FlutterEngine? = null
override suspend fun doWork(): Result {
setForeground(createForegroundInfo())
return try {
withContext(Dispatchers.Main) {
val loader = FlutterInjector.instance().flutterLoader()
if (!loader.initialized()) {
loader.startInitialization(applicationContext)
loader.ensureInitializationComplete(applicationContext, null)
}
flutterEngine = FlutterEngine(applicationContext).apply {
dartExecutor.executeDartEntrypoint(
DartExecutor.DartEntrypoint(
loader.findAppBundlePath(),
"workerUpdateWidget"
)
)
}
Log.d("WeatherWorker", "Dart entrypoint launched")
}
delay(6000)
withContext(Dispatchers.Main) {
flutterEngine?.destroy()
}
val prefs = applicationContext.getSharedPreferences("weather_prefs", Context.MODE_PRIVATE)
prefs.edit().putLong("last_weather_update", System.currentTimeMillis()).apply()
Result.success()
} catch (e: Exception) {
Log.e("WeatherWorker", "Error in worker", e)
withContext(Dispatchers.Main) {
flutterEngine?.destroy()
}
Result.retry()
}
}
private fun createForegroundInfo(): ForegroundInfo {
createNotificationChannel()
val notification: Notification = NotificationCompat.Builder(applicationContext, CHANNEL_ID)
.setContentTitle("Updating weather...")
.setContentText("")
.setSmallIcon(R.drawable.ic_stat_cloud_download)
.setOngoing(true)
.setProgress(0, 0, true)
.build()
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
ForegroundInfo(
NOTIFICATION_ID,
notification,
ServiceInfo.FOREGROUND_SERVICE_TYPE_DATA_SYNC
)
} else {
ForegroundInfo(NOTIFICATION_ID, notification)
}
}
private fun createNotificationChannel() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
val channel = NotificationChannel(
CHANNEL_ID,
"Weather Updates",
NotificationManager.IMPORTANCE_LOW
)
val manager = applicationContext.getSystemService(NotificationManager::class.java)
manager.createNotificationChannel(channel)
}
}
}
@@ -1,211 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.os.Bundle
import android.view.View
import android.widget.RemoteViews
import android.app.PendingIntent
import android.content.Intent
import android.util.Log
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
import java.time.LocalDate
import java.time.format.DateTimeFormatter
import java.time.format.TextStyle
import java.util.Locale
class WeatherWidgetCastProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
for (id in ids) {
updateWidget(context, manager, id, null)
}
}
override fun onAppWidgetOptionsChanged(
context: Context,
manager: AppWidgetManager,
id: Int,
newOptions: Bundle?
) {
updateWidget(context, manager, id, newOptions)
super.onAppWidgetOptionsChanged(context, manager, id, newOptions)
}
private fun updateWidget(
context: Context,
manager: AppWidgetManager,
id: Int,
newOptions: Bundle?
) {
val options = newOptions ?: manager.getAppWidgetOptions(id)
val reservedTopDp = 200
val perDailyItemDp = 70
val minHeightDp = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, 0)
val optionsCast = manager.getAppWidgetOptions(id)
val minHeight = optionsCast.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT)
val heightDp = getWidgetHeightDp(options)
val availableDp = (heightDp - reservedTopDp).coerceAtLeast(0)
val numDailyItems = (availableDp / perDailyItemDp).coerceIn(0, 4)
val layoutIdDaily = if (numDailyItems > 0) {
R.layout.widget_hourly_current_daily
} else {
R.layout.widget_hourly_current
}
val views = RemoteViews(context.packageName, layoutIdDaily)
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
val conditionName = prefs.getString("locationCurrentConditon", "--")
val locationName = prefs.getString("locationNameWidget", "--")
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
val max = prefs.getString("todayMax", "--")
val min = prefs.getString("todayMin", "--")
views.setTextViewText(R.id.current_widget_temp_cast, "$temp°")
views.setTextViewText(R.id.temp_high_cast, "$max° •")
views.setTextViewText(R.id.temp_low_cast, " $min°")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.widget_icon_hourly_cast, iconRes)
val containerId = R.id.hourly_cast
views.removeAllViews(containerId)
// Get widget size information
val minWidth = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_WIDTH)
// Determine widget size category
val widgetSize = when {
minWidth > 300 -> WidgetSize.LARGE // Show all elements
minWidth > 250 -> WidgetSize.MEDIUM // Hide location name
else -> WidgetSize.SMALL // Hide both location and condition
}
// Set visibility based on widget size
when (widgetSize) {
WidgetSize.LARGE -> {
views.setTextViewText(R.id.weather_condition_current, conditionName)
views.setTextViewText(R.id.current_widget_locationName, locationName)
views.setViewVisibility(R.id.weather_condition_current, View.VISIBLE)
views.setViewVisibility(R.id.current_widget_locationName, View.VISIBLE)
}
WidgetSize.MEDIUM -> {
views.setTextViewText(R.id.weather_condition_current, conditionName)
views.setViewVisibility(R.id.weather_condition_current, View.VISIBLE)
views.setViewVisibility(R.id.current_widget_locationName, View.GONE)
}
WidgetSize.SMALL -> {
views.setViewVisibility(R.id.weather_condition_current, View.GONE)
views.setViewVisibility(R.id.current_widget_locationName, View.GONE)
}
}
// Determine how many hourly items to show based on widget size
val numItems = when (widgetSize) {
WidgetSize.LARGE -> 4
WidgetSize.MEDIUM -> 2
WidgetSize.SMALL -> 0
}
// Add forecast items based on widget size
for (i in 0 until numItems) {
val hTemp = prefs.getString("hourly_temp_$i", "--")
val hTime = prefs.getString("hourly_time_$i", "--") ?: "--"
val hCode = prefs.getString("hourly_code_$i", "--")
val itemView = RemoteViews(context.packageName, R.layout.hourly_item)
itemView.setTextViewText(R.id.hourly_temp, "$hTemp°")
itemView.setTextViewText(R.id.hourly_time, hTime)
val hourlyIcon = WeatherIconMapper.getIconResource(hCode, isDay)
itemView.setImageViewResource(R.id.hourly_icon, hourlyIcon)
views.addView(containerId, itemView)
}
val dailyContainerId = R.id.daily_cast
views.removeAllViews(dailyContainerId)
for (i in 0 until numDailyItems) {
val dayMax = prefs.getString("day${i+1}Max", "--")
val dayMin = prefs.getString("day${i+1}Min", "--")
val dayCode = prefs.getString("day${i+1}Code", "--")
val dayCondition = prefs.getString("day${i+1}_condition", "--")
val dayDate = prefs.getString("day${i+1}Date", "--")
val weekday = try {
val date = LocalDate.parse("${LocalDate.now().year}/$dayDate", DateTimeFormatter.ofPattern("yyyy/M/d"))
date.dayOfWeek.getDisplayName(TextStyle.SHORT, Locale.getDefault())
} catch (e: Exception) {
dayDate
}
val dailyItem = RemoteViews(context.packageName, R.layout.daily_item)
dailyItem.setTextViewText(R.id.daily_time, weekday)
dailyItem.setTextViewText(R.id.daily_temp_max, "$dayMax°")
dailyItem.setTextViewText(R.id.daily_temp_min, "$dayMin°")
dailyItem.setTextViewText(R.id.daily_condition, "$dayCondition")
val dailyIcon = WeatherIconMapper.getIconResource(dayCode, isDay)
dailyItem.setImageViewResource(R.id.daily_icon, dailyIcon)
views.addView(dailyContainerId, dailyItem)
}
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root_cast, pendingIntent)
manager.updateAppWidget(id, views)
}
private enum class WidgetSize {
LARGE, MEDIUM, SMALL
}
fun getWidgetHeightDp(options: Bundle): Int {
val minH = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MIN_HEIGHT, 0)
val maxH = options.getInt(AppWidgetManager.OPTION_APPWIDGET_MAX_HEIGHT, 0)
return when {
maxH > 0 -> maxH
minH > 0 -> minH
else -> 300 // fallback default for broken launchers
}
}
}
@@ -1,63 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.widget.RemoteViews
import android.app.PendingIntent
import android.content.Intent
import android.os.Bundle
import android.util.TypedValue
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class WeatherWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
for (id in ids) {
val views = RemoteViews(context.packageName, R.layout.weather_widget)
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
// Prevents crash when isDayWidget was stored as Boolean instead of String
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
val max = prefs.getString("todayMax", "--")
val min = prefs.getString("todayMin", "--")
views.setTextViewText(R.id.current_widget_temp_pill, "$temp°")
views.setTextViewText(R.id.temp_high, "$max° •")
views.setTextViewText(R.id.temp_low, " $min°")
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.widget_icon_current_pill, iconRes)
views.setImageViewResource(R.id.widget_icon_current_pill, iconRes)
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root, pendingIntent)
manager.updateAppWidget(id, views)
}
}
}
@@ -1,68 +0,0 @@
package com.pranshulgg.weather_master_app
import android.content.Context
import androidx.work.WorkManager
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodChannel
import java.text.SimpleDateFormat
import java.util.*
class WorkInfoPlugin(private val context: Context) {
private val CHANNEL = "com.pranshulgg.workinfo/channel"
fun registerWith(flutterEngine: FlutterEngine) {
MethodChannel(flutterEngine.dartExecutor.binaryMessenger, CHANNEL).setMethodCallHandler { call, result ->
if (call.method == "getWorkInfoSummary") {
val uniqueWorkName = call.argument<String>("uniqueWorkName") ?: ""
val intervalMinutes = (call.argument<Number>("intervalMinutes")?.toLong()) ?: 15L
try {
// Call the member function here
val info = getWorkInfoSummary(uniqueWorkName, intervalMinutes)
result.success(info)
} catch (e: Exception) {
result.error("ERROR", e.message, null)
}
} else {
result.notImplemented()
}
}
}
private fun getWorkInfoSummary(uniqueWorkName: String, intervalMinutes: Long): Map<String, Any> {
val workInfos = WorkManager.getInstance(context).getWorkInfosForUniqueWork(uniqueWorkName).get()
if (workInfos.isEmpty()) return mapOf("error" to "No work info found.")
val info = workInfos[0]
val id = info.id.toString()
val tags = info.tags.toList()
val state = info.state.name
val attempt = info.runAttemptCount
val prefs = context.getSharedPreferences("weather_prefs", Context.MODE_PRIVATE)
val lastRunMillis = prefs.getLong("last_weather_update", System.currentTimeMillis())
val selectedTimeUnit = prefs.getString("selectedTimeUnit", "12 hr") ?: "12 hr"
val nextRunMillis = lastRunMillis + intervalMinutes * 60 * 1000
// Select time format based on preference
val timePattern = if (selectedTimeUnit == "24 hr") "yyyy-MM-dd HH:mm" else "yyyy-MM-dd hh:mm a"
val sdf = SimpleDateFormat(timePattern, Locale.getDefault())
val nextRunFormatted = sdf.format(Date(nextRunMillis))
return mapOf(
"Enqueued" to true,
"ID" to id,
"Work Tags" to tags,
"Current State" to state,
"Next Scheduled Run" to nextRunFormatted,
"Attempt Number" to attempt
)
}
}
@@ -1,79 +0,0 @@
package com.pranshulgg.weather_master_app
import android.app.Activity
import android.appwidget.AppWidgetManager
import android.content.Intent
import android.os.Bundle
import android.widget.Button
import android.widget.CheckBox
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextClock
import android.widget.TextView
import com.google.android.material.slider.Slider
class clockDateWidgetConfigActivity : Activity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.widget_config_activity)
val previewLayout = findViewById<LinearLayout>(R.id.widget_preview)
val previewClock = findViewById<TextClock>(R.id.preview_text_clock)
val previewDate = findViewById<TextView>(R.id.preview_date)
val previewTemp = findViewById<TextView>(R.id.preview_temp)
val previewCondition = findViewById<TextView>(R.id.preview_condition)
val previewIcon = findViewById<ImageView>(R.id.preview_weather_icon)
val showClockCheck = findViewById<CheckBox>(R.id.showClockCheck)
val sizeSlider = findViewById<Slider>(R.id.clockSizeSeek)
val sizeText = findViewById<TextView>(R.id.clockSizeText)
val saveButton = findViewById<Button>(R.id.saveWidgetBtn)
fun updatePreview() {
previewClock.textSize = sizeSlider.value
previewClock.visibility = if (showClockCheck.isChecked) TextView.VISIBLE else TextView.GONE
previewTemp.text = "29° • "
previewCondition.text = getString(R.string.clear_sky)
previewDate.text = java.text.SimpleDateFormat("EEE, MMM d").format(System.currentTimeMillis())
}
sizeSlider.addOnChangeListener { _, _, _ -> updatePreview() }
showClockCheck.setOnCheckedChangeListener { _, _ -> updatePreview() }
updatePreview()
val appWidgetId = intent.extras?.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID, AppWidgetManager.INVALID_APPWIDGET_ID)
if (appWidgetId == null || appWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {
finish()
return
}
saveButton.setOnClickListener {
val prefs = getSharedPreferences("HomeWidgetPreferences", MODE_PRIVATE)
prefs.edit().apply {
putBoolean("showClock", showClockCheck.isChecked)
putFloat("clockSize", sizeSlider.value)
apply()
}
val manager = AppWidgetManager.getInstance(this)
clockDateWidgetProvider().onUpdate(this, manager, intArrayOf(appWidgetId))
val result = Intent().apply { putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID, appWidgetId) }
setResult(RESULT_OK, result)
finish()
}
}
}
@@ -1,87 +0,0 @@
package com.pranshulgg.weather_master_app
import android.appwidget.AppWidgetManager
import android.appwidget.AppWidgetProvider
import android.content.Context
import android.content.Intent
import android.util.TypedValue
import android.view.View
import android.widget.RemoteViews
import android.app.PendingIntent
import android.provider.AlarmClock
import android.provider.CalendarContract
import com.pranshulgg.weather_master_app.util.WeatherIconMapper
class clockDateWidgetProvider : AppWidgetProvider() {
override fun onUpdate(context: Context, manager: AppWidgetManager, ids: IntArray) {
val prefs = context.getSharedPreferences("HomeWidgetPreferences", Context.MODE_PRIVATE)
val showClock = prefs.getBoolean("showClock", true)
val clockSize = prefs.getFloat("clockSize", 60f)
for (id in ids) {
val views = RemoteViews(context.packageName, R.layout.glance_widget)
// Update temperature & condition
val temp = prefs.getString("temperatureCurrentPill", "--")
val code = prefs.getString("weather_codeCurrentPill", "--")
val conditionName = prefs.getString("locationCurrentConditon", "--")
val rawIsDay = prefs.all["isDayWidget"]
val isDay = when (rawIsDay) {
is String -> rawIsDay
is Boolean -> if (rawIsDay) "1" else "0"
else -> "1"
}
views.setTextViewText(R.id.current_glance_temp, "$temp° • ")
views.setTextViewText(R.id.current_glance_condition, conditionName)
val iconRes = WeatherIconMapper.getIconResource(code, isDay)
views.setImageViewResource(R.id.current_img_glance, iconRes)
if (showClock) {
views.setViewVisibility(R.id.widget_text_clock_glance, View.VISIBLE)
views.setTextViewTextSize(R.id.widget_text_clock_glance, TypedValue.COMPLEX_UNIT_SP, clockSize)
val clockIntent = Intent(AlarmClock.ACTION_SHOW_ALARMS)
val pendingIntent = PendingIntent.getActivity(
context,
0,
clockIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_text_clock_glance, pendingIntent)
} else {
views.setViewVisibility(R.id.widget_text_clock_glance, View.GONE)
}
val calendarUri = CalendarContract.CONTENT_URI.buildUpon().appendPath("time").build()
val calendarIntent = Intent(Intent.ACTION_VIEW).apply {
data = calendarUri
flags = Intent.FLAG_ACTIVITY_NEW_TASK
}
val calendarPendingIntent = PendingIntent.getActivity(
context,
1,
calendarIntent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.current_widget_date, calendarPendingIntent)
val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
}
val pendingIntent = PendingIntent.getActivity(
context, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT or PendingIntent.FLAG_IMMUTABLE
)
views.setOnClickPendingIntent(R.id.widget_root_glance, pendingIntent)
manager.updateAppWidget(id, views)
}
}
}
@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="?android:colorBackground" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 40 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

@@ -1,40 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="350dp"
android:height="120dp"
android:viewportWidth="350"
android:viewportHeight="120">
<path
android:pathData="M60,0L290,0A60,60 0,0 1,350 60L350,60A60,60 0,0 1,290 120L60,120A60,60 0,0 1,0 60L0,60A60,60 0,0 1,60 0z"
android:fillColor="#15130B"/>
<path
android:pathData="M102.33,47.5C102.33,61.43 91.23,72.79 77.33,73.31V73.33H42.33V73.33H42.1C33.02,73.33 25.67,66.03 25.67,57.02C25.67,48.01 33.02,40.7 42.1,40.7C45.24,40.7 48.19,41.58 50.69,43.11C52.78,30.93 63.47,21.67 76.32,21.67C90.69,21.67 102.33,33.23 102.33,47.5Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="89.55"
android:centerY="68.94"
android:gradientRadius="60.12"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M50.67,75L43.6,81.83C42.67,82.71 41.93,83.78 41.43,84.95C40.93,86.13 40.67,87.39 40.67,88.67C40.67,89.95 40.93,91.21 41.43,92.39C41.93,93.56 42.67,94.62 43.6,95.5C47.5,99.28 53.83,99.28 57.74,95.5C58.67,94.62 59.41,93.55 59.91,92.37C60.42,91.18 60.67,89.91 60.67,88.63C60.66,87.34 60.39,86.07 59.88,84.89C59.36,83.71 58.61,82.65 57.67,81.78L50.67,75ZM64,53.33L56.93,60.17C56,61.05 55.27,62.11 54.76,63.28C54.26,64.46 54,65.72 54,67C54,68.28 54.26,69.54 54.76,70.72C55.27,71.89 56,72.96 56.93,73.84C60.83,77.61 67.17,77.61 71.07,73.84C72,72.95 72.74,71.88 73.24,70.7C73.75,69.52 74.01,68.24 74,66.96C73.99,65.67 73.73,64.4 73.21,63.22C72.7,62.05 71.95,60.99 71.01,60.11L64,53.33ZM77.33,75L70.26,81.83C69.34,82.71 68.6,83.78 68.1,84.95C67.59,86.13 67.33,87.39 67.33,88.67C67.33,89.95 67.59,91.21 68.1,92.39C68.6,93.56 69.34,94.62 70.26,95.5C74.17,99.28 80.5,99.28 84.4,95.5C85.33,94.62 86.07,93.55 86.58,92.37C87.08,91.18 87.34,89.91 87.33,88.63C87.33,87.34 87.06,86.07 86.54,84.89C86.03,83.71 85.28,82.65 84.34,81.78L77.33,75ZM35.67,56.67L28.59,63.5C27.67,64.38 26.93,65.44 26.43,66.62C25.93,67.79 25.67,69.06 25.67,70.33C25.67,71.61 25.93,72.88 26.43,74.05C26.93,75.23 27.67,76.29 28.59,77.17C32.5,80.94 38.83,80.94 42.74,77.17C43.66,76.29 44.4,75.23 44.9,74.05C45.41,72.88 45.67,71.61 45.67,70.33C45.67,69.06 45.41,67.79 44.9,66.62C44.4,65.44 43.66,64.38 42.74,63.5L42.67,63.44L35.67,56.67ZM92.33,53.33L85.26,60.17C84.34,61.05 83.6,62.11 83.1,63.28C82.59,64.46 82.33,65.72 82.33,67C82.33,68.28 82.59,69.54 83.1,70.72C83.6,71.89 84.34,72.95 85.26,73.83C89.17,77.61 95.5,77.61 99.4,73.83C100.33,72.95 101.07,71.89 101.57,70.72C102.07,69.54 102.33,68.28 102.33,67C102.33,65.72 102.07,64.46 101.57,63.28C101.07,62.11 100.33,61.05 99.4,60.17L99.34,60.11L92.33,53.33Z"
android:fillColor="#0B57D0"/>
<path
android:pathData="M230.5,68.95V63.7L245.9,49.97C247.1,48.91 247.93,47.9 248.4,46.95C248.87,46 249.1,45.08 249.1,44.2C249.1,43 248.84,41.93 248.32,41C247.81,40.05 247.09,39.3 246.18,38.75C245.27,38.2 244.23,37.92 243.05,37.92C241.8,37.92 240.69,38.22 239.73,38.8C238.77,39.37 238.03,40.13 237.5,41.08C236.97,42.03 236.72,43.05 236.75,44.15H230.55C230.55,41.75 231.08,39.66 232.15,37.88C233.23,36.09 234.72,34.71 236.6,33.72C238.5,32.74 240.69,32.25 243.18,32.25C245.48,32.25 247.54,32.77 249.38,33.8C251.21,34.82 252.65,36.23 253.7,38.05C254.75,39.85 255.27,41.92 255.27,44.28C255.27,45.99 255.04,47.43 254.57,48.6C254.11,49.77 253.41,50.84 252.48,51.83C251.56,52.81 250.42,53.9 249.05,55.1L238.13,64.78L237.57,63.28H255.27V68.95H230.5ZM275.26,69V63.05H259.31V57.42L270.83,33H277.71L266.18,57.42H275.26V48.05H281.36V57.42H284.73V63.05H281.36V69H275.26ZM297.73,50.25C296.08,50.25 294.57,49.85 293.2,49.05C291.84,48.23 290.74,47.15 289.93,45.8C289.13,44.43 288.73,42.92 288.73,41.25C288.73,39.62 289.14,38.12 289.98,36.75C290.81,35.38 291.91,34.29 293.28,33.47C294.64,32.66 296.13,32.25 297.73,32.25C299.38,32.25 300.88,32.66 302.23,33.47C303.6,34.28 304.69,35.36 305.5,36.72C306.32,38.08 306.73,39.58 306.73,41.25C306.73,42.92 306.32,44.43 305.5,45.8C304.69,47.15 303.6,48.23 302.23,49.05C300.88,49.85 299.38,50.25 297.73,50.25ZM297.73,45.1C298.43,45.1 299.07,44.92 299.65,44.58C300.24,44.22 300.7,43.76 301.05,43.17C301.4,42.59 301.58,41.95 301.58,41.25C301.58,40.55 301.4,39.91 301.05,39.33C300.7,38.74 300.24,38.28 299.65,37.92C299.07,37.58 298.43,37.4 297.73,37.4C297.03,37.4 296.39,37.58 295.8,37.92C295.22,38.28 294.75,38.74 294.4,39.33C294.05,39.91 293.88,40.55 293.88,41.25C293.88,41.95 294.05,42.59 294.4,43.17C294.75,43.76 295.22,44.22 295.8,44.58C296.39,44.92 297.03,45.1 297.73,45.1Z"
android:fillColor="#DBC66E"/>
<path
android:pathData="M233.52,97.27C232.8,97.27 232.12,97.13 231.48,96.85C230.84,96.57 230.28,96.17 229.81,95.66C229.34,95.15 229.01,94.54 228.8,93.84L231.13,93.21C231.3,93.78 231.6,94.23 232.04,94.54C232.49,94.85 232.98,95 233.51,94.99C233.98,94.99 234.41,94.88 234.78,94.66C235.15,94.44 235.45,94.14 235.66,93.77C235.87,93.39 235.98,92.97 235.98,92.5C235.98,91.79 235.75,91.19 235.29,90.71C234.83,90.23 234.24,89.99 233.51,89.99C233.29,89.99 233.07,90.02 232.86,90.08C232.65,90.14 232.45,90.22 232.26,90.33L231.16,88.43L236,84.29L236.21,84.87H229.36V82.6H238.19V84.88L234.3,88.62L234.28,87.91C235.15,87.97 235.9,88.21 236.51,88.64C237.13,89.07 237.6,89.62 237.93,90.29C238.26,90.96 238.43,91.7 238.43,92.5C238.43,93.41 238.21,94.22 237.76,94.94C237.32,95.66 236.73,96.23 235.98,96.65C235.24,97.06 234.42,97.27 233.52,97.27ZM243.52,97V85.23L240.82,86.88V84.22L243.52,82.6H245.98V97H243.52ZM252.59,89.5C251.93,89.5 251.33,89.34 250.78,89.02C250.23,88.69 249.8,88.26 249.47,87.72C249.15,87.17 248.99,86.57 248.99,85.9C248.99,85.25 249.16,84.65 249.49,84.1C249.82,83.55 250.26,83.12 250.81,82.79C251.36,82.46 251.95,82.3 252.59,82.3C253.25,82.3 253.85,82.46 254.39,82.79C254.94,83.11 255.37,83.54 255.7,84.09C256.03,84.63 256.19,85.23 256.19,85.9C256.19,86.57 256.03,87.17 255.7,87.72C255.37,88.26 254.94,88.69 254.39,89.02C253.85,89.34 253.25,89.5 252.59,89.5ZM252.59,87.44C252.87,87.44 253.13,87.37 253.36,87.23C253.59,87.09 253.78,86.9 253.92,86.67C254.06,86.44 254.13,86.18 254.13,85.9C254.13,85.62 254.06,85.36 253.92,85.13C253.78,84.9 253.59,84.71 253.36,84.57C253.13,84.43 252.87,84.36 252.59,84.36C252.31,84.36 252.05,84.43 251.82,84.57C251.59,84.71 251.4,84.9 251.26,85.13C251.12,85.36 251.05,85.62 251.05,85.9C251.05,86.18 251.12,86.44 251.26,86.67C251.4,86.9 251.59,87.09 251.82,87.23C252.05,87.37 252.31,87.44 252.59,87.44Z"
android:fillColor="#D1C6A1"/>
<path
android:pathData="M268.49,93.53C267.95,93.53 267.47,93.41 267.03,93.16C266.59,92.91 266.24,92.58 265.98,92.15C265.73,91.72 265.6,91.23 265.6,90.7C265.6,90.16 265.73,89.68 265.99,89.25C266.25,88.82 266.6,88.48 267.03,88.24C267.46,87.99 267.95,87.87 268.49,87.87C268.99,87.87 269.45,87.99 269.87,88.24C270.3,88.48 270.64,88.82 270.89,89.25C271.14,89.68 271.27,90.16 271.27,90.7C271.27,91.23 271.14,91.72 270.89,92.15C270.64,92.58 270.3,92.91 269.87,93.16C269.45,93.41 268.99,93.53 268.49,93.53Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M280.46,96.98V94.88L286.63,89.39C287.11,88.96 287.44,88.56 287.63,88.18C287.81,87.8 287.9,87.43 287.9,87.08C287.9,86.6 287.8,86.17 287.6,85.8C287.39,85.42 287.1,85.12 286.73,84.9C286.38,84.68 285.96,84.57 285.48,84.57C284.98,84.57 284.54,84.69 284.15,84.92C283.77,85.15 283.48,85.45 283.27,85.83C283.05,86.21 282.95,86.62 282.96,87.06H280.48C280.48,86.1 280.7,85.26 281.13,84.55C281.56,83.84 282.15,83.28 282.9,82.89C283.67,82.5 284.54,82.3 285.54,82.3C286.45,82.3 287.28,82.51 288.02,82.92C288.75,83.33 289.33,83.89 289.74,84.62C290.17,85.34 290.38,86.17 290.38,87.11C290.38,87.8 290.28,88.37 290.1,88.84C289.91,89.31 289.63,89.74 289.26,90.13C288.89,90.52 288.43,90.96 287.89,91.44L283.52,95.31L283.3,94.71H290.38V96.98H280.46ZM298.37,97V94.62H291.99V92.37L296.6,82.6H299.35L294.74,92.37H298.37V88.62H300.81V92.37H302.16V94.62H300.81V97H298.37ZM307.36,89.5C306.7,89.5 306.09,89.34 305.55,89.02C305,88.69 304.56,88.26 304.24,87.72C303.92,87.17 303.76,86.57 303.76,85.9C303.76,85.25 303.92,84.65 304.26,84.1C304.59,83.55 305.03,83.12 305.58,82.79C306.12,82.46 306.72,82.3 307.36,82.3C308.02,82.3 308.62,82.46 309.16,82.79C309.7,83.11 310.14,83.54 310.47,84.09C310.79,84.63 310.96,85.23 310.96,85.9C310.96,86.57 310.79,87.17 310.47,87.72C310.14,88.26 309.7,88.69 309.16,89.02C308.62,89.34 308.02,89.5 307.36,89.5ZM307.36,87.44C307.64,87.44 307.89,87.37 308.13,87.23C308.36,87.09 308.55,86.9 308.69,86.67C308.83,86.44 308.9,86.18 308.9,85.9C308.9,85.62 308.83,85.36 308.69,85.13C308.55,84.9 308.36,84.71 308.13,84.57C307.89,84.43 307.64,84.36 307.36,84.36C307.08,84.36 306.82,84.43 306.59,84.57C306.35,84.71 306.17,84.9 306.03,85.13C305.89,85.36 305.82,85.62 305.82,85.9C305.82,86.18 305.89,86.44 306.03,86.67C306.17,86.9 306.35,87.09 306.59,87.23C306.82,87.37 307.08,87.44 307.36,87.44Z"
android:fillColor="#E8E2D4"/>
</vector>
@@ -1,203 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="350dp"
android:height="210dp"
android:viewportWidth="350"
android:viewportHeight="210">
<path
android:pathData="M18,0L332,0A18,18 0,0 1,350 18L350,192A18,18 0,0 1,332 210L18,210A18,18 0,0 1,0 192L0,18A18,18 0,0 1,18 0z"
android:fillColor="#15130B"/>
<path
android:pathData="M18,0L332,0A18,18 0,0 1,350 18L350,192A18,18 0,0 1,332 210L18,210A18,18 0,0 1,0 192L0,18A18,18 0,0 1,18 0z"
android:fillColor="#15130B"/>
<path
android:pathData="M248.26,55V42.04H249.86V47.76H256.68V42.04H258.29V55H256.68V49.28H249.86V55H248.26ZM265.02,55.27C264.07,55.27 263.23,55.06 262.52,54.64C261.81,54.21 261.26,53.62 260.86,52.87C260.47,52.1 260.27,51.22 260.27,50.2C260.27,49.14 260.47,48.22 260.86,47.45C261.25,46.67 261.79,46.07 262.48,45.65C263.19,45.22 264.01,45.01 264.95,45.01C265.93,45.01 266.76,45.24 267.44,45.69C268.13,46.13 268.65,46.78 268.99,47.61C269.34,48.44 269.49,49.44 269.44,50.59H267.82V50.01C267.8,48.82 267.56,47.93 267.09,47.34C266.63,46.75 265.93,46.45 265.01,46.45C264.02,46.45 263.26,46.77 262.75,47.4C262.23,48.04 261.97,48.95 261.97,50.14C261.97,51.29 262.23,52.17 262.75,52.8C263.26,53.43 264,53.75 264.95,53.75C265.59,53.75 266.15,53.6 266.63,53.31C267.1,53.01 267.47,52.59 267.74,52.04L269.28,52.57C268.9,53.43 268.33,54.09 267.57,54.57C266.81,55.04 265.96,55.27 265.02,55.27ZM261.43,50.59V49.3H268.61V50.59H261.43ZM274.03,55.27C273.31,55.27 272.7,55.14 272.21,54.87C271.72,54.6 271.35,54.25 271.1,53.81C270.85,53.37 270.73,52.89 270.73,52.37C270.73,51.86 270.83,51.42 271.02,51.05C271.22,50.67 271.49,50.36 271.85,50.11C272.2,49.86 272.62,49.66 273.11,49.52C273.58,49.39 274.09,49.28 274.66,49.19C275.24,49.1 275.82,49.01 276.41,48.93C277,48.86 277.55,48.78 278.06,48.71L277.48,49.04C277.5,48.18 277.32,47.54 276.96,47.13C276.6,46.71 275.97,46.5 275.09,46.5C274.5,46.5 273.98,46.64 273.54,46.91C273.1,47.17 272.79,47.6 272.61,48.21L271.09,47.75C271.32,46.89 271.78,46.22 272.45,45.74C273.12,45.25 274.01,45.01 275.1,45.01C275.99,45.01 276.74,45.17 277.37,45.49C278.01,45.8 278.46,46.27 278.74,46.91C278.88,47.21 278.96,47.54 279,47.89C279.04,48.24 279.05,48.6 279.05,48.99V55H277.63V52.67L277.97,52.88C277.6,53.67 277.09,54.26 276.43,54.67C275.77,55.07 274.98,55.27 274.03,55.27ZM274.28,53.93C274.85,53.93 275.35,53.83 275.77,53.62C276.2,53.41 276.54,53.14 276.8,52.8C277.05,52.46 277.22,52.09 277.3,51.69C277.39,51.39 277.44,51.06 277.44,50.69C277.46,50.32 277.46,50.03 277.46,49.83L278.02,50.08C277.5,50.15 276.98,50.22 276.48,50.28C275.98,50.35 275.5,50.42 275.05,50.5C274.6,50.57 274.2,50.66 273.83,50.76C273.57,50.85 273.32,50.95 273.09,51.08C272.86,51.22 272.67,51.39 272.53,51.6C272.39,51.8 272.32,52.06 272.32,52.36C272.32,52.63 272.39,52.88 272.52,53.12C272.66,53.36 272.87,53.55 273.15,53.7C273.44,53.85 273.81,53.93 274.28,53.93ZM283.67,55L280.14,45.28H281.76L284.49,52.96L287.21,45.28H288.84L285.31,55H283.67ZM291.73,59.32L293.61,54.21L293.64,55.72L289.39,45.28H291.07L294.4,53.68H293.82L296.95,45.28H298.58L293.28,59.32H291.73ZM303.67,55V45.28H305.1V47.63L304.86,47.32C304.98,47.02 305.12,46.75 305.3,46.49C305.49,46.24 305.7,46.04 305.92,45.87C306.18,45.67 306.46,45.51 306.78,45.41C307.1,45.3 307.42,45.24 307.75,45.22C308.08,45.19 308.39,45.21 308.68,45.28V46.78C308.34,46.69 307.97,46.67 307.57,46.71C307.17,46.75 306.8,46.9 306.46,47.15C306.14,47.37 305.9,47.64 305.73,47.96C305.56,48.28 305.44,48.63 305.38,49C305.31,49.36 305.28,49.74 305.28,50.12V55H303.67ZM312.83,55.27C312.1,55.27 311.49,55.14 311,54.87C310.52,54.6 310.15,54.25 309.89,53.81C309.65,53.37 309.52,52.89 309.52,52.37C309.52,51.86 309.62,51.42 309.81,51.05C310.01,50.67 310.29,50.36 310.64,50.11C310.99,49.86 311.42,49.66 311.91,49.52C312.37,49.39 312.89,49.28 313.46,49.19C314.03,49.1 314.62,49.01 315.2,48.93C315.79,48.86 316.34,48.78 316.85,48.71L316.27,49.04C316.29,48.18 316.12,47.54 315.75,47.13C315.39,46.71 314.77,46.5 313.88,46.5C313.29,46.5 312.78,46.64 312.33,46.91C311.89,47.17 311.59,47.6 311.41,48.21L309.89,47.75C310.12,46.89 310.57,46.22 311.24,45.74C311.92,45.25 312.8,45.01 313.9,45.01C314.78,45.01 315.54,45.17 316.17,45.49C316.8,45.8 317.26,46.27 317.54,46.91C317.67,47.21 317.76,47.54 317.8,47.89C317.83,48.24 317.85,48.6 317.85,48.99V55H316.43V52.67L316.76,52.88C316.39,53.67 315.88,54.26 315.22,54.67C314.57,55.07 313.77,55.27 312.83,55.27ZM313.07,53.93C313.65,53.93 314.14,53.83 314.57,53.62C314.99,53.41 315.33,53.14 315.59,52.8C315.85,52.46 316.02,52.09 316.1,51.69C316.18,51.39 316.23,51.06 316.24,50.69C316.25,50.32 316.26,50.03 316.26,49.83L316.82,50.08C316.29,50.15 315.78,50.22 315.28,50.28C314.77,50.35 314.3,50.42 313.85,50.5C313.39,50.57 312.99,50.66 312.63,50.76C312.37,50.85 312.12,50.95 311.88,51.08C311.65,51.22 311.47,51.39 311.33,51.6C311.19,51.8 311.12,52.06 311.12,52.36C311.12,52.63 311.18,52.88 311.32,53.12C311.45,53.36 311.66,53.55 311.95,53.7C312.23,53.85 312.61,53.93 313.07,53.93ZM320.37,43.56V41.9H321.97V43.56H320.37ZM320.37,55V45.28H321.97V55H320.37ZM331.59,55V50.13C331.59,49.67 331.55,49.22 331.47,48.8C331.39,48.37 331.25,47.99 331.04,47.66C330.85,47.31 330.58,47.04 330.23,46.85C329.9,46.65 329.47,46.55 328.96,46.55C328.55,46.55 328.19,46.62 327.86,46.76C327.53,46.89 327.26,47.09 327.02,47.37C326.79,47.64 326.6,47.99 326.47,48.41C326.35,48.83 326.28,49.31 326.28,49.88L325.23,49.56C325.23,48.61 325.4,47.81 325.73,47.13C326.08,46.46 326.55,45.94 327.17,45.58C327.78,45.21 328.51,45.03 329.34,45.03C329.97,45.03 330.51,45.13 330.95,45.33C331.4,45.52 331Line truncated
android:fillColor="#DBC66E"/>
<path
android:pathData="M59,29.5C59,37.86 52.34,44.67 44,44.99V45H23V45H22.86C17.41,45 13,40.62 13,35.21C13,29.8 17.41,25.42 22.86,25.42C24.75,25.42 26.51,25.95 28.01,26.86C29.27,19.56 35.68,14 43.39,14C52.01,14 59,20.94 59,29.5Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="51.33"
android:centerY="42.36"
android:gradientRadius="36.07"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M28,46L23.76,50.1C23.2,50.63 22.76,51.27 22.46,51.97C22.16,52.67 22,53.43 22,54.2C22,54.97 22.16,55.73 22.46,56.43C22.76,57.14 23.2,57.77 23.76,58.3C26.1,60.57 29.9,60.57 32.24,58.3C32.8,57.77 33.25,57.13 33.55,56.42C33.85,55.71 34,54.95 34,54.18C34,53.4 33.84,52.64 33.53,51.93C33.22,51.23 32.77,50.59 32.21,50.06L28,46ZM36,33L31.76,37.1C31.2,37.63 30.76,38.27 30.46,38.97C30.16,39.67 30,40.43 30,41.2C30,41.97 30.16,42.73 30.46,43.43C30.76,44.14 31.2,44.77 31.76,45.3C34.1,47.57 37.9,47.57 40.24,45.3C40.8,44.77 41.24,44.13 41.55,43.42C41.85,42.71 42,41.95 42,41.18C42,40.4 41.84,39.64 41.53,38.94C41.22,38.23 40.77,37.59 40.21,37.06L36,33ZM44,46L39.76,50.1C39.2,50.63 38.76,51.27 38.46,51.97C38.16,52.67 38,53.43 38,54.2C38,54.97 38.16,55.73 38.46,56.43C38.76,57.14 39.2,57.77 39.76,58.3C42.1,60.57 45.9,60.57 48.24,58.3C48.8,57.77 49.24,57.13 49.55,56.42C49.85,55.71 50,54.95 50,54.18C50,53.4 49.84,52.64 49.53,51.94C49.22,51.23 48.77,50.59 48.21,50.06L44,46ZM19,35L14.76,39.1C14.2,39.63 13.76,40.27 13.46,40.97C13.16,41.67 13,42.43 13,43.2C13,43.97 13.16,44.73 13.46,45.43C13.76,46.14 14.2,46.77 14.76,47.3C17.1,49.57 20.9,49.57 23.24,47.3C23.8,46.77 24.24,46.14 24.54,45.43C24.84,44.73 25,43.97 25,43.2C25,42.43 24.84,41.68 24.54,40.97C24.24,40.27 23.8,39.63 23.24,39.1L23.21,39.06L19,35ZM53,33L48.76,37.1C48.2,37.63 47.76,38.27 47.46,38.97C47.16,39.67 47,40.43 47,41.2C47,41.97 47.16,42.73 47.46,43.43C47.76,44.14 48.2,44.77 48.76,45.3C51.1,47.57 54.9,47.57 57.24,45.3C57.8,44.77 58.24,44.14 58.54,43.43C58.84,42.73 59,41.97 59,41.2C59,40.43 58.84,39.68 58.54,38.97C58.24,38.27 57.8,37.63 57.24,37.1L57.21,37.06L53,33Z"
android:fillColor="#0B57D0"/>
<path
android:pathData="M174.42,30.34C172.77,30.34 171.37,29.98 170.22,29.25C169.07,28.52 168.19,27.51 167.59,26.22C166.99,24.92 166.69,23.42 166.69,21.72C166.69,20.02 166.99,18.52 167.59,17.22C168.19,15.93 169.07,14.92 170.22,14.19C171.37,13.46 172.77,13.1 174.42,13.1C176.34,13.1 177.91,13.58 179.15,14.56C180.39,15.53 181.24,16.84 181.71,18.49L179.63,19.04C179.29,17.81 178.69,16.83 177.82,16.12C176.96,15.41 175.82,15.05 174.42,15.05C173.18,15.05 172.16,15.33 171.34,15.89C170.52,16.45 169.9,17.23 169.49,18.24C169.07,19.23 168.86,20.39 168.85,21.72C168.84,23.04 169.05,24.2 169.46,25.2C169.88,26.2 170.5,26.98 171.32,27.55C172.15,28.11 173.18,28.39 174.42,28.39C175.82,28.39 176.96,28.03 177.82,27.32C178.69,26.6 179.29,25.63 179.63,24.4L181.71,24.95C181.24,26.59 180.39,27.9 179.15,28.88C177.91,29.86 176.34,30.34 174.42,30.34ZM193.07,30V23.78C193.07,23.19 193.02,22.62 192.91,22.08C192.81,21.53 192.63,21.05 192.37,20.62C192.12,20.18 191.77,19.83 191.34,19.58C190.91,19.33 190.36,19.2 189.71,19.2C189.19,19.2 188.72,19.29 188.3,19.47C187.89,19.63 187.53,19.9 187.23,20.25C186.93,20.6 186.7,21.05 186.53,21.58C186.37,22.11 186.29,22.74 186.29,23.46L184.94,23.04C184.94,21.84 185.16,20.81 185.59,19.95C186.02,19.08 186.63,18.42 187.42,17.96C188.21,17.49 189.13,17.26 190.2,17.26C191.01,17.26 191.69,17.38 192.26,17.64C192.82,17.89 193.3,18.23 193.67,18.65C194.05,19.06 194.34,19.53 194.56,20.05C194.77,20.57 194.92,21.09 195.01,21.63C195.1,22.16 195.15,22.66 195.15,23.13V30H193.07ZM184.22,30V13.44H186.06V22.58H186.29V30H184.22ZM198.36,15.38V13.27H200.41V15.38H198.36ZM198.36,30V17.58H200.41V30H198.36ZM209.09,30.34C207.84,30.34 206.77,30.07 205.89,29.51C205.01,28.94 204.35,28.16 203.88,27.17C203.43,26.18 203.19,25.06 203.17,23.79C203.19,22.49 203.43,21.36 203.9,20.37C204.37,19.39 205.05,18.61 205.93,18.06C206.81,17.51 207.88,17.24 209.12,17.24C210.43,17.24 211.55,17.56 212.5,18.2C213.45,18.84 214.09,19.73 214.41,20.85L212.38,21.46C212.12,20.73 211.7,20.18 211.11,19.78C210.52,19.38 209.85,19.18 209.09,19.18C208.24,19.18 207.54,19.38 206.99,19.78C206.44,20.17 206.03,20.71 205.76,21.41C205.49,22.1 205.35,22.89 205.35,23.79C205.36,25.17 205.68,26.29 206.3,27.14C206.93,27.98 207.86,28.4 209.09,28.4C209.91,28.4 210.58,28.22 211.12,27.85C211.65,27.47 212.06,26.93 212.34,26.23L214.41,26.77C213.98,27.93 213.31,28.81 212.4,29.42C211.48,30.04 210.38,30.34 209.09,30.34ZM220.17,30.34C219.24,30.34 218.47,30.18 217.84,29.84C217.22,29.49 216.75,29.04 216.42,28.48C216.11,27.92 215.95,27.31 215.95,26.64C215.95,25.99 216.07,25.43 216.32,24.95C216.57,24.47 216.93,24.07 217.38,23.76C217.83,23.43 218.37,23.18 219,23C219.59,22.84 220.25,22.7 220.98,22.58C221.71,22.46 222.46,22.35 223.21,22.25C223.96,22.15 224.66,22.05 225.31,21.96L224.58,22.39C224.6,21.28 224.38,20.47 223.91,19.94C223.45,19.41 222.65,19.14 221.52,19.14C220.77,19.14 220.11,19.32 219.54,19.66C218.98,20 218.59,20.55 218.36,21.32L216.41,20.73C216.71,19.64 217.29,18.79 218.15,18.17C219.01,17.55 220.14,17.24 221.54,17.24C222.67,17.24 223.63,17.44 224.44,17.84C225.25,18.24 225.84,18.85 226.19,19.66C226.36,20.04 226.48,20.46 226.52,20.92C226.57,21.36 226.59,21.83 226.59,22.32V30H224.77V27.02L225.2,27.3C224.73,28.3 224.07,29.06 223.23,29.57C222.4,30.09 221.38,30.34 220.17,30.34ZM220.48,28.63C221.22,28.63 221.86,28.5 222.39,28.24C222.94,27.97 223.37,27.62 223.7,27.19C224.03,26.76 224.25,26.28 224.35,25.77C224.46,25.38 224.52,24.96 224.53,24.49C224.55,24.02 224.55,23.65 224.55,23.4L225.27,23.71C224.6,23.8 223.95,23.89 223.3,23.97C222.66,24.06 222.05,24.15 221.47,24.25C220.9,24.34 220.38,24.45 219.92,24.58C219.58,24.69 219.26,24.83 218.96,25C218.67,25.17 218.44,25.38 218.25,25.65C218.08,25.91 217.99,26.24 217.99,26.63C217.99,26.97 218.07,27.29 218.24,27.6C218.42,27.9 218.68,28.15 219.05,28.34C219.41,28.54 219.89,28.63 220.48,28.63ZM234.6,35.87C233.95,35.87 233.32,35.77 232.7,35.57C232.07,35.37 231.5,35.06 230.98,34.66C230.47,34.26 230.04,33.75 229.7,33.14L231.57,32.15C231.88,32.76 232.31,33.2 232.87,33.47C233.44,33.75 234.02,33.89 234.62,33.89C235.41,33.89 236.06,33.74 236.58,33.45C237.1,33.17 237.49,32.74 237.73,32.17C237.99,31.61 238.11,30.9 238.1,30.06V26.67H238.34V17.58H240.16V30.08C240.16,30.42 240.15,30.74 240.13,31.06C240.11,31.37 240.07,31.68 240.01,31.99C239.85,32.87 239.53,33.6 239.06,34.16C238.58,34.74 237.97,35.16 237.22,35.44C236.46,35.72 235.59,35.87 234.6,35.87ZM234.46,30.34C233.3,30.34 232.3,30.06 231.48,29.48C230.65,28.9 230.01,28.11 229.56,27.13C229.11,26.14 228.89,25.02 228.89,23.78C228.89,22.54 229.11,21.42 229.56,20.43C230.01,19.44 230.65,18.66 231.48,18.1C232.3,17.52 233.29,17.24 234.44,17.24C235.62,17.24 236.6,17.52 237.4,18.09C238.2,18.65 238.8,19.43 239.21,20.42C239.62,21.41 239.83,22.53 239.83,23.78C239.83,25.01 239.62,26.13 239.21,27.13C238.8,28.11 238.2,28.9 237.4,29.48C236.6,30.06 235.62,30.34 234.46,30.34ZM234.71,28.47C235.54,28.47 236.23,28.27 236.77,27.87C237.3,27.47 237.7,26.91 237.95,26.2C238.21,25.49 238.34,24.68 238.34,23.78C238.34,22.86 238.21,22.05 237.95,2Line truncated
android:fillColor="#D1C6A1"/>
<path
android:pathData="M14.5,152.95V147.7L29.9,133.98C31.1,132.91 31.93,131.9 32.4,130.95C32.87,130 33.1,129.08 33.1,128.2C33.1,127 32.84,125.93 32.33,125C31.81,124.05 31.09,123.3 30.17,122.75C29.27,122.2 28.23,121.93 27.05,121.93C25.8,121.93 24.69,122.22 23.73,122.8C22.77,123.37 22.03,124.13 21.5,125.07C20.97,126.03 20.72,127.05 20.75,128.15H14.55C14.55,125.75 15.08,123.66 16.15,121.88C17.23,120.09 18.72,118.71 20.6,117.72C22.5,116.74 24.69,116.25 27.17,116.25C29.48,116.25 31.54,116.77 33.38,117.8C35.21,118.82 36.65,120.23 37.7,122.05C38.75,123.85 39.28,125.93 39.28,128.27C39.28,129.99 39.04,131.43 38.58,132.6C38.11,133.77 37.41,134.84 36.47,135.82C35.56,136.81 34.42,137.9 33.05,139.1L22.13,148.77L21.58,147.27H39.28V152.95H14.5ZM59.26,153V147.05H43.31V141.43L54.83,117H61.71L50.18,141.43H59.26V132.05H65.36V141.43H68.73V147.05H65.36V153H59.26ZM81.73,134.25C80.08,134.25 78.57,133.85 77.2,133.05C75.84,132.23 74.75,131.15 73.93,129.8C73.13,128.43 72.73,126.92 72.73,125.25C72.73,123.62 73.15,122.12 73.98,120.75C74.81,119.38 75.91,118.29 77.28,117.47C78.65,116.66 80.13,116.25 81.73,116.25C83.38,116.25 84.88,116.66 86.23,117.47C87.6,118.28 88.69,119.36 89.5,120.72C90.32,122.07 90.73,123.58 90.73,125.25C90.73,126.92 90.32,128.43 89.5,129.8C88.69,131.15 87.6,132.23 86.23,133.05C84.88,133.85 83.38,134.25 81.73,134.25ZM81.73,129.1C82.43,129.1 83.07,128.93 83.65,128.57C84.24,128.23 84.7,127.76 85.05,127.18C85.4,126.59 85.58,125.95 85.58,125.25C85.58,124.55 85.4,123.91 85.05,123.32C84.7,122.74 84.24,122.28 83.65,121.93C83.07,121.57 82.43,121.4 81.73,121.4C81.03,121.4 80.39,121.57 79.8,121.93C79.22,122.28 78.75,122.74 78.4,123.32C78.05,123.91 77.88,124.55 77.88,125.25C77.88,125.95 78.05,126.59 78.4,127.18C78.75,127.76 79.22,128.23 79.8,128.57C80.39,128.93 81.03,129.1 81.73,129.1Z"
android:fillColor="#DBC66E"/>
<path
android:pathData="M17.52,189.27C16.8,189.27 16.12,189.13 15.48,188.85C14.84,188.57 14.28,188.17 13.81,187.66C13.34,187.15 13.01,186.54 12.8,185.84L15.13,185.21C15.3,185.78 15.6,186.23 16.04,186.54C16.49,186.85 16.98,187 17.51,186.99C17.98,186.99 18.41,186.88 18.78,186.66C19.15,186.44 19.45,186.14 19.66,185.77C19.87,185.39 19.98,184.97 19.98,184.5C19.98,183.79 19.75,183.19 19.29,182.71C18.83,182.23 18.24,181.99 17.51,181.99C17.29,181.99 17.07,182.02 16.86,182.08C16.65,182.14 16.45,182.22 16.26,182.33L15.16,180.43L20,176.29L20.21,176.87H13.36V174.6H22.19V176.88L18.3,180.62L18.28,179.91C19.15,179.97 19.9,180.21 20.51,180.64C21.13,181.07 21.6,181.62 21.93,182.29C22.26,182.96 22.43,183.7 22.43,184.5C22.43,185.41 22.21,186.22 21.76,186.94C21.32,187.66 20.73,188.23 19.98,188.65C19.24,189.06 18.42,189.27 17.52,189.27ZM27.52,189V177.23L24.82,178.88V176.22L27.52,174.6H29.98V189H27.52ZM36.59,181.5C35.93,181.5 35.33,181.34 34.78,181.02C34.23,180.69 33.8,180.26 33.47,179.72C33.15,179.17 32.99,178.57 32.99,177.9C32.99,177.25 33.16,176.65 33.49,176.1C33.82,175.55 34.26,175.12 34.81,174.79C35.36,174.46 35.95,174.3 36.59,174.3C37.25,174.3 37.85,174.46 38.39,174.79C38.94,175.11 39.37,175.54 39.7,176.09C40.03,176.63 40.19,177.23 40.19,177.9C40.19,178.57 40.03,179.17 39.7,179.72C39.37,180.26 38.94,180.69 38.39,181.02C37.85,181.34 37.25,181.5 36.59,181.5ZM36.59,179.44C36.87,179.44 37.13,179.37 37.36,179.23C37.59,179.09 37.78,178.9 37.92,178.67C38.06,178.44 38.13,178.18 38.13,177.9C38.13,177.62 38.06,177.36 37.92,177.13C37.78,176.9 37.59,176.71 37.36,176.57C37.13,176.43 36.87,176.36 36.59,176.36C36.31,176.36 36.05,176.43 35.82,176.57C35.59,176.71 35.4,176.9 35.26,177.13C35.12,177.36 35.05,177.62 35.05,177.9C35.05,178.18 35.12,178.44 35.26,178.67C35.4,178.9 35.59,179.09 35.82,179.23C36.05,179.37 36.31,179.44 36.59,179.44Z"
android:fillColor="#D1C6A1"/>
<path
android:pathData="M52.49,185.53C51.96,185.53 51.47,185.41 51.03,185.16C50.59,184.91 50.24,184.58 49.98,184.15C49.73,183.72 49.6,183.23 49.6,182.7C49.6,182.16 49.73,181.68 49.99,181.25C50.25,180.82 50.6,180.48 51.03,180.24C51.46,179.99 51.95,179.87 52.49,179.87C52.99,179.87 53.45,179.99 53.87,180.24C54.3,180.48 54.64,180.82 54.89,181.25C55.14,181.68 55.27,182.16 55.27,182.7C55.27,183.23 55.14,183.72 54.89,184.15C54.64,184.58 54.3,184.91 53.87,185.16C53.45,185.41 52.99,185.53 52.49,185.53Z"
android:fillColor="#ffffff"/>
<path
android:pathData="M64.46,188.98V186.88L70.62,181.39C71.1,180.96 71.44,180.56 71.62,180.18C71.81,179.8 71.9,179.43 71.9,179.08C71.9,178.6 71.8,178.17 71.59,177.8C71.39,177.42 71.1,177.12 70.73,176.9C70.37,176.68 69.96,176.57 69.48,176.57C68.98,176.57 68.54,176.69 68.15,176.92C67.77,177.15 67.48,177.45 67.26,177.83C67.05,178.21 66.95,178.62 66.96,179.06H64.48C64.48,178.1 64.7,177.26 65.12,176.55C65.56,175.84 66.15,175.28 66.9,174.89C67.66,174.5 68.54,174.3 69.53,174.3C70.45,174.3 71.28,174.51 72.01,174.92C72.75,175.33 73.32,175.89 73.74,176.62C74.16,177.34 74.37,178.17 74.37,179.11C74.37,179.8 74.28,180.37 74.09,180.84C73.91,181.31 73.63,181.74 73.25,182.13C72.89,182.52 72.43,182.96 71.88,183.44L67.51,187.31L67.29,186.71H74.37V188.98H64.46ZM82.37,189V186.62H75.99V184.37L80.6,174.6H83.35L78.74,184.37H82.37V180.62H84.81V184.37H86.16V186.62H84.81V189H82.37ZM91.36,181.5C90.7,181.5 90.09,181.34 89.55,181.02C89,180.69 88.56,180.26 88.24,179.72C87.92,179.17 87.76,178.57 87.76,177.9C87.76,177.25 87.92,176.65 88.26,176.1C88.59,175.55 89.03,175.12 89.58,174.79C90.12,174.46 90.72,174.3 91.36,174.3C92.02,174.3 92.62,174.46 93.16,174.79C93.7,175.11 94.14,175.54 94.47,176.09C94.79,176.63 94.96,177.23 94.96,177.9C94.96,178.57 94.79,179.17 94.47,179.72C94.14,180.26 93.7,180.69 93.16,181.02C92.62,181.34 92.02,181.5 91.36,181.5ZM91.36,179.44C91.64,179.44 91.89,179.37 92.13,179.23C92.36,179.09 92.55,178.9 92.69,178.67C92.83,178.44 92.9,178.18 92.9,177.9C92.9,177.62 92.83,177.36 92.69,177.13C92.55,176.9 92.36,176.71 92.13,176.57C91.89,176.43 91.64,176.36 91.36,176.36C91.08,176.36 90.82,176.43 90.59,176.57C90.35,176.71 90.17,176.9 90.03,177.13C89.89,177.36 89.82,177.62 89.82,177.9C89.82,178.18 89.89,178.44 90.03,178.67C90.17,178.9 90.35,179.09 90.59,179.23C90.82,179.37 91.08,179.44 91.36,179.44Z"
android:fillColor="#E8E2D4"/>
<group>
<clip-path
android:pathData="M158,151h24v24h-24z"/>
<path
android:pathData="M168.41,153.81C168.98,153.85 169.51,154.09 169.91,154.49C170.31,154.89 170.55,155.42 170.59,155.99C170.62,156.49 170.82,156.98 171.16,157.36C171.53,157.79 171.74,158.34 171.74,158.9C171.74,159.46 171.53,160.01 171.16,160.44C170.82,160.82 170.62,161.3 170.59,161.82C170.55,162.38 170.31,162.91 169.91,163.31C169.51,163.71 168.98,163.95 168.41,163.99C167.9,164.02 167.42,164.22 167.04,164.56C166.61,164.93 166.07,165.13 165.5,165.13C164.93,165.13 164.39,164.93 163.96,164.56C163.58,164.22 163.1,164.02 162.59,163.99C162.02,163.95 161.49,163.71 161.09,163.31C160.69,162.91 160.45,162.38 160.41,161.82C160.38,161.3 160.18,160.82 159.84,160.44C159.47,160.01 159.26,159.46 159.26,158.9C159.26,158.34 159.47,157.79 159.84,157.36C160.18,156.98 160.38,156.49 160.41,155.99C160.45,155.42 160.69,154.89 161.09,154.49C161.49,154.09 162.02,153.85 162.59,153.81C163.1,153.78 163.58,153.58 163.96,153.24C164.39,152.87 164.93,152.66 165.5,152.66C166.07,152.66 166.61,152.87 167.04,153.24C167.42,153.58 167.9,153.78 168.41,153.81Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="161.85"
android:centerY="153.47"
android:gradientRadius="11.5"
android:type="radial">
<item android:offset="0" android:color="#FFFFBB29"/>
<item android:offset="0.27" android:color="#FFFCB224"/>
<item android:offset="0.52" android:color="#FFE47100"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M181.5,159.25C181.5,163.43 178.17,166.84 174,166.99V167H163.5V167H163.43C160.71,167 158.5,164.81 158.5,162.1C158.5,159.4 160.71,157.21 163.43,157.21C164.37,157.21 165.26,157.47 166.01,157.93C166.63,154.28 169.84,151.5 173.7,151.5C178.01,151.5 181.5,154.97 181.5,159.25Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="177.67"
android:centerY="165.68"
android:gradientRadius="18.04"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M169.5,161L167.38,163.05C167.1,163.31 166.88,163.63 166.73,163.99C166.58,164.34 166.5,164.72 166.5,165.1C166.5,165.48 166.58,165.86 166.73,166.22C166.88,166.57 167.1,166.89 167.38,167.15C168.55,168.28 170.45,168.28 171.62,167.15C171.9,166.88 172.12,166.57 172.27,166.21C172.43,165.85 172.5,165.47 172.5,165.09C172.5,164.7 172.42,164.32 172.26,163.97C172.11,163.61 171.88,163.3 171.6,163.03L169.5,161ZM173.5,167.5L171.38,169.55C171.1,169.81 170.88,170.13 170.73,170.49C170.58,170.84 170.5,171.22 170.5,171.6C170.5,171.98 170.58,172.36 170.73,172.72C170.88,173.07 171.1,173.39 171.38,173.65C172.55,174.78 174.45,174.78 175.62,173.65C175.9,173.38 176.12,173.07 176.27,172.71C176.43,172.35 176.5,171.97 176.5,171.59C176.5,171.2 176.42,170.82 176.26,170.47C176.11,170.11 175.88,169.8 175.6,169.53L173.5,167.5ZM178.5,161L176.38,163.05C176.1,163.31 175.88,163.63 175.73,163.99C175.58,164.34 175.5,164.72 175.5,165.1C175.5,165.48 175.58,165.86 175.73,166.22C175.88,166.57 176.1,166.89 176.38,167.15C177.55,168.28 179.45,168.28 180.62,167.15C180.9,166.89 181.12,166.57 181.27,166.22C181.42,165.86 181.5,165.48 181.5,165.1C181.5,164.72 181.42,164.34 181.27,163.99C181.12,163.63 180.9,163.32 180.62,163.05L180.6,163.03L178.5,161Z"
android:fillColor="#0B57D0"/>
</group>
<path
android:pathData="M159.8,142.98V141.3L164.73,136.91C165.11,136.57 165.38,136.25 165.53,135.94C165.68,135.64 165.75,135.35 165.75,135.06C165.75,134.68 165.67,134.34 165.5,134.04C165.34,133.74 165.11,133.5 164.82,133.32C164.53,133.14 164.2,133.06 163.82,133.06C163.42,133.06 163.06,133.15 162.75,133.34C162.45,133.52 162.21,133.76 162.04,134.06C161.87,134.37 161.79,134.7 161.8,135.05H159.82C159.82,134.28 159.99,133.61 160.33,133.04C160.68,132.47 161.15,132.03 161.75,131.71C162.36,131.4 163.06,131.24 163.86,131.24C164.59,131.24 165.25,131.4 165.84,131.74C166.43,132.06 166.89,132.51 167.22,133.1C167.56,133.67 167.73,134.34 167.73,135.09C167.73,135.64 167.65,136.1 167.5,136.47C167.35,136.85 167.13,137.19 166.83,137.5C166.54,137.82 166.17,138.17 165.74,138.55L162.24,141.65L162.06,141.17H167.73V142.98H159.8ZM174.12,143V141.1H169.02V139.3L172.71,131.48H174.91L171.22,139.3H174.12V136.3H176.07V139.3H177.15V141.1H176.07V143H174.12ZM181.31,137C180.79,137 180.3,136.87 179.87,136.62C179.43,136.35 179.08,136.01 178.82,135.58C178.56,135.14 178.43,134.65 178.43,134.12C178.43,133.6 178.57,133.12 178.83,132.68C179.1,132.24 179.45,131.89 179.89,131.63C180.33,131.37 180.8,131.24 181.31,131.24C181.84,131.24 182.32,131.37 182.75,131.63C183.19,131.89 183.54,132.24 183.8,132.67C184.06,133.1 184.19,133.59 184.19,134.12C184.19,134.65 184.06,135.14 183.8,135.58C183.54,136.01 183.19,136.35 182.75,136.62C182.32,136.87 181.84,137 181.31,137ZM181.31,135.35C181.54,135.35 181.74,135.3 181.93,135.18C182.12,135.07 182.26,134.92 182.38,134.74C182.49,134.55 182.54,134.34 182.54,134.12C182.54,133.9 182.49,133.69 182.38,133.5C182.26,133.32 182.12,133.17 181.93,133.06C181.74,132.94 181.54,132.89 181.31,132.89C181.09,132.89 180.88,132.94 180.7,133.06C180.51,133.17 180.36,133.32 180.25,133.5C180.14,133.69 180.08,133.9 180.08,134.12C180.08,134.34 180.14,134.55 180.25,134.74C180.36,134.92 180.51,135.07 180.7,135.18C180.88,135.3 181.09,135.35 181.31,135.35Z"
android:fillColor="#E8E2D4"/>
<path
android:pathData="M160.86,193.19C160.36,193.19 159.88,193.09 159.44,192.9C158.99,192.7 158.6,192.42 158.27,192.06C157.94,191.7 157.71,191.28 157.56,190.79L159.19,190.35C159.31,190.75 159.52,191.06 159.83,191.28C160.14,191.49 160.48,191.6 160.86,191.59C161.19,191.59 161.49,191.52 161.75,191.36C162.01,191.21 162.21,191 162.36,190.74C162.51,190.47 162.59,190.18 162.59,189.85C162.59,189.35 162.43,188.93 162.1,188.6C161.78,188.26 161.37,188.09 160.86,188.09C160.7,188.09 160.55,188.11 160.4,188.16C160.26,188.2 160.12,188.26 159.98,188.33L159.21,187L162.6,184.1L162.75,184.51H157.95V182.92H164.13V184.52L161.41,187.13L161.4,186.64C162.01,186.68 162.53,186.85 162.96,187.15C163.39,187.45 163.72,187.83 163.95,188.3C164.18,188.77 164.3,189.29 164.3,189.85C164.3,190.49 164.15,191.05 163.83,191.56C163.52,192.06 163.11,192.46 162.59,192.76C162.07,193.04 161.49,193.19 160.86,193.19ZM165.41,193L168.59,182.92H171.06L174.24,193H172.51L169.62,183.96H170L167.15,193H165.41ZM167.19,190.82V189.24H172.48V190.82H167.19ZM175.51,193V182.92H177.03L180.51,190.06L184,182.92H185.52V193H183.94V186.54L180.85,193H180.18L177.09,186.54V193H175.51Z"
android:fillColor="#CDC6B4"/>
<path
android:pathData="M204.8,142.98V141.3L209.73,136.91C210.11,136.57 210.38,136.25 210.53,135.94C210.68,135.64 210.75,135.35 210.75,135.06C210.75,134.68 210.67,134.34 210.5,134.04C210.34,133.74 210.11,133.5 209.82,133.32C209.53,133.14 209.2,133.06 208.82,133.06C208.42,133.06 208.06,133.15 207.75,133.34C207.45,133.52 207.21,133.76 207.04,134.06C206.87,134.37 206.79,134.7 206.8,135.05H204.82C204.82,134.28 204.99,133.61 205.33,133.04C205.68,132.47 206.15,132.03 206.75,131.71C207.36,131.4 208.06,131.24 208.86,131.24C209.59,131.24 210.25,131.4 210.84,131.74C211.43,132.06 211.89,132.51 212.22,133.1C212.56,133.67 212.73,134.34 212.73,135.09C212.73,135.64 212.65,136.1 212.5,136.47C212.35,136.85 212.13,137.19 211.83,137.5C211.54,137.82 211.17,138.17 210.74,138.55L207.24,141.65L207.06,141.17H212.73V142.98H204.8ZM218.63,143.24C217.88,143.24 217.21,143.06 216.6,142.71C216.01,142.35 215.53,141.86 215.18,141.23C214.83,140.6 214.65,139.88 214.65,139.06V135.56C214.65,134.68 214.82,133.93 215.17,133.28C215.52,132.63 216.01,132.14 216.64,131.78C217.28,131.43 218.01,131.26 218.85,131.26C219.43,131.26 219.99,131.35 220.51,131.55C221.03,131.74 221.49,132.05 221.9,132.48L220.51,133.83C220.3,133.59 220.06,133.4 219.76,133.26C219.48,133.13 219.17,133.06 218.85,133.06C218.4,133.06 218.01,133.16 217.68,133.38C217.34,133.58 217.08,133.86 216.89,134.2C216.71,134.54 216.62,134.91 216.62,135.3V137.21L216.27,136.82C216.6,136.44 216.99,136.14 217.46,135.93C217.92,135.71 218.41,135.6 218.91,135.6C219.64,135.6 220.28,135.76 220.84,136.1C221.39,136.42 221.83,136.87 222.15,137.44C222.47,138.01 222.63,138.65 222.63,139.38C222.63,140.1 222.44,140.75 222.07,141.34C221.71,141.92 221.23,142.38 220.63,142.73C220.02,143.07 219.36,143.24 218.63,143.24ZM218.63,141.39C219.01,141.39 219.35,141.3 219.66,141.13C219.97,140.95 220.21,140.7 220.4,140.4C220.58,140.09 220.68,139.75 220.68,139.38C220.68,139 220.59,138.66 220.4,138.35C220.22,138.04 219.98,137.8 219.67,137.62C219.36,137.43 219.02,137.34 218.65,137.34C218.28,137.34 217.94,137.43 217.63,137.62C217.32,137.8 217.07,138.04 216.89,138.35C216.71,138.66 216.62,139 216.62,139.38C216.62,139.74 216.71,140.07 216.88,140.38C217.07,140.69 217.31,140.93 217.61,141.12C217.92,141.3 218.26,141.39 218.63,141.39ZM226.83,137C226.3,137 225.82,136.87 225.38,136.62C224.94,136.35 224.59,136.01 224.33,135.58C224.08,135.14 223.95,134.65 223.95,134.12C223.95,133.6 224.08,133.12 224.35,132.68C224.62,132.24 224.97,131.89 225.4,131.63C225.84,131.37 226.32,131.24 226.83,131.24C227.36,131.24 227.84,131.37 228.27,131.63C228.71,131.89 229.05,132.24 229.32,132.67C229.58,133.1 229.71,133.59 229.71,134.12C229.71,134.65 229.58,135.14 229.32,135.58C229.05,136.01 228.71,136.35 228.27,136.62C227.84,136.87 227.36,137 226.83,137ZM226.83,135.35C227.05,135.35 227.26,135.3 227.45,135.18C227.63,135.07 227.78,134.92 227.89,134.74C228.01,134.55 228.06,134.34 228.06,134.12C228.06,133.9 228.01,133.69 227.89,133.5C227.78,133.32 227.63,133.17 227.45,133.06C227.26,132.94 227.05,132.89 226.83,132.89C226.6,132.89 226.4,132.94 226.21,133.06C226.03,133.17 225.88,133.32 225.76,133.5C225.65,133.69 225.6,133.9 225.6,134.12C225.6,134.34 225.65,134.55 225.76,134.74C225.88,134.92 226.03,135.07 226.21,135.18C226.4,135.3 226.6,135.35 226.83,135.35Z"
android:fillColor="#E8E2D4"/>
<group>
<clip-path
android:pathData="M204,150h24v24h-24z"/>
<path
android:pathData="M227.5,158.25C227.5,162.43 224.17,165.84 220,165.99V166H209.5V166H209.43C206.71,166 204.5,163.81 204.5,161.1C204.5,158.4 206.71,156.21 209.43,156.21C210.37,156.21 211.26,156.47 212.01,156.93C212.63,153.28 215.84,150.5 219.7,150.5C224.01,150.5 227.5,153.97 227.5,158.25Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="223.67"
android:centerY="164.68"
android:gradientRadius="18.04"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M215.5,160L213.38,162.05C213.1,162.31 212.88,162.63 212.73,162.99C212.58,163.34 212.5,163.72 212.5,164.1C212.5,164.48 212.58,164.86 212.73,165.22C212.88,165.57 213.1,165.89 213.38,166.15C214.55,167.28 216.45,167.28 217.62,166.15C217.9,165.88 218.12,165.57 218.27,165.21C218.43,164.85 218.5,164.47 218.5,164.09C218.5,163.7 218.42,163.32 218.26,162.97C218.11,162.61 217.88,162.3 217.6,162.03L215.5,160ZM219.5,166.5L217.38,168.55C217.1,168.81 216.88,169.13 216.73,169.49C216.58,169.84 216.5,170.22 216.5,170.6C216.5,170.98 216.58,171.36 216.73,171.72C216.88,172.07 217.1,172.39 217.38,172.65C218.55,173.78 220.45,173.78 221.62,172.65C221.9,172.38 222.12,172.07 222.27,171.71C222.43,171.35 222.5,170.97 222.5,170.59C222.5,170.2 222.42,169.82 222.26,169.47C222.11,169.11 221.88,168.8 221.6,168.53L219.5,166.5ZM224.5,160L222.38,162.05C222.1,162.31 221.88,162.63 221.73,162.99C221.58,163.34 221.5,163.72 221.5,164.1C221.5,164.48 221.58,164.86 221.73,165.22C221.88,165.57 222.1,165.89 222.38,166.15C223.55,167.28 225.45,167.28 226.62,166.15C226.9,165.89 227.12,165.57 227.27,165.22C227.42,164.86 227.5,164.48 227.5,164.1C227.5,163.72 227.42,163.34 227.27,162.99C227.12,162.63 226.9,162.32 226.62,162.05L226.6,162.03L224.5,160Z"
android:fillColor="#0B57D0"/>
</group>
<path
android:pathData="M207.17,193V191.33H202.7V189.76L205.93,182.92H207.85L204.63,189.76H207.17V187.13H208.87V189.76H209.82V191.33H208.87V193H207.17ZM210.63,193L213.81,182.92H216.28L219.46,193H217.73L214.84,183.96H215.22L212.37,193H210.63ZM212.4,190.82V189.24H217.7V190.82H212.4ZM220.73,193V182.92H222.24L225.73,190.06L229.22,182.92H230.74V193H229.16V186.54L226.07,193H225.4L222.31,186.54V193H220.73Z"
android:fillColor="#CDC6B4"/>
<group>
<clip-path
android:pathData="M252,151h24v24h-24z"/>
<path
android:pathData="M262.42,153.81C262.98,153.85 263.51,154.09 263.91,154.49C264.31,154.89 264.55,155.42 264.59,155.99C264.62,156.49 264.82,156.98 265.16,157.36C265.53,157.79 265.73,158.34 265.73,158.9C265.73,159.46 265.53,160.01 265.16,160.44C264.82,160.82 264.62,161.3 264.59,161.82C264.55,162.38 264.31,162.91 263.91,163.31C263.51,163.71 262.98,163.95 262.42,163.99C261.9,164.02 261.42,164.22 261.04,164.56C260.61,164.93 260.07,165.13 259.5,165.13C258.93,165.13 258.39,164.93 257.96,164.56C257.58,164.22 257.1,164.02 256.58,163.99C256.02,163.95 255.49,163.71 255.09,163.31C254.69,162.91 254.45,162.38 254.41,161.82C254.38,161.3 254.18,160.82 253.84,160.44C253.47,160.01 253.26,159.46 253.26,158.9C253.26,158.34 253.47,157.79 253.84,157.36C254.18,156.98 254.38,156.49 254.41,155.99C254.45,155.42 254.69,154.89 255.09,154.49C255.49,154.09 256.02,153.85 256.58,153.81C257.1,153.78 257.58,153.58 257.96,153.24C258.39,152.87 258.93,152.66 259.5,152.66C260.07,152.66 260.61,152.87 261.04,153.24C261.42,153.58 261.9,153.78 262.42,153.81Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="255.85"
android:centerY="153.47"
android:gradientRadius="11.5"
android:type="radial">
<item android:offset="0" android:color="#FFFFBB29"/>
<item android:offset="0.27" android:color="#FFFCB224"/>
<item android:offset="0.52" android:color="#FFE47100"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M275.5,159.25C275.5,163.43 272.17,166.84 268,166.99V167H257.5V167H257.43C254.71,167 252.5,164.81 252.5,162.1C252.5,159.4 254.71,157.21 257.43,157.21C258.37,157.21 259.26,157.47 260.01,157.93C260.64,154.28 263.84,151.5 267.7,151.5C272.01,151.5 275.5,154.97 275.5,159.25Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="271.67"
android:centerY="165.68"
android:gradientRadius="18.04"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M263.5,161L261.38,163.05C261.1,163.31 260.88,163.63 260.73,163.99C260.58,164.34 260.5,164.72 260.5,165.1C260.5,165.48 260.58,165.86 260.73,166.22C260.88,166.57 261.1,166.89 261.38,167.15C262.55,168.28 264.45,168.28 265.62,167.15C265.9,166.88 266.12,166.57 266.27,166.21C266.42,165.85 266.5,165.47 266.5,165.09C266.5,164.7 266.42,164.32 266.26,163.97C266.11,163.61 265.88,163.3 265.6,163.03L263.5,161ZM267.5,167.5L265.38,169.55C265.1,169.81 264.88,170.13 264.73,170.49C264.58,170.84 264.5,171.22 264.5,171.6C264.5,171.98 264.58,172.36 264.73,172.72C264.88,173.07 265.1,173.39 265.38,173.65C266.55,174.78 268.45,174.78 269.62,173.65C269.9,173.38 270.12,173.07 270.27,172.71C270.42,172.35 270.5,171.97 270.5,171.59C270.5,171.2 270.42,170.82 270.26,170.47C270.11,170.11 269.88,169.8 269.6,169.53L267.5,167.5ZM272.5,161L270.38,163.05C270.1,163.31 269.88,163.63 269.73,163.99C269.58,164.34 269.5,164.72 269.5,165.1C269.5,165.48 269.58,165.86 269.73,166.22C269.88,166.57 270.1,166.89 270.38,167.15C271.55,168.28 273.45,168.28 274.62,167.15C274.9,166.89 275.12,166.57 275.27,166.22C275.42,165.86 275.5,165.48 275.5,165.1C275.5,164.72 275.42,164.34 275.27,163.99C275.12,163.63 274.9,163.32 274.62,163.05L274.6,163.03L272.5,161Z"
android:fillColor="#0B57D0"/>
</group>
<path
android:pathData="M253.8,142.98V141.3L258.73,136.91C259.11,136.57 259.38,136.25 259.53,135.94C259.68,135.64 259.75,135.35 259.75,135.06C259.75,134.68 259.67,134.34 259.5,134.04C259.34,133.74 259.11,133.5 258.82,133.32C258.53,133.14 258.2,133.06 257.82,133.06C257.42,133.06 257.06,133.15 256.75,133.34C256.45,133.52 256.21,133.76 256.04,134.06C255.87,134.37 255.79,134.7 255.8,135.05H253.82C253.82,134.28 253.99,133.61 254.33,133.04C254.68,132.47 255.15,132.03 255.75,131.71C256.36,131.4 257.06,131.24 257.86,131.24C258.59,131.24 259.25,131.4 259.84,131.74C260.43,132.06 260.89,132.51 261.22,133.1C261.56,133.67 261.73,134.34 261.73,135.09C261.73,135.64 261.65,136.1 261.5,136.47C261.36,136.85 261.13,137.19 260.83,137.5C260.54,137.82 260.17,138.17 259.74,138.55L256.24,141.65L256.06,141.17H261.73V142.98H253.8ZM267.42,143.24C266.66,143.24 265.98,143.09 265.39,142.78C264.8,142.47 264.33,142.04 263.99,141.49C263.66,140.94 263.49,140.31 263.49,139.6C263.49,138.96 263.64,138.38 263.93,137.83C264.23,137.29 264.65,136.85 265.22,136.53L265.18,137.14C264.74,136.81 264.39,136.42 264.15,135.98C263.91,135.54 263.79,135.04 263.79,134.5C263.79,133.84 263.94,133.26 264.25,132.78C264.57,132.29 264.99,131.91 265.54,131.65C266.08,131.38 266.71,131.24 267.42,131.24C268.13,131.24 268.76,131.38 269.3,131.65C269.85,131.91 270.28,132.29 270.59,132.78C270.9,133.26 271.06,133.84 271.06,134.5C271.06,135.04 270.94,135.54 270.71,135.98C270.48,136.41 270.13,136.81 269.66,137.16L269.65,136.54C270.21,136.85 270.63,137.28 270.92,137.83C271.22,138.38 271.37,138.96 271.37,139.6C271.37,140.31 271.2,140.94 270.86,141.49C270.52,142.04 270.06,142.47 269.46,142.78C268.87,143.09 268.19,143.24 267.42,143.24ZM267.42,141.42C267.98,141.42 268.44,141.27 268.8,140.96C269.15,140.65 269.33,140.2 269.33,139.6C269.33,139 269.15,138.55 268.8,138.24C268.45,137.93 267.99,137.77 267.42,137.77C266.85,137.77 266.4,137.93 266.05,138.24C265.7,138.55 265.53,139 265.53,139.6C265.53,140.2 265.7,140.65 266.05,140.96C266.4,141.27 266.85,141.42 267.42,141.42ZM267.42,135.94C267.89,135.94 268.28,135.82 268.57,135.58C268.87,135.34 269.02,134.98 269.02,134.5C269.02,134.01 268.87,133.65 268.57,133.42C268.28,133.18 267.89,133.06 267.42,133.06C266.95,133.06 266.57,133.18 266.27,133.42C265.97,133.65 265.83,134.01 265.83,134.5C265.83,134.98 265.97,135.34 266.27,135.58C266.57,135.82 266.95,135.94 267.42,135.94ZM275.69,137C275.16,137 274.68,136.87 274.24,136.62C273.8,136.35 273.45,136.01 273.19,135.58C272.94,135.14 272.81,134.65 272.81,134.12C272.81,133.6 272.94,133.12 273.21,132.68C273.48,132.24 273.83,131.89 274.26,131.63C274.7,131.37 275.18,131.24 275.69,131.24C276.22,131.24 276.7,131.37 277.13,131.63C277.57,131.89 277.92,132.24 278.18,132.67C278.44,133.1 278.57,133.59 278.57,134.12C278.57,134.65 278.44,135.14 278.18,135.58C277.92,136.01 277.57,136.35 277.13,136.62C276.7,136.87 276.22,137 275.69,137ZM275.69,135.35C275.91,135.35 276.12,135.3 276.3,135.18C276.49,135.07 276.64,134.92 276.75,134.74C276.86,134.55 276.92,134.34 276.92,134.12C276.92,133.9 276.86,133.69 276.75,133.5C276.64,133.32 276.49,133.17 276.3,133.06C276.12,132.94 275.91,132.89 275.69,132.89C275.46,132.89 275.26,132.94 275.07,133.06C274.89,133.17 274.74,133.32 274.62,133.5C274.51,133.69 274.46,133.9 274.46,134.12C274.46,134.34 274.51,134.55 274.62,134.74C274.74,134.92 274.89,135.07 275.07,135.18C275.26,135.3 275.46,135.35 275.69,135.35Z"
android:fillColor="#E8E2D4"/>
<path
android:pathData="M254.97,193.21C254.46,193.21 253.98,193.1 253.53,192.9C253.09,192.68 252.71,192.39 252.39,192.01C252.07,191.64 251.84,191.21 251.7,190.71L253.32,190.28C253.39,190.55 253.51,190.78 253.68,190.98C253.86,191.17 254.06,191.32 254.3,191.43C254.54,191.54 254.78,191.59 255.03,191.59C255.36,191.59 255.66,191.51 255.93,191.35C256.2,191.2 256.41,190.98 256.57,190.72C256.73,190.45 256.81,190.15 256.81,189.82C256.81,189.49 256.73,189.2 256.57,188.93C256.41,188.66 256.19,188.45 255.92,188.3C255.65,188.14 255.35,188.06 255.03,188.06C254.65,188.06 254.32,188.13 254.07,188.27C253.81,188.41 253.62,188.56 253.49,188.72L252.04,188.25L252.35,182.92H257.83V184.5H253.25L253.88,183.91L253.66,187.62L253.35,187.24C253.61,187 253.92,186.82 254.26,186.71C254.61,186.59 254.94,186.53 255.26,186.53C255.89,186.53 256.45,186.68 256.94,186.97C257.43,187.25 257.81,187.64 258.08,188.13C258.36,188.63 258.5,189.19 258.5,189.82C258.5,190.45 258.34,191.02 258.01,191.54C257.69,192.05 257.26,192.45 256.72,192.76C256.19,193.06 255.6,193.21 254.97,193.21ZM259.48,193L262.66,182.92H265.13L268.31,193H266.57L263.69,183.96H264.07L261.22,193H259.48ZM261.25,190.82V189.24H266.55V190.82H261.25ZM269.58,193V182.92H271.1L274.58,190.06L278.07,182.92H279.59V193H278.01V186.54L274.92,193H274.24L271.16,186.54V193H269.58Z"
android:fillColor="#CDC6B4"/>
<group>
<clip-path
android:pathData="M302,151h24v24h-24z"/>
<path
android:pathData="M312.42,153.81C312.98,153.85 313.51,154.09 313.91,154.49C314.31,154.89 314.55,155.42 314.59,155.99C314.62,156.49 314.82,156.98 315.16,157.36C315.53,157.79 315.73,158.34 315.73,158.9C315.73,159.46 315.53,160.01 315.16,160.44C314.82,160.82 314.62,161.3 314.59,161.82C314.55,162.38 314.31,162.91 313.91,163.31C313.51,163.71 312.98,163.95 312.42,163.99C311.9,164.02 311.42,164.22 311.04,164.56C310.61,164.93 310.07,165.13 309.5,165.13C308.93,165.13 308.39,164.93 307.96,164.56C307.58,164.22 307.1,164.02 306.58,163.99C306.02,163.95 305.49,163.71 305.09,163.31C304.69,162.91 304.45,162.38 304.41,161.82C304.38,161.3 304.18,160.82 303.84,160.44C303.47,160.01 303.27,159.46 303.27,158.9C303.27,158.34 303.47,157.79 303.84,157.36C304.18,156.98 304.38,156.49 304.41,155.99C304.45,155.42 304.69,154.89 305.09,154.49C305.49,154.09 306.02,153.85 306.58,153.81C307.1,153.78 307.58,153.58 307.96,153.24C308.39,152.87 308.93,152.66 309.5,152.66C310.07,152.66 310.61,152.87 311.04,153.24C311.42,153.58 311.9,153.78 312.42,153.81Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="305.85"
android:centerY="153.47"
android:gradientRadius="11.5"
android:type="radial">
<item android:offset="0" android:color="#FFFFBB29"/>
<item android:offset="0.27" android:color="#FFFCB224"/>
<item android:offset="0.52" android:color="#FFE47100"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M325.5,159.25C325.5,163.43 322.17,166.84 318,166.99V167H307.5V167H307.43C304.71,167 302.5,164.81 302.5,162.1C302.5,159.4 304.71,157.21 307.43,157.21C308.37,157.21 309.26,157.47 310.01,157.93C310.64,154.28 313.84,151.5 317.7,151.5C322.01,151.5 325.5,154.97 325.5,159.25Z"
android:fillAlpha="0.95"
android:fillType="evenOdd">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="321.67"
android:centerY="165.68"
android:gradientRadius="18.04"
android:type="radial">
<item android:offset="0.3" android:color="#FFB4B4B4"/>
<item android:offset="1" android:color="#FFE3E3E3"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M313.5,161L311.38,163.05C311.1,163.31 310.88,163.63 310.73,163.99C310.58,164.34 310.5,164.72 310.5,165.1C310.5,165.48 310.58,165.86 310.73,166.22C310.88,166.57 311.1,166.89 311.38,167.15C312.55,168.28 314.45,168.28 315.62,167.15C315.9,166.88 316.12,166.57 316.27,166.21C316.42,165.85 316.5,165.47 316.5,165.09C316.5,164.7 316.42,164.32 316.26,163.97C316.11,163.61 315.88,163.3 315.6,163.03L313.5,161ZM317.5,167.5L315.38,169.55C315.1,169.81 314.88,170.13 314.73,170.49C314.58,170.84 314.5,171.22 314.5,171.6C314.5,171.98 314.58,172.36 314.73,172.72C314.88,173.07 315.1,173.39 315.38,173.65C316.55,174.78 318.45,174.78 319.62,173.65C319.9,173.38 320.12,173.07 320.27,172.71C320.42,172.35 320.5,171.97 320.5,171.59C320.5,171.2 320.42,170.82 320.26,170.47C320.11,170.11 319.88,169.8 319.6,169.53L317.5,167.5ZM322.5,161L320.38,163.05C320.1,163.31 319.88,163.63 319.73,163.99C319.58,164.34 319.5,164.72 319.5,165.1C319.5,165.48 319.58,165.86 319.73,166.22C319.88,166.57 320.1,166.89 320.38,167.15C321.55,168.28 323.45,168.28 324.62,167.15C324.9,166.89 325.12,166.57 325.27,166.22C325.42,165.86 325.5,165.48 325.5,165.1C325.5,164.72 325.42,164.34 325.27,163.99C325.12,163.63 324.9,163.32 324.62,163.05L324.6,163.03L322.5,161Z"
android:fillColor="#0B57D0"/>
</group>
<path
android:pathData="M303.8,142.98V141.3L308.73,136.91C309.11,136.57 309.38,136.25 309.53,135.94C309.68,135.64 309.75,135.35 309.75,135.06C309.75,134.68 309.67,134.34 309.5,134.04C309.34,133.74 309.11,133.5 308.82,133.32C308.53,133.14 308.2,133.06 307.82,133.06C307.42,133.06 307.06,133.15 306.75,133.34C306.45,133.52 306.21,133.76 306.04,134.06C305.87,134.37 305.79,134.7 305.8,135.05H303.82C303.82,134.28 303.99,133.61 304.33,133.04C304.67,132.47 305.15,132.03 305.75,131.71C306.36,131.4 307.06,131.24 307.86,131.24C308.59,131.24 309.25,131.4 309.84,131.74C310.43,132.06 310.89,132.51 311.22,133.1C311.56,133.67 311.73,134.34 311.73,135.09C311.73,135.64 311.65,136.1 311.5,136.47C311.36,136.85 311.13,137.19 310.83,137.5C310.54,137.82 310.17,138.17 309.74,138.55L306.24,141.65L306.06,141.17H311.73V142.98H303.8ZM317.37,131.26C318.12,131.26 318.8,131.43 319.4,131.79C320.01,132.14 320.48,132.63 320.83,133.26C321.18,133.89 321.36,134.61 321.36,135.42V138.94C321.36,139.8 321.18,140.57 320.83,141.22C320.48,141.86 319.99,142.36 319.36,142.71C318.73,143.06 318,143.24 317.15,143.24C316.57,143.24 316.02,143.14 315.51,142.94C314.99,142.74 314.53,142.43 314.11,142.02L315.5,140.66C315.71,140.9 315.95,141.09 316.24,141.23C316.54,141.37 316.84,141.43 317.15,141.43C317.6,141.43 317.99,141.33 318.33,141.12C318.67,140.91 318.93,140.63 319.11,140.3C319.3,139.96 319.39,139.59 319.39,139.2V137.29L319.74,137.67C319.41,138.06 319.02,138.36 318.55,138.58C318.09,138.79 317.6,138.9 317.09,138.9C316.37,138.9 315.73,138.73 315.17,138.4C314.62,138.07 314.18,137.62 313.86,137.06C313.55,136.49 313.39,135.84 313.39,135.12C313.39,134.4 313.57,133.75 313.93,133.17C314.29,132.58 314.78,132.12 315.38,131.78C315.99,131.43 316.65,131.26 317.37,131.26ZM317.37,133.1C317,133.1 316.66,133.19 316.35,133.37C316.04,133.55 315.79,133.79 315.61,134.1C315.43,134.41 315.34,134.75 315.34,135.12C315.34,135.49 315.43,135.84 315.6,136.14C315.79,136.45 316.03,136.7 316.33,136.88C316.64,137.06 316.98,137.15 317.36,137.15C317.73,137.15 318.07,137.06 318.38,136.88C318.69,136.7 318.93,136.45 319.11,136.14C319.3,135.84 319.39,135.49 319.39,135.12C319.39,134.76 319.3,134.42 319.12,134.12C318.94,133.81 318.7,133.56 318.39,133.38C318.08,133.19 317.74,133.1 317.37,133.1ZM325.83,137C325.3,137 324.82,136.87 324.38,136.62C323.94,136.35 323.59,136.01 323.33,135.58C323.08,135.14 322.95,134.65 322.95,134.12C322.95,133.6 323.08,133.12 323.35,132.68C323.61,132.24 323.97,131.89 324.4,131.63C324.84,131.37 325.32,131.24 325.83,131.24C326.36,131.24 326.84,131.37 327.27,131.63C327.71,131.89 328.05,132.24 328.32,132.67C328.58,133.1 328.71,133.59 328.71,134.12C328.71,134.65 328.58,135.14 328.32,135.58C328.05,136.01 327.71,136.35 327.27,136.62C326.84,136.87 326.36,137 325.83,137ZM325.83,135.35C326.05,135.35 326.26,135.3 326.45,135.18C326.63,135.07 326.78,134.92 326.89,134.74C327.01,134.55 327.06,134.34 327.06,134.12C327.06,133.9 327.01,133.69 326.89,133.5C326.78,133.32 326.63,133.17 326.45,133.06C326.26,132.94 326.05,132.89 325.83,132.89C325.61,132.89 325.4,132.94 325.21,133.06C325.03,133.17 324.88,133.32 324.77,133.5C324.65,133.69 324.6,133.9 324.6,134.12C324.6,134.34 324.65,134.55 324.77,134.74C324.88,134.92 325.03,135.07 325.21,135.18C325.4,135.3 325.61,135.35 325.83,135.35Z"
android:fillColor="#E8E2D4"/>
<path
android:pathData="M305.47,193.21C304.81,193.21 304.21,193.06 303.69,192.75C303.17,192.43 302.75,192 302.44,191.45C302.13,190.9 301.98,190.27 301.98,189.56V186.49C301.98,185.73 302.13,185.06 302.43,184.49C302.74,183.93 303.17,183.49 303.72,183.19C304.28,182.88 304.92,182.72 305.65,182.72C306.16,182.72 306.65,182.81 307.1,182.98C307.56,183.15 307.97,183.42 308.32,183.79L307.1,184.98C306.93,184.77 306.71,184.6 306.45,184.48C306.2,184.36 305.93,184.3 305.65,184.3C305.26,184.3 304.92,184.39 304.63,184.58C304.33,184.76 304.1,185 303.94,185.3C303.78,185.6 303.7,185.92 303.7,186.26V187.93L303.39,187.6C303.68,187.26 304.03,187 304.44,186.81C304.84,186.62 305.27,186.52 305.71,186.52C306.35,186.52 306.91,186.67 307.39,186.96C307.88,187.24 308.26,187.64 308.54,188.13C308.82,188.63 308.96,189.19 308.96,189.83C308.96,190.46 308.8,191.03 308.48,191.54C308.16,192.05 307.74,192.46 307.21,192.76C306.68,193.06 306.1,193.21 305.47,193.21ZM305.47,191.59C305.79,191.59 306.09,191.52 306.36,191.36C306.63,191.2 306.85,190.99 307.01,190.73C307.17,190.45 307.25,190.16 307.25,189.83C307.25,189.5 307.17,189.2 307.01,188.93C306.85,188.66 306.64,188.45 306.37,188.29C306.1,188.13 305.81,188.04 305.48,188.04C305.15,188.04 304.86,188.13 304.58,188.29C304.31,188.45 304.1,188.66 303.94,188.93C303.78,189.2 303.7,189.5 303.7,189.83C303.7,190.15 303.78,190.44 303.93,190.71C304.09,190.98 304.3,191.19 304.57,191.35C304.84,191.51 305.14,191.59 305.47,191.59ZM309.98,193L313.15,182.92H315.62L318.8,193H317.07L314.18,183.96H314.56L311.71,193H309.98ZM311.75,190.82V189.24H317.04V190.82H311.75ZM320.07,193V182.92H321.59L325.07,190.06L328.56,182.92H330.08V193H328.5V186.54L325.41,193H324.74L321.65,186.54V193H320.07Z"
android:fillColor="#CDC6B4"/>
</vector>
@@ -1,4 +0,0 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="999dp" />
<solid android:color="@color/colorSecondaryContainer" />
</shape>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

@@ -1,32 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="108dp"
android:height="108dp"
android:viewportWidth="49.999"
android:viewportHeight="40.002">
<group android:scaleX="0.44"
android:scaleY="0.35202464"
android:translateX="13.99972"
android:translateY="12.9601555">
<path
android:pathData="M42.789,22.915c-0.001,-0.012 -3.32,-0.571 -6.539,1.71c1.312,-2.281 3.094,-3.812 6.123,-4.122C40.964,15.336 36.258,11.531 30.642,11.531c-4.432,0 -8.305,2.373 -10.435,5.913c2.729,0.119 5.606,2.18 7.405,4.506c-1.703,-1.318 -3.835,-2.111 -6.156,-2.111c-0.84,0 -1.652,0.115 -2.432,0.31c-0.002,-0.022 -0.009,-0.042 -0.011,-0.065c-0.008,0.024 -0.018,0.047 -0.025,0.072c-4.372,1.103 -7.614,5.05 -7.614,9.765c0,5.566 4.514,10.081 10.082,10.081h19.939c4.752,0 8.604,-3.853 8.604,-8.604C50,27.119 46.876,23.581 42.789,22.915z"
android:fillColor="#363636"/>
<path
android:pathData="M12.403,20.145c-0.257,-0.667 -0.403,-1.389 -0.403,-2.146c0,-3.308 2.692,-6 6,-6c0.756,0 1.478,0.146 2.145,0.403c1.123,-1.012 2.382,-1.844 3.743,-2.474c-1.653,-1.208 -3.684,-1.93 -5.887,-1.93c-5.522,0 -10,4.478 -10,10c0,2.045 0.617,3.945 1.67,5.529C10.384,22.257 11.31,21.114 12.403,20.145z"
android:fillColor="#363636"/>
<path
android:pathData="M20,3c0,1.65 -0.9,3 -2,3s-2,-1.35 -2,-3c0,-1.65 0.9,-3 2,-3S20,1.35 20,3z"
android:fillColor="#363636"/>
<path
android:pathData="M3,20c-1.65,0 -3,-0.9 -3,-2c0,-1.1 1.35,-2 3,-2s3,0.9 3,2C6,19.1 4.649,20 3,20z"
android:fillColor="#363636"/>
<path
android:pathData="M30.261,8.531c0.958,-1.131 1.185,-2.54 0.466,-3.259c-0.778,-0.778 -2.369,-0.46 -3.535,0.707c-0.98,0.98 -1.352,2.255 -0.987,3.101C27.505,8.722 28.865,8.531 30.261,8.531z"
android:fillColor="#363636"/>
<path
android:pathData="M8,29.92c0,-1.329 0.201,-2.619 0.575,-3.839c-0.8,-0.078 -1.795,0.311 -2.596,1.111c-1.167,1.167 -1.485,2.757 -0.707,3.535c0.616,0.617 1.742,0.535 2.763,-0.102C8.022,30.39 8,30.158 8,29.92z"
android:fillColor="#363636"/>
<path
android:pathData="M8.807,5.979c1.167,1.167 1.485,2.757 0.707,3.535c-0.778,0.778 -2.369,0.459 -3.535,-0.707c-1.167,-1.167 -1.485,-2.757 -0.707,-3.535C6.05,4.494 7.641,4.812 8.807,5.979z"
android:fillColor="#363636"/>
</group>
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

@@ -1,12 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Modify this file to customize your launch splash screen -->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@android:color/white" />
<!-- You can insert your own image assets here -->
<!-- <item>
<bitmap
android:gravity="center"
android:src="@mipmap/launch_image" />
</item> -->
</layer-list>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

@@ -1,31 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:aapt="http://schemas.android.com/aapt"
android:width="220dp"
android:height="220dp"
android:viewportWidth="220"
android:viewportHeight="220">
<group>
<clip-path
android:pathData="M0,0h220v220h-220z"/>
<path
android:pathData="M67.22,41.56C97.94,10.85 147.73,10.85 178.44,41.56C209.15,72.27 209.15,122.06 178.44,152.77L152.77,178.44C122.06,209.15 72.27,209.15 41.56,178.44C10.85,147.73 10.85,97.94 41.56,67.22L67.22,41.56Z"
android:fillColor="#222017"/>
<path
android:pathData="M100.23,109.42C103.17,109.62 105.94,110.88 108.03,112.97C110.12,115.06 111.38,117.83 111.58,120.77C111.76,123.44 112.81,125.96 114.56,127.97C116.5,130.2 117.57,133.05 117.57,136C117.57,138.95 116.5,141.8 114.56,144.03C112.81,146.04 111.76,148.57 111.58,151.23C111.38,154.17 110.12,156.94 108.03,159.03C105.94,161.12 103.17,162.38 100.23,162.58C97.56,162.76 95.04,163.81 93.03,165.56C90.8,167.5 87.95,168.57 85,168.57C82.05,168.57 79.2,167.5 76.97,165.56C74.96,163.81 72.43,162.76 69.77,162.58C66.83,162.38 64.06,161.12 61.97,159.03C59.88,156.94 58.62,154.17 58.42,151.23C58.24,148.56 57.19,146.04 55.44,144.03C53.5,141.8 52.43,138.95 52.43,136C52.43,133.05 53.5,130.2 55.44,127.97C57.19,125.96 58.24,123.44 58.42,120.77C58.62,117.83 59.88,115.06 61.97,112.97C64.06,110.88 66.83,109.62 69.77,109.42C72.44,109.24 74.96,108.19 76.97,106.44C79.2,104.5 82.05,103.43 85,103.43C87.95,103.43 90.8,104.5 93.03,106.44C95.04,108.19 97.56,109.24 100.23,109.42Z">
<aapt:attr name="android:fillColor">
<gradient
android:centerX="77.29"
android:centerY="129.06"
android:gradientRadius="35.86"
android:type="radial">
<item android:offset="0.02" android:color="#FFFFBB29"/>
<item android:offset="0.53" android:color="#FFFCB224"/>
<item android:offset="0.99" android:color="#FFE47100"/>
</gradient>
</aapt:attr>
</path>
<path
android:pathData="M88,109.94V103.64L106.48,87.17C107.92,85.89 108.92,84.68 109.48,83.54C110.04,82.4 110.32,81.3 110.32,80.24C110.32,78.8 110.01,77.52 109.39,76.4C108.77,75.26 107.91,74.36 106.81,73.7C105.73,73.04 104.48,72.71 103.06,72.71C101.56,72.71 100.23,73.06 99.07,73.76C97.93,74.44 97.04,75.35 96.4,76.49C95.76,77.63 95.46,78.86 95.5,80.18H88.06C88.06,77.3 88.7,74.79 89.98,72.65C91.28,70.51 93.06,68.85 95.32,67.67C97.6,66.49 100.23,65.9 103.21,65.9C105.97,65.9 108.45,66.52 110.65,67.76C112.85,68.98 114.58,70.68 115.84,72.86C117.1,75.02 117.73,77.51 117.73,80.33C117.73,82.39 117.45,84.12 116.89,85.52C116.33,86.92 115.49,88.21 114.37,89.39C113.27,90.57 111.9,91.88 110.26,93.32L97.15,104.93L96.49,103.13H117.73V109.94H88ZM141.71,110V102.86H122.57V96.11L136.4,66.8H144.65L130.82,96.11H141.71V84.86H149.03V96.11H153.08V102.86H149.03V110H141.71ZM168.67,87.5C166.69,87.5 164.88,87.02 163.24,86.06C161.6,85.08 160.29,83.78 159.31,82.16C158.35,80.52 157.87,78.7 157.87,76.7C157.87,74.74 158.37,72.94 159.37,71.3C160.37,69.66 161.69,68.35 163.33,67.37C164.97,66.39 166.75,65.9 168.67,65.9C170.65,65.9 172.45,66.39 174.07,67.37C175.71,68.33 177.02,69.63 178,71.27C178.98,72.89 179.47,74.7 179.47,76.7C179.47,78.7 178.98,80.52 178,82.16C177.02,83.78 175.71,85.08 174.07,86.06C172.45,87.02 170.65,87.5 168.67,87.5ZM168.67,81.32C169.51,81.32 170.28,81.11 170.98,80.69C171.68,80.27 172.24,79.71 172.66,79.01C173.08,78.31 173.29,77.54 173.29,76.7C173.29,75.86 173.08,75.09 172.66,74.39C172.24,73.69 171.68,73.13 170.98,72.71C170.28,72.29 169.51,72.08 168.67,72.08C167.83,72.08 167.06,72.29 166.36,72.71C165.66,73.13 165.1,73.69 164.68,74.39C164.26,75.09 164.05,75.86 164.05,76.7C164.05,77.54 164.26,78.31 164.68,79.01C165.1,79.71 165.66,80.27 166.36,80.69C167.06,81.11 167.83,81.32 168.67,81.32Z"
android:fillColor="#DBC66E"/>
</group>
</vector>
@@ -1,5 +0,0 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="24dp" />
<solid android:color="@color/colorSurfaceContainer" />
</shape>
@@ -1,4 +0,0 @@
<shape xmlns:android="http://schemas.android.com/apk/res/android">
<corners android:radius="999dp" />
<solid android:color="@color/colorSurfaceContainer" />
</shape>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="200dp"
android:height="200dp"
android:viewportWidth="380"
android:viewportHeight="380">
<path
android:pathData="M116.12,71.79C169.16,18.74 255.17,18.74 308.21,71.79C361.26,124.83 361.26,210.84 308.21,263.88L263.88,308.21C210.84,361.26 124.83,361.26 71.79,308.21C18.74,255.17 18.74,169.16 71.79,116.12L116.12,71.79Z"
android:fillColor="@color/colorSurfaceContainer"/>
</vector>
@@ -1,9 +0,0 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="380dp"
android:height="380dp"
android:viewportWidth="380"
android:viewportHeight="380">
<path
android:pathData="M230.39,50.47C293.11,23.23 356.77,86.89 329.53,149.61L325.02,159.98C316.71,179.13 316.71,200.87 325.02,220.02L329.53,230.39C356.77,293.11 293.11,356.77 230.39,329.53L220.02,325.02C200.87,316.71 179.13,316.71 159.98,325.02L149.61,329.53C86.89,356.77 23.23,293.11 50.47,230.39L54.98,220.02C63.29,200.87 63.29,179.13 54.98,159.98L50.47,149.61C23.23,86.89 86.89,23.23 149.61,50.47L159.98,54.98C179.13,63.29 200.87,63.29 220.02,54.98L230.39,50.47Z"
android:fillColor="@color/colorPrimaryContainer"/>
</vector>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 46 KiB

@@ -1,110 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_cast_clock_hourly"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="18dp"
android:background="@drawable/rounded_square_bg"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/weather_condition_current_clock_hourly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Haze"
android:layout_gravity="start"
android:textColor="@color/colorPrimary"
android:textSize="18sp"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="end"
android:layout_gravity="end">
<TextClock
android:id="@+id/clockTextHourlyDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEE MMM d"
android:format24Hour="EEE MMM d"
android:textColor="@color/colorOnBackground"
android:gravity="center"
android:textSize="20sp"
android:includeFontPadding="false"
/>
<TextClock
android:id="@+id/clockTextHourlyTime"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textFontWeight="700"
android:textSize="55sp"
android:format12Hour="hh:mm"
android:format24Hour="HH:mm"
android:textColor="@color/colorOnBackground"
android:gravity="end"
android:includeFontPadding="false"
/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="start|bottom">
<TextView
android:id="@+id/current_widget_temp_cast_clock_hourly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="50sp"
android:textStyle="bold" />
<ImageView
android:id="@+id/widget_icon_hourly_cast_clock_hourly"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/clear_night" />
</LinearLayout>
<LinearLayout
android:id="@+id/hourly_cast_clock_hourly"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="end|bottom"
>
</LinearLayout>
</FrameLayout>
</FrameLayout>
</LinearLayout>
@@ -1,76 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
android:background="@drawable/daily_item_bg"
android:paddingTop="8dp"
android:paddingBottom="8dp"
android:layout_marginBottom="5dp"
android:paddingStart="10dp"
android:paddingEnd="10dp">
<ImageView
android:id="@+id/daily_icon"
android:src="@drawable/clear_night"
android:layout_width="36dp"
android:layout_marginStart="8dp"
android:layout_marginEnd="15dp"
android:layout_height="36dp" />
<LinearLayout
android:layout_width="wrap_content"
android:orientation="vertical"
android:layout_height="wrap_content">
<TextView
android:id="@+id/daily_time"
android:layout_width="wrap_content"
android:includeFontPadding="false"
android:text="Tue"
android:layout_height="wrap_content"
android:textSize="16sp"
android:textFontWeight="600"
android:textColor="@color/colorOnBackground" />
<TextView
android:id="@+id/daily_condition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Rainy"
android:includeFontPadding="false"
android:textSize="16sp"
android:textColor="@color/colorOnSurfaceVariant" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:gravity="end"
android:paddingRight="10dp"
android:layout_height="wrap_content">
<TextView
android:id="@+id/daily_temp_max"
android:layout_width="wrap_content"
android:includeFontPadding="false"
android:text="29°"
android:layout_height="wrap_content"
android:textSize="20sp"
android:layout_marginEnd="10dp"
android:textColor="@color/colorOnBackground" />
<TextView
android:id="@+id/daily_temp_min"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="21°"
android:includeFontPadding="false"
android:textSize="20sp"
android:textColor="@color/colorOnSurfaceVariant" />
</LinearLayout>
</LinearLayout>
@@ -1,83 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_date_temp"
android:layout_width="match_parent"
android:layout_height="100dp"
android:orientation="horizontal"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="0dp"
android:layout_marginEnd="10dp"
android:layout_weight="1"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="@drawable/rounded_widget_bg"
android:gravity="center_vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:gravity="center"
>
<TextClock
android:id="@+id/current_widget_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEE MMM d"
android:format24Hour="EEE MMM d"
android:textColor="@color/colorOnBackground"
android:textFontWeight="600"
android:gravity="center"
android:textSize="20sp"
/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center"
>
<TextView
android:id="@+id/temp_time_temp_date_current"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="19° • "
android:textColor="@color/colorOnSurfaceVariant"
android:textSize="16sp"
/>
<TextView
android:id="@+id/condition_current_time_date_temp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Clear sky"
android:textColor="@color/colorOnSurfaceVariant"
android:textSize="16sp"
/>
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="100dp"
android:layout_height="100dp"
android:orientation="horizontal"
android:background="@drawable/rounded_widget_bg"
android:gravity="center_vertical">
<ImageView
android:id="@+id/current_widget_temp_date_time_img"
android:layout_width="56dp"
android:layout_height="56dp"
android:layout_marginLeft="22dp"
android:src="@drawable/partly_cloudy" />
</LinearLayout>
</LinearLayout>
@@ -1,78 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_glance"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:paddingLeft="10dp"
android:paddingRight="10dp"
android:gravity="center_vertical">
<TextClock
android:id="@+id/widget_text_clock_glance"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textFontWeight="600"
android:textSize="60sp"
android:format12Hour="hh:mm"
android:format24Hour="HH:mm"
android:textColor="@color/colorGlanceWidgetTextClock"
android:shadowColor="#80000000"
android:shadowDx="2"
android:includeFontPadding="false"
android:shadowDy="2"
android:shadowRadius="4" />
<TextClock
android:id="@+id/current_widget_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEE d MMM"
android:format24Hour="EEE d MMM"
android:textColor="@color/white"
android:gravity="center"
android:textSize="20sp"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingTop="5dp"
android:layout_gravity="center"
>
<ImageView
android:id="@+id/current_img_glance"
android:layout_width="26dp"
android:layout_height="26dp"
android:src="@drawable/sunny"
android:paddingEnd="5dp"
/>
<TextView
android:id="@+id/current_glance_temp"
android:layout_width="wrap_content"
android:text="29° • "
android:layout_height="wrap_content"
android:textSize="18sp"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:textColor="@color/white" />
<TextView
android:id="@+id/current_glance_condition"
android:layout_width="wrap_content"
android:text="Clear sky"
android:layout_height="wrap_content"
android:textSize="18sp"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:textColor="@color/white" />
</LinearLayout>
</LinearLayout>
@@ -1,34 +0,0 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_pill"
android:layout_width="200dp"
android:layout_height="200dp"
android:clipToOutline="true"
android:background="@drawable/shape_set">
<ImageView
android:id="@+id/widget_icon_current_pill_pixel"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginLeft="45dp"
android:layout_marginTop="80dp"
android:layout_marginBottom="37dp"
android:src="@drawable/heavy_rain" />
<TextView
android:id="@+id/current_widget_temp_pill_pixel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="40dp"
android:layout_marginRight="35dp"
android:text="13°"
android:textColor="@color/colorPrimary"
android:textSize="55sp"
android:textStyle="bold" />
</RelativeLayout>
@@ -1,50 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_pill"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rounded_widget_bg"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/widget_icon_current_pill_pixel"
android:layout_width="100dp"
android:layout_height="100dp"
android:layout_marginLeft="50dp"
android:layout_gravity="center"
android:src="@drawable/cloudy" />
<!-- Temperature Text -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
android:paddingRight="40dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/current_widget_temp_pill_pixel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="70sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
@@ -1,51 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_pill"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@drawable/rounded_widget_bg"
android:orientation="horizontal"
android:paddingLeft="30dp"
android:paddingRight="36dp"
android:gravity="center_vertical">
<ImageView
android:id="@+id/widget_icon_current_pill_pixel"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center"
android:src="@drawable/cloudy" />
<!-- Temperature Text -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center_vertical"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/current_widget_temp_pill_pixel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="50sp"
android:textStyle="bold" />
</LinearLayout>
</FrameLayout>
</LinearLayout>
@@ -1,33 +0,0 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_pill"
android:layout_width="250dp"
android:layout_height="250dp"
android:background="@drawable/shape_set">
<ImageView
android:id="@+id/widget_icon_current_pill_pixel"
android:layout_width="90dp"
android:layout_height="90dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="56dp"
android:layout_marginTop="100dp"
android:layout_marginBottom="37dp"
android:src="@drawable/sunny" />
<TextView
android:id="@+id/current_widget_temp_pill_pixel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_marginTop="50dp"
android:layout_marginEnd="40dp"
android:text="13°"
android:textColor="@color/colorPrimary"
android:textSize="75sp"
android:textStyle="bold" />
</RelativeLayout>
@@ -1,75 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root"
android:layout_width="match_parent"
android:layout_height="100dp"
android:background="@drawable/rounded_widget_bg"
android:orientation="horizontal"
android:gravity="center_vertical">
<ImageView
android:id="@+id/widget_icon_current_pill"
android:layout_width="76dp"
android:layout_height="76dp"
android:layout_marginLeft="22dp"
android:layout_gravity="center"
android:src="@drawable/cloudy" />
<!-- Temperature Text -->
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical"
android:paddingRight="30dp">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingBottom="5dp"
android:layout_gravity="end|center_vertical">
<TextView
android:id="@+id/current_widget_temp_pill"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="40sp"
android:textStyle="bold" />
<!-- High and Low Temperature -->
<LinearLayout
android:id="@+id/temp_range"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/temp_high"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30°"
android:textColor="@color/colorSecondary"
android:textSize="16sp"
/>
<TextView
android:id="@+id/temp_low"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 21°"
android:textColor="@color/colorOnBackground"
android:textSize="16sp" />
</LinearLayout>
</LinearLayout>
</FrameLayout>
</LinearLayout>
@@ -1,166 +0,0 @@
<com.google.android.material.card.MaterialCardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:cardCornerRadius="0dp"
android:backgroundTint="@color/colorSurfaceContainer"
app:strokeColor="@android:color/transparent"
>
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/widget_preview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="#033e5c"
android:orientation="vertical"
android:paddingLeft="16dp"
android:paddingTop="?attr/actionBarSize"
android:paddingRight="16dp"
android:paddingBottom="16dp"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent">
<TextClock
android:id="@+id/preview_text_clock"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textFontWeight="600"
android:format12Hour="hh:mm"
android:format24Hour="HH:mm"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:textColor="@color/colorGlanceWidgetTextClock"
android:textSize="60sp" />
<TextClock
android:id="@+id/preview_date"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:format12Hour="EEE d MMM"
android:format24Hour="EEE d MMM"
android:gravity="center"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:textColor="@color/white"
android:textSize="20sp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:paddingTop="5dp">
<ImageView
android:id="@+id/preview_weather_icon"
android:layout_width="26dp"
android:layout_height="26dp"
android:paddingEnd="5dp"
android:src="@drawable/sunny" />
<TextView
android:id="@+id/preview_temp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:text="29° • "
android:textColor="@color/white"
android:textSize="18sp" />
<TextView
android:id="@+id/preview_condition"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:shadowColor="#80000000"
android:shadowDx="2"
android:shadowDy="2"
android:shadowRadius="4"
android:text="@string/clear_sky"
android:textColor="@color/white"
android:textSize="18sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:orientation="vertical"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"
android:paddingRight="12dp"
android:paddingLeft="12dp"
android:paddingBottom="30dp"
>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_vertical"
android:orientation="horizontal"
android:padding="8dp">
<com.google.android.material.textview.MaterialTextView
android:id="@+id/clockSizeText"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:paddingEnd="8dp"
android:text="@string/size_label"
android:textColor="@color/colorOnBackground"
android:textSize="18sp" />
<com.google.android.material.slider.Slider
android:id="@+id/clockSizeSeek"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:stepSize="1"
android:value="60"
android:valueFrom="20"
android:valueTo="120" />
</LinearLayout>
<com.google.android.material.checkbox.MaterialCheckBox
android:id="@+id/showClockCheck"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/show_clock"
app:useMaterialThemeColors="true" />
<com.google.android.material.button.MaterialButton
android:id="@+id/saveWidgetBtn"
style="@style/Widget.MaterialComponents.Button.OutlinedButton"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_gravity="end"
android:layout_marginTop="24dp"
android:layout_marginEnd="18dp"
android:text="@string/save"
app:cornerRadius="50dp" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</com.google.android.material.card.MaterialCardView>
@@ -1,118 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_cast"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:padding="18dp"
android:background="@drawable/rounded_square_bg"
>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="end|center_vertical">
<ImageView
android:id="@+id/widget_icon_hourly_cast"
android:layout_width="50dp"
android:layout_height="50dp"
android:src="@drawable/clear_night" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="end">
<TextView
android:id="@+id/current_widget_locationName"
android:layout_height="wrap_content"
android:text="Paid"
android:textColor="@color/colorSecondary"
android:gravity="end"
android:layout_width="200dp"
android:textSize="24sp"
android:maxLines="1"
android:ellipsize="end"
/>
<TextView
android:id="@+id/weather_condition_current"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Haze"
android:layout_gravity="end"
android:textColor="@color/colorPrimary"
android:textSize="20sp"
/>
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="start|bottom">
<TextView
android:id="@+id/current_widget_temp_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="50sp"
android:textStyle="bold" />
<!-- High and Low Temperature -->
<LinearLayout
android:id="@+id/temp_range_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
>
<TextView
android:id="@+id/temp_high_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30°"
android:textColor="@color/colorSecondary"
android:textSize="20sp"
/>
<TextView
android:id="@+id/temp_low_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 21°"
android:textColor="@color/colorOnBackground"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<LinearLayout
android:id="@+id/hourly_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_gravity="end|bottom"
>
</LinearLayout>
</FrameLayout>
</FrameLayout>
</LinearLayout>
@@ -1,137 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/widget_root_cast"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingRight="18dp"
android:paddingLeft="18dp"
android:paddingTop="18dp"
android:orientation="vertical"
android:background="@drawable/rounded_square_bg">
<!-- Top Row: Icon + Location/Condition -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:orientation="horizontal"
>
<ImageView
android:id="@+id/widget_icon_hourly_cast"
android:layout_width="50dp"
android:layout_gravity="center_vertical"
android:layout_height="50dp"
android:src="@drawable/clear_night" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="end"
android:gravity="end"
android:layout_marginStart="8dp">
<TextView
android:id="@+id/current_widget_locationName"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:text="Paid"
android:textColor="@color/colorSecondary"
android:gravity="end"
android:textSize="24sp"
android:maxLines="1"
android:ellipsize="end" />
<TextView
android:id="@+id/weather_condition_current"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Haze"
android:gravity="end"
android:layout_gravity="end"
android:textColor="@color/colorPrimary"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<!-- Temperature + High/Low + hourly -->
<LinearLayout
android:layout_width="match_parent"
android:orientation="horizontal"
android:layout_gravity="center_vertical"
android:gravity="center_vertical"
android:paddingBottom="10dp"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_marginTop="12dp">
<TextView
android:id="@+id/current_widget_temp_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="28°"
android:textColor="@color/colorPrimary"
android:textSize="50sp"
android:textStyle="bold" />
<!-- High and Low Temperature -->
<LinearLayout
android:id="@+id/temp_range_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/temp_high_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="30°"
android:textColor="@color/colorSecondary"
android:textSize="20sp" />
<TextView
android:id="@+id/temp_low_cast"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=" 21°"
android:textColor="@color/colorOnBackground"
android:textSize="20sp" />
</LinearLayout>
</LinearLayout>
<!-- Hourly Forecast -->
<LinearLayout
android:id="@+id/hourly_cast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="end"
android:layout_marginTop="12dp"
/>
</LinearLayout>
<!-- Daily Forecast -->
<LinearLayout
android:id="@+id/daily_cast"
android:layout_width="match_parent"
android:layout_marginTop="10dp"
android:layout_height="match_parent"
android:orientation="vertical"
android:gravity="center_vertical"
android:layout_marginBottom="12dp"
/>
</LinearLayout>
@@ -1,6 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@mipmap/ic_launcher_background"/>
<foreground android:drawable="@mipmap/ic_launcher_foreground"/>
<monochrome android:drawable="@drawable/ic_launcher_mono_foreground"/>
</adaptive-icon>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_mono_background"/>
<foreground android:drawable="@drawable/ic_launcher_mono_foreground"/>
</adaptive-icon>
@@ -1,5 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
<background android:drawable="@color/ic_launcher_mono_background"/>
<foreground android:drawable="@drawable/ic_launcher_mono_foreground"/>
</adaptive-icon>
Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 855 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 462 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 774 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Loaded 100 of 1488 files, more files were not shown because too many files have changed in this diff. Show more