* feat(theme): add support for matugen smart mode and type
* add another dry run to get smart type preview
* fix too much keywords in search index
* revert dont extract translations
* feat gate "Auto From Wallpaper" toggle row and the available matugen scheme for the pallete drop down
* re-extract settings search index
* make portal sync no longer disables matugen smart mode
* make sure cosmic theme mode also follow change from smart mode
* add translator context for Auto (Light Mode) / Auto (Dark Mode) / Auto From Wallpaper
* fix: gate matugen smart mode checks on the dynamic theme so stock themes keep portal sync and fix tile labels in control center
* fix(suncalc): parenthesise the sunrise-equation denominator
`sunHourAngle` computed
cos(z) / cos(lat) * cos(dec) - tan(lat) * tan(dec)
but the sunrise equation is
cos(H) = cos(z) / (cos(lat) * cos(dec)) - tan(lat) * tan(dec)
In Go `a / b * c` is `(a / b) * c`, so `cos(dec)` multiplied where it should divide.
The new test asserts a property rather than a formula: feeding the returned hour
angle back through the definition of the zenith angle,
cos(z) = sin(lat)*sin(dec) + cos(lat)*cos(dec)*cos(H)
has to reproduce the zenith angle that was requested. It fails on the old expression
and passes on the corrected one, over a grid of latitudes from the equator to the
polar circle, declinations across a full year, and both zenith targets the callers
use (elevTwilight -6, elevDaylight 3).
Worst-case error before the fix, in clock time:
Singapore lat 1.35 285 s
Mexico City lat 19.43 312 s
Cairo lat 30.04 354 s
New York lat 40.71 439 s
Trieste lat 45.69 512 s
London lat 51.51 671 s
Oslo lat 59.91 654 s
Tromso lat 69.65 1443 s
The error grows with latitude and with |declination|, and is largest at the civil
twilight zenith — which is where the gamma ramp starts and ends.
It also moves the boundary at which Acos leaves its domain, i.e. where the code
decides midnight sun / polar night. Swept over 505062 (lat, dec, zenith) points, the
classification differs at 961 of them (0.190%), all beyond 88 degrees of latitude.
The existing suncalc tests keep passing: they assert sunrise and sunset to the hour,
which is two orders of magnitude coarser than this error.
* fix(suncalc): classify each solar threshold independently
---------
Co-authored-by: Mark2Mac <[email protected]>
Co-authored-by: bbedward <[email protected]>
Adds a user-configurable spacing between system tray icons in the bar,
available per widget via the tray context menu in Settings > Widgets
("Icon Spacing" stepper, 0-20px), with a global default fallback.
- SettingsData/SettingsSpec: new trayIconSpacing setting (default 0)
- SystemTrayBar: apply configuredIconSpacing to the horizontal Row and
vertical Column layouts, and account for it in auto-overflow item
estimation and drag-and-drop slot math (shift offsets and target
index calculation)
- WidgetsTabSection: "Icon Spacing" stepper in the tray widget context
menu, following the existing "Max Visible" pattern
- WidgetsTab: keep trayIconSpacing when restoring per-widget data
Scorer was dropping apps that only matched on id or genericName, even though AppSearchService.searchApplications already matches both. Add id (350) and genericName (prefix 800, contains 400) tiers so the V2 launcher ranks those apps the same way.
* feat(screenshot): drag region with ctrl
* fix(screenshot): rehome moved regions
* fix(screenshot): clamp region to active output
* fix(screenshot): fall back to output union when moved region exceeds active output
---------
Co-authored-by: bbedward <[email protected]>