Skip to content

Release 3.0.2 - #2485

Merged
mjcheetham merged 31 commits into
releases/v3.0from
main
Oct 26, 2026
Merged

mjcheetham merged 31 commits into
releases/v3.0from
main

Conversation

@mjcheetham

Copy link
Copy Markdown
Contributor

Changes:

Ensure that we actually codesign the NuGet package for the .NET tool.
This step was accidentally dropped during reworking of the release
pipeline during initial GCM 3.x development.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Ensure that we actually codesign the NuGet package for the .NET tool.
This step was accidentally dropped during reworking of the release
pipeline during initial GCM 3.x development.
Allow the agent to be used for Mac builds to be specified by a demand
using ImageOverride, rather than 'pool.image/os' properties, which only
exist on hosted pools.

This allows us to switch to a self-hosted pool using the matrix
parameter only.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Use the Golden Gate VM image from the ACES shared pool for Mac jobs.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Allow release pipeline to skip the .NET Tool build; useful when testing
the pipeline.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Use the Golden Gate VM image from the ACES shared pool for Mac jobs.
ACES provides ARM-based Mac runners for Azure Pipelines which we must
move to since Azure Pipelines hosted Mac pools are no longer getting
updates (and are still on Intel-based Macs too).

> [!TIP]
> Review changes ignoring whitespace - many of the YAML changes
disappear since they are just scope/tab changes.
Since moving to the new SLNX format, we have not updated our VSCode
build and launch tasks for the new solution file target, nor the
updated repository layout.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Update the documentation index, splitting out user and developer
documentation articles. Add missing links.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
The development and debugging document has falled behind reality in many
places. Let's spruce this up and make it correct to today's situation.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Update the architecture document to reflect the latest interactions and
relationships between projects, commands, and providers.

Replace diagrams with Mermaid diagrams where appropriate.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Update the CONTRIBUTING.md document for the new build system, and call
our best practice for drafting commits.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
The spec still described credential-only responses and mandatory external
UI helpers. Align it with the current response, protocol, detection, and
prompting contracts so provider authors have accurate guidance.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Add an AGENTS.md file to help AI agents conform to the project best
practices. We have existing documentation for many things, so this
document is just a high level summary with links to the existing
docs for more in depth guidance.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
This PR brings GCM's developer documentation and VS Code configuration
up to date, then adds an `AGENTS.md` entry point for AI-assisted
contributions. Several guides still described the old project layout,
.NET Framework/WPF UI helpers, or credential-only provider responses,
making them misleading for contributors.
Secret Service backends that validate MIME content types, such as
oo7-daemon on Fedora 45, reject credential writes with 'Invalid content
type: plain/text'. Authentication succeeds, but the credential is never
stored and subsequent Git operations prompt again.

Use the standard text/plain content type for secret values so these
backends can store credentials.

Existing credentials remain readable because lookups use the service and
account attributes, and GCM reads the secret bytes without checking the
content type. Only new or updated secrets get the corrected content type;
no migration of existing entries is needed.

Assisted-by: GPT-6.1 Sol
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
An unlocked Secret Service collection does not require a desktop session.
The DISPLAY/WAYLAND_DISPLAY check rejects legitimate SSH and terminal
sessions even when their keyring is already available.

Use actual bus connectivity and Secret Service initialization as the
availability checks rather than treating the presence of a display as
proof. Native error details and actionable guidance help users
distinguish an absent service from a locked collection or a cancelled
prompt.

Provider-owned prompting remains unchanged. Headless users still need
to provision their session bus and unlock collections through their
provider; this change does not introduce terminal prompting or start
D-Bus explicitly.

Assisted-by: GPT-6.1 Sol
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Secret Service backends that validate MIME content types, such as
oo7-daemon on Fedora 45, reject credential writes with 'Invalid content
type: plain/text'. Authentication succeeds, but the credential is never
stored and subsequent Git operations prompt again.

Use the standard text/plain content type for secret values so these
backends can store credentials.

Existing credentials remain readable because lookups use the service and
account attributes, and GCM reads the secret bytes without checking the
content type. Only new or updated secrets get the corrected content
type; no migration of existing entries is needed.

Fixes #2473
An unlocked Secret Service collection does not require a desktop
session. The DISPLAY/WAYLAND_DISPLAY check rejects legitimate SSH and
terminal sessions even when their keyring is already available.

Use actual bus connectivity and Secret Service initialization as the
availability checks rather than treating the presence of a display as
proof. Native error details and actionable guidance help users
distinguish an absent service from a locked collection or a cancelled
prompt.

Provider-owned prompting remains unchanged. Headless users still need to
provision their session bus and unlock collections through their
provider; this change does not introduce terminal prompting or start
D-Bus explicitly.

Rendered docs:
-
https://github.com/mjcheetham/git-credential-manager/blob/headless-linux/docs/secretservice-headless.md
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
XUnit 2.9.3
XUnit SkippableFact 1.5.85
XUnit VS Runner 4.0.1

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
This package pinning of System.Text.Json is no longer required since we
dropped .NET Framework. This was a workaround for the build system which
we dropped in the move to the 3.x branch.

Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Signed-off-by: Matthew John Cheetham <mjcheetham@outlook.com>
Update all our dependencies to their latest (supported) versions. Note
that we don't update `System.CommandLine` because this has a large API
change that we should handle separately.

We also drop the `System.Text.Json` pinning as this was a workaround for
when we dual targeted .NET Framework, which is no longer required - this
means we now target the latest JSON package from the current TFM runtime
(.NET 10.x).

Also bump the version from `3.0.1` to `3.0.2` in the `VERSION` file in
preparation for a new release.
@mjcheetham
mjcheetham requested a review from a team October 26, 2026 10:58
@mjcheetham
mjcheetham merged commit 0d95999 into releases/v3.0 Oct 26, 2026
24 checks passed
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