Skip to content

Releases: tobitege/Flowery.WinUI

v1.11.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 17:33
9022f0c

📋 What's Changed

Added

  • FlowKanban.AssigneeAdapter, IFlowKanbanAssigneeAdapter, FlowKanbanAssignee and FlowKanbanAssigneeAdapter, as in Flowery.NET 3.1.0: the host application supplies the assignees of a board as stable IDs with display names, optional avatars (ImageSource) and descriptive roles, either as a direct list (SetAssignees), through a list callback, or through a single-ID resolver for IDs that saved tasks still carry. The board reloads them when it loads, when Board or AssigneeAdapter changes and when the adapter raises AssigneesChanged, also from another thread; RefreshAssigneesAsync reloads on request. Added, moved and reassigned tasks take the last loaded assignees and resolve only an ID the adapter has not been asked about, once. A newer reload replaces an older unfinished one, and an unfinished reload cannot change an unloaded board. Names the adapter updates raise no CardEdited and start no auto-save.
  • FlowKanban.GetAssigneeOptions() returns the adapter's assignees, sorted by name, as the choices for FlowTaskEditorDialog.ShowAsyncWithAssignees.
  • FlowKanban.AssigneeAdapterFailed reports a failed adapter call with the operation, the exception and the assignee ID. Saved assignments and names stay as they are.
  • FlowTask.AssigneeAvatarSource and AssigneeRoles (not saved to JSON) and the card properties AssigneeAvatarSource, HasAssigneeAvatar, IsAssigneeAvatarPlaceholder, AssigneeRolesText and HasAssigneeRoles: a task card shows the assignee's avatar in place of the initials and the roles as the avatar's tooltip.
  • FlowTaskAssigneeOption.IsResolved: the assignee filter lists an assignee that only saved tasks know, so a saved filter keeps working. With an adapter set, the entry is marked "(Unavailable)" in all twelve languages.
  • The demo board of the Kanban home screen gives its tasks the assignee IDs demo-<name> ("demo-sam"), as in Flowery.NET.
  • Gallery: the Kanban page's sample tasks are assigned; Sam and Dario have avatar images, every demo assignee has a role. Gallery boards saved before 1.11 have their local:demo-<name> IDs mapped to demo-<name>.
  • Docs: the "User API" section in llms-static/FlowKanban.md explains the adapter, its three forms and the task editor hand-off.

Changed

  • Breaking: The Flowery.Integrations.WinUI package is removed. Its Teams and Slack providers threw NotImplementedException in every data method, the OAuth provider never re-validated a stored token, the loopback sign-in used a fixed port and blocked the UI thread, and the IdentityModel.OidcClient dependency has reached its end of life. External identity, authentication, authorization, account mapping and token storage are the host application's responsibility. The Gallery no longer registers GitHub or OpenID Connect demo providers.
  • Breaking: The Kanban user-provider API is removed: IUserProvider, ICompositeUserProvider, IFlowUser, FlowUser, FlowUserStatus, CompositeUserProvider, LocalUserProvider, FlowUserIdHelper, IUserCacheService, UserIdentityLinkStore, the token interfaces (ITokenSaveProvider, ITokenStateProvider, ITokenValidationProvider, IInteractiveAuthProvider), FlowKanban.UserProvider, FlowKanban.DefaultUserProvider, FlowKanban.GlobalAdminId, FlowKanban.EnsureGlobalAdminAsync, FlowKanban.IsUserManagementButtonEnabled, FlowKanban.IsUserManagementButtonVisible, FlowKanban.ShowUserManagementCommand, FlowKanban.IsUserManagementViewActive, FlowKanbanView.UserManagement, the user management view (FlowKanbanUserManagement) with its GitHub connect dialog and sidebar button, and the Kanban_Users_* texts except Kanban_Users_Unresolved. Assignee IDs are opaque: the board keeps them exactly as the host supplied them (no trimming) and no longer clears an ID that no provider knows; on load, an ID longer than 200 characters or with a control character is dropped instead of shortened.
  • Breaking: FlowTaskAssigneeOption takes an optional third constructor parameter (isResolved). Source code compiles unchanged, but binaries built against 1.10 must be rebuilt because the two-parameter constructor no longer exists.
  • Breaking: FlowKanban.TryLoadUserSettings and TrySaveUserSettings are removed; TryLoadSettings and TrySaveSettings read and write one settings entry (kanban.settings) instead of one per user; the first load moves the local user's per-user entry (or the only one) into it and removes the per-user entries. The "global admin" is gone: the column shortcuts Ctrl+B, Ctrl+D and Ctrl+T and their rows in the keyboard help apply to everyone.
  • Kanban: the first settings load deletes the state entries the removed user providers left behind (FlowKanban.LocalUserId, FlowKanban.IdentityLinks, kanban.admin.global). The Gallery removes once the tokens its former GitHub and OpenID Connect demo providers stored in the Windows Credential Manager (Flowery.GitHub, Flowery.OAuth.oidc-demo). Apps that used the removed providers with PasswordVaultSecureStorage should remove their entries under Flowery.GitHub and Flowery.OAuth.<providerKey>.
  • ISecureStorage and PasswordVaultSecureStorage stay in the core package as a general service.

