Skip to content
Draft
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
293 commits
Select commit Hold shift + click to select a range
18ead6a
Merge pull request #3860 from secondlife/marchcat/lua_editor
marchcat Apr 3, 2025
e9d6b27
Optimize LLKeywords: pre-compile regex patterns
marchcat Apr 15, 2025
bf7a9f8
Optimize LLKeywords: few small improvements
marchcat Apr 18, 2025
9f73e81
Fix llhttpdate test on windows and macos (#3909)
marchcat Apr 14, 2025
0787d41
Add "ScriptEditorDisableSyntaxHighlight" debug setting
marchcat May 7, 2025
3af711e
Merge pull request #3935 from secondlife/marchcat/lua_editor
marchcat May 7, 2025
d3bd73a
Merge branch 'main' into marchcat/slua-editor-merge
marchcat May 28, 2025
9602397
Merge pull request #4181 from secondlife/marchcat/slua-editor-merge
marchcat May 28, 2025
375158e
Merge tag 'Second_Life_Release#37a04baf-2025.06' into project/lua_editor
Rider-Linden Aug 23, 2025
f25c2a5
Merge pull request #4602 from secondlife/rider/release_to_luaedit
Rider-Linden Aug 24, 2025
18c84a9
Merge branch 'release/2025.07' into project/lua_editor
Geenz Oct 2, 2025
0b7bc35
Merge pull request #4779 from secondlife/geenz/lua_editor-2025.07
Geenz Oct 3, 2025
dcf6d8c
Initial simple websockets server with managing singleton.
Rider-Linden Aug 22, 2025
e27b363
Finish blocking run and adding documentation.
Rider-Linden Aug 23, 2025
de65dbf
Update indra/llcorehttp/llwebsocketmgr.cpp
Rider-Linden Aug 23, 2025
7b174ab
First pass at websocket server for editing.
Rider-Linden Aug 25, 2025
f31c194
Expand the websocket implementation a bit. Added JSONRPC specialization.
Rider-Linden Aug 27, 2025
684af84
initial Lua types files, and switch websocket server to use a single …
Rider-Linden Sep 17, 2025
0d7ca7f
Update indra/newview/llscripteditorws.cpp
Rider-Linden Aug 27, 2025
e750c58
Changes to the message protocol for script.compiled and language requ…
Rider-Linden Sep 24, 2025
26268f7
Implemented simple challenge on handshake, fixed issue with closing a…
Rider-Linden Sep 29, 2025
672bdc8
Some cleanup on the JSONRPC class.
Rider-Linden Sep 29, 2025
339e7cc
Added scripting options floater for config, switched to using config …
Rider-Linden Oct 1, 2025
4196360
Inconsistent snakes vs. camels.
Rider-Linden Oct 1, 2025
b305860
Adding default default lua types file.
Rider-Linden Oct 2, 2025
c678b45
Forward `llOwnerSay`/`print` messages to the plugin as well.
Rider-Linden Oct 3, 2025
5f9dd14
Unscramble autobuild.xml
Rider-Linden Oct 7, 2025
0f92f2a
Fixed some virtual/override disagreements.
Rider-Linden Oct 7, 2025
2dd9d14
Update indra/newview/skins/default/xui/en/floater_scripting_settings.xml
Rider-Linden Oct 7, 2025
8794f45
Update indra/newview/llscripteditorws.cpp
Rider-Linden Oct 7, 2025
696e1b1
A couple of naming issues, and accessing an iterator post erase.
Rider-Linden Oct 7, 2025
595a9e8
Added the JSON-rpc documentation for external editor integration.
Rider-Linden Oct 8, 2025
93a4f8a
Disabling known failing integration test for llprocess.cpp
Rider-Linden Oct 8, 2025
5306ad7
Renamed types_lua_default.llsd to types_lua_default.xml, returning an…
Rider-Linden Oct 9, 2025
c21fda0
Allow the viewer to relaunch the external editor. It will reuse the L…
Rider-Linden Oct 10, 2025
bab2137
Merge branch 'develop' into geenz/2025.07-lua-editor
Geenz Oct 10, 2025
dd9ea09
Merge pull request #4599 from secondlife/rider/vscode_integration
Rider-Linden Oct 10, 2025
2a620a9
Merge pull request #4810 from secondlife/geenz/2025.07-lua-editor
Geenz Oct 10, 2025
d294d56
#4411 WIP initial restoring of Legacy Search
maxim-productengine Oct 21, 2025
b4090c2
Ensure final EOF in LLProcess test (#4877)
marchcat Oct 22, 2025
ab3106d
Updated APR library and removed hotfix patch in APR cmake
Hecklezz Oct 22, 2025
6a5d4e0
#4876 Fix material not applying
akleshchev Oct 22, 2025
bb26aa3
#4652 Improve switching of webrtc devices
akleshchev Oct 21, 2025
0da96a5
p#494 Add search by agent ID to resident chooser
akleshchev Oct 22, 2025
b0c9757
#4411 WIP add Web tab to legacy Search
maxim-productengine Oct 22, 2025
0bd9e8d
#4884 Crash at resetRegionCrossingTimer
akleshchev Oct 23, 2025
d0b7731
#4886 Crash on LLTeleportRequestViaLure::toOstream
akleshchev Oct 23, 2025
b44074c
#4411 fix additional search options - category and maturity
maxim-productengine Oct 23, 2025
34dcaaa
#4887 Fix access violation in LLInventoryModelBackgroundFetch::bulkFe…
marchcat Oct 23, 2025
0e3ba50
Revert "Improve switching of webrtc devices"
akleshchev Oct 26, 2025
6876edd
Cherry-pick gstreamer10 from 57d423745fd1d3d0ea6a0c69b869a20c27e27fc5
RyeMutt Oct 23, 2025
c950cb3
Remove dead LLPostProcess code with deprecated opengl usages
RyeMutt Oct 14, 2025
3489740
Restore linux CEF build support including changes from archive/develop
RyeMutt Oct 23, 2025
579d8fb
CMake changes for linux64 support including code from archive/develop
RyeMutt Oct 23, 2025
2e162e9
Cherrypick 8de8daca601dc85e2b73687856f0a321016b4463 from archive/develop
RyeMutt Oct 14, 2025
4e0b167
Restore llsys linux fixes from archive/develop 57d423745fd1d3d0ea6a0c…
RyeMutt Oct 14, 2025
8759512
Cherrypick 24854b4dd74edabf67efe533ef191553442a9bad from archive/develop
RyeMutt Oct 14, 2025
134a139
Introduce SDL3 based windowing backend support and dir picker
RyeMutt Oct 27, 2025
795cf60
Fix or supress various warnings under GCC builds
RyeMutt Oct 14, 2025
678b171
Fix tracy memory tracking on linux to not crash mesa GL driver
RyeMutt Oct 27, 2025
964fcdc
Introduce support for GL_ATI_meminfo for getting gpu memory on linux
RyeMutt Oct 15, 2025
08b3d9b
Fix ODR violation during linux from ld
RyeMutt Oct 14, 2025
e6abebb
Fix up linux feature table and various small build changes
RyeMutt Oct 14, 2025
83dae23
Disable viewer-manager in linux builds
RyeMutt Oct 14, 2025
3848b7d
Fix build errors due to opengl headers and various defines
RyeMutt Oct 14, 2025
318c36b
Fix detection of AMD gpu on linux
RyeMutt Oct 14, 2025
f7da57d
Cherrypick 42885c0d23d8efc47ad77e09bb327e4ec6a4fada from archive/develop
RyeMutt Oct 14, 2025
1727c4d
Reintroduce llappearanceutility to viewer tree from archive/develop
RyeMutt Oct 24, 2025
4abc945
Start to fix up GHA workflow for linux
RyeMutt Oct 20, 2025
8890372
Fix numerous compiler warnings from GCC under Ubuntu 22.04
RyeMutt Oct 20, 2025
c13be7f
Introduce SDL based file picking support
RyeMutt Oct 27, 2025
3bbfb44
Restore LLMaterialID to POD type
RyeMutt Oct 14, 2025
58ffc5f
Fix boost asio deprecation warnings
RyeMutt Oct 14, 2025
576999e
Fix overflows inserting invalid values into stats map
RyeMutt Oct 14, 2025
087733f
Cherrypick LLProcessor cleanup from 57d423745fd1d3d0ea6a0c69b869a20c2…
RyeMutt Oct 14, 2025
92db2aa
Cleanup up linux wrapper script and fix desktop entry creation
RyeMutt Oct 27, 2025
cec5419
Add debug option to force libvlc plugin on linux
RyeMutt Oct 18, 2025
f33eb2c
Fix RelWithDebInfo build on mac universal
RyeMutt Oct 23, 2025
37f8908
Introduce global precompiled header to accelerate build
RyeMutt Oct 23, 2025
8c92c65
Fix shader cache failing after clearing contents
RyeMutt Oct 23, 2025
be07dee
Fix low memory notification appearing incorrectly on non-windows plat…
RyeMutt Oct 23, 2025
24b2343
Fix makefile and ninja generators invalidating secondlife-bin target …
RyeMutt Oct 23, 2025
f5bcba6
Fix transparent water shader being stuck as opaque when reset by feat…
RyeMutt Oct 23, 2025
56ba6cb
Fix crash observed during early startup during feature table resets o…
RyeMutt Oct 23, 2025
b66d667
Run tests using ctest after all targets are built to reduce build con…
RyeMutt Oct 24, 2025
6ee3f96
Fix shift by negative -1 in llflexibleobject
RyeMutt Oct 26, 2025
bd3a7c9
Fix uninitialized member variables reported by ubsan
RyeMutt Oct 26, 2025
5964e02
Fix memcpy of 0 being reported as undefined behavior by ubsan
RyeMutt Oct 26, 2025
9a049b6
Fix invalid cast warning from ubsan
RyeMutt Oct 26, 2025
df9ba93
Fix leak of LLRender VBCache when reset/shutdown
RyeMutt Oct 26, 2025
6a8a9af
Fix leak in materialmgr reported by asan/leaksan by using unique_ptr
RyeMutt Oct 26, 2025
368dd22
Fix leak of boost signals in llmarketplacefunctions
RyeMutt Oct 26, 2025
92979d8
Fix leak of LLNotificationSeparator in LLFloaterNotificationsTabbed
RyeMutt Oct 26, 2025
0136a95
Fix broken mvp modelview hash check in syncMatrices
RyeMutt Oct 26, 2025
df334cd
Fix GL debug logging on linux
RyeMutt Oct 27, 2025
1e02d0c
Fix shader warnings triggering GL errors under linux mesa drivers
RyeMutt Oct 27, 2025
a3c9cdd
Fix assert failing debugGL run
RyeMutt Oct 27, 2025
55d9a8c
Update openjpeg to 2.5.4-r1
RyeMutt Oct 27, 2025
078e760
Fix broken locking for decomp data in model preview
RyeMutt Oct 27, 2025
407c590
Modernize getAvailableMemoryKB for linux
RyeMutt Oct 27, 2025
b1a9688
Fix deprecated opengl usage in debug display
RyeMutt Oct 27, 2025
e803bbc
Modernize viewer alignment macros to use alignas and fix misaligned c…
RyeMutt Oct 27, 2025
17fd0f6
Add support for building with address, undefined, and thread sanitize…
RyeMutt Oct 27, 2025
4100b0c
#4411 UI adjustments
maxim-productengine Oct 27, 2025
8bcbb33
Fix indentation and trailing-whitespace
maxim-productengine Oct 27, 2025
84b2861
Mac build fix and clean up
maxim-productengine Oct 27, 2025
88aa94f
#4879 An Emoji in a display name can affect text in chat
akleshchev Oct 27, 2025
fa05510
#3649 Incorrect camera aspec ratio
akleshchev Oct 29, 2025
1a2f733
Merge branch 'develop-linux' into rye/linux64
Geenz Oct 30, 2025
1d42bf7
#3670 Add a sortable status column to the list of gestures
akleshchev Oct 30, 2025
bd8fe9d
#1112 Add 1024x1024 size to Snapshot to Inventory
akleshchev Oct 30, 2025
02f8d44
Merge pull request #4827 from RyeMutt/rye/linux64
Geenz Oct 31, 2025
b25ca9b
Rework and modernize GL function/extension initialization for better …
RyeMutt Oct 31, 2025
7495edf
Fix usage of deprecate opengl defines
RyeMutt Oct 28, 2025
e2f5e14
Fix deprecated opengl draw commands
RyeMutt Oct 28, 2025
3d8cb23
Fix deprecated opengl mipmap generation usage
RyeMutt Oct 28, 2025
14bf050
Fix invalid calls to glLineWidth on some linux GL drivers
RyeMutt Oct 29, 2025
13620cf
Reduce extra packages installed during autobuild configure
RyeMutt Oct 28, 2025
5a875a6
Rework anisotropic filtering options into a dropdown with levels for …
RyeMutt Oct 28, 2025
9661b4e
Fix cef scaling on linux hidpi displays
RyeMutt Oct 28, 2025
5a2d0b0
Remove dead linux script
RyeMutt Oct 28, 2025
578df45
Fix broken mutex lock on skinned mesh map
RyeMutt Oct 28, 2025
efb62b8
Fix non-static LLCachedControl
RyeMutt Oct 28, 2025
7429ee1
Fix multiple unicode file io handling issues with llofstream and llif…
RyeMutt Oct 28, 2025
a54372a
Add early out for disk cache when app is shutting down to reduce shut…
RyeMutt Oct 28, 2025
ca521b1
Reduce texture cache start up time by reading header entries file in …
RyeMutt Oct 28, 2025
e2a741d
Merge pull request #4900 from secondlife/maxim/2025.08-legacy-search
maxim-productengine Oct 31, 2025
0c796b0
Remove dead linux crash logger
RyeMutt Nov 1, 2025
0c1cbf2
Add support for GLX and EGL to GL extension loader
RyeMutt Oct 30, 2025
0b3c2f6
Fix threaded GL contexts on linux backend
RyeMutt Oct 30, 2025
eaafd49
Fix log to file not supporting multiline output
RyeMutt Oct 29, 2025
d2e8003
Fix building with clang on non-darwin platforms
RyeMutt Nov 2, 2025
76837f9
Fix support for setting thread names on linux and macos
RyeMutt Nov 2, 2025
09563e1
Add basic linux build instructions
RyeMutt Nov 2, 2025
8b6327c
Update open-libndof package with fixes for SDL3 joystick init
RyeMutt Nov 3, 2025
18ee3f0
Fix support for MSVC toolset v145(VS2026)
RyeMutt Nov 2, 2025
af7416f
Add support for tracy logging output
RyeMutt Nov 3, 2025
af60060
Fix registration of secondlife protocol handler on linux
RyeMutt Nov 3, 2025
92c08ef
Merge pull request #4915 from RyeMutt/rye/linux64-2
Geenz Nov 4, 2025
82a9248
Merge branch 'develop' into develop-linux
Geenz Nov 4, 2025
b22900f
SL-3609 Fix camera POV jump when avatar crosses a region boundary
akleshchev Nov 3, 2025
675ad41
#4411 fix occurrences of fake BOOL
maxim-productengine Nov 4, 2025
11daae1
Bump actions/github-script from 7 to 8 (#4865)
dependabot[bot] Nov 4, 2025
eb191cf
Bump actions/labeler from 4 to 6 (#4866)
dependabot[bot] Nov 4, 2025
7d78080
Refactor labeler.yaml to use changed-files syntax
Nov 4, 2025
3504aca
Bump actions/setup-python from 4 to 6 (#4922)
dependabot[bot] Nov 4, 2025
695203b
Add bot* to allowlist in CLA workflow
Nov 4, 2025
6fccf06
Improve fix for line width crashes under certain Mesa GL drivers
RyeMutt Nov 5, 2025
11cd181
Add GL constants needed for compatibility with physicsextensions_sour…
RyeMutt Nov 5, 2025
c8d08ee
#4931 Fix name cache callbacks not having connections
akleshchev Nov 4, 2025
a5bf53f
Merge pull request #4934 from RyeMutt/rye/fixlnxbuild
Geenz Nov 5, 2025
fc9805f
Merge pull request #4935 from RyeMutt/rye/lnxfixlines
Geenz Nov 5, 2025
5e28a5d
#4946 Crash at setShaders
akleshchev Nov 7, 2025
20eac2d
#4932 fix @mention being displayed twice if the name has a TM symbol
maxim-productengine Nov 10, 2025
5260f1e
Fix alt cam mouse motion stuttering in variance to framerate under wa…
RyeMutt Nov 10, 2025
7479105
Fix GLTF files missing from model selection under SDL filepicking
RyeMutt Nov 10, 2025
ae659ad
Fix desktop entry lacking absolute path for Exec failing under KDE
RyeMutt Nov 10, 2025
dc34e8e
#4955 Crash on itemChanged
akleshchev Nov 10, 2025
a73bbcc
Check what state pipe is in for a failed test (#4877)
akleshchev Nov 10, 2025
6b7c6b1
#4932 fix @mention being displayed twice if the name has a TM symbol
maxim-productengine Nov 10, 2025
bf4cd86
Remove cpuid feature bits verification in llprocessor.cpp (#4959)
Geenz Nov 10, 2025
3b0c034
#4907 use shortcut to pan camera down
maxim-productengine Nov 11, 2025
1020b5a
Fix crash in updateImagesCreateTextures accessing potentially freed i…
Hecklezz Nov 12, 2025
6e90ff6
Restore support for wavy avatar cloth(#4963)
RyeMutt Nov 12, 2025
ba133e4
#4671 Fix impractically long am/pm labels
akleshchev Nov 11, 2025
c39b35e
Fix crash in updateDistance updating LOD on null mVObjp
Hecklezz Nov 12, 2025
516a3d0
Fix crash in handleHover accessing null parent
Hecklezz Nov 12, 2025
4b78edb
Follow-up null checks on mVObjp to prevent crashes
Hecklezz Nov 13, 2025
ceba070
Merge branch 'release/2025.08' into marchcat/slua-2508
marchcat Nov 13, 2025
d6d453b
#4980 Crashes when uploading a glTF model
akleshchev Nov 14, 2025
1c89ef9
Fix error when adding a widget filename to the mFileNames stack
fmartian Nov 15, 2025
08983d6
Fix the cache from being cleared every launch if NewCacheLocation is …
Hecklezz Nov 16, 2025
c6101b3
#4948 Crash at webrtc's initializeConnection
akleshchev Nov 17, 2025
b814551
Updated lua types.
Rider-Linden Nov 17, 2025
32ac629
Add a missing type.
Rider-Linden Nov 18, 2025
e8f2ec6
Merge pull request #4997 from secondlife/marchcat/slua-2508
marchcat Nov 18, 2025
5c8022f
Merge pull request #5008 from secondlife/rider/updated_lua_types
Rider-Linden Nov 18, 2025
3e7c67b
#4939 Bugsplat update
akleshchev Nov 12, 2025
b64e580
#4939 Bugsplat often confuses log files on mac, try to make it more r…
akleshchev Nov 17, 2025
fc5500c
Bump actions/stale from 6 to 10
dependabot[bot] Oct 20, 2025
0f2cb6d
#5000 clear duplicate shortcut used to activate Sunrise
maxim-productengine Nov 18, 2025
3d650c4
p#505 GLTF model upload fails to pick textures
akleshchev Nov 18, 2025
5839944
Move 'DetectedEvent' in the lua types xml to classes
WolfGangS Nov 19, 2025
260b671
#4735 Remove the word "Viewer" from application shortcut
maxim-productengine Nov 19, 2025
8420950
#4926 Replace tabs with spaces in script messages
marchcat Nov 18, 2025
7e09943
Merge pull request #5015 from WolfGangS/wolfgang/project/lua_editor_d…
Rider-Linden Nov 19, 2025
4ca362f
#4991 Cant set cut off mask
akleshchev Nov 19, 2025
093d969
Merge branch 'develop-linux' into marchcat/slua-linux
marchcat Nov 19, 2025
5a88ef4
Missing vector function.
Rider-Linden Nov 19, 2025
8cdf209
Merge pull request #5021 from secondlife/rider/missing_vector
Rider-Linden Nov 19, 2025
f07cde2
Add missing eventName parameter in default lua types xml
WolfGangS Nov 19, 2025
4e54ea8
Merge pull request #5022 from WolfGangS/project/lua_editor
Rider-Linden Nov 19, 2025
45ac4ba
#4651 Improve session shutdown detection
akleshchev Nov 19, 2025
7baa669
SL-9502 p#476 Fix visible hidden column
akleshchev Nov 20, 2025
9d5e716
#4951 Update bugsplat symbol upload
akleshchev Nov 18, 2025
e153d78
Change the default script for SLua
HaroldCindy Nov 21, 2025
7b2c3f7
#5026 Upload To Folder feature not working
akleshchev Nov 21, 2025
9391182
Minimal fix for ctd
WolfGangS Nov 21, 2025
486753d
Merge pull request #5033 from WolfGangS/wolfgang/project/lua_editor_w…
Rider-Linden Nov 21, 2025
cef7165
Update websocketpp package to support Linux with C++20
HaroldCindy Nov 21, 2025
8fb3e99
Try yet more patches to websocketpp
HaroldCindy Nov 21, 2025
fb29cd8
Add missing LLEvents:once to lua_types xml
WolfGangS Nov 22, 2025
63f5221
MacOS build fix
akleshchev Nov 24, 2025
f00a03b
#5035 Fix missed am/pm switch
akleshchev Nov 24, 2025
18e152e
Fixed LLWindowMacOSX::setCursorPosition scaling gl_pos when it shouldn't
Hecklezz Nov 23, 2025
5c131e4
Introduce menu option and key bind(alt+shift+t) to show/hide reflecti…
RyeMutt Nov 24, 2025
2c3ce8f
Merge pull request #5036 from WolfGangS/wolfgang/project/lua_editor_m…
Rider-Linden Nov 24, 2025
4414378
Merge branch 'project/lua_editor' into marchcat/slua-linux
marchcat Nov 25, 2025
9fe788e
#1963 Restore pelvis rotation debug settings
akleshchev Nov 25, 2025
0fa5991
Prevent the creation of temporary objects that will be discarded.
AiraYumi Nov 23, 2025
d4bee6b
#5012 Switch 'chat' from untrusted, to click only
akleshchev Nov 21, 2025
bc4492d
#5046 Remove redundant updates in outfit list #1
akleshchev Nov 25, 2025
3cab5ca
#5046 Fix accordion control's excessive rearranges #2
akleshchev Nov 25, 2025
6686fc2
#5046 Optimize outfit's onRefreshComplete #3
akleshchev Nov 26, 2025
be3810d
#1937 The "Don't show me in search" option is not visually updated
akleshchev Nov 27, 2025
449a5a1
Fix tabs in various source files introduced as part of legacy search
RyeMutt Nov 27, 2025
0ea816a
Replace dependency on boost thread with std and change HttpService to…
RyeMutt Nov 27, 2025
bae1e10
#4322 Upload>Model button is sometimes disabled on MacOS
akleshchev Nov 27, 2025
ed561bf
Fix failure to generate build config information correctly under some…
RyeMutt Nov 10, 2025
54b3f3d
#5072 Use make_shared for more efficient ref counting and allocation
RyeMutt Nov 28, 2025
e1174d2
Remove leftover boost aligned_allocator as this is now handled by c++…
RyeMutt Nov 17, 2025
57ff742
#5078 Replace boost ptr_vector<nullable> with std::vector<std::unique…
RyeMutt Nov 30, 2025
54abf68
#5078 Replace boost::hof::invocable with c++17 std::is_invocable
RyeMutt Nov 30, 2025
ec34a88
#5078 Remove dead llblowfish and llmail code plus related tests
RyeMutt Nov 30, 2025
b3a1b09
Fix occasional build failure observed when llphysicsextensionsos fail…
RyeMutt Nov 28, 2025
afb1f4d
Replace boost noncopyable and undefined function usage with modern c+…
RyeMutt Nov 28, 2025
fb3f0e1
#5078 Replace boost::function with std::function
RyeMutt Dec 1, 2025
416ab83
#5078 Replace boost::assign usage with modern c++ brace initialization
RyeMutt Dec 1, 2025
8fe23ca
Fix build failure introduced in boost::function cleanup from missing …
RyeMutt Dec 1, 2025
19d9ded
#5078 Remove dead experimental atmospherics code
RyeMutt Dec 1, 2025
906c58a
#5083 Fallback to OS open handler in external editor when no editor i…
RyeMutt Dec 1, 2025
c6f1b72
#5078 MacOS Build fix
akleshchev Dec 1, 2025
c62735a
Fix alpha debug overlay rendering in probes and breaking scene lighti…
RyeMutt Dec 1, 2025
ec8dc90
Optimize post process rendering for gltf material preview
RyeMutt Nov 27, 2025
7991ae8
#5084 Ressurect Watchdog
akleshchev Dec 1, 2025
3566186
#5086 Fix 'Copy SLURL' generating obsolete http link
akleshchev Dec 2, 2025
5e7e4df
#5084 Better labeling of uncaught events, freezes, crashes
akleshchev Dec 2, 2025
b49400e
Fix invalid symbol in gstreamer 1.0 plugin crashing (#5059)
RyeMutt Dec 2, 2025
6b866bc
Merge pull request #5094 from secondlife/main
Geenz Dec 3, 2025
29518cd
Merge branch 'develop-linux' into marchcat/slua-linux
marchcat Dec 3, 2025
f57219e
Merge branch 'release/2026.01' into marchcat/devlinux-2601
marchcat Dec 3, 2025
8c292db
Windows build fix
akleshchev Sep 5, 2025
1e1f96e
LLTextBase build fix
marchcat Dec 3, 2025
189ffd4
Merge pull request #5101 from secondlife/marchcat/devlinux-2601
marchcat Dec 3, 2025
3021e19
Merge branch 'develop-linux' into marchcat/slua-linux
marchcat Dec 3, 2025
08da147
Remove cpuid feature bits verification in llprocessor.cpp (#4959)
Geenz Nov 10, 2025
def2206
Revert "Windows build fix"
marchcat Dec 3, 2025
0e70989
Proper Windows build fix (#5105)
marchcat Dec 3, 2025
590f58d
Merge branch 'develop-linux' into marchcat/slua-linux
marchcat Dec 3, 2025
8c134d5
Merge pull request #5020 from secondlife/marchcat/slua-linux
marchcat Dec 3, 2025
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
4 changes: 2 additions & 2 deletions .github/workflows/build.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ jobs:
needs: setup
strategy:
matrix:
runner: [windows-large, macos-12-large]
runner: [windows-large, macos-15-xlarge]
configuration: ${{ fromJSON(needs.setup.outputs.configurations) }}
runs-on: ${{ matrix.runner }}
outputs:
Expand All @@ -64,7 +64,7 @@ jobs:
# autobuild-package.xml.
AUTOBUILD_VCS_INFO: "true"
AUTOBUILD_VSVER: "170"
DEVELOPER_DIR: "/Applications/Xcode_14.0.1.app/Contents/Developer"
DEVELOPER_DIR: "/Applications/Xcode_16.1.app/Contents/Developer"
# Ensure that Linden viewer builds engage Bugsplat.
BUGSPLAT_DB: ${{ needs.setup.outputs.bugsplat_db }}
build_coverity: false
Expand Down
5 changes: 5 additions & 0 deletions indra/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,11 @@ else()
set( USE_AUTOBUILD_3P ON )
endif()

if (NOT DEFINED CMAKE_CXX_STANDARD)
set(CMAKE_CXX_STANDARD 20)
endif()
set(CMAKE_CXX_STANDARD_REQUIRED ON)

include(Variables)
include(BuildVersion)

Expand Down
6 changes: 5 additions & 1 deletion indra/llcommon/fsyspath.h
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,11 @@ class fsyspath: public std::filesystem::path
}

// shadow base-class string() method with UTF-8 aware method
std::string string() const { return super::u8string(); }
std::string string() const
{
auto u8 = super::u8string();
return std::string(u8.begin(), u8.end());
}
// On Posix systems, where value_type is already char, this operator
// std::string() method shadows the base class operator string_type()
// method. But on Windows, where value_type is wchar_t, the base class
Expand Down
4 changes: 2 additions & 2 deletions indra/llcommon/llqueuedthread.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -146,7 +146,7 @@ size_t LLQueuedThread::updateQueue(F32 max_time_ms)
// schedule a call to threadedUpdate for every call to updateQueue
if (!isQuitting())
{
mRequestQueue.post([=]()
mRequestQueue.post([=, this]()
{
LL_PROFILE_ZONE_NAMED_CATEGORY_THREAD("qt - update");
mIdleThread = false;
Expand Down Expand Up @@ -474,7 +474,7 @@ void LLQueuedThread::processRequest(LLQueuedThread::QueuedRequest* req)
#else
using namespace std::chrono_literals;
auto retry_time = LL::WorkQueue::TimePoint::clock::now() + 16ms;
mRequestQueue.post([=]
mRequestQueue.post([=, this]
{
LL_PROFILE_ZONE_NAMED("processRequest - retry");
if (LL::WorkQueue::TimePoint::clock::now() < retry_time)
Expand Down
3 changes: 3 additions & 0 deletions indra/llmessage/message_prehash.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,9 @@ char const* const _PREHASH_FirstName = LLMessageStringTable::getInstance()->getS
char const* const _PREHASH_AttachedSoundGainChange = LLMessageStringTable::getInstance()->getString("AttachedSoundGainChange");
char const* const _PREHASH_LocationID = LLMessageStringTable::getInstance()->getString("LocationID");
char const* const _PREHASH_Running = LLMessageStringTable::getInstance()->getString("Running");
char const* const _PREHASH_Mono = LLMessageStringTable::getInstance()->getString("Mono");
char const* const _PREHASH_Luau = LLMessageStringTable::getInstance()->getString("Luau");
char const* const _PREHASH_LuauLanguage = LLMessageStringTable::getInstance()->getString("LuauLanguage");
char const* const _PREHASH_AgentThrottle = LLMessageStringTable::getInstance()->getString("AgentThrottle");
char const* const _PREHASH_NeighborList = LLMessageStringTable::getInstance()->getString("NeighborList");
char const* const _PREHASH_PathTaperX = LLMessageStringTable::getInstance()->getString("PathTaperX");
Expand Down
3 changes: 3 additions & 0 deletions indra/llmessage/message_prehash.h
Original file line number Diff line number Diff line change
Expand Up @@ -714,6 +714,9 @@ extern char const* const _PREHASH_FirstName;
extern char const* const _PREHASH_AttachedSoundGainChange;
extern char const* const _PREHASH_LocationID;
extern char const* const _PREHASH_Running;
extern char const* const _PREHASH_Mono;
extern char const* const _PREHASH_Luau;
extern char const* const _PREHASH_LuauLanguage;
extern char const* const _PREHASH_AgentThrottle;
extern char const* const _PREHASH_NeighborList;
extern char const* const _PREHASH_PathTaperX;
Expand Down
2 changes: 1 addition & 1 deletion indra/llrender/llimagegl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1773,7 +1773,7 @@ void LLImageGL::syncToMainThread(LLGLuint new_tex_name)
ref();
LL::WorkQueue::postMaybe(
mMainQueue,
[=]()
[=, this]()
{
LL_PROFILE_ZONE_NAMED("cglt - delete callback");
syncTexName(new_tex_name);
Expand Down
17 changes: 16 additions & 1 deletion indra/llui/llcombobox.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -251,11 +251,26 @@ void LLComboBox::resetDirty()
}
}

bool LLComboBox::itemExists(const std::string& name)
bool LLComboBox::itemExists(const std::string& name) const
{
return mList->getItemByLabel(name);
}

bool LLComboBox::valueExists(const std::string& value) const
{
return mList->getItemByValue(value);
}

LLScrollListItem* LLComboBox::findItemByValue(const std::string& value) const
{
return mList->getItemByValue(value);
}

std::vector<LLScrollListItem*> LLComboBox::getAllData() const
{
return mList->getAllData();
}

// add item "name" to menu
LLScrollListItem* LLComboBox::add(const std::string& name, EAddPosition pos, bool enabled)
{
Expand Down
5 changes: 4 additions & 1 deletion indra/llui/llcombobox.h
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,10 @@ class LLComboBox
LLScrollListItem* addSeparator(EAddPosition pos = ADD_BOTTOM);
bool remove( S32 index ); // remove item by index, return true if found and removed
void removeall() { clearRows(); }
bool itemExists(const std::string& name);
bool itemExists(const std::string& name) const;
bool valueExists(const std::string& value) const;
LLScrollListItem* findItemByValue(const std::string& value) const;
std::vector<LLScrollListItem*> getAllData() const;

void sortByName(bool ascending = true); // Sort the entries in the combobox by name

Expand Down
112 changes: 90 additions & 22 deletions indra/llui/llkeywords.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -219,9 +219,10 @@ LLUIColor LLKeywords::getColorGroup(std::string_view key_in)
return LLUIColorTable::instance().getColor(color_group);
}

void LLKeywords::initialize(LLSD SyntaxXML)
void LLKeywords::initialize(LLSD SyntaxXML, bool luau_language)
{
mSyntax = SyntaxXML;
mLuauLanguage = luau_language;
mLoaded = true;
}

Expand All @@ -235,10 +236,22 @@ void LLKeywords::processTokens()
// Add 'standard' stuff: Quotes, Comments, Strings, Labels, etc. before processing the LLSD
std::string delimiter;
addToken(LLKeywordToken::TT_LABEL, "@", getColorGroup("misc-flow-label"), "Label\nTarget for jump statement", delimiter );
addToken(LLKeywordToken::TT_ONE_SIDED_DELIMITER, "//", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (single-line)\nNon-functional commentary or disabled code", delimiter );
addToken(LLKeywordToken::TT_TWO_SIDED_DELIMITER, "/*", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (multi-line)\nNon-functional commentary or disabled code", "*/" );
addToken(LLKeywordToken::TT_DOUBLE_QUOTATION_MARKS, "\"", LLUIColorTable::instance().getColor("SyntaxLslStringLiteral"), "String literal", "\"" );

if (mLuauLanguage)
{
// Add Lua-style comments
addToken(LLKeywordToken::TT_ONE_SIDED_DELIMITER, "--", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (Lua-style single-line)\nNon-functional commentary or disabled code", delimiter);
addToken(LLKeywordToken::TT_TWO_SIDED_DELIMITER, "--[[", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (Lua-style multi-line)\nNon-functional commentary or disabled code", "]]");
}
else
{
// Add LSL-style comments
addToken(LLKeywordToken::TT_ONE_SIDED_DELIMITER, "//", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (single-line)\nNon-functional commentary or disabled code", delimiter);
addToken(LLKeywordToken::TT_TWO_SIDED_DELIMITER, "/*", LLUIColorTable::instance().getColor("SyntaxLslComment"), "Comment (multi-line)\nNon-functional commentary or disabled code", "*/");
}


LLSD::map_iterator itr = mSyntax.beginMap();
for ( ; itr != mSyntax.endMap(); ++itr)
{
Expand Down Expand Up @@ -346,8 +359,11 @@ void LLKeywords::processTokensGroup(const LLSD& tokens, std::string_view group)
break;
case LLKeywordToken::TT_FUNCTION:
tooltip = getAttribute("return") + " " + outer_itr->first + "(" + getArguments(arguments) + ");";
tooltip.append("\nEnergy: ");
tooltip.append(getAttribute("energy").empty() ? "0.0" : getAttribute("energy"));
if (std::stod(getAttribute("energy")) >= 0)
{
tooltip.append("\nEnergy: ");
tooltip.append(getAttribute("energy").empty() ? "0.0" : getAttribute("energy"));
}
if (!getAttribute("sleep").empty())
{
tooltip += ", Sleep: " + getAttribute("sleep");
Expand Down Expand Up @@ -627,7 +643,7 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW

if( *cur )
{
cur += cur_delimiter->getLengthHead();
cur += cur_delimiter->getLengthTail();
seg_end = seg_start + between_delimiters + cur_delimiter->getLengthHead() + cur_delimiter->getLengthTail();
}
else
Expand Down Expand Up @@ -662,34 +678,86 @@ void LLKeywords::findSegments(std::vector<LLTextSegmentPtr>* seg_list, const LLW

// check against words
llwchar prev = cur > base ? *(cur-1) : 0;
if( !iswalnum( prev ) && (prev != '_') )
if (!iswalnum(prev) && prev != '_' && prev != '.')
{
const llwchar* p = cur;
while( iswalnum( *p ) || (*p == '_') )
const llwchar* word_start = cur;
S32 namespace_dots = 0;
const llwchar* last_dot = nullptr;

// Find the full extent of the word, potentially including namespace dots
while (iswalnum(*cur) || *cur == '_' || (mLuauLanguage && *cur == '.' && iswalnum(*(cur+1))))
{
p++;
if (mLuauLanguage && *cur == '.')
{
namespace_dots++;
last_dot = cur;
}
cur++;
}
S32 seg_len = (S32)(p - cur);
if( seg_len > 0 )

S32 seg_len = (S32)(cur - word_start);
if (seg_len > 0)
{
WStringMapIndex word( cur, seg_len );
word_token_map_t::iterator map_iter = mWordTokenMap.find(word);
if( map_iter != mWordTokenMap.end() )
S32 seg_start = (S32)(word_start - base);
S32 seg_end = seg_start + seg_len;

// First try to match the whole token (including dots for Lua namespaces)
WStringMapIndex whole_token(word_start, seg_len);
word_token_map_t::iterator map_iter = mWordTokenMap.find(whole_token);

if (map_iter != mWordTokenMap.end())
{
// Found a match for the complete token (including any namespace)
LLKeywordToken* cur_token = map_iter->second;
S32 seg_start = (S32)(cur - base);
S32 seg_end = seg_start + seg_len;
insertSegments(wtext, *seg_list, cur_token, text_len, seg_start, seg_end, style, editor);
}
else if (namespace_dots > 0 && mLuauLanguage)
{
// If using Lua and we have namespace dots but didn't match the whole token,
// check if we have a match for just the namespace prefix (e.g., "ll")
if (last_dot > word_start)
{
// Get the namespace prefix (part before the first dot)
S32 prefix_len = (S32)(last_dot - word_start);
WStringMapIndex prefix_token(word_start, prefix_len);
map_iter = mWordTokenMap.find(prefix_token);

// LL_INFOS("SyntaxLSL") << "Seg: [" << word.c_str() << "]" << LL_ENDL;
if (map_iter != mWordTokenMap.end())
{
// Found a match for the namespace prefix, highlight just that part
LLKeywordToken* cur_token = map_iter->second;
insertSegments(wtext, *seg_list, cur_token, text_len, seg_start, seg_start + prefix_len, style, editor);

insertSegments(wtext, *seg_list,cur_token, text_len, seg_start, seg_end, style, editor);
// Now try to match the function part (after the dot)
const llwchar* func_part = last_dot + 1;
S32 func_len = (S32)(cur - func_part);

if (func_len > 0)
{
// Look for complete function matches
WStringMapIndex func_token(func_part, func_len);
map_iter = mWordTokenMap.find(func_token);

if (map_iter != mWordTokenMap.end())
{
// Found a match for the function part
LLKeywordToken* cur_token = map_iter->second;
insertSegments(wtext, *seg_list, cur_token, text_len, seg_start, seg_end, style, editor);
}
else
{
// No token found, continue without incrementing cur
// since we already advanced it while collecting the word
}
}
}
}
}
cur += seg_len;
continue;
continue; // Continue to next token regardless of match
}
}

if( *cur && *cur != '\n' )
if (*cur && *cur != '\n')
{
cur++;
}
Expand Down
3 changes: 2 additions & 1 deletion indra/llui/llkeywords.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class LLKeywords
const LLWString& text,
class LLTextEditor& editor,
LLStyleConstSP style);
void initialize(LLSD SyntaxXML);
void initialize(LLSD SyntaxXML, bool luau_language = false);
void processTokens();

// Add the token as described
Expand Down Expand Up @@ -189,6 +189,7 @@ class LLKeywords

bool mLoaded;
LLSD mSyntax;
bool mLuauLanguage;
word_token_map_t mWordTokenMap;
typedef std::deque<LLKeywordToken*> token_list_t;
token_list_t mLineTokenList;
Expand Down
13 changes: 13 additions & 0 deletions indra/llui/llscrolllistctrl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1281,6 +1281,19 @@ LLScrollListItem* LLScrollListCtrl::getItemByLabel(const std::string& label, boo
return NULL;
}

LLScrollListItem* LLScrollListCtrl::getItemByValue(const std::string& value)
{
for (LLScrollListItem* item : mItemList)
{
if (item->getValue().asString() == value)
{
return item;
}
}

return NULL;
}

LLScrollListItem* LLScrollListCtrl::getItemByIndex(S32 index)
{
if (index >= 0 && index < (S32)mItemList.size())
Expand Down
3 changes: 2 additions & 1 deletion indra/llui/llscrolllistctrl.h
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,8 @@ class LLScrollListCtrl : public LLUICtrl, public LLEditMenuHandler,
bool selectItemByLabel(const std::string& item, bool case_sensitive = true, S32 column = 0); // false if item not found
bool selectItemByPrefix(const std::string& target, bool case_sensitive = true, S32 column = -1);
bool selectItemByPrefix(const LLWString& target, bool case_sensitive = true, S32 column = -1);
LLScrollListItem* getItemByLabel(const std::string& item, bool case_sensitive = true, S32 column = 0);
LLScrollListItem* getItemByLabel(const std::string& label, bool case_sensitive = true, S32 column = 0);
LLScrollListItem* getItemByValue(const std::string& value);
LLScrollListItem* getItemByIndex(S32 index);
std::string getSelectedItemLabel(S32 column = 0) const;
LLSD getSelectedValue();
Expand Down
8 changes: 4 additions & 4 deletions indra/llwindow/llwindowmacosx.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1060,7 +1060,7 @@ F32 LLWindowMacOSX::getGamma()
&greenGamma,
&blueMin,
&blueMax,
&blueGamma) == noErr)
&blueGamma) == kCGErrorSuccess)
{
// So many choices...
// Let's just return the green channel gamma for now.
Expand Down Expand Up @@ -1111,7 +1111,7 @@ bool LLWindowMacOSX::setGamma(const F32 gamma)
&greenGamma,
&blueMin,
&blueMax,
&blueGamma) != noErr)
&blueGamma) != kCGErrorSuccess)
{
return false;
}
Expand All @@ -1126,7 +1126,7 @@ bool LLWindowMacOSX::setGamma(const F32 gamma)
gamma,
blueMin,
blueMax,
gamma) != noErr)
gamma) != kCGErrorSuccess)
{
return false;
}
Expand Down Expand Up @@ -1178,7 +1178,7 @@ bool LLWindowMacOSX::setCursorPosition(const LLCoordWindow position)
newPosition.y = screen_pos.mY;

CGSetLocalEventsSuppressionInterval(0.0);
if(CGWarpMouseCursorPosition(newPosition) == noErr)
if(CGWarpMouseCursorPosition(newPosition) == kCGErrorSuccess)
{
result = true;
}
Expand Down
Loading
Loading