Removed administration permission#160
Merged
petesramek merged 2098 commits intopreview/1.0from Apr 3, 2026
Merged
Conversation
Owner
petesramek
commented
Apr 3, 2026
- Removed administration permission
Promote develop/1.0 to preview/1.0 --------- Co-authored-by: Pete Sramek <me@petesramek.com> Co-authored-by: Pete Sramek <petr.sramek@dropoutcoder.com>
…ishing package type
Bumps [actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact) from 3 to 4. <details> <summary>Release notes</summary> <p><em>Sourced from <a href="https://github.com/actions/upload-pages-artifact/releases">actions/upload-pages-artifact's releases</a>.</em></p> <blockquote> <h2>v4.0.0</h2> <h2>What's Changed</h2> <ul> <li>Potentially breaking change: hidden files (specifically dotfiles) will not be included in the artifact by <a href="https://github.com/tsusdere"><code>@tsusdere</code></a> in <a href="https://redirect.github.com/actions/upload-pages-artifact/pull/102">actions/upload-pages-artifact#102</a> If you need to include dotfiles in your artifact: instead of using this action, create your own artifact according to these requirements <a href="https://github.com/actions/upload-pages-artifact?tab=readme-ov-file#artifact-validation">https://github.com/actions/upload-pages-artifact?tab=readme-ov-file#artifact-validation</a></li> <li>Pin <code>actions/upload-artifact</code> to SHA by <a href="https://github.com/heavymachinery"><code>@heavymachinery</code></a> in <a href="https://redirect.github.com/actions/upload-pages-artifact/pull/127">actions/upload-pages-artifact#127</a></li> </ul> <p><strong>Full Changelog</strong>: <a href="https://github.com/actions/upload-pages-artifact/compare/v3.0.1...v4.0.0">https://github.com/actions/upload-pages-artifact/compare/v3.0.1...v4.0.0</a></p> <h2>v3.0.1</h2> <h1>Changelog</h1> <ul> <li>Group tar's output to prevent it from messing up action logs <a href="https://github.com/SilverRainZ"><code>@SilverRainZ</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/94">#94</a>)</li> <li>Update README.md <a href="https://github.com/uiolee"><code>@uiolee</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/88">#88</a>)</li> <li>Bump the non-breaking-changes group with 1 update <a href="https://github.com/dependabot"><code>@dependabot</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/92">#92</a>)</li> <li>Update Dependabot config to group non-breaking changes <a href="https://github.com/JamesMGreene"><code>@JamesMGreene</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/91">#91</a>)</li> <li>Bump actions/checkout from 3 to 4 <a href="https://github.com/dependabot"><code>@dependabot</code></a> (<a href="https://redirect.github.com/actions/upload-pages-artifact/issues/76">#76</a>)</li> </ul> <p>See details of <a href="https://github.com/actions/upload-pages-artifact/compare/v3.0.0...v3.0.1">all code changes</a> since previous release.</p> </blockquote> </details> <details> <summary>Commits</summary> <ul> <li><a href="https://github.com/actions/upload-pages-artifact/commit/7b1f4a764d45c48632c6b24a0339c27f5614fb0b"><code>7b1f4a7</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/127">#127</a> from heavymachinery/pin-sha</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/4cc19c7d3f3e6c87c68366501382a03c8b1ba6db"><code>4cc19c7</code></a> Pin <code>actions/upload-artifact</code> to SHA</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/2d163be3ddce01512f3eea7ac5b7023b5d643ce1"><code>2d163be</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/107">#107</a> from KittyChiu/main</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/c70484322b1c476728dcd37fac23c4dea2a0c51a"><code>c704843</code></a> fix: linted README</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/9605915f1d2fc79418cdce4d5fbe80511c457655"><code>9605915</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/106">#106</a> from KittyChiu/kittychiu/update-readme-1</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/e59cdfe6d6b061aab8f0619e759cded914f3ab03"><code>e59cdfe</code></a> Update README.md</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/a2d67043267d885050434d297d3dd3a3a14fd899"><code>a2d6704</code></a> doc: updated usage section in readme</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/984864e7b70fb5cb764344dc9c4b5c087662ef50"><code>984864e</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/105">#105</a> from actions/Jcambass-patch-1</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/45dc78884ca148c05eddcd8ac0a804d3365e9014"><code>45dc788</code></a> Add workflow file for publishing releases to immutable action package</li> <li><a href="https://github.com/actions/upload-pages-artifact/commit/efaad07812d4b9ad2e8667cd46426fdfb7c22e22"><code>efaad07</code></a> Merge pull request <a href="https://redirect.github.com/actions/upload-pages-artifact/issues/102">#102</a> from actions/hidden-files</li> <li>Additional commits viewable in <a href="https://github.com/actions/upload-pages-artifact/compare/v3...v4">compare view</a></li> </ul> </details> <br /> [](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores) Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`. [//]: # (dependabot-automerge-start) [//]: # (dependabot-automerge-end) --- <details> <summary>Dependabot commands and options</summary> <br /> You can trigger Dependabot actions by commenting on this PR: - `@dependabot rebase` will rebase this PR - `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it - `@dependabot merge` will merge this PR after your CI passes on it - `@dependabot squash and merge` will squash and merge this PR after your CI passes on it - `@dependabot cancel merge` will cancel a previously requested merge and block automerging - `@dependabot reopen` will reopen this PR if it is closed - `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually - `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency - `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself) - `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself) </details> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
XML comments were inconsistent: abbreviated inline param/exception docs mixed with full expanded blocks, missing `<typeparam>` on generic types, empty `<exception>` tags, broken `<see cref>` and `<paramref>` references, a missing copyright header, and a typo. ## Changes - **`AbstractPolylineDecoder`** — Added `<typeparam>` docs; expanded the abbreviated `Decode(polyline, CancellationToken)` overload to full form including `OperationCanceledException`; added `<param>`/`<exception>` to `ValidateFormat`; added full docs to abstract `GetReadOnlyMemory` and `CreateCoordinate`; simplified private helper summaries to single sentences - **`AbstractPolylineEncoder`** — Added `<typeparam>` docs; removed incorrect `<exception cref="InternalBufferOverflowException"/>` (wrong type); added description to empty `<exception cref="InvalidOperationException"/>` - **`PolylineEncodingOptionsBuilder`** — Standardized all three builder `<returns>` to `"The current PolylineEncodingOptionsBuilder instance for method chaining."`; simplified `WithPrecision` summary - **`PolylineEncoding`** — Removed stale `<paramref name="rounding"/>` (no such parameter on `Normalize`); fixed `<see cref="GetCharCount"/>` → `<see cref="GetRequiredBufferSize"/>` - **`PolylineEncoderExtensions`** — Added missing copyright header; added `<typeparam>` docs; updated method summaries/returns to reference `TCoordinate`/`TPolyline` rather than concrete types; added `<exception>` for null `coordinates` - **`PolylineDecoderExtensions`** — Added `<exception cref="ArgumentNullException">` for null `polyline` on `string` and `char[]` overloads - **`CoordinateDelta`** — Removed blank lines between closing doc tags and method declarations; moved second `<summary>` sentence to `<remarks>` - **`Defaults`** — Added missing `<summary>` on `Coordinate` nested class; fixed typo `"vakues"` → `"values"`; added missing trailing period Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
- [x] Fix stale XML comments and restore PolylineEncoderBenchmark (previous commit) - [x] Add `AbstractPolylineEncoderTests.cs` — constructor paths, Encode valid/empty/cancelled, heap-alloc path, Options property - [x] Add `PolylineEncoderExtensionsTests.cs` — List and Array overloads (null encoder, null coordinates, valid) - [x] Expand `AbstractPolylineDecoderTests.cs` — valid decode, options constructor null check, Options property, custom options, cancellation - [x] Add `InvalidPolylineExceptionTests.cs` — default constructor and message+innerException constructor - [x] All 214 tests pass, build clean, CodeQL: 0 alerts --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
- [x] Fix broken default-version fallback in extract-version composite action --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
Pull request created by AI Agent --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
…154) The release-to-main promotion was manual and error-prone, with no way to determine which `release/**` branch is "latest" without scanning all of them. Additionally, there was no automated way to start a new major/minor version cycle or enforce push restrictions on protected branches. ## merge-to-main (automatic) - Added `merge-to-main` job to `release.yml`, runs only on `release/**` after GitHub Release is created - Finds the highest `release/**` branch via `git ls-remote | sort -V | tail -1` - Normalizes both versions to `M.m` before comparing — only the latest branch triggers a PR to `main` - Skips silently with a step summary note if not the latest (e.g. hotfix on an older branch) ## bump-version workflow - New `workflow_dispatch` workflow (`bump-type: minor | major`), must run from `main` - Auto-detects current version from highest `release/**` branch; calculates next `M.m` - Creates `develop/M.m` from `main` - **Major bump**: resets all `PublicAPI.Shipped.txt` and `PublicAPI.Unshipped.txt` to `#nullable enable` — fresh API surface for breaking-change cycles - **Minor bump**: preserves API files — existing shipped API remains the baseline ## Branch locking - New composite actions: `branch-protection/lock` (sets PR-required + no force-push + no deletions via GitHub API) and `branch-protection/unlock` (removes protection) - `promote-branch.yml` now locks newly created `preview/**` and `release/**` branches immediately after the initial push - Added `administration: write` permission to `promote-branch.yml` ## promote-branch source-branch enforcement - Previously, any `develop/**` or `support/**` branch could be promoted directly to `release/**` - Now validates per promotion type: `preview` ← `develop/**`/`support/**`; `release` ← `preview/**` only --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
Adds a `/docs` folder with developer-focused guides covering the areas of the project that lack written explanation: composite actions, testing conventions, benchmarks, CI workflows, branching/versioning pipeline, API doc generation, and extensibility. ## New files - **`docs/README.md`** — index linking all sections - **`docs/local-development.md`** — build/test/format commands with correct config caveats (e.g. always use Release for tests) - **`docs/testing.md`** — project layout, MSTest conventions, data-driven tests, abstract-class testing pattern - **`docs/benchmarks.md`** — BenchmarkDotNet structure, writing benchmarks, full CLI flag reference, CI trigger variables - **`docs/composite-actions.md`** — catalogue of all 14 composite actions with inputs, outputs, usage context, and a template for adding new ones - **`docs/workflows.md`** — all 6 workflows with job-dependency tables, triggers, shared env vars, and a flow diagram showing how they chain - **`docs/branch-strategy.md`** — branch types, lifecycle diagram, protection rules, environment mapping - **`docs/versioning.md`** — branch naming → two-step `extract-version` / `format-version` pipeline with all output formulas and worked examples - **`docs/api-documentation.md`** — two DocFX manifests explained, publishing flow, how to add a new version to the site, local preview - **`docs/extensibility.md`** — how to subclass `AbstractPolylineEncoder` / `AbstractPolylineDecoder` for custom coordinate/polyline types, with examples drawn from existing benchmark code ## Updated - **`CONTRIBUTING.md`** — new *Developer Documentation* section with links to all `/docs` articles Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
…elease workflows (#156) - [x] Update `docs/branch-strategy.md`: change back-merge step from optional to mandatory, update descriptions of `main` and `release/X.Y` accordingly --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
…te (#157) - [x] Add docs-versioning template (layout/_master.tmpl + version-switcher.js) - [x] Add versions.json manifest (latest: null, versions: []) - [x] Add `api-reference/_docs/` to `.gitignore` and untrack it from git - [x] `api-reference.json` — version content sections removed from repo (populated dynamically by CI) - [x] `toc.yml` — Reference dropdown removed from repo (populated dynamically by CI) - [x] Fix versioning job output name bug (`friendly-version` → `version`) - [x] Add `dotnet-sdk-version: '10.x'` env to `publish-documentation.yml` - [x] Rewrite `generate-docs` job: regenerate metadata, patch api-reference.json/versions.json/toc.yml, inline docfx build - [x] Fix `docfx-build` action: remove internal checkout, fix dotnet-version input reference --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
Agent-Logs-Url: https://github.com/petesramek/polyline-algorithm-csharp/sessions/6bb4cacd-08ac-42d9-825f-139d0b64f725 Co-authored-by: petesramek <2333452+petesramek@users.noreply.github.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
…#158) `administration` is not a valid scope for the GitHub Actions `permissions` key, causing a workflow parse failure before any jobs run. ## Change - Removed `administration: write` from the top-level `permissions` block in `.github/workflows/release.yml` The branch-protection lock action already passes `github.token` directly to `gh api`, so no additional workflow-level permission entry is needed or valid here. --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: Pete Sramek <2333452+petesramek@users.noreply.github.com> Co-authored-by: Pete Sramek <petr.sramek@dropoutcoder.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
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.