📦 Library

Asset Description
Flowery.WinUI.1.11.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.11.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

🔐 Verify downloads

This workflow built every asset above and attested its build provenance. To check that a file comes from this repository and release build:

gh attestation verify <file> --repo tobitege/Flowery.WinUI

SHA256SUMS.txt lists the SHA-256 checksum of every asset; check all of them with sha256sum -c SHA256SUMS.txt, or one file in PowerShell with Get-FileHash <file>. The packages on nuget.org carry nuget.org's repository signature, so their checksums differ from the release assets.

What's Changed

  • Replace the Integrations package and Kanban user providers with a host-managed assignee API by @tobitege in #56

Full Changelog: v1.10.0...v1.11.0

v1.10.0

Choose a tag to compare

@github-actions github-actions released this 27 Oct 11:26
39c2051

📋 What's Changed

Added

  • DaisyScheduler, ported from Flowery.NET 3.6.0 to 3.8.0 and adapted from the MIT-licensed Xtreme.Components scheduler. It has Day, Week, Month, Agenda, Calendar, resource Planner and horizontal Timeline day views, typed resources with resource kinds, named and collapsible Timeline groups, occupancy and conflict queries, continuous and daily appointment spans, week rules, editor time slots, regional date/time formats and 12/24-hour clocks. Selection, move, resize, creation, deletion, tooltips, decorations, templates, renderers, toolbar buttons and external drops raise host events and leave the host data unchanged.
  • DaisyScheduler.ShowWeekends (on by default) shows or hides Saturday and Sunday in the Week, Month and Planner views; the settings flyout has a check box for it.
  • Unlike Flowery.NET, chips and bars never trim their start time: status glyphs and tiles show only when they fit beside it, and the subject takes the rest. A Planner or Timeline hour is as wide as a one-hour bar with its full start time (for the current size, font, culture and clock format), every hour has a header label, and hours widen to fill the visible width; DaisySchedulerTimelineMinimumHourWidth (default 0) can raise the minimum.
  • Unlike Flowery.NET, Month and Agenda chips and Planner and Timeline bars show their subject in the secondary font size so it fits the bar height in Segoe UI, timed blocks use compact subject and time lines, and the Day and Week time column widens to its longest time label. Bind SelectedDate, SelectedAppointment and CollapsedResourceGroupIds with Mode=TwoWay, because WinUI has no per-property default binding mode.
  • DaisyScheduler on touch or pen, as in Flowery.NET and the apps of the platforms: a tap on an appointment asks to edit it, and holding it selects it; the finger then moves it, or resizes it from an edge up to 12 DIP wide, at most a quarter of the appointment each. While appointments are selected, a tap adds one to the selection or takes it out. Taps are decided on release and count only if the finger did not move, so any swipe without a hold only scrolls, also over a free slot or day, where a tap selects it and a double tap asks to create an appointment; a tap that stops a scrolling view opens nothing. The mouse keeps click, Ctrl-click and double click.
  • The scheduler uses the Flowery themes, design tokens (overridable in host resources), all five size tiers and all twelve languages. ExternalDropHandler.SetData and TryGetItem carry an ISchedulerDroppable through a DataPackage in the same process.
  • The library output and NuGet package include the Xtreme.Components copyright and MIT license (licenses/Xtreme.Components.txt).
  • Gallery: a Scheduler page under Custom Controls with sample appointments, resource grouping, an appointment editor with overlap confirmation and color palette, a context menu, read-only mode, and resource-kind, date/time format and clock selectors. Its help below the scheduler names the touch gestures after a touch or pen press and the mouse and keyboard ones after a click, in all twelve languages.
  • Docs: llms-static/DaisyScheduler.md, and the scheduler in the custom-control list of the generated site and in the README.
  • DaisyTour.StepTargetUnavailable reports a step that cannot show everything it describes, with the step, the cause (DaisyTourTargetProblem: Preparation, Target or Annotation), the annotation, the element and the error, once per cause and visit, after the step is laid out. Handlers may skip, move on or replay the tour; a handler that throws is logged. While the editor previews the tour, the editor shows the error instead. DaisyTourCloseReason.Failed reports a tour that could not continue.

