Repository navigation
Phase 2: view-only inventory and duplicate detection across package managers - #117
Merged
Merged
Conversation
Delete Backend.Update, UpdateAll, the privileges helpers, the command viewer and the commented-out update palette entries. pkgmate only reads. BREAKING CHANGE: pkgmate no longer refreshes package databases and never escalates privileges Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
The D binding was always disabled, so select mode was unreachable. Remove the binding, the select mode, and the styles only it used. BREAKING CHANGE: pkgmate no longer refreshes package databases and never escalates privileges Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Emit every package at once with the local pacman -Qu data, and run checkupdates (as the user, --nocolor, 30s timeout) concurrently. Repo packages whose fresh version differs are emitted again. Failures keep the -Qu data; markers are never removed. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TK3QqnmonpAJZpVuxwJ1Vo
The model keeps every loaded package in a map keyed by the row identity key and, on FinishedLoadingPackagesMsg, computes the duplicate groups once and applies them: the groups fill a fifth Duplicates tab and the Package Manager cell of every grouped package in the four loading tabs carries a (+family) marker with the other families sorted alphabetically.
…em in the footer The footer's right section now also reads "N apps installed more than once" when at least one duplicate group was found, and says "app" in the singular.
A real-machine check matched golang google.golang.org/protobuf (the protoc-gen-go binary) with pacman protobuf (protoc and the C++ library). The Go backend now records the binary's file name in Package.ID and IdentityKeys uses it; the module-path rule remains the fallback when ID is empty. Also fixes modules whose last element is not the command (mvdan.cc/sh/v3 -> shfmt, golang.org/x/tools -> goimports). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TK3QqnmonpAJZpVuxwJ1Vo
Contributor
|
@coderabbitai summary |
This was referenced Oct 17, 2026
Closed
Closed
Closed
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.
Phase 2: pkgmate becomes a view-only inventory tool and gains duplicate detection across package managers.
View-only
privileges.go,Backend.Update()on all backends,UpdateAll, the command viewer, and the never-enabled delete key / select mode. pkgmate never callssudoorpkexecand still refuses to start as root.checkupdates(pacman-contrib) is installed it runs as the user (30 s timeout); the list is shown immediately frompacman -Quand markers are updated when the fresh check returns. Absent/failed → keeps the-Qudata.Duplicate detection
Design:
docs/superpowers/specs/2026-10-17-duplicate-detection-design.md.backend/identity.go:IdentityKeys(per-ecosystem rules:python-X/python3-X↔ pip/pipx, AUR-bin/-git/-appimage, Flatpak ID last segment + an 18-entry alias table, npm by name, Go by binary name),FindDuplicates(union-find; at least two manager families; at least one explicitly installed copy; largest groups first).pacman (+flatpak)marker in the Package Manager column, "N apps installed more than once" in the footer, "No duplicates found" empty state.INSTALLERispip/uv(distro Python packages were shown as pip packages); Go packages carry the binary file name.Verification
go build/vet -tags=all_backends,go test -race -tags=all_backends ./..., untaggedgo test ./..., gofmtprotoc-gen-govs pacmanprotobuf); now 0 false groups🤖 Generated with Claude Code
https://claude.ai/code/session_01TK3QqnmonpAJZpVuxwJ1Vo