Skip to content

Add a details pane for the selected package - #493

Merged
lostindark merged 8 commits into
lostindark:masterfrom
indep-arg:pr/details-panel
Nov 1, 2026
Merged

lostindark merged 8 commits into
lostindark:masterfrom
indep-arg:pr/details-panel

Conversation

@indep-arg

Copy link
Copy Markdown
Contributor

Following up on #490: this brings the details pane from that proposal to the current WinForms app, with no new dependencies.

When one package is selected, the pane shows:

  • its INF name, provider, version and date
  • tags for old version, no device, boot critical and extension
  • short notes on whether it may still be needed, for example "A newer version, 12.19.1.37, is in use by Intel(R) Ethernet Connection (7) I219-V" or "Windows may need this driver to start"
  • the main fields (OEM INF, class, size, install date, signer, device ID, extension ID)
  • a link that opens the package folder, same as "Open Folder Location"

The "old version" tag follows the same rule as Select Old Driver(s). I moved that grouping to Utils/DriverInsights.cs so the button and the pane can't disagree; the button selects exactly what it did before.

The pane sits between the list and the Operations box. It can be turned off from Options > Show Details Pane, and the setting is saved. Like the unused driver warning option, it is created in code after InitializeComponent() because the new strings have no generated Language properties. The strings are translated for all 21 languages.

I left out Export and Delete buttons in the pane for now. Delete in the main window works on the checked packages, so a second Delete for the selected one could be confusing. If you think they'd be useful, I can add them in a follow-up.

Tests for the grouping and the notes are in RaprTests/Utils/DriverInsightsTests.cs.

