Skip to content

Codex/system status readiness#3

Merged
jay77721 merged 17 commits into
mainfrom
codex/system-status-readiness
Jun 10, 2026
Merged

Codex/system status readiness#3
jay77721 merged 17 commits into
mainfrom
codex/system-status-readiness

Conversation

@jay77721

Copy link
Copy Markdown
Owner

No description provided.

jay77721 added 17 commits June 10, 2026 08:57
Phase 8 — DesktopPage decoupling (760 lines → ~230 lines):
- Extract 6 hooks: useSystemPerformance, useOverlayPolicy,
  useDesktopStatusRuntime, usePreferences, useContextMenu, useDragController
- Extract SettingsPanel component from inline JSX
- Consolidate dedupeKinds into shared/runtimeGuards.ts (3 sites → 1)
- Remove dead code: ResidentPerformanceHub, StatusIcon components

Phase 11 — Rust backend async optimization:
- get_system_performance now async with spawn_blocking (non-blocking)
- Network utilization: delta-based rate calculation with cached state
  (fixed from cumulative bytes / hardcoded 1.25MB → bytes/sec / 1Gbps)
- Fix update provider false claim: quality → "unavailable", code → "not-implemented"

All tests pass (state, providers, runtime, QA showcase, build).

🤖 Generated with [Qoder][https://qoder.com]
Phase 9 — Clipboard Provider (Rust backend):
- get_clipboard_content / set_clipboard_content commands (arboard crate)
- Background clipboard monitor thread with 800ms polling
- Clipboard change events emitted to frontend via Tauri event bus
- Guest provider capability: clipboard → "native"/"available"

Phase 10 — Interaction capabilities:
- Media template: play/pause, skip next/prev buttons (WinRT GSMTC API)
- Clipboard template: click-to-copy button with visual feedback
- New mediaControlRuntime.ts for clipboard + media control IPC

All tests pass (state, providers, runtime, QA showcase, build).

🤖 Generated with [Qoder][https://qoder.com]
Register tauri-plugin-autostart for Windows/macOS, expose get/set
autostart commands, and wire a toggle into the SettingsPanel so users
can enable launch-on-boot from within the app.

🤖 Generated with [Qoder][https://qoder.com]
Rust backend now reads Windows Focus Assist state from registry
(QuietHours/NFPEnabled) and polls notification-related settings.
Background threads monitor both with change detection and emit
Tauri events to the frontend.

Frontend gains systemMonitorRuntime.ts for IPC, a useSystemMonitors
hook that subscribes to focus-assist-changed events, and the
aggregation layer now accepts externalActiveKinds/externalStates
so system monitor data participates in status scheduling.

The focus provider capability is now declared as native/available
on Windows instead of unavailable/not-implemented.

🤖 Generated with [Qoder][https://qoder.com]
Integrate i18next with browser language detection, zh-CN and en
locale files covering all production UI strings (~100 keys).

Centralized COPY object in desktopStatusConfig.ts is replaced by
i18n.t() calls in all getter functions. SettingsPanel gains a
language toggle section. Templates, diagnostic labels, aria-labels,
aggregation fallback strings, and system monitor copy all use the
translation system.

All 150+ existing tests pass with the i18n layer.

🤖 Generated with [Qoder][https://qoder.com]
…ts (Phase 16)

Introduce Vitest + @testing-library/react for React component testing alongside
the existing tsx-based test runner. Add 42 tests covering all 6 status templates,
GuestSourceHealthIndicator, and the desktop status aggregation layer.

- vitest.config.ts: jsdom environment, React plugin, setup file
- src/test/setup.ts: i18n init (English), jest-dom matchers, auto-cleanup
- src/test/fixtures.ts: typed mock state factories for all 6 template kinds
- 7 component test files (.vitest.tsx) covering rendering, ARIA, interactions
- 1 aggregation test file (.vitest.ts) with 8 tests including external state merging
- .github/workflows/ci.yml: CI pipeline for tests + typecheck
- test:vitest and test:all npm scripts

🤖 Generated with [Qoder][https://qoder.com]
Transform the status pill from single-template view to multi-status layout:
- Resident icon always visible as the anchor indicator
- Guest indicator rail shows compact buttons for each active status (media, download, update, clipboard, focus)
- Click an indicator to switch the detail area to that template; click again to toggle back to resident
- Dynamic pill width scales from 303px to 500px based on active indicator count
- Indicators sorted by priority order (focus > update > download > media > clipboard)
- Per-kind accent colors with focused/hover states
- Smooth width transitions via CSS cubic-bezier easing
- Expose resolvedStates and activeKinds from useDesktopStatusRuntime hook
- Add i18n keys for status indicator labels (en + zh-CN)

🤖 Generated with [Qoder][https://qoder.com]
Update project maturity to v1.0, add completion markers to all
phase headings, refresh capabilities table, resolve core issues,
update timeline with commit hashes, and note resolved tech debt.

🤖 Generated with [Qoder][https://qoder.com]
Phase 17: Replace 294 lines of dead product-status-settings* CSS with
new product-settings-* rules matching SettingsPanel.tsx class names.

Phase 18: Convert media_control, get_media_session_status, and
get_guest_provider_capabilities to async commands using spawn_blocking
to prevent WinRT IAsyncOperation::get() from blocking IPC threads.

Phase 19: Add Arc<AtomicBool> shutdown flag for background monitor
threads, merge redundant Focus Assist + Notification monitors into
a single thread (eliminating duplicate registry reads), and reuse
arboard::Clipboard instance instead of creating one every 800ms.

Bump Rust crate version to 1.0.0.

🤖 Generated with [Qoder][https://qoder.com]
Update tauri.conf.json and package.json versions to match the
Cargo.toml 1.0.0 release version.

🤖 Generated with [Qoder][https://qoder.com]
@jay77721 jay77721 merged commit 260c2e1 into main Jun 10, 2026
1 of 2 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