* feat(client): resolve errors
* feat(client): replace constructor based DI with inject function
* feat(client): enforce encapsulation and immutability
* feat(client): remove unused tap operator
* feat(client): implement generic type parameter
* feat(client): replace constructor based DI with inject functions
Use viewport width check instead of User-Agent-based device detection
for precision reduction. `ngx-device-detector` classifies devices by
User-Agent string, so desktop browsers at narrow widths never trigger
the `deviceType === 'mobile'` check, leaving precision at 2 decimals
and causing the currency code to overflow.
Replace with `window.matchMedia` at the Bootstrap `sm` breakpoint, and
add a CSS `@media` safety net to remove `min-width` on narrow viewports.
Assisted-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* feat(client): implement default date range
* feat(client): resolve errors
* feat(client): replace constructor based DI with inject function
* feat(client): enforce encapsulation
* fix(client): remove dead code
* feat(client): enforce immutability
* feat(client): replace deprecated getDeviceInfo
* feat(client): convert errors to signal
* feat(client): convert hasImpersonationId to signal
* feat(client): convert user to signal
* feat(client): convert to computed signals
* feat(client): convert historicalDataItems and isLoadingPerformance to signals
* feat(client): convert performance and precision to signals
* feat(client): implement OnPush change detection strategy
* fix(common): revert DateRange type change
* fix(client): format file
* fix(client): resolve errors
* feat(client): replace constructor based DI with inject function
* feat(client): enforce encapsulation
* fix(client): remove dead code
* feat(client): replace deprecated getDeviceInfo
* feat(client): convert isLoading to signal
* feat(client): convert hasImpersonationId to signal
* feat(client): convert summary to signal
* feat(client): convert user and hasPermissionToUpdateUserSettings to signals
* feat(client): implement OnPush change detection strategy
* fix(client): remove nested subscription
* feat(client): resolve error
* feat(client): enforce encapsulation
* feat(client): enforce immutability
* feat(client): replace constructor based DI with inject function
* feat(client): replace deprecated getDeviceInfo
* feat(client): convert benchmarks to signal
* feat(client): convert historicalDataItems to signal
* feat(client): convert fearAndGreedIndex to signal
* feat(client): resolve errors
* feat(client): migrate constructor based DI to inject function
* feat(client): implement view child signal
* feat(client): replace deprecated getDeviceInfo
* fix(client): enforce encapsulation and immutability
* fix(client): make tag as optional to cover tag creation use case
* feat(client): migrate constructor based DI to inject function
* feat(client): implement view child signal
* feat(client): replace deprecated getDeviceInfo
* feat(client): implement input signal
* fix(client): enforce encapsulation
* fix(client): make platform as optional for platform creation
* feat(client): resolve errors
* feat(client): migrate constructor based DI to inject function
* feat(client): implement view child signal
* feat(client): replace deprecated getDeviceInfo
* fix(client): enforce encapsulation
* feat(client): implement input signal
* fix(common): accept undefined for value in update property DTO
* fix(common): accept undefined for language code parameter
* fix(client): enforce encapsulation and immutability
* feat(client): migrate constructor based DI to inject function
* fix(client): info and getter encapsulation
* Upgrade ai
* @openrouter/ai-sdk-provider to version 2.9.0
* ai to version 6.0.174
* Add AI service health check and improve layout
* Update changelog