This class provides insights into driver packages, including version grouping and device associations.
This file contains the implementation of the DriverDetailsPanel class, which displays details about a selected driver package, including its status, notes, and various attributes.
Show the selected package next to the list: its provider, version and
date, tags for old version / no device / boot critical / extension, a
few notes on whether it may still be needed (for example "A newer
version, 12.19.1.37, is in use by Intel(R) Ethernet Connection"), its
main fields, and a link that opens its folder.

The old-version check uses the same grouping as Select Old Driver(s),
now moved to Utils/DriverInsights.cs so both stay in sync. The button
selects exactly what it did before.

The panel is built in code after InitializeComponent(), like the unused
driver warning option, since its strings have no generated Language
properties. It can be hidden from Options > Show Details Panel. The new
strings are translated for all 21 languages.
@indep-arg

Copy link
Copy Markdown
Contributor Author
image

@indep-arg
indep-arg marked this pull request as ready for review November 1, 2026 00:47
@lostindark

Copy link
Copy Markdown
Owner

Move the "Details" Panel below the "Operations"?

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

The newest-package match can prefer a disconnected device over a connected one, causing the note to omit the device actually using the driver depending on enumeration order.

1 open issue
1 file not reviewed
  • Rapr/Properties/Settings.Designer.cs: Generated file
What changed in this PR

Brings the details-pane concept from #490 into the existing WinForms app without adding dependencies, giving users more context about the selected driver package.

Changes:

  • Adds package details, status tags, explanatory notes, and a folder link.
  • Shares version grouping with “Select Old Driver(s)” and adds grouping and notes tests.
  • Adds a saved visibility option and localized pane strings.
File Description
RaprTests/​Utils/​DriverInsightsTests.cs Tests version grouping and package notes.
Rapr/​Utils/​DriverInsights.cs Centralizes version grouping and package insights.
Rapr/​Properties/​Settings.settings Defines the saved pane visibility setting.
Rapr/​Properties/​Settings.Designer.cs Exposes the pane visibility setting.
Rapr/​Lang/​Language.zh-TW.resx Adds Traditional Chinese pane strings.
Rapr/​Lang/​Language.zh-CN.resx Adds Simplified Chinese pane strings.
Rapr/​Lang/​Language.vi-VN.resx Adds Vietnamese pane strings.
Rapr/​Lang/​Language.uk-UA.resx Adds Ukrainian pane strings.
Rapr/​Lang/​Language.tt-RU.resx Adds Tatar pane strings.
Rapr/​Lang/​Language.tr-TR.resx Adds Turkish pane strings.
Rapr/​Lang/​Language.sk-SK.resx Adds Slovak pane strings.
Rapr/​Lang/​Language.ru-RU.resx Adds Russian pane strings.
Rapr/​Lang/​Language.resx Adds base English pane strings.
Rapr/​Lang/​Language.pt-BR.resx Adds Brazilian Portuguese pane strings.
Rapr/​Lang/​Language.pl-PL.resx Adds Polish pane strings.
Rapr/​Lang/​Language.nb-NO.resx Adds Norwegian Bokmål pane strings.
Rapr/​Lang/​Language.ko-KR.resx Adds Korean pane strings.
Rapr/​Lang/​Language.ja-JP.resx Adds Japanese pane strings.
Rapr/​Lang/​Language.it-IT.resx Adds Italian pane strings.
Rapr/​Lang/​Language.hu-HU.resx Adds Hungarian pane strings.
Rapr/​Lang/​Language.he-IL.resx Adds Hebrew pane strings.
Rapr/​Lang/​Language.fr-FR.resx Adds French pane strings.
Rapr/​Lang/​Language.es-ES.resx Adds Spanish pane strings.
Rapr/​Lang/​Language.el-GR.resx Adds Greek pane strings.
Rapr/​Lang/​Language.de-DE.resx Adds German pane strings.
Rapr/​Lang/​Language.ar-SA.resx Adds Arabic pane strings.
Rapr/​DSEForm.cs Integrates the pane, visibility option, and shared grouping.
Rapr/​Controls/​DriverDetailsPanel.cs Implements package details, tags, notes, and folder navigation.

Review effort: Balanced

Comment thread Rapr/Utils/DriverInsights.cs Resolved
@indep-arg

Copy link
Copy Markdown
Contributor Author

Move the "Details" Panel below the "Operations"?

Yep, easy fix. Give me a few mins.

    Put Operations and the details pane in one column, Operations on top,
    so the pane no longer takes width from the list. The Operations box
    sets the column width. When the pane is turned off, Operations fills
    the column again as before.

    Also open the folder itself when a package has no INF name, since
    Path.Combine throws on null, and decide whether to fill the pane from
    the setting rather than Visible, which is false until the window is
    shown.

    When an older copy has the same version as the newest and only an
    earlier date, the note said "A newer version, 1.0, ..." on a 1.0
    package. Show the date next to the version in that case.

    Use the published name as the title when the INF name is empty, and
    skip the subtitle line when there's nothing to show.

    One test for a newest version installed for a disconnected and a
    connected device, and one for an older copy that only differs by date.

    When several packages share the newest version and date, the note
    named the first one with a device, even if that device was not
    connected and another one was. Prefer a connected device, then any
    device, then the first package.
@indep-arg
indep-arg marked this pull request as draft November 1, 2026 02:27
    The designer sizes the Operations box and its button panel to fill the
    window's height. Their AutoSizeMode is the default GrowOnly, so in the
    new column they kept that height and squeezed the details pane into a
    strip at the bottom. Use GrowAndShrink for both.
    GrowAndShrink was not enough: in the TableLayoutPanel column the
    Operations box still kept the full height the designer gives it and
    the details pane stayed squeezed at the bottom.

    Use a plain docking panel instead. The box is docked to the top with
    its height measured from the button panel, which also follows buttons
    shown or hidden by driver store type, and the pane fills the rest.
    When the pane is turned off, the box fills the column as before.
@indep-arg
indep-arg marked this pull request as ready for review November 1, 2026 02:43
@indep-arg

indep-arg commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor Author

Moved it below Operations, in the same column, so it no longer takes width from the list. Turning it off from Options gives Operations the whole column again, like before.

image image

While at it I also fixed the Copilot note below and a few edge cases I found:

  • when an older copy has the same version as the newest one and only an older date, the note now shows the date, instead of "A newer version, 1.0" on a 1.0 package
  • opening the folder no longer throws if a package has no INF name
  • the title falls back to the published name if the INF name is empty

I also updated the description.

@lostindark
lostindark merged commit dec90fb into lostindark:master Nov 1, 2026
2 checks passed
@indep-arg
indep-arg deleted the pr/details-panel branch November 1, 2026 12:52
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.

3 participants