tr
TryGhost
GitHub
Ghost
Workspace
GitHub
CI Pipeline Executions
Filtered
Runs
Demo
Insights
Compare tasks
Analytics
Sign in
Toggle sidebar
Overview
⌘K
Ghost
Loading workspace stats
Loading workspace insights...
Statistics interval
7 days
30 days
Latest CI Pipeline Executions
Status
Fix filter
Filter
Fuzzy
Filter range
Sort by
Sort by
Start time
Sort ascending
Sort descending
Succeeded
30234
e8cd4a3c Changed member avatars to spread one derived-props helper no ref Review follow-up: the initials-as-prop Avatar API left sixteen call sites repeating the same derivation ternaries. A memberAvatarProps helper in member-format derives {initials, colorSeed} from a member-shaped record (name-first seed, undefined props for an absent member), and every call site spreads it. Same rendered output; the derivation lives once.
by Steve Larson
S
Failed
30234
cd65696b Changed member avatars to spread one derived-props helper no ref Review follow-up: the initials-as-prop Avatar API left sixteen call sites repeating the same derivation ternaries. A memberAvatarProps helper in member-format derives {initials, colorSeed} from a member-shaped record (name-first seed, undefined props for an absent member), and every call site spreads it. Same rendered output; the derivation lives once.
by Steve Larson
S
Succeeded
30234
82fe99e6 Moved domain utilities out of the Shade app entry no ref @tryghost/shade/app carried analytics and member domain functions plus a Koenig loader slot in the design-system context, forcing domain-shaped APIs through the design system. The domain code now lives with its domains and shade/app exports only the app shell (ShadeApp, ShadeAppProps, useFocusContext). Moved to apps/admin: - getRangeDates, formatQueryDate, getRangeForStartDate, centsToDollars -> shared/analytics/chart-helpers (admin-only stats-range and KPI helpers, joining the earlier sanitizeChartData move) - formatMemberName, getMemberInitials -> members/member-format (member identity formatting, also used by comments, posts feedback, and staff user lists) Kept in Shade, re-homed to lib/ds-utils and exported from /utils: - formatDisplayDateWithRange, getYRange, calculateYAxisWidth — the chart components (the chart.tsx tooltip and GhAreaChart) consume them internally, so they are design-system chart formatters rather than app domain code. Avatar no longer derives initials from member-shaped name/email props; it takes a presentational initials prop (or children) and seeds its fallback color from that string (previously the full name, so fallback hues shift), with callers deriving initials via the members helper. ShadeApp/ShadeProvider no longer carry fetchKoenigLexical; the admin Koenig loader imports the fetcher directly and the dead FetchKoenigLexical re-export chain is gone. Shade's unused validator dependency is removed; moment-timezone stays for the remaining DS date formatters.
by Steve Larson
S
Previous
Next