Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
224 commits
Select commit Hold shift + click to select a range
17e72f9
Handle new privileged land permission. Allow caution dialog to contai…
Rider-Linden Dec 2, 2025
20ddc73
update CLA exceptions allowlist
brad-linden Dec 3, 2025
63ad735
#4628 New land access permission
akleshchev Dec 5, 2025
3ea11b4
Merge pull request #5113 from secondlife/andreyk/privileged_land
Rider-Linden Dec 5, 2025
b83c5fa
#5123 A bunch of small performance optimizations
akleshchev Dec 9, 2025
c85eadf
#5125 Negative pixel area in object's info
akleshchev Dec 9, 2025
00c90b5
Add missing static declaration for LLCachedControl
Ansariel Dec 10, 2025
79f2102
#2639 Reapplied GPU benchmark fix
akleshchev Feb 15, 2025
3ca3ea7
Add a new static function LLFile::size() to determine the size of a f…
fmartian Oct 25, 2025
9756b4b
Clarify some documentation and add an LLFile:read() and LLFile::write…
fmartian Oct 26, 2025
f07762a
Refactoring of LLFile class to support additional methods
fmartian Nov 12, 2025
62e08e1
Add LLFile unit tests
fmartian Nov 12, 2025
13a3cf9
- Improve documentation of LLFile functions and methods
fmartian Nov 28, 2025
15f9886
The returned vector should only contain filenames, not the entire paths
fmartian Nov 29, 2025
fe61aa3
Fix several typos and comments
fmartian Nov 29, 2025
e0c5fc8
Remove commented out old function calls
fmartian Nov 30, 2025
2438854
Incorporate some of the comment improvements suggested by Copilot and…
fmartian Dec 3, 2025
8edaa00
Cleanup unused LLAPRFile functions
fmartian Dec 3, 2025
c2898f7
Improve comment and remove superfluous error_code check
fmartian Dec 3, 2025
0fed0bf
Remove chatty warning message when checking for existence of a file
fmartian Dec 5, 2025
23a3cdd
Add header include for apr_signal.h that was removed from llapr.h as …
fmartian Dec 5, 2025
2c8f8fd
Fix typo and check for valid opened file
fmartian Dec 7, 2025
71721b8
Update indra/llcommon/llfile.h
fmartian Dec 9, 2025
9aff5ff
Update indra/test/llfile_tut.cpp
fmartian Dec 9, 2025
4153d67
Make function documentation more clear about the negative offset value.
fmartian Dec 9, 2025
88b6765
Generate error if the asset upload is bigger than INT_MAX as recommen…
fmartian Dec 9, 2025
c894a74
Fix typo found by Copilot
fmartian Dec 10, 2025
f48be9f
p#512 Block ability to accidentaly purge Inventory items outside of t…
akleshchev Dec 10, 2025
c0043a9
#5138 Added test case for multiple columns in a combo box
akleshchev Dec 10, 2025
dbbce56
#5138 fix multi column comboboxes not honoring width parameter
zi-ree Dec 10, 2025
c92b0b7
Revert #4899 "Add more functionality to LLFile and cleanup LLAPRFile"
akleshchev Dec 10, 2025
380da09
Fix failure to reconnect after disconnect and occasional dropout issu…
roxanneskelly Dec 11, 2025
149f223
Remove dead llkeyframemotionparam and llstatemachine from llcharacter
RyeMutt Dec 11, 2025
44e4177
#2069 Activate group option in Group
akleshchev Dec 11, 2025
f4eec81
#5148 Crash cleaning LLVOCache
akleshchev Dec 11, 2025
43341b7
remove boost::lambda in favor of C++
Rider-Linden Dec 12, 2025
24bb1e5
Merge branch 'develop' into rider/privileged_land
Rider-Linden Dec 12, 2025
b796779
Apply suggestions from code review
Rider-Linden Dec 15, 2025
31a934e
Update indra/newview/lltoastscriptquestion.cpp
Rider-Linden Dec 15, 2025
c78fe01
Update indra/newview/llviewermessage.cpp
Rider-Linden Dec 15, 2025
cd3f6f1
#4945 Crash at renderMorphMasks
akleshchev Dec 16, 2025
96e0662
#5159 Fix Animated textures freeze
akleshchev Dec 16, 2025
62e19da
#5121 crash at getShowFolderState
maxim-productengine Dec 17, 2025
987ae62
#5164 Adjust the 12 hour Time Format
akleshchev Dec 17, 2025
26dadad
#5111 change notification type from modal to alert
maxim-productengine Dec 18, 2025
7c1bf6b
#5171 restore correct selection after clicking Cancel in Preferences
maxim-productengine Dec 23, 2025
d53f385
secondlife/viewer#3322 No confirmation is shown when gifting all your…
LLGuru Jan 2, 2025
47b8fb7
secondlife/viewer#5007 Fix alpha debug overlay blend and mask conflic…
RyeMutt Jan 4, 2026
647b26d
Optimize away repeated map finds for getParameterEntry* functions via…
RyeMutt Jan 2, 2026
5ac851a
Bump actions/checkout from 5 to 6
dependabot[bot] Jan 5, 2026
e53f507
Make `LLPointer` equality comparisons accept not-identical types.
nat-goodspeed Sep 24, 2024
a3ef0fa
LLConstPointer<T> is the same as LLPointer<const T>.
nat-goodspeed Sep 24, 2024
3fc5b69
Use copy-and-swap idiom for LLPointer's assignment operators.
nat-goodspeed Sep 25, 2024
bedd3da
Explain why apparently redundant LLPointer methods are necessary.
nat-goodspeed Sep 25, 2024
9d684bc
Migrate ~LLPointer()'s peculiar warning case to llpointer.cpp.
nat-goodspeed Sep 27, 2024
112f9b9
Remove unused boost::hash specialization from LLPointer and update st…
RyeMutt Jan 5, 2026
010d5dc
secondlife/viewer#2674 Optimize LLWorld::renderPropertyLines() - use …
LLGuru Sep 24, 2024
852e31b
secondlife/viewer#2674 Optimize LLWorld::renderPropertyLines() - use …
LLGuru Jan 4, 2026
11e16d5
#2902 Additional lines are displayed from one corner of the region
Gavriliuk Nov 5, 2024
4f70d8c
secondlife/viewer#2462: Optimize unloading of prims
cosmic-linden Jan 3, 2026
24dccc4
secondlife/viewer#2623: Remove assert
cosmic-linden Sep 20, 2024
23bfecf
Further optimize unregistration of loading meshes via std::unordered_set
RyeMutt Jan 2, 2026
edb294a
Use the marketplace floater when a SL Marketplace URL is clicked
Hecklezz Jan 5, 2026
be6bab4
#3096 Shift+Tab selects extra lines on script edit on reduce indent
LLGuru Nov 26, 2024
b73f556
Bump actions/download-artifact from 4 to 7
dependabot[bot] Jan 5, 2026
4bc3ea6
secondlife/viewer#2112 Provide SL Grid Map coordinates for Official V…
LLGuru Oct 10, 2024
afa7b96
#1519 ObjectGrab message includes invalid SurfaceInfo data when in mo…
LLGuru Sep 19, 2024
787d00d
Fix camera from becoming stuck if you rapidly zoom out with DisableCa…
Hecklezz Dec 26, 2025
46b3932
Bump actions/cache from 4 to 5
dependabot[bot] Jan 5, 2026
6f806fb
#5217 Small cleanup and const declarations
akleshchev Jan 6, 2026
0c9dfeb
#5217 Treat issues with control variables smarter and show a proper w…
akleshchev Jan 6, 2026
9284154
#4834 update object's modify flag after being granted Edit permission
maxim-productengine Jan 7, 2026
415e54a
Bump actions/upload-artifact from 4 to 5
dependabot[bot] Jan 7, 2026
6d5b052
#5228 crash at updateLoginButtons
maxim-productengine Jan 8, 2026
676cb60
#5238 Minor adjustments for LLVolumeFace crash handling
akleshchev Jan 8, 2026
c3b07f8
#5238 WebRTC connection's task outlived the connection
akleshchev Jan 8, 2026
9de3097
Merge release/2026.01 into develop
akleshchev Jan 9, 2026
6939649
secondlife/viewer#5083 Fix external editor default open handling fail…
RyeMutt Jan 9, 2026
03abf07
Stop model preview render window sending it's fov to the simulator as…
WolfGangS Jan 8, 2026
d541eb9
#5249 Crash at LLVolumeFace::remap()
akleshchev Jan 9, 2026
5fbd5a1
#5249 Update mesh optimizer to v1.0.1
akleshchev Jan 9, 2026
147e864
#5241 Crash at onIdleUpdateFavorites
maxim-productengine Jan 12, 2026
21a03ed
#5259 Crash at LLFolderViewFolder
akleshchev Jan 12, 2026
3ad8877
#5271 Update zlib-ng and libraries that depend on it
akleshchev Jan 14, 2026
87f7d37
#5250 use Documents as default save location
maxim-productengine Jan 14, 2026
1065565
Fix looping back to previous marketplace url when using the viewer na…
Hecklezz Jan 13, 2026
5664f0e
Merge pull request #5093 from secondlife/rider/privileged_land
Rider-Linden Jan 16, 2026
dcda078
#5274 fix "cef_cache" subfolder not being cleared on exFAT filesystem
maxim-productengine Jan 16, 2026
6d8c0d0
#5276 Freeze when bulk editing outfits
akleshchev Jan 16, 2026
58ed702
Fix hollowed prims not shading correctly and appearing not smooth (#3…
Hecklezz Jan 19, 2026
757bc83
Use CMake find_package(Python3) for automatic Python support
Jan 12, 2026
16e7570
#5284 Fix UV flipping
akleshchev Jan 19, 2026
ce9312e
secondlife/viewer#1851 Fix PBR Opaque alpha mask hud shading mismatch…
RyeMutt Jan 20, 2026
c2406b5
p#124 Fix wrong max image size for model upload
akleshchev Jan 19, 2026
5b41bf0
Fix crash in LLConvexDecompositionVHACD::executeStage accessing nullptr
Hecklezz Jan 20, 2026
77c738f
#5296 Clothes of other avatars are rendered skin tight
akleshchev Jan 20, 2026
8a1c9a5
#5310 Resolve 'unimplented copyScalar' error
akleshchev Jan 21, 2026
a7d1c4e
secondlife/viewer#3584 Fix avatar body mesh and system clothing confl…
RyeMutt Jan 21, 2026
b38c539
secondlife/viewer#5305 Fix thread safety issues in VHACD convex decom…
RyeMutt Jan 21, 2026
aad49bd
Introduced Tracy instrumentation to app initialization
RyeMutt Jan 11, 2026
76a80b6
Replace usage of remaining boost::unordered containers with std
RyeMutt Jan 10, 2026
0e687a8
Optimize various usages of std::map with frequent find access with st…
RyeMutt Jan 10, 2026
ebde751
Modernize std::type_info* usage in containers with std::type_index
RyeMutt Jan 10, 2026
1b12a1d
Optimize LLViewerRegion getCapability with unordered_map and trivial …
RyeMutt Jan 9, 2026
8b3558e
Optimize map usage in name cache with unordered_map for maps with fre…
RyeMutt Jan 10, 2026
b957c08
Optimize gObjectList findObject and getUUIDFromLocal with unordered_m…
RyeMutt Jan 9, 2026
b5a57a7
Reduce tens of thousands of recursive calls during menu initialization
RyeMutt Jan 11, 2026
2f8d642
Reduce temporary istringstream allocations during LLDate and GLTF ove…
RyeMutt Jan 11, 2026
4dcd070
Disable disk cache LRU purge on main thread during startup by default…
RyeMutt Jan 12, 2026
d527adf
Add early out for disk cache when app is shutting down to reduce shut…
RyeMutt Oct 28, 2025
c9286ff
Reduce temporary allocations during xui parsing via move optimizations
RyeMutt Jan 11, 2026
28fee03
Optimize inventory parsing and inventory panel creation using std::un…
RyeMutt Jan 11, 2026
4de1ba7
Heavily reduce temporary allocations during LLSD parsing operations b…
RyeMutt Jan 11, 2026
0b2f7fc
Address feedback from review
RyeMutt Jan 12, 2026
57492f3
#5318 Crash in profileAvatar
akleshchev Jan 21, 2026
c7e1d9f
#5157 fix crash in isHUDGroup
maxim-productengine Jan 22, 2026
d13c442
#5314 fix WebRTC voice being muted after quickly toggling the Speak b…
maxim-productengine Jan 26, 2026
16003aa
#5046 Fix a long freeze when fetching inventory
akleshchev Jan 23, 2026
06aff16
#5046 Use new suspendUntilNextFrame() to fix wait logic
akleshchev Jan 26, 2026
ae50f79
#5338 Provide more details from experience error
akleshchev Jan 27, 2026
03a4f30
#3502 fix using non-existing "cookies_enabled" control
maxim-productengine Jan 28, 2026
b4a7d1c
#5335 Fix silent uninstall asking about registry
akleshchev Jan 27, 2026
493455a
#5348 Fix crash in getRenderRotation()
marchcat Jan 29, 2026
98d7f69
#2975 PBR support for planar aligment
akleshchev Jan 28, 2026
25b5a18
#2572 fix displaying Voice dot in Conversations floater when Voice Ch…
maxim-productengine Jan 30, 2026
778bf6c
Show dummies correctly in Edit outfit parts
Jan 30, 2026
82ff434
Add clickable notification for saved screenshots
Feb 1, 2026
556728c
Improve windir detection in LLDir::openDir
Feb 3, 2026
47aa16e
#2293 Mark an object in an uncertain 'for sale' state as tentaive
akleshchev Feb 3, 2026
4c8f846
#1664 retain clothing order when Replacing Link with the same wearabl…
maxim-productengine Feb 3, 2026
e182063
#5358 Improve performance when processing inventory fetches in parallel
akleshchev Feb 3, 2026
dda37e5
#5377 Fix PBR being highlighted incorrectly on a face
akleshchev Feb 6, 2026
ee3242a
#5380 Fix crash in LLImageGL::analyzeAlpha()
marchcat Feb 6, 2026
30f0b8c
#5380 Fix race condition in texture creation causing AV
marchcat Feb 6, 2026
a06a6f0
#5380 Guard against scaled() failure to prevent null dereference
marchcat Feb 6, 2026
a35c315
#5376 fix snapshot size not being updated when clicking 'Save to disk'
maxim-productengine Feb 10, 2026
5959bd3
#5398 Add keyboard shortcuts for "Use shared environment" and "Midday…
maxim-productengine Feb 10, 2026
58c405c
#5356 Parse large messages on a general thread instead of main one
akleshchev Feb 10, 2026
6be26a0
#5356 Fix fast texture cache's mutex stall
akleshchev Feb 10, 2026
7e9cc1a
FIX - prejump bug
trish-sl Feb 11, 2026
e83f6a2
#5405 Stalls on LLFileSystem::getExists
akleshchev Feb 11, 2026
2cabd41
fix - copilot suggestions
trish-sl Feb 11, 2026
deec7b6
#5404 Allow adding to favorites directly from the avatar
akleshchev Feb 11, 2026
77f534e
Update comment in indra/newview/llagent.h
marchcat Feb 11, 2026
2a9c198
fix - threshold as debug setting & comment & flag label
trish-sl Feb 11, 2026
56d323a
Merge pull request #5409 from trish-sl/fix-prejump-controlflags
marchcat Feb 11, 2026
5386d14
#5409 Post-merge fix: variable name mismatch
marchcat Feb 11, 2026
b404990
#5414 Don't crash on unknown layer type
akleshchev Feb 12, 2026
8c70eb5
#1807 Fix navigation bar's search filters
akleshchev Feb 13, 2026
83b397b
#5395 Draw yellow friend dots last on the mini-map
maxim-productengine Feb 13, 2026
b9fd205
#5356 Fix fast texture cache's mutex stall #2
akleshchev Feb 11, 2026
44c6630
#5419 remove old unused floater
maxim-productengine Feb 16, 2026
b3ea509
#2938 show confirmation before closing Conference chat
maxim-productengine Feb 17, 2026
3973ba1
#5397 Add a setting to see own group tag without seeing others
maxim-productengine Feb 18, 2026
a52066c
#5396 Add an option to hide Recent, Worn and Favorites tabs
maxim-productengine Feb 20, 2026
90ae824
#5435 Update viewer indra_constants.h
maxim-productengine Feb 23, 2026
9fae099
#5443 fix crash in LLPreviewNotecard::canClose
maxim-productengine Feb 23, 2026
ce21568
#5431 Fix GLTF rotation corruption on upload
marchcat Feb 24, 2026
6cd2a02
#5449 Fix GLB textures loading regression
marchcat Feb 24, 2026
ed41839
Merge branch 'release/2026.01' into develop
Geenz Feb 24, 2026
c94a118
#5084 Fix mac's watchdog not catching test case
akleshchev Feb 25, 2026
88c4cf7
#5426 Fix crash in LLPointer<LLImageGL>::notNull
marchcat Mar 3, 2026
52ed305
#5084 Convert watchdog to a simpleton
akleshchev Mar 3, 2026
ce139f2
#5486 Fix potential unpackBinaryData buffer issues
akleshchev Mar 4, 2026
ba92b8d
#5084 Fix watchdog's simpleton init
akleshchev Mar 6, 2026
bb69f7e
#5497 Handle a case of missing files in conversation view
akleshchev Mar 5, 2026
e529a09
Bump actions/upload-artifact from 6 to 7
dependabot[bot] Mar 1, 2026
e4505eb
Bump actions/download-artifact from 7 to 8
dependabot[bot] Mar 1, 2026
9d985d7
#5506 Periodical stalls on media update
akleshchev Mar 8, 2026
5d8012e
Merge 2026.01 into develop
akleshchev Mar 9, 2026
85d4e8e
#3612 Fix empty 'copy' message
akleshchev Mar 9, 2026
7f5963b
#5512 Crash on reset_login
akleshchev Mar 9, 2026
d35be21
Merge remote-tracking branch 'origin/main' into develop
Geenz Mar 12, 2026
6194e88
Merge pull request #5411 from trish-sl/fix-highlighttransparency-alph…
trish-sl Mar 12, 2026
53af39b
#1625 Blinding white screen when changing environments
akleshchev Mar 3, 2026
d44da70
Clean up unused code
KittyBarnett Aug 29, 2024
8b0d042
LLViewerObject::getAttachmentItemID() sometimes returns the NULL UUID…
KittyBarnett Aug 29, 2024
ac0c734
LLAppearanceMgr::updateAppearanceFromCOF() doesn't properly filter it…
KittyBarnett Aug 29, 2024
a7512cf
Resolve race condition when removing/add attachments inside of a LLWe…
KittyBarnett Aug 29, 2024
b2a22e1
Resolve issues tracking worn attachments that aren't in COF yet (see …
KittyBarnett Aug 29, 2024
6c6d618
If multiple LLWearableHoldingPattern instances are waiting for comple…
KittyBarnett Aug 29, 2024
f6d0b36
Accurately reflect the worn status of inventory items (the reasons fo…
KittyBarnett Jan 29, 2025
5bc81c9
Attaching a rezzed object incorrectly delays attachment link creation…
KittyBarnett Jan 29, 2025
4034714
[FIXED] Wearing >56 clothing items will incorrectly filter since body…
KittyBarnett Feb 28, 2026
75a98ba
#5541 Add safety checks for inventory save during shutdown
marchcat Mar 16, 2026
a5a6cfb
viewer-private#540 Fix freeze when opening large profiles #1
akleshchev Mar 16, 2026
dd4f5cf
viewer-private#540 Speed up url search #2
akleshchev Mar 16, 2026
05c8cd8
viewer-private#540 Avoid micro truncations #3
akleshchev Mar 16, 2026
0aa33a1
#5454 fix not showing Friend requests during start up notification
maxim-productengine Mar 19, 2026
166fa85
#5543 PBR support for pipette
akleshchev Mar 17, 2026
69cbb48
#5543 Clear pipette button's visibility logic for materials
akleshchev Mar 18, 2026
e9b39bf
Improve detection of marketplace urls for the marketplace floater
Hecklezz Feb 26, 2026
45e3204
Add 'copilot-swe-agent' to allowlist in CLA workflow (#5566)
brad-linden Mar 23, 2026
689123f
#5558 Adjust map request size dynamically
akleshchev Mar 20, 2026
0084a93
#5558 Don't spam server with requests we don't need
akleshchev Mar 20, 2026
b7fc5b2
Extend sendMapBlockRequest stub and add test<4> for request-size asse…
Copilot Mar 21, 2026
5a7a527
#4298 Handle various out of memory cases
akleshchev Mar 27, 2026
83c3a3c
#5585 fix the issue with ptt state when joining p2p call while in voi…
maxim-productengine Mar 30, 2026
9846a1c
#3420 CreateLandmarkForPosition floater fails to save descriptions
akleshchev Mar 30, 2026
136eb7a
#5579 Separate parts of calculateUpdateRenderComplexity
akleshchev Mar 25, 2026
c7576cd
#5579 Implement partial complexity calculations
akleshchev Mar 25, 2026
e2d8ace
#5579 Cleanup
akleshchev Mar 26, 2026
a77156e
#5373 add leap api to open Build floater and change selected tool
maxim-productengine Mar 31, 2026
b4f1072
#5367 Leap API support for combo boxes
maxim-productengine Apr 1, 2026
de5ff4f
#5447 update Dialog buttons to correctly display emoji
maxim-productengine Apr 2, 2026
210a6a8
#5602 deleteProbe optimization pass
akleshchev Apr 1, 2026
5b485bd
#5612 Improve profiling coverage
akleshchev Apr 2, 2026
3078b20
#5612 Fix fast cache freezing main thread
akleshchev Apr 2, 2026
5cdd65e
#2892 Make thumbnail drop work the same way picker does
akleshchev Apr 3, 2026
321a6e9
#5612 Reduce delays on resource access for main thread
akleshchev Apr 4, 2026
61417e2
Allow mute list to fallback to cached copy when simulator response so…
DarlCat Apr 1, 2026
03c1354
Treat emptymutelist dispatch from the simulator as authoritative when…
DarlCat Apr 2, 2026
0abb59a
Rename LLMuteList state machine touch points for clarity
DarlCat Apr 2, 2026
840383d
Eliminate pointless mutelist cache fallback attempt, instead manually…
DarlCat Apr 2, 2026
9978c66
Improve documentation and logging of LLMuteList changes
DarlCat Apr 3, 2026
581cad9
Make LLBlockList more reactive to LLMuteList changes
DarlCat Apr 3, 2026
901ad61
Add noitems text to the block list UI, with translation friendly help…
DarlCat Apr 3, 2026
0a42b9f
Attempt one additional mute list request from simulator after region …
DarlCat Apr 4, 2026
66dc10f
Release/26.1.1 (#5530)
Geenz Apr 7, 2026
1d2cf48
Merge pull request #5623 from secondlife/geenz/main-develop
Geenz Apr 8, 2026
130c50c
#5611 Select a discrete gpu when possible
akleshchev Apr 7, 2026
5f91a3f
#5626 LLTextBase optimization
akleshchev Apr 8, 2026
ead4017
Add texture streaming "channels" (#5442)
Geenz Feb 22, 2026
7f110d9
Merge pull request #5667 from secondlife/geenz/texture-channel-cherry…
Geenz Apr 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
86 changes: 70 additions & 16 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,14 @@ name: Build

on:
workflow_dispatch:
inputs:
installer_type:
description: 'Windows installer type'
type: choice
options:
- velopack
- nsis
default: 'velopack'
pull_request:
push:
branches: ["main", "release/*", "project/*"]
Expand Down Expand Up @@ -53,6 +61,20 @@ jobs:
relnotes: ${{ steps.which-branch.outputs.relnotes }}
imagename: ${{ steps.build.outputs.imagename }}
configuration: ${{ matrix.configuration }}
# Windows Velopack outputs (passed to sign-pkg-windows)
velopack_pack_id: ${{ steps.build.outputs.velopack_pack_id }}
velopack_pack_version: ${{ steps.build.outputs.velopack_pack_version }}
velopack_pack_title: ${{ steps.build.outputs.velopack_pack_title }}
velopack_main_exe: ${{ steps.build.outputs.velopack_main_exe }}
velopack_exclude: ${{ steps.build.outputs.velopack_exclude }}
velopack_icon: ${{ steps.build.outputs.velopack_icon }}
velopack_installer_base: ${{ steps.build.outputs.velopack_installer_base }}
# macOS Velopack outputs (passed to sign-pkg-mac)
velopack_mac_pack_id: ${{ steps.build.outputs.velopack_mac_pack_id }}
velopack_mac_pack_version: ${{ steps.build.outputs.velopack_mac_pack_version }}
velopack_mac_pack_title: ${{ steps.build.outputs.velopack_mac_pack_title }}
velopack_mac_main_exe: ${{ steps.build.outputs.velopack_mac_main_exe }}
velopack_mac_bundle_id: ${{ steps.build.outputs.velopack_mac_bundle_id }}
env:
AUTOBUILD_ADDRSIZE: 64
AUTOBUILD_BUILD_ID: ${{ github.run_id }}
Expand Down Expand Up @@ -84,9 +106,11 @@ jobs:
# Only set variants to the one configuration: don't let build.sh loop
# over variants, let GitHub distribute variants over multiple hosts.
variants: ${{ matrix.configuration }}
# Pass USE_VELOPACK to CMake when using Velopack installer (default) - Windows and macOS
autobuild_configure_parameters: ${{ (contains(matrix.runner, 'windows') || contains(matrix.runner, 'macos')) && (github.event.inputs.installer_type || 'velopack') == 'velopack' && '-- -DUSE_VELOPACK:BOOL=ON' || '' }}
steps:
- name: Checkout code
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
ref: ${{ github.event.pull_request.head.sha || github.sha }}

Expand All @@ -95,14 +119,14 @@ jobs:
with:
python-version: "3.11"
- name: Checkout build variables
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
repository: secondlife/build-variables
ref: master
path: .build-variables

- name: Checkout master-message-template
uses: actions/checkout@v5
uses: actions/checkout@v6
with:
repository: secondlife/master-message-template
path: .master-message-template
Expand All @@ -112,7 +136,7 @@ jobs:

- name: Cache autobuild packages
id: cache-installables
uses: actions/cache@v4
uses: actions/cache@v5
with:
path: .autobuild-installables
key: ${{ runner.os }}-64-${{ matrix.configuration }}-${{ hashFiles('autobuild.xml') }}
Expand All @@ -126,6 +150,17 @@ jobs:
with:
token: ${{ github.token }}

- name: Setup .NET for Velopack
if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack'
uses: actions/setup-dotnet@v4
with:
dotnet-version: '9.0.x'

- name: Install Velopack CLI
if: (runner.os == 'Windows' || runner.os == 'macOS') && (github.event.inputs.installer_type || 'velopack') == 'velopack'
shell: bash
run: dotnet tool install -g vpk

- name: Build
id: build
shell: bash
Expand Down Expand Up @@ -265,7 +300,7 @@ jobs:

- name: Upload executable
if: steps.build.outputs.viewer_app
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: "${{ steps.build.outputs.artifact }}-app"
path: |
Expand All @@ -275,21 +310,21 @@ jobs:
# artifact for that too.
- name: Upload symbol file
if: steps.build.outputs.symbolfile
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: "${{ steps.build.outputs.artifact }}-symbols"
path: ${{ steps.build.outputs.symbolfile }}

- name: Upload metadata
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: "${{ steps.build.outputs.artifact }}-metadata"
# emitted by build.sh, possibly multiple lines
path: |
${{ steps.build.outputs.metadata }}

- name: Upload physics package
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
# should only be set for viewer-private
if: matrix.configuration == 'Release' && steps.build.outputs.physicstpv
with:
Expand All @@ -310,13 +345,21 @@ jobs:
steps:
- name: Sign and package Windows viewer
if: env.AZURE_KEY_VAULT_URI && env.AZURE_CERT_NAME && env.AZURE_CLIENT_ID && env.AZURE_CLIENT_SECRET && env.AZURE_TENANT_ID
uses: secondlife/viewer-build-util/sign-pkg-windows@v2.0.4
uses: secondlife/viewer-build-util/sign-pkg-windows@v2.1.0
with:
vault_uri: "${{ env.AZURE_KEY_VAULT_URI }}"
cert_name: "${{ env.AZURE_CERT_NAME }}"
client_id: "${{ env.AZURE_CLIENT_ID }}"
client_secret: "${{ env.AZURE_CLIENT_SECRET }}"
tenant_id: "${{ env.AZURE_TENANT_ID }}"
installer_type: "${{ github.event.inputs.installer_type || 'velopack' }}"
velopack_pack_id: "${{ needs.build.outputs.velopack_pack_id }}"
velopack_pack_version: "${{ needs.build.outputs.velopack_pack_version }}"
velopack_pack_title: "${{ needs.build.outputs.velopack_pack_title }}"
velopack_main_exe: "${{ needs.build.outputs.velopack_main_exe }}"
velopack_exclude: "${{ needs.build.outputs.velopack_exclude }}"
velopack_icon: "${{ needs.build.outputs.velopack_icon }}"
velopack_installer_base: "${{ needs.build.outputs.velopack_installer_base }}"

sign-and-package-mac:
env:
Expand Down Expand Up @@ -349,7 +392,7 @@ jobs:

- name: Sign and package Mac viewer
if: env.SIGNING_CERT_MACOS && env.SIGNING_CERT_MACOS_IDENTITY && env.SIGNING_CERT_MACOS_PASSWORD && steps.note-creds.outputs.note_user && steps.note-creds.outputs.note_pass && steps.note-creds.outputs.note_team
uses: secondlife/viewer-build-util/sign-pkg-mac@v2
uses: secondlife/viewer-build-util/sign-pkg-mac@v2.1.0
with:
channel: ${{ needs.build.outputs.viewer_channel }}
imagename: ${{ needs.build.outputs.imagename }}
Expand All @@ -359,6 +402,11 @@ jobs:
note_user: ${{ steps.note-creds.outputs.note_user }}
note_pass: ${{ steps.note-creds.outputs.note_pass }}
note_team: ${{ steps.note-creds.outputs.note_team }}
velopack_pack_id: "${{ needs.build.outputs.velopack_mac_pack_id }}"
velopack_pack_version: "${{ needs.build.outputs.velopack_mac_pack_version }}"
velopack_pack_title: "${{ needs.build.outputs.velopack_mac_pack_title }}"
velopack_main_exe: "${{ needs.build.outputs.velopack_mac_main_exe }}"
velopack_bundle_id: "${{ needs.build.outputs.velopack_mac_bundle_id }}"

post-windows-symbols:
env:
Expand All @@ -370,13 +418,13 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Download viewer exe
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: Windows-app
path: _artifacts
- name: Download Windows Symbols
if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: Windows-symbols
- name: Extract viewer pdb
Expand Down Expand Up @@ -409,7 +457,7 @@ jobs:
steps:
- name: Download Mac Symbols
if: env.BUGSPLAT_DATABASE && env.SYMBOL_UPLOAD_CLIENT_ID
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
name: macOS-symbols
- name: Post Mac symbols
Expand All @@ -431,14 +479,18 @@ jobs:
runs-on: ubuntu-latest
if: needs.setup.outputs.release_run
steps:
- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v8
with:
pattern: "*-installer"

- uses: actions/download-artifact@v4
- uses: actions/download-artifact@v8
with:
pattern: "*-metadata"

- uses: actions/download-artifact@v4
with:
pattern: "*-releases"

- name: Rename metadata
run: |
cp Windows-metadata/autobuild-package.xml Windows-autobuild-package.xml
Expand All @@ -464,12 +516,14 @@ jobs:
generate_release_notes: true
target_commitish: ${{ github.sha }}
append_body: true
fail_on_unmatched_files: true
fail_on_unmatched_files: false
files: |
macOS-installer/*.dmg
Windows-installer/*.exe
*-autobuild-package.xml
*-viewer_version.txt
Windows-releases/*
macOS-releases/*

- name: post release URL
run: |
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/cla.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -23,4 +23,4 @@ jobs:
path-to-signatures: signatures.json
remote-organization-name: secondlife
remote-repository-name: cla-signatures
allowlist: callum@mbp.localdomain,rye@lindenlab.com,rye,bot*
allowlist: callum@mbp.localdomain,rye@lindenlab.com,rye,signal@lindenlab.com,dependabot*,bot*,copilot-swe-agent*
2 changes: 1 addition & 1 deletion .github/workflows/pre-commit.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
pre-commit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
with:
python-version: 3.x
Expand Down
36 changes: 28 additions & 8 deletions .github/workflows/tag-release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,9 @@ on:
project:
description: "Project Name (used for channel name in project builds, and tag name for all builds)"
default: "hippo"
# TODO - add an input for selecting another sha to build other than head of branch
tag_override:
description: "Override the tag name (optional). If the tag already exists, a numeric suffix is appended."
required: false

jobs:
tag-release:
Expand All @@ -34,7 +36,7 @@ jobs:
NIGHTLY_DATE=$(date --rfc-3339=date)
echo NIGHTLY_DATE=${NIGHTLY_DATE} >> ${GITHUB_ENV}
echo TAG_ID="$(echo ${{ github.sha }} | cut -c1-8)-${{ inputs.project || '${NIGHTLY_DATE}' }}" >> ${GITHUB_ENV}
- name: Update Tag
- name: Create Tag
uses: actions/github-script@v8
with:
# use a real access token instead of GITHUB_TOKEN default.
Expand All @@ -44,9 +46,27 @@ jobs:
# this token will need to be renewed anually in January
github-token: ${{ secrets.LL_TAG_RELEASE_TOKEN }}
script: |
github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: "refs/tags/${{ env.VIEWER_CHANNEL }}#${{ env.TAG_ID }}",
sha: context.sha
})
const override = `${{ inputs.tag_override }}`.trim();
const baseTag = override || `${{ env.VIEWER_CHANNEL }}#${{ env.TAG_ID }}`;

// Try the base tag first, then append -2, -3, etc. if it already exists
let tag = baseTag;
for (let attempt = 1; ; attempt++) {
try {
await github.rest.git.createRef({
owner: context.repo.owner,
repo: context.repo.repo,
ref: `refs/tags/${tag}`,
sha: context.sha
});
core.info(`Created tag: ${tag}`);
break;
} catch (e) {
if (e.status === 422 && attempt < 10) {
core.info(`Tag '${tag}' already exists, trying next suffix...`);
tag = `${baseTag}-${attempt + 1}`;
} else {
throw e;
}
}
}
Loading
Loading