Lumen 4.2 highlights
Lumen 4.2 preserves application-owned SwiftUI appearance preferences and aligns AI guidance for
web selection controls. It keeps existing v4 component contracts compatible.
SwiftUI appearance ownership
With enforceColorScheme: false, lumenTheme now leaves the host appearance preference untouched.
A caller’s .preferredColorScheme(.dark) or .preferredColorScheme(.light) works before or after
the Lumen modifier. Without a caller preference, the host appearance is inherited. This also works
with applyTint: false; the supplied Lumen palette still determines Lumen semantic colors.
Explicit enforceColorScheme: true retains its existing behavior.
Switching enforcement on and off also preserves child view state, including an edited application
draft; changing appearance policy does not recreate the content subtree.
No initializer migration is required. If an application compensated for the previous appearance
override, remove that workaround only after checking its own windows, scenes, and previews.
Web selection guidance
The portable Lumen skill, generated plugin, AI guide, and MCP rules default to Select for web
product option lists and Combobox for searchable choices. NativeSelect remains supported when
the product explicitly requires the browser or platform picker. Native fallbacks remain intact.
This changes agent guidance; it does not rewrite existing application controls.
Elements DatePicker layout
The DatePicker host uses the positioned field shell, matching Astro. Its authored native input,
control, trigger, and popover keep their documented child classes; the visible trigger supplies
input chrome without a second border or fixed-height wrapper. ARIA feedback belongs on the native
input and is mirrored to that trigger.
Package versions
The umbrella, Elements, and MCP packages use 4.2.0, and Swift consumers use repository tag v4.2.0.
Astro, React, and Core remain at 4.1.0. React Native and React Hook Form remain at 4.0.1;
tokens, brand icons, and Compose remain at 4.0.0. Install only the packages your application uses;
do not upgrade unrelated native artifacts to an invented 4.2 version.
The plugin package’s MCP pin is synchronized to 4.2.0. Directory publication, hosted MCP deployment,
and store apps have separate delivery steps; a local snapshot does not prove their deployed version.
Verification and rollback
Hosted macOS regression tests exercise both caller modifier orders, inherited light/dark host
appearance, explicit preference precedence, tint on/off, and an edited child draft across repeated
enforcement changes. These tests do not claim fresh iOS or
physical-device qualification. Verify the application’s own appearance choices after upgrading.
For rollback, restore the application’s prior Swift package revision and npm lock file, then rebuild.
These changes require no persisted-data migration. Published corrections use a new version; never
replace the published tag. See the
v4.1 highlights for the preceding
loading and form improvements, and the
v4.2 scope audit
for work retained in the backlog.
Lumen 4.1 highlights
Lumen 4.1 improves loading feedback, form accessibility, and pages that combine web adapters.
Existing v4 applications can keep their integration setup and update the packages they use.
Applications upgrading from v3 should first follow the
v3 → v4 migration guide.
Loading feedback
Skeleton now accepts shape (rectangle, text, circle), width, height, and animation
(shimmer, pulse, none). Numeric dimensions are pixels; supported CSS lengths, percentages,
and calc() or var() expressions are accepted. Reduced motion stops shimmer and pulse.
Skeleton and Spinner are decorative unless named; explicit ARIA overrides take precedence.
Give a group of placeholders one named status region rather than announcing every placeholder.
Progress normalizes non-finite values to finite ARIA values, and Elements Skeleton and Progress
render as blocks. Review layouts that depended on their previous inline display.
- ListBox exposes one accessible control while retaining native select submission and validation.
External labels name the visible list, required single selection stays invalid until a choice is
made, and invalid submission focuses the list. React focus and blur callbacks fire once when
entering or leaving the visible list; the event target remains the native select.
- DatePicker calendars escape clipping in short or scrolling dialogs through shared floating
placement when the Popover API is available. Triggers mirror consumer validation ARIA attributes.
React reopens on the selected month; Astro preserves an open calendar when only ARIA feedback changes.
- React InputOTP paste reports the sanitized code once through its change callbacks and respects
a consumer
onPaste handler that calls preventDefault(). Controlled values and React Hook Form
controllers receive the pasted code without duplicate notifications.
- Select and NativeSelect chevrons follow inherited RTL direction, including nested LTR regions.
Mixed web adapters
React DatePicker, Calendar, and InputOTP mark their roots with data-ui-owner="react".
Astro and Elements enhancers skip these roots, preserving React state, IDs, and label associations
before and after hydration. Keep each adapter’s normal setup; do not remove this ownership marker
or manually enhance a React-owned root.
Versions and verification
Use the individual versions in the
release manifest.
The v4.1 release uses 4.1.0 for the main web packages and MCP, 4.0.1 for React Native and
React Hook Form, and 4.0.0 for tokens, brand icons, and Compose. Swift uses tag v4.1.0.
Store apps and hosted agent tools follow their own publication schedules.
After updating, load the matching styles, commit the lock file, and verify the application’s loading
layout, required ListBox submission, keyboard focus, date calendars inside dialogs, and OTP paste.
For rollback, restore the application’s prior source and dependency pins and rebuild; no data
migration is required by these library changes.
Read the package histories for the complete adapter-specific changes:
Astro,
React,
Elements,
Core,
React Hook Form,
and React Native.