Changed

  • DaisyButton applies style properties set before it loads (Variant, Size, ButtonStyle, Shape, ContentPadding) once, at its first measure, instead of once per property. On Loaded it skips the size and theme pass while the applied size and theme are still current. Creating and loading many buttons takes a fraction of the time.
  • FlowKanban on touch or pen, as in DaisyScheduler: a tap opens a card's editor and holding a card selects it, and the finger then drags it; while cards are selected, a tap adds a card to the selection or takes it out. Taps are decided on release and count only if the finger did not move, so a swipe over a card only scrolls. Before, a touch or pen press selected a card like a click, and a double tap edited it. The touch model is chosen by pointer type; the old one for Android and iOS (double tap toggles, long press on the title edits) never ran on Windows and is gone.
  • FlowKanban: a tap or click on a free place of the board (not on a card, a button, an input, a combo box such as the column choice of the compact layout, a scroll bar, or a column header, where a tap shows the header buttons on touch) clears the card selection, also one the board was loaded with.
  • DaisyResourceLookup.TryGetResource no longer searches the merged dictionaries again after a miss. WinUI's TryGetValue already searches nested merged and theme dictionaries, so the result is the same, and lookups of optional keys that do not exist, which every Daisy control makes, are much faster.
  • DaisyTour: a target that cannot be shown no longer closes the tour, which looked like a crash to the user. A missing, collapsed, transparent, detached or foreign-window step target, one that stays outside the visible area after the tour scrolled it into view once, an unavailable annotation end and a failed PrepareAsync leave the step open in a warning state: the card waits at its stationary position (the center for Target), its frame and the current progress step take the warning color, a note says that the element cannot be shown right now or that the step could not be prepared completely, screen readers hear the note, and connectors that need the element are hidden. The step returns to normal when the element can be shown again; a failed preparation lasts for the visit. An unexpected failure of the tour itself closes it with Failed instead of TargetUnavailable, which now only means that the tour could not open because it belongs to no window, and DaisyTourClosedEventArgs.AnnotationId is always null.
  • Release and CI: publishing Gallery, Kiosk and Photos for a runtime no longer downloads the ASP.NET Core and Windows Desktop runtime packs, which none of the apps uses (DisableTransitiveFrameworkReferenceDownloads).
  • Development: the runtime tests no longer check property values that a test has just set or that are plain defaults, and tests that built the same scene for different inputs share one table-driven test, so there are about 360 tests instead of 455. The unit tests build and run as their own project in the solution and CI (scripts/test_windows.ps1) instead of being compiled into the runtime tests; the global neumorphic settings are tested at run time, because their class registers WinUI dependency properties.

📦 Library

Asset Description
Flowery.WinUI.1.10.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.10.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

🔐 Verify downloads

This workflow built every asset above and attested its build provenance. To check that a file comes from this repository and release build:

gh attestation verify <file> --repo tobitege/Flowery.WinUI

SHA256SUMS.txt lists the SHA-256 checksum of every asset; check all of them with sha256sum -c SHA256SUMS.txt, or one file in PowerShell with Get-FileHash <file>. The packages on nuget.org carry nuget.org's repository signature, so their checksums differ from the release assets.

What's Changed

  • Add ARM64 platform support for the library, Gallery, tools and apps by @delfuria in #48
  • Point the README docs badge at GitHub Pages and list localized languages by @tobitege in #49
  • Port DaisyScheduler from Flowery.NET by @tobitege in #51
  • Open with a tap and select with a hold on touch in the scheduler and Kanban by @tobitege in #53
  • Prepare the 1.10.0 release by @tobitege in #54

Full Changelog: v1.9.0...v1.10.0

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 24 Oct 10:53
68d5d47

📋 What's Changed

