Conversation
…neously Wrap all main content in a <template v-else> so it only renders when repoLoading is false. Previously both the spinner and the underlying view (dashboard/changes) appeared at the same time. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Log view used to always show `git log --all`, mixing in commits from unrelated branches and confusing the picture of what's actually on the checked-out branch. Now defaults to current-branch only (like GitHub Desktop's History) with a toggle to switch back to all branches. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
execSync's 10 MB maxBuffer was being exceeded by `git show -m --first-parent` on merge commits touching hundreds of files (e.g. master merges into long-running feature branches in monorepos), causing the endpoint to return 500 and the commit to render as "0 files" in the UI. Adds a small `gitSpawn` helper that streams stdout into memory with no buffer cap, then routes /api/git-show through it. Same parsing logic, same parameters — only the process invocation changes. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Extends the gitSpawn helper to /api/git-diff, /api/git-log and /api/git-file-diff. execSync's default 1 MB cap (and the explicit 10 MB cap on git-file-diff) was a latent failure for large files, big logs and diffs between distant commits in monorepos. Also moves /api/git-log from shell-interpolated string to an args array, removing a small injection surface on the format/count params. /api/gh-pr-diff is unaffected — it goes through GitHub's REST API via fetch, not execSync, so it has no buffer cap to lift. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The viewMode watcher only fires on actual mode changes, so switching from one repo tab to another while already on the Log/Graph view left the log empty: openRepo cleared it but no one refetched. Now the activeTabId watcher (and handleOpenPath, which had the same gap) await openRepo and then call loadLog if the current view needs it. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ebar Overhaul the dashboard view to give it more visual identity and fill the empty sidebar in dashboard mode. Dashboard: - Hero row with repo state, health score, and next recommended action - Stat cards with colored icons, sparklines, trends, and contextual chips - 6-month contribution heatmap with month labels - Top contributors with deterministic avatar colors and percentage bars - Commit-type breakdown (feat/fix/docs/chore/other) - Recent commits with conventional-commit tags and author avatars - 14-day commits bar chart with DOW labels Sidebar (dashboard mode): - Pinned branches block with ahead/behind indicators - Recent activity feed with author avatars and relative dates - Quick actions grid (Changes / Log / Graph / PRs) Wiring: - App.vue pre-loads branches + log when entering dashboard - DashboardView emits push/sync to reuse existing repo actions i18n: - ~60 new keys added symmetrically to fr.ts and en.ts 🪄 Commit via GitWand
🪄 Commit via GitWand
Clear selectedFilePath, selectedFileStaged and diff in commit() and amendCommit() before refreshing status. Previously the diff pane kept showing a stale or empty diff for the file that had just been committed, because refresh() would reload the diff for the still-selected path. 🪄 Commit via GitWand
When the current branch has no upstream, git reports ahead=0 so the existing "unpushed commits" banner didn't fire, even though none of the local commits exist on origin yet. Treat every commit as unpushed in that case and show a dedicated "Branche non publiée" section label with the accent color to distinguish it from the amber "unpushed" banner used for branches with an upstream. 🪄 Commit via GitWand
Clicking the "+" button on the Modified or Untracked section header previously called stageAll, which staged files from both sections at once. Now each section "+" emits only its own file paths via the new stagePaths event, matching the intuitive per-section behavior. The main "Stage all (N)" button in the commit panel still uses stageAll and is unaffected. 🪄 Commit via GitWand
🪄 Commit via GitWand
UX overhaul of the PR creation form: - Page is now full-bleed (no modal feel), takes the theme bg, content centered in a 920px container; close X removed (Cancel in footer) - Description gets a markdown RTE: Write/Preview tabs, toolbar (bold, italic, code, H1-3, lists, blockquote, link, code block), with selection-aware insertion and a homegrown markdown renderer - Template switcher uses a styled confirmation modal (Teleport) instead of the native confirm() dialog - New Reviewers field: tag-style input (Enter/space/comma to add, Backspace to remove, click X on tag); supports user and org/team Backend (Rust gh_create_pr + TS ghCreatePr + usePrPanel) extended to forward reviewers to `gh pr create --reviewer user1,user2`. 🪄 Commit via GitWand
Refresh the PR creation page: white page background (--color-bg-secondary), larger semibold labels (14px), generous section spacing (32px), Write/Preview tabs rebuilt as a pill segmented control, inputs with an accent focus ring, and a beefier sticky footer. Add reviewer autocomplete powered by `gh api /repos/:owner/:repo/assignees`: dropdown with avatar, login and full name, keyboard navigation (↑/↓/Enter/Tab/Esc), local filtering on login and name. Backend: - new Tauri command gh_list_reviewer_candidates(cwd) - TS wrapper ghListReviewerCandidates + ReviewerCandidate type i18n: add pr.create.reviewersLoading (fr + en). 🪄 Commit via GitWand
🪄 Commit via GitWand
Submitting a review on your own PR returned a useless "gh pr submit
review failed: 500" toast. The dev-server was wrapping GitHub's 422
responses as 500 and dropping the useful detail, and the TS wrapper
ignored the JSON error body.
- dev-server: forward GitHub's real status (422, 404, ...) and extract
the first validation error. GitHub's reviews endpoint uses two body
shapes for errors (array of strings or array of objects) — handle both
and fall back to JSON.stringify. Log the raw body to the server
console for easier debugging.
- backend.ts ghPrSubmitReview: read the server's { error } JSON body
before throwing. Error message now shows e.g. "Unprocessable Entity
— Review Can not approve your own pull request" instead of just
"failed: 500".
🪄 Commit via GitWand
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.
Summary
This branch started as a dashboard redesign and grew into a broader UX pass on the repo workflow, plus a full rework of the PR creation experience.
Dashboard
Full redesign of the dashboard view with a proper visual identity and content in the previously-empty sidebar:
PR creation — full rework
The old "Nouvelle PR" sidebar form was cramped and unclear about what to target. Replaced by a dedicated full-bleed page rendered in
<main>:--color-bg-secondary), content centered in a 880px container — no more modal feelconfirm()gh api /repos/:owner/:repo/assigneeson open, dropdown shows avatar / login / full name, keyboard nav (↑ / ↓ / Enter / Tab / Esc), filters locally on login + nameBackend side,
gh_create_prnow forwards--reviewerand a newgh_list_reviewer_candidatesTauri command powers the autocomplete (Rust + TS wrapper).Repo workflow fixes & polish
fix(sidebar): clicking "+" on Modified or Untracked section headers now stages only that section's files instead of everything (newstagePathsevent)fix(diff): diff viewer is reset after commit / amend — no more stale diff for a file that just got committedfeat(log): highlight unpublished branches in the sidebar commit list with a dedicated accent-colored header instead of the amber "unpushed" banner (which was never firing becauseahead=0without upstream)feat(push): new branches are published withgit push --set-upstreamautomaticallyi18n
~70 new keys added symmetrically to
fr.tsanden.ts(dashboard, PR creation, RTE toolbar, template modal, reviewers).Test plan
--set-upstreamghinstalled + authenticated → From/Into cards populate, base auto-detects main/master/develop, title auto-suggests from branch namenpx vue-tsc --noEmitpasses,npx vite buildpasses,cargo checkinsrc-tauripasses