Skip to content

Up to date#69

Merged
bytedreamer merged 35 commits into
l10n_mainfrom
main
Feb 22, 2026
Merged

Up to date#69
bytedreamer merged 35 commits into
l10n_mainfrom
main

Conversation

@bytedreamer
Copy link
Copy Markdown
Collaborator

No description provided.

bytedreamer and others added 30 commits January 24, 2026 14:52
Integrate shared WPF component library for design system reuse.
Guidelines v1.0.0 with Apache 2.0 license.

Next steps: Add project references and update App.xaml to use shared styles.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Add Guidelines project to solution
- Reference ZBitSystems.Wpf.UI in Windows project
- Update App.xaml to use shared design system via pack URIs
- Remove migrated files: DesignTokens, ThemeSemanticColors, ComponentStyles, CopyTextBoxHelper
- Keep LayoutTemplates.xaml (OSDP-specific, not migrated)
- Update CLAUDE.md with submodule workflow documentation

Phase 1 Complete: Design system and CopyTextBoxHelper migrated to shared library.
All pages render correctly, theme switching works, no visual regressions.

Build: Success (0 errors, 13 warnings - all XML docs in Guidelines library)
Code Inspection: Clean (no new warnings in OSDP-Bench code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
StyleGuide.md is now maintained in the Guidelines shared library at:
lib/Guidelines/src/ZBitSystems.Wpf.UI/Styles/StyleGuide.md

ExampleImplementation.md remains in OSDP-Bench as it contains
application-specific implementation examples.

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Clarify that ComponentStyles is now in Guidelines library
- Add reference to ExampleImplementation.md for OSDP-specific guidance
- Organize documentation references into shared vs OSDP-specific sections
- Improve clarity on where to find different types of styling documentation

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
LayoutTemplates.xaml was trying to load DesignTokens.xaml and
ComponentStyles.xaml from local Styles directory, but these files
were migrated to Guidelines library.

These resources are now loaded via App.xaml from the Guidelines library,
so LayoutTemplates.xaml inherits them automatically through WPF's
resource lookup hierarchy.

Fixes runtime error: Cannot locate resource 'styles/designtokens.xaml'

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Converters migrated (5):
- BooleanToVisibilityConverter
- InverseBoolConverter
- NullToVisibilityConverter
- StringToVisibilityConverter
- IndexToVisibilityConverter

StatusLevelConverter remains in OSDP-Bench (application-specific).

Changes:
- Update Guidelines submodule to include converters and tests
- Remove migrated converter files from OSDP-Bench
- Update converter namespace in 4 XAML files to reference Guidelines library
- Add dual namespace support for shared and local converters in ConfigurationPage

Build: Success (0 errors, 0 warnings)
Tests: All 39 Guidelines library tests passing
Application: Verified running successfully

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Phase 3 complete: Adds interface-based localization system with full test coverage (56 tests total).

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Update Guidelines submodule to include window/theme management
- Create UserSettingsWindowStateAdapter to keep Core UI-independent
- Refactor MainWindow to use WindowStateManager from Guidelines
- Refactor InfoPage to use ThemeManager from Guidelines
- Remove custom window state persistence code (now in Guidelines)

Architecture improvement:
- Core project remains UI-independent (targets net10.0)
- Adapter pattern used to bridge Core types with Guidelines interfaces

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Comprehensive WPF-UI usage guide now available
- README simplified with quick start focus

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Fix Azure DevOps pipeline to checkout Git submodules
  - Add `submodules: true` to all checkout steps
  - Resolves build failures from missing Guidelines library

- Update README with current project information
  - Correct .NET version references (8.0 → 10.0)
  - Add submodule clone instructions
  - Add Guidelines library documentation reference
  - Fix CLAUDE.md path

- Update Guidelines submodule to latest version
  - Includes comprehensive Git submodule CI/CD documentation
  - Documents Azure DevOps submodule checkout requirements

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
- Remove outdated localization documentation files
- Remove UI Style Guide link (covered by Guidelines library)
- Update Guidelines link to GitHub repository URL
- Simplify documentation structure

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move InvertEffect, version/copyright helpers, and license display
pattern to the shared Guidelines library. Replace inline CardExpander
blocks with reusable LicenseExpander control. Simplify InfoPage
code-behind by using ApplicationInfoHelper for assembly metadata.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Eliminate duplicated JSON persistence logic and the UserSettingsWindowStateAdapter
by leveraging Guidelines' UserSettings base class, JsonUserSettingsService, and
IWindowStateStorage. Core's IUserSettingsService is now a lean interface exposing
only app-specific properties (PreferredCulture, SkipLanguageMismatchCheck), while
the Windows project provides AppSettings extending Guidelines' UserSettings and
AppUserSettingsService wrapping JsonUserSettingsService.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Set LocalizationService.Provider before Host.Start() so it is
available when XAML markup extensions are evaluated during window
and page construction.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
… tokens

Apply new Guidelines styles (Text.PageMessage, Text.Stat.Label/Value,
Margin.Card, Margin.ContentCenter) across pages. Add ComboBox.Standard
to unstyled ComboBoxes and Card.Standard to inline-styled Cards.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded Red DropShadowEffect color with a binding to the LED fill
color so the glow always matches. Add AutomationProperties.Name to DataGrids,
ProgressBar, Image, and Ellipse controls that lacked screen reader context.
Give the expand column a localized header instead of an empty string.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…pervision

Add 35 new tests covering previously commented-out and missing test areas:
- MonitorViewModel: trace entry statistics, display filtering, line quality,
  buffer management, session lifecycle, and export commands
- ManageViewModel: trace entry activity indicators, supervision tracking
  (tamper, power, online status), and clear supervision history
- ConfigurationViewModel: trace entry activity indicators, USB device
  monitoring with port preservation, and cancel discovery
- Shared TraceEntryTestHelper with valid OSDP packet constants (Poll, ACK,
  NAK, ID Report) using correct CRC-16 checksums

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Introduce automated UI testing using FlaUI to verify the WPF application
works end-to-end, with Moq-based service mocking to simulate OSDP device
connections without real hardware. Refactor App.xaml.cs to support
testable service registration via an overridable ConfigureServices method.
Add AutomationId properties to key XAML controls for reliable element
discovery. Add a separate non-blocking UI test stage to the CI pipeline.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The DotNetCoreCLI@2 test task adds these automatically, causing the
"expects a single argument but 2 were provided" error.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add 18 new test scenarios across Configuration (advanced), Manage, Monitor,
and Info pages. Replace Thread.Sleep calls with NavigateToPage helpers that
use element polling or dispatcher flush, reducing test runtime by 42%.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move ButtonPanel to Grid row 2 in narrow responsive mode to avoid colliding
with the Discover/Manual radio buttons in row 1. Switch connection-mode
radio buttons from StackPanel to WrapPanel so "Passive Mode" text wraps
instead of being clipped. Add UI guideline about Grid row collisions.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
MonitorPage: Use WrapPanel for buffer status row so text and progress bar
wrap at narrow widths; add TextWrapping to trace details TextBox.
InfoPage: Use WrapPanel for language selection to prevent overflow.
ManagePage: Use WrapPanel for vendor info display; replace hardcoded
pixel margins with design token references.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…and layout fixes

Disable passive mode security key when default key is checked, add empty serial
ports warning message, add placeholder text to security key fields, align
UpdateSourceTrigger on both key fields, replace empty label spacer with proper
alignment, and add MinWidth to action buttons for layout stability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace hardcoded "Three Quick Beeps" buzzer action with configurable parameters
(tone code, reader number, on/off time, count) and add capability checking that
disables actions when the device doesn't support the required capability.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Expose all 13 ReaderLedControl parameters via a TabControl with Temporary
and Permanent tabs, replacing the single color dropdown. Color ComboBoxes
show colored squares next to plain English labels matching ACUConsole.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
bytedreamer and others added 5 commits February 22, 2026 08:19
…ting

Real-time visual feedback (red border + red character count) when the
security key is invalid, with Connect/Start buttons disabled until valid.
Fix bug where passive mode UseDefaultKey checkbox couldn't be unchecked
because the guard immediately re-checked it when the key was empty.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…validation

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Buzzer ON time must be non-zero unless tone code is Off. LED timing
validation only applies when the mode actively sets a state (not NOP).
Validation uses SemanticErrorBrush styling and disables the Send button.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ests

Fix buzzer and LED controls not updating validation UI by implementing
INotifyPropertyChanged interface. Wrap NumberBox controls in Border
elements for error highlighting since NumberBox ignores direct style
setters. Add validation error text messages and UI tests for all
validation behavior.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@bytedreamer bytedreamer merged commit 155ee4b into l10n_main Feb 22, 2026
1 of 3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant