Update to 0.10.4 - #177
Conversation
Navigation: - share one AppNavigation component between login and authenticated shells - use a compact two-row glass header that preserves the brand lockup and keeps quest mode controls beside navigation - retain theme, language, account, debug, and settings behavior across responsive layouts Dashboard and quest actions: - replace redundant status and recommendation panels with icon-enhanced quest filters - move the content-sized Orbs and Nitro pill beside the dashboard heading - finish the refresh icon's current rotation after balance loading completes - expose batch actions as inline buttons, expand search, and remove duplicate list headings and pending-claim messaging Localization and cleanup: - update the dashboard description across all supported locales - remove translations, state, handlers, and components used only by deleted dashboard surfaces Development reliability: - ignore Rust targets, Tauri sources, sidecars, and crates in Vite file watching - prevent Windows EBUSY watcher failures from leaving the Tauri dev window blank Validation: - pnpm run build - pnpm test (41 tests) - pnpm run i18n:check - pnpm run tauri:dev - Playwright checks at 1200x800 and 800x600, including full-cycle refresh timing
Rework theme toggle to use the View Transitions API with a ripple-style clip-path animation. Adds prefers-reduced-motion handling and a guard class (html.theme-view-transition) to prevent overlapping toggles, stores click coords in CSS vars, and performs WAAPI animation on ::view-transition-new(root). Includes a fast fallback for browsers without the API. CSS updated to set initial clip-path and z-index for the transition and to cleanly restore state when finished.
Adjust layout and spacing in LoginPanel.vue for the manual-token section: increase article vertical padding, remove button py, align header items to start with larger gap, enlarge icon container (h-11/w-11, rounded-lg) and KeyRound (h-5/w-5), update title/description typography and spacing, and increase sm breakpoint form left padding to 3.75rem. These tweaks improve visual balance and readability.
Allow version.txt updates on develop to trigger release candidates while keeping stable releases restricted to main. Add an explicit release policy so develop only accepts -rcN versions and stable develop versions skip build and publish jobs.
The macOS release and CI flows were simplified to use hardened ad-hoc signatures instead of Developer ID and notarization checks. This removes the temporary keychain setup and smoke-sign script, updates build and verify scripts to require ad-hoc identities, and aligns the packaged identity audit and Rust runtime checks with the same policy. Runtime auditing now reports notarization as disabled rather than external.
- Enforce the repository-wide unsigned macOS policy with explicit Tauri --no-sign builds, dormant signing helpers, and integrity-only bundle audits.\n- Harden runtime bridge installation with serialized transactions, unique RAII temporary files, manifest/hash verification, safe legacy cleanup, and release-only helper discovery.\n- Make simulator shutdown resilient with poisoned-lock recovery, bounded shared cleanup deadlines, and unsupported-target fallbacks.\n- Align identity audits and CI/release scripts with configured neutral binary names, validated release versions, and token-safe artifact smoke tests.\n- Localize launcher actions and success/error messaging, preserve runtime process startup on identity-name failures, and correct Vietnamese claim-state text.\n\nTests: pnpm test; pnpm run build; pnpm run check:runtime-identity; pnpm run test:identity-audit; pnpm run test:packaged-identity; pnpm run i18n:check; pnpm run check:cdp-core-deps; cargo test --workspace -- --test-threads=1 (one existing fixed-port probe is flaky; targeted serial run passes); cargo clippy --workspace --all-targets --all-features -- -D warnings; cargo fmt --check.
- Read the macOS runtime identity policy and binary names in one Node invocation while keeping signing hard-disabled.\n- Quote the disabled-signing policy check so the macOS build guard remains explicit and shell-safe.\n- Use a literal eprintln format string in the unsupported-platform launcher fallback so every cfg branch compiles cleanly.\n\nValidation: pnpm run check:runtime-identity; cargo fmt --manifest-path src-cdp-launcher/Cargo.toml -- --check; cargo test -p discord-cdp-launcher; bash -n build-macos.sh
Expose a proxy-free loopback /json target-listing API with structured errors so callers can distinguish unreachable endpoints, transient connection failures, HTTP failures, and malformed responses. Classify Windows connection reset and refused errors as retryable while preserving the existing launcher probe states. Add parsing and socket-level regression coverage for full target lists, worker entries, HTTP errors, and complete Content-Length responses. Serialize the local socket fixtures to keep the Windows workspace test suite deterministic under parallel execution.
Replace reqwest-based CDP target discovery with the shared proxy-free core implementation and retry transient loopback resets or refused connections with bounded exponential backoff. Wait for a responsive DevTools endpoint before initializing Discord quest modules across manual game, play, stream, video, PLAY_ACTIVITY, and activity flows. Preserve endpoint-level failures instead of wrapping them as misleading webpack module initialization errors, while retaining quest-specific context for genuine module failures. Add regression tests for retry classification, delay bounds, and error mapping.
Mark CDP as available and select CDP quest execution immediately after a successful CDP session login, preventing a previously persisted simulation preference from controlling the first task. Keep token-based login behavior unchanged and add store-level regression coverage for both authentication paths.
Align the frontend package, Rust package, Cargo lock entry, and Tauri bundle configuration with the repository's 0.10.3 release version so development and packaged artifacts report the same version.
Signed-off-by: dependabot[bot] <support@github.com>
Introduce a GitHub Actions job that resets the develop branch to the stable release commit after a successful non-prerelease release on main. The job creates a backup tag (develop-before-${RELEASE_VERSION}), refuses to overwrite an existing backup, and validates develop exists before proceeding. It uses --atomic and --force-with-lease to safely update the develop branch and runs only when release_policy, build-tauri, and release jobs succeed. Provides safety checks and informative errors to avoid accidental data loss.
Replace the subscription-period calendar calculation with Discord's server-provided Program Rewards timestamp so the countdown is independent of the local timezone and month-length rules. Add the authenticated GET /users/@me/program-rewards Tauri command, normalize both array and keyed reward payloads, and select the official NITRO=0 reward enum. Preserve minute-level refresh behavior and clear account-scoped reward state during login and logout. Add countdown boundary, timezone, invalid-date, response-normalization, and store integration tests. Verified with Vitest, vue-tsc, Vite build, and cargo check.
There was a problem hiding this comment.
Sorry @Masterain98, your pull request is larger than the review limit of 150,000 diff characters
|
Warning Review limit reachedNext included review available in 12 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Team Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (68)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
|
@coderabbitai review this pr |
|
|
| let fallback: Vec<_> = journal | ||
| .iter() | ||
| .filter(|managed| { | ||
| managed.provider_id == detected.provider_id && managed.port == detected.port | ||
| }) |
There was a problem hiding this comment.
Stale sessions match replacements
After the original managed process exits, its journal entry remains until an explicit restore. If another client from the same provider later uses that CDP port and has no discoverable installation ID, this fallback treats it as the managed session. Restoration then adopts the replacement process's executable path and terminates and relaunches that unrelated client without asking for external-session confirmation.
Prompt To Fix With AI
This is a comment left during a code review.
Path: src-tauri/src/discord_cdp_commands.rs
Line: 1125-1129
Comment:
**Stale sessions match replacements**
After the original managed process exits, its journal entry remains until an explicit restore. If another client from the same provider later uses that CDP port and has no discoverable installation ID, this fallback treats it as the managed session. Restoration then adopts the replacement process's executable path and terminates and relaunches that unrelated client without asking for external-session confirmation.
---
For each issue above, determine whether it is valid and should be fixed. If so, fix it directly.
Summary
Validation
pnpm testpnpm run buildcargo check --workspaceResolve #173
Greptile Summary
Adds selectable Discord and Vesktop CDP clients, installation discovery and custom-path support, more reliable launch and login handling, managed-session recovery, corrected Nitro Orbs countdown behavior, dashboard tab layout fixes, and synchronized 0.10.4 release metadata.
Confidence Score: 4/5
The changes since the previous review introduce no new actionable defect, but the existing managed-session identity issue remains a merge-blocking risk.
The earlier Windows quoting, provider-variant switching, managed-session discovery recovery, and stale release metadata findings are fixed or resolved. The unresolved session-journal fallback can still associate a stale managed entry with an unrelated replacement process from the same provider and port, allowing restoration to terminate and relaunch the wrong client. The mutable action reference remains in its existing thread, while the repository now explicitly requires readable action version tags.
Important Files Changed
Flowchart
%%{init: {'theme': 'neutral'}}%% flowchart LR UI[Vue login and settings UI] --> IPC[Tauri IPC] IPC --> Selection[Desktop client selection] Selection --> Discovery[Installation discovery] Discovery --> Discord[Official Discord variants] Discovery --> Vesktop[Vesktop executable or Flatpak] Selection --> Ownership[CDP owner and session journal] Ownership --> Supervisor[Process supervisor] Supervisor --> Launch[Launch or restart with CDP] Launch --> Endpoint[Loopback CDP endpoint] Endpoint --> Login[Account capture and quest execution]Reviews (6): Last reviewed commit: "Update docs" | Re-trigger Greptile