Added

  • Sizing: DaisySize.Auto (-1) is the default Size of every Daisy control. An Auto control takes the size of its containing composite control (button group, avatar group, list row, steps, dock, Fab, accordion, weather forecast) or the global size; ResolvedSize reports the concrete tier. The five tiers keep their values 0 to 4. FlowerySizeManager.ResolveSize resolves a requested size for an element.
  • DaisyButton.ContentPadding (Thickness?) and ResolvedContentPadding; DaisyCard.ResolvedBodyPadding.
  • DaisyAccordion and DaisyAccordionItem: Size. An accordion's size is the default for its items.
  • DaisyStat: ValueFontSize and LabelFontSize.
  • DaisyBreadcrumbs and DaisyBreadcrumbItem: SeparatorBrush. The item's brush wins over the container's.
  • DaisyNumberFlow.DigitForeground.
  • DaisyMenuItem.IsTitle: a non-interactive section heading (Primary, bold, Base300 divider below) that pointer, keyboard and selection skip.
  • Theming: every palette, including registered custom palettes, provides DaisyBaseContentMuted (70 % of BaseContent), DaisyBaseContentSubtle and DaisyBaseContentDisabled (50 %), and DaisyButton{Variant}Soft, SoftHover and SoftBorder (15, 30 and 45 % of the variant color; Business Primary Soft 12 %) colors and brushes. A color or brush the palette defines itself is kept; high contrast keeps its own brushes.

Changed

  • Breaking: Sizing: an unset Size now reads Auto. Code that reads Size for layout or token lookups must read ResolvedSize. Constructors, DaisyControlLifecycle, the size manager and the Gallery no longer write Size, so explicit values, styles and bindings keep their precedence and an explicit Medium stays explicit when the global size changes. Without a global size, Auto resolves to Medium, to Small for DaisyModifierKeys, DaisyDivider, DaisyTabsHeaderButtons and DaisyTagPicker, and to Large for DaisyFab.
  • Breaking: FlowerySizeManager.ApplySize throws ArgumentOutOfRangeException for Auto or a value outside the five tiers. With EnableGlobalAutoSize set to false it no longer refreshes responsive TextBlocks; RefreshAllSizes catches up all loaded controls.
  • Breaking: DaisyControlLifecycle only handles theme changes. Its constructor no longer takes getSize, setSize and subscribeSizeChanges. The protected DaisyComboBoxBase(bool subscribeSizeChanges) constructor is removed.
  • Breaking: DaisyBaseContentControl: the virtual OnGlobalSizeChanged and SetControlSize are replaced by OnResolvedSizeChanged and DefaultSize.
  • Breaking: Button: Padding is outer spacing added to the automatic inner padding. Code that set Padding to replace the inner padding sets ContentPadding instead; null selects the automatic padding, zero is kept. Custom templates bind ResolvedContentPadding.
  • Breaking: Card: BodyPadding is Thickness?. null selects 16/24/32/40/48 by tier (half in Compact); explicit values including zero survive size and variant changes. XAML values stay valid; code and custom templates that need the concrete value read ResolvedBodyPadding.
  • Composite controls give Auto children their size without overwriting a child's own Size. Dock no longer writes its items' IconSize or IgnoreGlobalSize; a supplied DaisyWeatherForecastItem keeps its Size.
  • Soft buttons and button groups use the Soft surface, hover and border brushes in the seven color variants.
  • Breadcrumbs: separators use the Subtle brush at SeparatorOpacity 1 (an explicit opacity still multiplies); the last item uses Muted. Authored content inherits the item's foreground.
  • Stat: title and description use the Muted brush at full opacity. Input, PasswordBox and TextArea: hint, helper and optional text use Muted, placeholders Subtle. CalendarDatePicker: the date hint uses the placeholder brush, a selected date the full foreground.
  • ThemeController: the checkbox mode follows the checkbox size tokens.
  • Gallery: the sidebar takes the library widths 190/205/220/235/250 per tier, the four selectors stretch to the sidebar width, and a size change keeps the pane open or closed. Gallery and Photos ignore a saved global size that is not one of the five tiers.
  • Gallery: in the glass demos of the Cards page (Glass Card, DaisyGlass Simulated, Bitmap Capture and Full Width), every card or glass panel has a row of six stars. Two stay left of it and four run half behind its lower edge, so sharp and covered stars sit side by side; the cards are 100 apart to make room. In the Glass Card demo, the comparison caption sits above the cards.
  • Runtime tests run in English, whatever the saved Gallery language.
  • Build: the Skia backdrop capture and image processor call the DrawBitmap overloads with SKSamplingOptions; the obsolete overloads raised CS0618.
  • Build: the Kiosk smoke report has an inconclusive outcome. A scaling checkpoint whose only problem is a zoom panel overflowing the slide is inconclusive instead of failed; its text measures taller in local console sessions than over Remote Desktop. test_kiosk.ps1 lists inconclusive checks as warnings and fails only on failed checks.
  • Build: test_windows.ps1, test_kiosk.ps1 and run-kiosk.ps1 accept -WindowRegion UpperHalf, and the Gallery, Kiosk and Photos accept FLOWERY_MONITOR_REGION=upper-half, to place the window in the upper half of the chosen monitor. The physical rendering probe checks that region too. Window placement stays optional: run-kiosk.ps1 no longer defaults to monitor 2 and, like the test scripts, leaves the window to Windows unless -Monitor is given.
  • Release: every release asset has a signed build provenance attestation, verifiable with gh attestation verify <file> --repo tobitege/Flowery.WinUI, and SHA256SUMS.txt lists the SHA-256 checksum of each asset. The release notes explain both checks.

