Feature: Fixed several bugs with phase one#61
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
This PR bundles multiple “phase one” fixes and foundational features across the Recrest app, test suite, and Tauri backend—covering settings schema expansion, improved UX interactions (drawers/swipes/scroll restore), dev-mode stubbing, and new maintenance tooling (verify scripts, CI helpers).
Changes:
- Adds new settings fields (Phase 0.1) and related behaviors (pinned repos persistence, UI scale hotkeys, privacy-gated favicon fetching, author dedupe via signature keys).
- Introduces new UX flows and reliability fixes (inline PR drawer on repo detail, swipe navigation/drawer-dismiss gestures, scroll restoration, factory reset end-to-end).
- Expands tooling and test coverage (new Vitest + Playwright specs, Rust tests for reset/registry, verify scripts, CI workflow/env seeding, visual-tester workflow).
Reviewed changes
Copilot reviewed 141 out of 143 changed files in this pull request and generated 4 comments.
Show a summary per file
| File | Description |
|---|---|
| yarn.lock | Adds @use-gesture lock entries. |
| package.json | Adds Rust check/test/clippy scripts and verify aggregations. |
| .husky/pre-commit | Runs lint-staged plus full yarn verify pre-commit. |
| .env.example | Documents/introduces DEV_PORT_WEB / DEV_PORT_TAURI. |
| docs/plans/bugs.md | Adds a phase-1 bug tracking document. |
| docs/plans/04-activity-stats-and-settings.md | Renumbers/updates plan references and prerequisites. |
| docs/plans/03-repo-and-git-actions.md | Renumbers/updates plan references and prerequisites. |
| tests/playwright.config.ts | Loads repo-root .env to align Playwright app URL/port. |
| tests/src/setup/global.setup.ts | Reads ports from env or repo-root .env for test URLs/logging. |
| tests/src/helpers/tauri-stub.ts | Extends Tauri event stubs to support unlisten/unregister cleanup. |
| tests/src/helpers/seed/settings.ts | Adds Phase 0.1 additive default settings to test seed. |
| tests/src/helpers/seed/repos.ts | Sanitizes seed email away from a real domain. |
| tests/src/e2e/app/17-repo-detail-pr-drawer.spec.ts | New E2E coverage: repo detail PR row opens inline drawer without navigation. |
| tests/src/e2e/app/18-swipe-gestures.spec.ts | New E2E coverage: swipe-to-dismiss drawer and swipe page navigation. |
| shared/src/types/settings.ts | Extends AppSettings with Phase 0.1 fields and supporting types. |
| shared/src/types/repo.ts | Adds optional signatureKey to RecentCommit. |
| shared/src/types/pr.ts | Adds optional assignees / requestedReviewers fields. |
| shared/src/constants/events.ts | Adds SETTINGS_RESET_EVENT and exposes via EventChannel. |
| shared/src/constants/commands.ts | Adds FACTORY_RESET Tauri command constant. |
| app/package.json | Adds @use-gesture/react dependency. |
| app/vite.config.ts | Loads repo-root .env for port overrides and validates tauri devUrl vs env. |
| app/src/styles/tokens.scss | Adds UI-scale preference variable and destructive button tone; fixes layout scaling math. |
| app/src/styles/page-anim.scss | Tweaks page animation opacity/offset/duration for legibility and screenshot stability. |
| app/src/store/slices/uiSlice.ts | Introduces persisted pin toggle thunk and hydrates pins from settings updates. |
| app/src/store/slices/settingsSlice.ts | Adds Phase 0.1 defaults to settings initial state. |
| app/src/store/resetListener.ts | New: clears recrest:* storage and registers settings://reset listener to reload. |
| app/src/store/resetListener.test.ts | New: tests storage wipe + reload behavior via mocked listener. |
| app/src/store/index.ts | Wires settings-reset listener at store module load; syncs Phase 0.1 preloaded defaults. |
| app/src/pages/RepoDetailPage.tsx | PR rows now open an inline drawer panel instead of navigating away. |
| app/src/pages/DashboardPage.tsx | Adds “Open in IDE” quick action; adjusts skeleton layout and CI indicator logic. |
| app/src/pages/ActivityPage.tsx | Adds scroll restoration and author dedupe/alias-aware filtering + options. |
| app/src/pages/tests/RepoDetailPage.test.tsx | New unit test verifying inline PR drawer behavior without navigation. |
| app/src/main.tsx | Bootstraps dev-only Tauri stub + seed groups; mounts ConfirmProvider at root. |
| app/src/lib/tauri/services/autostartService.ts | Makes enable/disable throw so UI can surface failures; best-effort state read. |
| app/src/lib/repoEnrich.ts | Uses explicit group display names when available; threads groups into enrich calls. |
| app/src/lib/initials.ts | Updates example name in comment. |
| app/src/lib/dev/seed/settings.ts | New: app-workspace seed settings mirrored from tests. |
| app/src/lib/dev/seed/prs.ts | New: app-workspace seed PR data mirrored from tests. |
| app/src/lib/dev/seed/providers.ts | New: app-workspace seed provider connections mirrored from tests. |
| app/src/lib/dev/seed/index.ts | New: central seed bundle for dev Tauri stub. |
| app/src/lib/charts/smoothLine.ts | New monotone-cubic interpolation helper for chart smoothing. |
| app/src/lib/charts/smoothLine.test.ts | New unit tests for smoothing path edge cases and overshoot constraints. |
| app/src/lib/authorNormalize.ts | New signature-key normalization logic for author dedupe. |
| app/src/lib/authorNormalize.test.ts | New unit tests for normalization + signature key behavior. |
| app/src/lib/activityStats.ts | Moves palette to shared helper; adds signatureKey + alias-aware leaderboard aggregation. |
| app/src/i18n/locales/en/settings.json | Adds autostart error + developer factory reset strings. |
| app/src/i18n/locales/en/onboarding.json | Adds “Continue” and Done-step “Back” strings. |
| app/src/i18n/locales/en/common.json | Adds reload toast strings, repo list view/filter/sort labels, and other UI strings. |
| app/src/i18n/locales/de/settings.json | Adds autostart error + developer factory reset strings (German). |
| app/src/i18n/locales/de/onboarding.json | Adds “Continue” and Done-step “Back” strings (German). |
| app/src/i18n/locales/de/common.json | Adds reload toast strings, repo list view/filter/sort labels, and other UI strings (German). |
| app/src/hooks/useTheme.ts | Writes --ui-scale-pref from settings into the document root. |
| app/src/hooks/useTauri.ts | Removes reactive start-minimized JS hook (boot-time only). |
| app/src/hooks/useScrollRestoration.ts | New hook to persist/restore scroll position via sessionStorage. |
| app/src/hooks/useRepoFavicon.ts | New privacy-gated favicon discovery + LRU cache. |
| app/src/hooks/usePageSwipe.ts | New touch swipe navigation between top-level pages. |
| app/src/hooks/useGlobalShortcuts.ts | Adds UI scale hotkeys (Cmd/Ctrl +/-/0) persisted via settings. |
| app/src/hooks/useEnrichedRepos.ts | Threads repo groups into enrich pipeline. |
| app/src/hooks/useDrawerSwipe.ts | New touch swipe-to-dismiss gesture for drawers. |
| app/src/components/organisms/settings/tabs/DeveloperTab/index.tsx | Adds factory reset section wired through shared confirm dialog. |
| app/src/components/organisms/settings/tabs/DeveloperTab/DeveloperTab.test.tsx | Extends tests to cover factory reset confirm + storage wipe + reload. |
| app/src/components/organisms/settings/tabs/DesktopSettings/index.tsx | Makes autostart toggle reflect plugin state; surfaces failures via toast. |
| app/src/components/organisms/settings/_test-helpers.tsx | Wraps settings tests in ConfirmProvider in addition to TooltipProvider. |
| app/src/components/organisms/repos/RepoRow/index.tsx | Switches pin action to persisted pin thunk. |
| app/src/components/organisms/repos/RepoList/RepoList.test.tsx | Tightens assertions around single-layout rendering and card-view mode. |
| app/src/components/organisms/onboarding/steps/InitialScanStep/index.tsx | Replaces spinner UI with pulsing Search icon and adds test IDs. |
| app/src/components/organisms/onboarding/steps/DoneStep/index.tsx | Adds Back button to final step. |
| app/src/components/organisms/onboarding/steps/DoneStep/DoneStep.test.tsx | Updates tests for Back + CTA buttons. |
| app/src/components/organisms/onboarding/steps/DoneStep/DoneStep.stories.tsx | Updates story args to include onBack. |
| app/src/components/organisms/onboarding/steps/ConnectProviderStep/index.tsx | Adds provider brand icons and “Continue” behavior when already connected. |
| app/src/components/organisms/onboarding/steps/BasicsStep/index.tsx | Widens selects and improves locale labels for DE/EN. |
| app/src/components/organisms/onboarding/OnboardingWizard/index.tsx | Adds step history stack for consistent Back navigation across steps. |
| app/src/components/organisms/layout/Sidebar/Sidebar.test.tsx | Adds test ensuring Settings entry is pinned in sidebar footer. |
| app/src/components/organisms/layout/Sidebar/index.tsx | Removes unused imperative navigate usage for Settings entry. |
| app/src/components/organisms/layout/Header/index.tsx | Adds refresh success/error toasts; adds repo-add scope toggle UI; responsive header tweaks. |
| app/src/components/organisms/layout/DetailPane/index.tsx | Extracts section UI into reusable DetailSection. |
| app/src/components/organisms/layout/AppShell/index.tsx | Registers global page swipe navigation hook. |
| app/src/components/organisms/activity/Timeline/index.tsx | Adjusts filter chip styling and updates translation keys for check-fail chips. |
| app/src/components/organisms/activity/cards/PrVelocityCard/index.tsx | Uses monotone cubic smoothing for velocity lines. |
| app/src/components/organisms/activity/cards/OpenPrsHero/index.tsx | Simplifies open PRs hero display (removes segmented bar). |
| app/src/components/organisms/activity/cards/CiPassRateCard/index.tsx | Uses monotone cubic smoothing and closes area fill to baseline. |
| app/src/components/organisms/activity/cards/CiHealthHero/index.tsx | Replaces single-color ring with segmented donut + legend and new i18n keys. |
| app/src/components/molecules/RepoAvatar/index.tsx | Adds favicon fallback via useRepoFavicon when no logo/brand match. |
| app/src/components/molecules/Drawer/index.tsx | New shared drawer envelope with backdrop/ESC close/swipe-to-dismiss and optional tabs. |
| app/src/components/molecules/DetailSection/index.tsx | New reusable collapsible detail section component. |
| app/src/components/molecules/compounds/Tooltip/index.tsx | Wraps Radix primitives to satisfy Fast Refresh export rules. |
| app/src/components/molecules/compounds/Tabs/index.tsx | Wraps Radix Tabs root to satisfy Fast Refresh export rules. |
| app/src/components/molecules/compounds/Select/index.tsx | Wraps Radix Select primitives to satisfy Fast Refresh export rules. |
| app/src/components/molecules/compounds/DropdownMenu/index.tsx | Wraps Radix dropdown primitives to satisfy Fast Refresh export rules. |
| app/src/components/molecules/compounds/Dialog/index.tsx | Wraps Radix dialog primitives to satisfy Fast Refresh export rules. |
| app/src/components/molecules/compounds/AlertDialog/index.tsx | Wraps Radix alert-dialog primitives to satisfy Fast Refresh export rules. |
| app/src/components/molecules/AuthorAvatar/index.tsx | Skips Gravatar fetches for dev-seed domains; adds gradient direction variance. |
| app/src/components/molecules/AuthorAvatar/AuthorAvatar.test.tsx | Updates fixtures and adds test for Gravatar suppression on seed emails. |
| app/src/components/molecules/AuthorAvatar/AuthorAvatar.stories.tsx | Updates story args to new example name. |
| app/src/components/atoms/ConfirmDialog/useConfirm.ts | New promise-based confirm API + context hook. |
| app/src/components/atoms/ConfirmDialog/index.tsx | New provider implementing shared confirm dialog UI. |
| app/src-tauri/tauri.conf.json | Bundles Linux desktop/launcher/icon files into deb + appimage. |
| app/src-tauri/src/providers/registry.rs | Adds provider ID listing + registry reset; includes unit test. |
| app/src-tauri/src/providers/gitlab.rs | Adds placeholder empty assignees/reviewers vectors. |
| app/src-tauri/src/providers/github.rs | Maps assignees and requested reviewers into DTO. |
| app/src-tauri/src/providers/bitbucket.rs | Adds placeholder empty assignees/reviewers vectors. |
| app/src-tauri/src/providers/api.rs | Extends PullRequestDto with assignees/requested_reviewers (serde default). |
| app/src-tauri/src/platform/mod.rs | New platform module root with Windows-gated submodule. |
| app/src-tauri/src/platform/windows/mod.rs | New Windows platform module exports for snap-layout subclassing. |
| app/src-tauri/src/git/watcher.rs | Adds unsubscribe_all to clear all watched repos for factory reset. |
| app/src-tauri/src/git/mod.rs | Exposes new author_normalize module. |
| app/src-tauri/src/config/store.rs | Adds settings reset-to-defaults + test helpers and unit tests. |
| app/src-tauri/src/commands/window.rs | Adds caption button bounds IPC for Windows snap-layouts integration. |
| app/src-tauri/src/commands/settings.rs | Adds factory_reset command + settings reset event emission. |
| app/src-tauri/src/commands/repos.rs | Adds signature_key field to recent commit DTOs using backend normalization. |
| app/src-tauri/src/commands/notifications.rs | Uses notify-rust on Linux to improve icon display; keeps plugin path elsewhere. |
| app/src-tauri/resources/recrest.desktop | New Linux desktop entry for launcher + scheme handling. |
| app/src-tauri/resources/recrest-launcher.sh | New Linux launcher wrapper selecting Wayland/X11 backend. |
| app/src-tauri/Cargo.toml | Adds deunicode, switches Windows dependency to windows, adds Linux notify-rust. |
| .github/workflows/visual-tester.yml | New cross-OS Playwright run uploading screenshots and reports. |
| .github/workflows/ci.yml | Uses shared seed-env action and updates workflow name. |
| .github/workflows/deploy-landingpage.yml | Updates workflow name. |
| .github/workflows/release-tauri.yml | Updates workflow name. |
| .github/workflows/release-tauri-beta.yml | Updates workflow name. |
| .github/workflows/release-please.yml | Updates workflow name. |
| .github/actions/seed-env/action.yml | New composite action to write deterministic repo-root .env in CI. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.