Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 12 additions & 4 deletions .github/workflows/main-publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,10 @@ jobs:
secrets: inherit

release-Complete:
if: ${{ always() }}
# Only succeed if no upstream release job actually failed. Skipped siblings
# (the build-types that didn't match the PR title) are tolerated; a real
# failure makes this job skip so it can no longer report a false "success".
if: ${{ !failure() && !cancelled() }}
needs: [upversion-major-Package, upversion-minor-Package, upversion-patch-Package, release-Package-only]
name: Release complete
runs-on: ubuntu-latest
Expand All @@ -67,19 +70,24 @@ jobs:

# Refresh the development branch with the main publish
refresh-development:
if: ${{ always() }}
# Skip if the release didn't actually complete, so we never refresh
# development from a half-finished or failed release.
if: ${{ needs.release-Complete.result == 'success' }}
needs: [release-Complete]
name: Refresh development branch
uses: ./.github/workflows/refreshbranch.yml
with:
build-host: ubuntu-latest
target-branch: development
source-branch: main
# The branch this release PR merged into (the trigger pins this to the
# release branch). Avoids hardcoding a branch name that doesn't exist.
source-branch: ${{ github.event.pull_request.base.ref }}
secrets: inherit

# Up version the development branch ready for future development
upversion-development:
if: ${{ always() }}
# Only re-version development once it has been refreshed successfully.
if: ${{ needs.refresh-development.result == 'success' }}
needs: [refresh-development]
name: UpVersion the development branch for the next release
uses: ./.github/workflows/upversionandtagrelease.yml
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/refreshbranch.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,33 @@ jobs:
echo "Build Script Version: $scriptVersion"
echo "::endgroup::"
shell: pwsh
- name: Validate GIT_PAT
env:
GIT_PAT: ${{ secrets.GIT_PAT }}
shell: pwsh
run: |
if ([string]::IsNullOrWhiteSpace($env:GIT_PAT)) {
Write-Error "GIT_PAT secret is empty or not set. Add a valid Personal Access Token to the repository/org secrets and re-run."
exit 1
}
$headers = @{
Authorization = "Bearer $env:GIT_PAT"
"User-Agent" = "uiextensions-release-preflight"
Accept = "application/vnd.github+json"
}
try {
$repo = Invoke-RestMethod -Uri "https://api.github.com/repos/$env:GITHUB_REPOSITORY" -Headers $headers -ErrorAction Stop
}
catch {
$code = if ($_.Exception.Response) { [int]$_.Exception.Response.StatusCode } else { "unknown" }
Write-Error "GIT_PAT was rejected by GitHub (HTTP $code). It is likely expired, revoked, or lacks access to $env:GITHUB_REPOSITORY. Regenerate the token and update the GIT_PAT secret. Details: $($_.Exception.Message)"
exit 1
}
if ($null -ne $repo.permissions -and -not $repo.permissions.push) {
Write-Error "GIT_PAT authenticated but does not have push access to $env:GITHUB_REPOSITORY. Grant 'repo' (classic PAT) or Contents: read & write (fine-grained PAT)."
exit 1
}
Write-Host "GIT_PAT validated: authenticated with push access to $env:GITHUB_REPOSITORY."
- uses: actions/checkout@v7
with:
ref: ${{ inputs.target-branch }}
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/tagrelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,33 @@ jobs:
echo "Build Script Version: $scriptVersion"
echo "::endgroup::"
shell: pwsh
- name: Validate GIT_PAT
env:
GIT_PAT: ${{ secrets.GIT_PAT }}
shell: pwsh
run: |
if ([string]::IsNullOrWhiteSpace($env:GIT_PAT)) {
Write-Error "GIT_PAT secret is empty or not set. Add a valid Personal Access Token to the repository/org secrets and re-run."
exit 1
}
$headers = @{
Authorization = "Bearer $env:GIT_PAT"
"User-Agent" = "uiextensions-release-preflight"
Accept = "application/vnd.github+json"
}
try {
$repo = Invoke-RestMethod -Uri "https://api.github.com/repos/$env:GITHUB_REPOSITORY" -Headers $headers -ErrorAction Stop
}
catch {
$code = if ($_.Exception.Response) { [int]$_.Exception.Response.StatusCode } else { "unknown" }
Write-Error "GIT_PAT was rejected by GitHub (HTTP $code). It is likely expired, revoked, or lacks access to $env:GITHUB_REPOSITORY. Regenerate the token and update the GIT_PAT secret. Details: $($_.Exception.Message)"
exit 1
}
if ($null -ne $repo.permissions -and -not $repo.permissions.push) {
Write-Error "GIT_PAT authenticated but does not have push access to $env:GITHUB_REPOSITORY. Grant 'repo' (classic PAT) or Contents: read & write (fine-grained PAT)."
exit 1
}
Write-Host "GIT_PAT validated: authenticated with push access to $env:GITHUB_REPOSITORY."
- uses: actions/checkout@v7
with:
fetch-depth: 0
Expand Down
27 changes: 27 additions & 0 deletions .github/workflows/upversionandtagrelease.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,33 @@ jobs:
echo "Build Script Version: $scriptVersion"
echo "::endgroup::"
shell: pwsh
- name: Validate GIT_PAT
env:
GIT_PAT: ${{ secrets.GIT_PAT }}
shell: pwsh
run: |
if ([string]::IsNullOrWhiteSpace($env:GIT_PAT)) {
Write-Error "GIT_PAT secret is empty or not set. Add a valid Personal Access Token to the repository/org secrets and re-run."
exit 1
}
$headers = @{
Authorization = "Bearer $env:GIT_PAT"
"User-Agent" = "uiextensions-release-preflight"
Accept = "application/vnd.github+json"
}
try {
$repo = Invoke-RestMethod -Uri "https://api.github.com/repos/$env:GITHUB_REPOSITORY" -Headers $headers -ErrorAction Stop
}
catch {
$code = if ($_.Exception.Response) { [int]$_.Exception.Response.StatusCode } else { "unknown" }
Write-Error "GIT_PAT was rejected by GitHub (HTTP $code). It is likely expired, revoked, or lacks access to $env:GITHUB_REPOSITORY. Regenerate the token and update the GIT_PAT secret. Details: $($_.Exception.Message)"
exit 1
}
if ($null -ne $repo.permissions -and -not $repo.permissions.push) {
Write-Error "GIT_PAT authenticated but does not have push access to $env:GITHUB_REPOSITORY. Grant 'repo' (classic PAT) or Contents: read & write (fine-grained PAT)."
exit 1
}
Write-Host "GIT_PAT validated: authenticated with push access to $env:GITHUB_REPOSITORY."
- uses: actions/checkout@v7
with:
ref: ${{ inputs.target-branch }}
Expand Down
43 changes: 43 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,49 @@ All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](http://keepachangelog.com/).

## Release 3.0.0 - Unity 6, reimagined - 2026/06

The V3 relaunch brings **full Unity 6 support**, a refreshed brand, and the start of a two-package ecosystem — the proven uGUI library you know, now joined by a modern UI Toolkit companion.

> **Two packages. One ecosystem.** These notes cover the **uGUI** package (`com.unity.uiextensions`). Meet its new companion: [UI Toolkit Extensions](https://github.com/Unity-UI-Extensions/com.unity.uitoolkitextensions).

### Highlights

- **Full Unity 6 support** — the whole library verified and updated for Unity 6, with legacy dependencies cleared out and the examples refreshed.
- **Two-package ecosystem** — the new UI Toolkit Extensions package launches alongside under the shared 3.0 banner.

### Added

- New control: **GridRawImage**
- New control: **UI Knob 2** (`UI_Knob2`)
- New control: **UI Segmented Circle** / Segmented Control
- New control: **UI Graphic Selector**
- UILineConnector: the pivot can now be used as the reference point when drawing lines (#490)
- UILineConnector: new "close line" option to finish a line off and fill any gaps at the end
- BoxSlider: added `SetXWithoutNotify` and `SetYWithoutNotify`

### Changed / Fixed

- Reorderable List: fixed a null-reference exception, and resolved element-stacking when moving elements slightly
- Scroll Snap: resolved a race condition that could raise a NaN error when lerping; made rescaling and full-screen scroll snap more resilient
- HSS/VSS: guarded against a divide-by-zero when the scroll snap has a single page; `GetCurrentPage` made more resilient
- Infinite Scroll: resolved out-of-bounds issues
- Flow Layout Group: addressed layout issues and fixed the last line overflowing the rect bounds
- UI Particle System: new "CullingMode" option to resolve unscaled delta time (#486 / #487)
- Gradient2: optimised `ModifyMesh`; fixed radial triangle add order (#384)
- ScrollRect: force `ScrollRect.content` setup (#485)
- UILineConnector: improved point-array calculation (#495); refresh on global scale change
- Layout groups now rebuild on disable/enable
- General TMPro/Text compatibility housekeeping (#477)
- Compile-flag support for Unity 6 (#493)

### Contributors

Huge thanks to everyone who contributed to this release:
[@SimonDarksideJ](https://github.com/SimonDarksideJ), [@bluefallsky](https://github.com/bluefallsky), [@hugoymh](https://github.com/hugoymh), [@JavierMonton](https://github.com/JavierMonton), [@Dover8](https://github.com/Dover8), [@fgrg2801](https://github.com/fgrg2801), [@Moderbord](https://github.com/Moderbord).

-----

## Release 2.3.2 - Rejuvenation - 2023/11/26

2023 is certainly an interesting year to keep you on your toes, and finding time to keep managing all the requests and updates that come in are taking their toll, especially for a FREE project, but nonetheless, I still do it.
Expand Down
Loading