Fixed

  • Button: an authored MinWidth, including one from a style or binding, is kept. Every size or shape update reset it to 0 (200 for Wide); the Wide shape still supplies 200 when nothing else sets a minimum width, and leaving Wide removes only that value.
  • IconText: a control that loads again shows its current Text and icon. Changes made while it was unloaded, for example in a hidden tab, kept the old content.
  • Glass: DaisyGlass applies its Padding to the content. It builds its visual tree in code and ignored Padding, so the content touched the edges and the glass was only as tall as its content.
  • Tooltip: a tooltip opened with IsOpen closes when the control unloads, for example on navigation, and opens again when it loads while IsOpen is still true. It stayed on screen without its owner, partly outside the window. IsOpen set before the first load now opens the tooltip too.
  • Tour: a step no longer closes when another scroll, such as a page control bringing itself into view, moves its target out of view. The tour scrolls the targets into view again and closes with TargetUnavailable only when the target stays hidden. This made the Gallery connector demo test fail intermittently.

📦 Library

Asset Description
Flowery.WinUI.1.9.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.9.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

🔐 Verify downloads

This workflow built every asset above and attested its build provenance. To check that a file comes from this repository and release build:

gh attestation verify <file> --repo tobitege/Flowery.WinUI

SHA256SUMS.txt lists the SHA-256 checksum of every asset; check all of them with sha256sum -c SHA256SUMS.txt, or one file in PowerShell with Get-FileHash <file>. The packages on nuget.org carry nuget.org's repository signature, so their checksums differ from the release assets.

What's Changed

  • Implement package 7 sizing ownership and visual defaults by @tobitege in #39
  • Reveal a hidden tour target from every geometry update by @tobitege in #40
  • Attest release assets and publish their checksums by @tobitege in #41
  • Apply DaisyGlass padding to its content by @tobitege in #42

Full Changelog: v1.8.1...v1.9.0

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 23 Oct 06:52
0f09d4b

📋 What's Changed

Added

  • DaisyTourEditor: live tour styling with editable connector handles, movable information cards, undo/redo, and draft profiles that preserve application bindings. The Gallery includes a designer with JSON import/export and replay.
  • DaisyTourStyleProfile: versioned styling profiles with explicit overrides and inheritance for tour, step, and annotation settings.
  • Build: builds and publishes of Gallery, Kiosk and Photos fail when a required font or its license notice is missing from Assets/Fonts. The Kiosk smoke test and a Gallery runtime test also check that each font of the Gallery font family is present, has its license notice and renders its script.

Changed

  • Gallery: new logo, a six-petal teal flower with one warm petal, shared by the Flowery family (Flowery.Uno uses blue, Flowery.NET violet). The executable and installer icon (app_icon.ico, now with 16-256 px sizes), the README banner, the Gallery and Kiosk SVG icon/splash assets, the Home banner and the sidebar keycap image are redrawn.
  • Build: every project declares x64 as its only platform, matching its fixed win-x64 runtime identifier. Visual Studio no longer adds Any CPU configurations to Flowery.WinUI.sln, which built the same x64 binaries; on Windows on ARM the apps keep running under x64 emulation.

Fixed

  • Photos ships the SIL Open Font License notice for its bundled Noto fonts. Assets/Fonts/StaticFonts-OFL.txt contains the copyright notices of the five static fonts and the full license, in the build, publish and installer output (#31).

📦 Library

Asset Description
Flowery.WinUI.1.8.1.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.8.1-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

  • Run library and gallery release builds in PR CI by @tobitege in #35
  • Add reusable DaisyTour editor with live styling and JSON profiles by @tobitege in #33
  • Add Flowery brand logo: app icon, Gallery/Kiosk SVG assets and README banner by @delfuria in #36
  • Prepare version 1.8.1 and declare x64 as the only platform by @tobitege in #37
  • Ship and verify font license notices with every app by @tobitege in #38

New Contributors

Full Changelog: v1.8.0...v1.8.1

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 22 Oct 16:35
6567e69

📋 What's Changed

Added

  • FloweryColorHelpers.GetColorDifference: the CIE76 color difference (Delta E) between two colors.

Changed

  • Toggle: the knob stays visible in themes whose variant color is close to the track color (e.g. Secondary in the HappyHues themes). It always has a thin BaseContent outline (50 % opacity, none in high contrast mode), the checked track border takes the variant color where that color stands out from the track, and a checked knob whose color is too close to the track (CIE76 color difference below 20) is darkened on a light track or lightened on a dark one, keeping its hue. Knob brushes set by the app are used as given.

Fixed

  • Theming: DaisyThemeManager.ThemeChanged and the system contrast change notify their handlers one at a time. A handler that threw stopped the notification, so every control subscribed after it kept its old colors (seen as a DaisyColorSlider without its contrast border in CI); the failure is now logged under Events. A theme that fails to apply is logged under Theming instead of failing silently.
  • TextArea: every text area with the same MinRows has the same height. The visible border kept the 80 px default when the rows needed more, unless something else re-applied the sizing later; DaisyInput now re-applies its sizing when MinHeight changes.

📦 Library

Asset Description
Flowery.WinUI.1.8.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.8.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

  • Keep the toggle knob visible and text area borders at their row height by @tobitege in #32

Full Changelog: v1.7.0...v1.8.0

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 21 Oct 03:40
6ae98e9

📋 What's Changed

Added

  • DaisyTour and DaisyTourStep: window-scoped guided tours with typed steps in XAML or C#, live target highlights, modal input, Next/Back/Skip/Finish, replay, cancellable target preparation through PrepareAsync, and one Closed outcome per session (Completed, Skipped, Cancelled, TargetUnavailable) (#25, #27).
  • DaisyTourAnnotation: arrows, two-control connectors, stroke patterns, clouds, speech bubbles, and custom geometry or templates, with defaults inherited from the tour and the step (#25, #27).
  • Connector paths Straight, Curved, Elbow, SCurve, Bezier, and Custom, plus route limits that keep an area between both ends clear (#27).
  • DaisyTour.CardPosition and DaisyTourStep.CardPosition place the step card beside the target or at one of nine fixed window positions. The card avoids connector courses where it can (#27).
  • DaisyTour.CardBorderBrush and the DaisyTourCardBorderBrush resource set the step card's border. By default, it uses the muted theme text color, which stands apart from the Primary highlight frame.
  • Tour navigation texts in all 12 languages; the DaisyTour documentation in llms-static/DaisyTour.md (#27, #28).
  • Gallery: a Guided Tour page with demos for steps, arrows, lines, clouds and bubbles, custom shapes, regions, paths, and route limits (#27).
  • Gallery, Kiosk, and Photos embed the Flowery icon and show it on their windows (#29).

Changed

  • Dependabot groups GitHub Actions updates into one pull request. CI generates the documentation site on every pull request (#29).
  • Runtime tests that have no room for their scenario report a warning instead of a failure (#27).

Fixed

  • Daisy controls no longer subscribe to LayoutUpdated on load. On a large restored window, these subscriptions could block the UI thread and crash the app during startup (#27).
  • DaisySteps renders its native templates correctly, and compact indicators no longer reserve an empty label row (#27).

📦 Library

Asset Description
Flowery.WinUI.1.7.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.7.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

  • Add responsive guided tours and configurable annotations by @tobitege in #27
  • Restructure and update the DaisyTour documentation by @tobitege in #28
  • Adopt workflow improvements from Flowery.Uno and give the apps the Flowery icon by @tobitege in #29
  • Prepare version 1.7.0 by @tobitege in #30

Full Changelog: v1.6.0...v1.7.0

v1.6.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 19:32
002acd3

📋 What's Changed

Added

  • Windows contrast theme support across the library, Kanban, and Gallery, with live system colors and visible control states.
  • DaisyHighContrast.ContentOpacity keeps captions opaque in Windows contrast themes and restores their normal opacity afterward.
  • Shared internal Composition support for visual ownership, retained vector graphics, and geometry updates after layout, wrapping, scrolling, and DPI changes (#24).
  • Gallery: a Showcase example combines normal WinUI text and input with shared Composition graphics (#24).

Changed

  • DaisyShadowContainer now updates existing outer-shadow visuals when size, corner radius, or appearance changes. Shadow-count changes rebuild the visual graph (#24).

Fixed

  • DaisyStatusIndicator Spin no longer flashes horizontal or vertical streaks while its two satellites orbit.
  • Custom controls show keyboard focus and keyboard-pressed states. Numeric input keeps its focus border after validation feedback.
  • DaisyShadowContainer no longer replaces or removes an attached visual owned by another component (#24).

📦 Library

Asset Description
Flowery.WinUI.1.6.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.6.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

  • Add shared Composition foundation and Windows contrast theme support by @tobitege in #26

Full Changelog: v1.5.0...v1.6.0

v1.5.0

Choose a tag to compare

@github-actions github-actions released this 19 Oct 10:04
369c4d2

📋 What's Changed

Added

  • Weekly Dependabot updates for GitHub Actions (#16).
  • A NuGet security audit for all 13 C# projects and their transitive dependencies (#16). GitHub Actions runs the audit on pull requests, on main, and weekly. The script also supports local audits.
  • A Windows workflow reports resolved direct and transitive NuGet dependencies for all 13 C# projects to the GitHub dependency graph (#16).

Changed

  • Dependabot now covers the unit-test and generator projects outside the solution. Shared packages update across projects, with dedicated MSTest and SkiaSharp groups (#16, #21).
  • Breaking dependency update: Review direct SkiaSharp use before the update. SkiaSharp and its native Win32 assets change from 3.119.2 to 4.153.1 (#22). SkiaSharp 4.153.1 disables RAW/DNG decoding. See the migration notes and release notes.
  • Updated Microsoft.Windows.SDK.BuildTools from 10.0.28000.1839 to 10.0.28000.2705 (#20).
  • The documentation workflow uses supported Python and GitHub Pages actions. CodeQL and documentation workflows now grant write permissions only to the required jobs (#16).

Fixed

  • Glass backdrop capture no longer applies DPI scaling twice. Captures keep the correct pixel size at fractional display scales, including 125% (#16).

📦 Library

Asset Description
Flowery.WinUI.1.5.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.5.0-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

Full Changelog: v1.4.1...v1.5.0

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 18 Oct 18:05
70a113c

📋 What's Changed

Added

  • The release contains Flowery Photos: a per-user NSIS installer (Flowery.WinUI.Photos-Setup-<version>-x64.exe) with a Start menu shortcut and uninstaller, and a portable Flowery.WinUI.Photos-Windows-x64.zip. Before, the release workflow did not build the Photos app.
  • Flowery.WinUI.Photos has an application icon (Assets/app_icon.ico, made from app_icon.svg) for its executable, window, taskbar entry and shortcut.

Changed

  • The GitHub workflows use actions/checkout@v7 and actions/setup-dotnet@v6.
  • The Kiosk window is at most 1920 × 1080 physical pixels, also when maximized. On larger displays, the slides used scale factors up to 200 %, and the layout broke.

Fixed

  • The published Gallery, Kiosk and Photos apps start. dotnet publish left out the resource index of the app itself (Flowery.WinUI.Gallery.pri, Flowery.WinUI.Kiosk.pri, Flowery.WinUI.Photos.pri), so the release ZIPs stopped at startup with a XAML parse error or "Cannot locate resource from 'ms-appx:///…'". The Gallery and Kiosk projects now add their PRI file to the publish output with a small publish target. The Photos project sets EnableMsixTooling, which adds the file. All apps stay unpackaged.
  • DaisyTableRow and DaisyTableCell no longer draw their own neumorphic surface when the global neumorphic mode is on; a table showed one raised box per row (#12). DaisyTable now gets the one surface it was meant to have: its root border sits in a Grid, so the neumorphic helper can place the surface next to it. Before, the helper put the surface into the row panel, where it had no height.
  • Gallery: the Table example is 670 px wide instead of 620, so the Message button in its last column is no longer clipped.
  • DaisyButton draws no neumorphic shadows when its face is not opaque. Outline, dash, ghost, link and soft buttons showed the raised shadows through their face as a grey shimmer, most visibly in table cells, where the cell also clipped the halo to a box (#12).

📦 Library

Asset Description
Flowery.WinUI.1.4.1.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

🖼️ Flowery Photos

Photo viewer and editor built with Flowery.WinUI (no .NET or Windows App SDK install required). The per-user installer adds a Start menu entry and an uninstaller. Alternatively, extract the portable ZIP and keep all its files together.

Asset Description
Flowery.WinUI.Photos-Setup-1.4.1-x64.exe Per-user installer (Windows x64)
Flowery.WinUI.Photos-Windows-x64.zip Portable app (Windows x64); run Flowery.WinUI.Photos.exe

What's Changed

  • Give a neumorphic DaisyTable one surface and keep shadows off transparent button faces by @tobitege in #14
  • Add the Photos installer to the release and fix the published apps; release 1.4.1 by @tobitege in #15

Full Changelog: v1.4.0...v1.4.1

v1.4.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 08:49
dae3ecf

📋 What's Changed

Added

  • Flowery.WinUI.RuntimeTests/VisualChecks/indicator-sizes.html, a browser page that draws DaisyToggle, DaisyCheckBox and DaisyRadio at their default token sizes in all five size tiers, in the Dark and Light palettes, at real effective pixels.
  • The Gallery Toggle and Radio sections show a small DaisyTable with the controls in its cells. It follows the global size, so the row height can be checked in every size tier.

Changed

  • Breaking: Visual: DaisyCheckBox, DaisyRadio and DaisyToggle indicators are as tall as the line height of their label text in the Windows type ramp, and Medium matches the WinUI defaults. The compact indicators were much smaller than their labels since the font ladder grew in 1.3.0. Checkbox and radio are 14/16/20/24/28 px (was 8/10/12/14/16), the radio dot 8/10/12/14/16 px and the checkmark 8/10/12/14/17 px. Toggle tracks are 28×14, 32×16, 40×20, 48×24 and 56×28 with 8/10/12/14/16 px knobs (was 16×8 to 32×16 with 4–12 px knobs), keeping the WinUI ToggleSwitch proportions. The checkbox corner radius is a fifth of the box (3/3/4/5/6 px), so it also follows overridden DaisyCheckbox{Size}Size tokens. Review fixed dimensions and style overrides that depend on the previous sizes.
  • The DaisyToggle track border uses the base content color at 50 % opacity, like DaisyUI's toggle, instead of the full color. The thin full-contrast outline looked jagged on its curves at 100 % display scaling. DaisyToggleTrackBorderBrush still overrides it.
  • DaisyToggle.TogglePadding defaults to NaN, which centers the knob with the same gap on every side, like the WinUI ToggleSwitch (3 px inside the border at Medium). Set a number to use a fixed horizontal gap as before.
  • DaisyTableRow reads its lightweight-styling brushes (DaisyTableRowBorderBrush, DaisyTableRowHoverBackground and the others) from the Resources of its DaisyTable when the row does not define them itself, so one definition on the table styles all rows.

Fixed

  • The checked DaisyToggle knob no longer overlaps the right track border. Its position ignored the 1 px border, so it sat flush with the right edge while the unchecked knob kept a gap on the left.
  • DaisyToggle no longer keeps the minimum width and height of its first size. It set MinWidth and MinHeight once, when its template was applied, and never updated them, so a toggle that follows the global size stayed at least 40×20 after switching to a smaller size, which kept table rows and lists from getting lower.
  • DaisyButton no longer keeps the corner radius of its first size. Like the toggle minimum size, it treated its own token radius as an app override once written, so a button that followed the global size kept the old radius (4/4/8/8/12 px per tier). Radii set by the app, DaisyJoin or DaisyButtonGroup are still respected.
  • A DaisyToggle without a Header no longer reserves the 8 px gap meant for the header text; it is exactly as wide as its track.
  • The DaisyRadio dot stays centered at fractional display scales such as 125 % and 175 %. Ring and dot no longer use layout rounding, like the WinUI RadioButton.

📦 Library

Asset Description
Flowery.WinUI.1.4.0.nupkg NuGet package (also on nuget.org)
Flowery.WinUI-lib.zip Compiled DLL and PDB

🌸 Gallery Demo App

Self-contained executable for demoing Flowery.WinUI controls (no .NET install required).

Platform Download
Windows x64 Flowery.WinUI.Gallery-Windows-x64.zip
Windows x64 Kiosk Flowery.WinUI.Kiosk-Windows-x64.zip

What's Changed

  • Size selection indicators by label line height and fix DaisyToggle; release 1.4.0 by @tobitege in #13

Full Changelog: v1.3.2...v1.4.0