Use locale-aware date/time formatting throughout UI - #48
Merged
Merged
Conversation
Replace hardcoded US-style date formats (MM/dd, MMM d, h:mm tt) with the "g" general format specifier which respects the user's system locale. Dashboard: - ServerConnectionStatus: "Checked" and "Online since" timestamps - ManageServersWindow: Last Connected column - CollectorScheduleWindow: Last Run and Next Run columns Lite: - ServerConnectionStatus: same "Checked" and "Online since" timestamps - CollectorHealthRow/CollectionLogRow: all formatted timestamp properties Does not change the time range picker (AM/PM hour list) — that needs a separate design discussion. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Change hour picker from "12 AM", "1 AM", ... "11 PM" to "00:00", "01:00", ... "23:00". Consistent with chart axis labels, SQL Server log conventions, and international users. Parse logic is index-based (SelectedIndex 0-23) so no functional change. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
5 tasks
erikdarlingdata
added a commit
that referenced
this pull request
Aug 14, 2026
…adder dev moved 10 rungs (V61 -> V71) while this sat, so the collision the V61 doc comment predicted actually happened -- and it surfaced exactly as that comment said it would, as a conflict on the migration list rather than as a silent gap. Renumbered to V72, immediately above dev's newest, no gap: the runner skips any rung at or below the store's stamped version, so a gap is skipped SILENTLY on every upgraded store while a collision is loud. Merged rather than rebased: same result, no force-push over 26 commits, and the 10-file conflict surface gets resolved once instead of per commit. Resolutions: - StorageVersion.SchemaVersion 61 -> 72. - The five conflicting test files take DEV's side wholesale. The branch had only bumped literal version pins in them; dev independently replaced those literals with the invariant form (Assert.Equal(StorageVersion.SchemaVersion, ...)) and made ViewerDataServiceTests build its all-true probe call by REFLECTION so the arity tracks the signature. That is strictly better than what the branch was reaching for -- the branch's own comment called the literal form "a recurring four-test failure". - ViewerDataService: dev's four new sentinels kept, the plan-map probe appended as #48, and its ladder arm returns 72 ABOVE dev's V71 arm because arms evaluate newest-first. The arm's comment deliberately does NOT name the table in prose -- dev's V71 comment records that a prose mention exempts a table from ViewerCollectorCoverageTests' ratchet, which strips information_schema probe lines but cannot strip a comment. One semantic conflict git could not see: DarlingCollectorRunner.cs auto-merged cleanly but left the #2210 plan-fetch call passing `sqlConnection`, which #2213's provider seam renamed and re-typed to a provider-neutral DbConnection. Resolved as `targetConnection is SqlConnection planFetchConnection`, which narrows the type the signature needs and gates the engine in one expression -- the enumerated path serves PostgreSQL targets now, and while query_store declares TargetEngine = SqlServer, relying on the catalog for that would put the invariant somewhere else. Full solution builds clean, 0 warnings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Partial fix for #41 — Replaces hardcoded US-style date formats with locale-aware
"g"(general date/time) format specifier across both Dashboard and Lite.Changes
Dashboard:
ServerConnectionStatus.cs— "Checked" and "Online since" sidebar timestamps (the"MMM d, h:mm tt"that showed asfeb. 13, 12:23 a.m.for Norwegian users)ManageServersWindow.xaml— Last Connected column (MM/dd/yyyy HH:mm)CollectorScheduleWindow.xaml— Last Run / Next Run columns (MM/dd HH:mm)Lite:
ServerConnectionStatus.cs— same sidebar timestampsLocalDataService.CollectionHealth.cs— all Collection Health formatted timestamps (MM/dd HH:mm:ss)Not included
The time range picker (AM/PM hour list) needs a separate design discussion — it generates a hardcoded list of "12 AM", "1 AM", etc. that would need to be rethought for 24-hour locales.
Test plan
dotnet build Dashboard -c Debug— builds cleandotnet build Lite -c Debug— builds clean15.02.2026 18:42for Norwegian)🤖 Generated with Claude Code