SL projects Updates week 34/2 server, texture / Mesh CDN, group chat

Santaurio, Cala del Barronal; Inara Pey, April 2014, on FlickrSantaurio, Cala del Barronal (Flickr) – blog post

Server Deployments week 34 – Recap

There was no deployment on the Main (SLS) channel on Tuesday August 19th. All three RC channels received the same server maintenance project  on Wednesday August 20th, aimed at fixing a crash mode.

There may be news on the crash mode fixed in the RCs once it has deployed to the Main (SLS) channel in week 35.

Upcoming Server Deployments

There will be a new server maintenance package deployed to the RCs in week 35, which includes a couple of visible changes:

  • SVC-2262 – “Incorrect height value in postcard which sent from above 256m” (a postcard being a snapshot sent to e-mail)
  • A “re-fix” for BUG-6466 – “Numbers expressed in scientific notation and include a plus sign in the exponent are not parsed as JSON numbers by LSL”, which was thought to have been fixed a while ago, but which in fact resulted in BUG-6657 – Valid JSON numbers like 0e0 no longer valid after 14.06.26.291532. prompting the original fix to be rolled back.

SL Viewer News

TPV developer Niran V Dean has been working on a new unified snapshot floater which encompasses the “standard” floater, plus the Flickr, Twitter and Facebook upload options, under STORM-2040. Those who use the most recently releases of Niran’s Black Dragon viewer will be familiar with the approach, as he initially worked on the idea in that viewer.

NiranV Dean has been working on a more unified snapshot floater, which is currently undergoing testing. It will hopefully appear soon
NiranV Dean has been working on a more unified snapshot floater, shown here in the viewer window, which is currently undergoing testing. It will hopefully appear soon (click for full size)

The work is now progressing to a point where we should be seeing the fruits of his labour in the near future. In the meantime, I’ve previewed the work as it stands at the moment.

Texture and Mesh Fetching CDN

As reported in my last TPV developer meeting update, the Lab is looking to move texture and mesh fetching to a content delivery network (CDN). If successful, this approach will see texture and mesh fetching bypass the simulator entirely, being routed instead directly between the viewer and asset servers via the CDN, which should see improvements in the speed and reliability of such transfers.  Explaining the new approach further at the Server Beta meeting on Thursday August 21st, Maestro Linden said,

The viewer currently fetches all meshes and textures through the sim, which gets them from the asset server, and the sim gives the viewer a ‘capability’ URL, which the viewer uses for fetching. However, with this change to use the CDN, the sim instead gives the viewer the URL of the CDN, and the CDN has hosts all over the world. 

It’s good for two reasons: 1) the sim isn’t burdened with texture/mesh transfers; 2) you’ll often have lower latency to the CDN than the sim, which means more speed.

Allowing for the fact the Lab is accessing the service through their own network (although the CDN is a commercial service), both Maestro and April Linden report it as being a noticeable improvement on things, with texture and mesh fetching having double the performance compared to the current means of fetching via the simulator. Initial results of testing from Europe show similar improvements.

The Server Beta meeting agenda has further information on new method for mesh and texture fetching, including details on the Aditi stress test regions (one for textures, one for meshes), and those wishing to try them out are invited to do so. No special viewer is required in order to carry out testing at present, and the agenda includes notes on what to do. Note that the test regions are set to no-build so that people don’t rez extra things that would skew results; they are also likely to be limited in terms of the maximum number of avatars able to access them at one time.

If / when the new approach is more broadly rolled-out, people will be able to see which service (CDN or via the simulator) they are using is to set Develop > Consoles > Capabilities Info To Debug Console. Those using the CDN will see the GetMesh, GetMesh2, and GetTexture URLs will all be  http://asset-cdn.aditi.lindenlab.com/, while those using the current method will see it give some URL pointing at the sim host. However, we’re still some way from seeing the new service deployed further than the Aditi test regions.

Should this work prove successful, and once it and other HTTP work such as pipelining, as being developed by Monty Linden, is completed, the Lab hopes that they’ll have a fast, robust series of HTTP services such that they can look to retire UDP texture fetching – although this will be some way down the road, and in the interim, UDP will offer people something of a fallback for texture fetching should they have issues with HTTP as the various new services are deployed.

 Skill Gaming Regions

Simon Linden reported that the first of the Skill Gaming regions has arrived on Agni (the main grid). Called Crunchy, it doesn’t have any gaming parlours or anything on it, but appears to be set-up for testing (such as accessibility). There are a few things going on there, most under the control of Gecko Linden. Also, and as pointed-out by Simon, the first skill games and operators have started to appear on the Lab’s Skill Gaming Participants wiki page.

Group Chat

Work has resumed on group chat after a brief pause, and the Server Beta meeting saw a very brief test take place. The aim of this was to test delays that have been introduced into the members list updates sent by the chat server.

As I’ve previously reported, one of the biggest issues of chat delays in group chat sessions is to do with the numbers of updates the chat server has to send as people join / leave session and log-in / out of SL, changing their online status within the groups they’re a member off. Recent changes to the code are intended to queue these updates and reduce the load they are placing on the servers, interrupting the flow of text messages.

The test was brief, but appeared to give Simon Linden enough information to be able to go back and poke at things some more.

Group Chat Server Issues

There have been further reports of group chat servers at times becoming non-responsive. This issue was initially raised in week 33, after the server supporting all group chats with a key starting with “b”. A further issue was identified at the start of week 34 affecting the server supporting all group chats with a key starting with “d”. While the Lab is aware of ongoing problems, there is also a request for JIRAs to be submitted on specific issues.

SL viewer to get unified snapshot floater

secondlifeUpdate, September 8th: The unified snapshot floater is now a part of the de facto release viewer.

Update, August 26th: The unified snapshot floater is now available in a release candidate viewer, version 3.7.15.293376

Niran V Dean is familiar to many as the creator of the Black Dragon viewer, and before that, Niran’s Viewer. Both viewers have been innovative in their approach to UI design and presentation, and both have been the subject of reviews in this blog over the years, with Black Dragon still reviewed as and when versions are released.

Once of the UI updates Niran recently implemented in Black Dragon was a more unified approach to the various picture-taking floaters which are becoming increasing available across many viewers. There’s the original snapshot floater, and there are the Twitter, Flickr and Facebook floaters offered through the Lab’s SL Share updates to the official viewer, which are now also available in a number of TPVs.

In Black Dragon, Niran redesigned the basic snapshot floater, offering a much improved preview screen and buttons which not only provide access to the familiar Save to Disk, Save to Inventory, etc., options, but which also provide access to the Flickr, Twitter, and Facebook panels as well.

He also submitted to the code to Linden Lab, who have approved it, and it is currently working its way through their QA and testing cycle and should be appearing in a flavour of the official viewer soon (see STORM-2040).

A test build of the viewer with the new, more unified approach is available, and I took it for a quick spin to try-out the snapshot-related changes. Note it is a work-in-progress so some things may yet be subject to change between now and release.

First off, the snapshot floater is still accessed via the familiar Snapshot button, so there’s no loking for a new label or icon. The Twitter, Flickr and Facebook floaters and buttons are also still available (so if one or other of them is your preferred method of taking pictures, you can still open them without having to worry about going an extra step or two through the snapshot floater).

Opening the new snapshot floater immediately reveals the extent of Niran’s overhaul – and as with Black Dragon, I like it a lot.

The new snapshot floater by Niran V Dean: note the button options for Flickr, Twitter and Facebook uploads
The new snapshot floater by Niran V Dean: note the button options for Flickr, Twitter and Facebook uploads

The increased size of the preview panel is immediately apparent, and might at first seem very obtrusive. However, when not required, it can be nicely hidden away by clicking the << on the top left of the floater next to the Refresh button, allowing a more unobstructed in-world view when framing an image (you can also still minimise the floater if you prefer).

Beneath the Refresh button are the familiar snapshot floater options to include the interface and HUDs in a snapshot, the colour drop down, etc., and – importantly – the SL Share 2 filter drop down for post-processing images. The placing of the latter is important, as it is the first clue that filters can, with this update, be applied to snaps saved to inventory or disk or e-mailed or – as is liable to prove popular – uploaded to the profile feed.

With the new snapshot floater, you will be able to add filters to the snaps you save to disk or inventory, or which you e-mail or upload to your profile feed
With the new snapshot floater, you will be able to add filters to the snaps you save to disk or inventory, or which you e-mail or upload to your profile feed – here is a snap being prepared to save to disk with the lens flare filter added

Below these options are the familiar buttons allowing you to save a snapshot to disk, inventory, your feed or to e-mail it to someone. click each of these opens their individual options, which overwrite the buttons themselves – to return to them, simply click the Cancel button. Saving a snapshot will refresh the buttons automatically.

Within these buttons are those for uploading to Flickr, Twitter or Facebook. These buttons work slightly differently, as clicking any one of them will close the snapshot floater and open the required application upload floater.

While this may seem inconvenient over having everything in the one floater, it actually makes sense. For one thing, trying to re-code everything into an all-in-one floater would be a fairly non-trivial task; particularly as Twitter, Flickr and Facebook have their own individual authentication requirements and individual upload options (such as sending a text message with a picture uploaded to Twitter, and the ability to check your friends on Facebook. Also, and as mentioned earlier, keeping the floaters for Flickr, Twitter and Facebook separate means they can continue to be accessed directly by people who use them in preference to the snapshot floater.

However, this latter point doesn’t mean they’ve been left untouched. Niran has cleaned-up much of their respective layouts and in doing so has reduced their screen footprints. The results are three floaters that are all rather more pleasing to the eye.

Niran's revised Facebook floater, left - note the new Connect button, removing a need for an extra tab; and the orginal floater  on the right
Niran’s revised Facebook floater, left – note the new Connect button, removing the need for an extra tab; and the original floater on the right

All told, these are a sweet set of updates which make a lot of sense. It may be a while longer before they surface in a viewer; I assume they’ll likely appear in a snowstorm update, rather than a dedicated viewer of their own, but that’s just my guess. Either way, they’re something to look forward to,

Kudos to Niran for the work in putting this together, and to Oz and the Lab for taking the code on and adding it to the viewer.

CtrlAltStudio offers preliminary Oculus DK2 support

CAS-logoDave Rowe, who develops the CtrlAltStudio viewer has announced he has some preliminary support for the Oculus Rift DK2 available in an alpha version of his viewer.

The viewer version – 1.2.2.41183 Alpha, dated August 19th, should also support existing DK1 headsets, but it doesn’t yet support head tracking for DK2 hardware.

Announcing the availability of the viewer in a blog post, Dave said:

I know some people are very anxious to try their DK2s in Second Life / OpenSim so I’ve released this alpha with some very preliminary DK2 support.

It works with the DK2 configured in extended mode: use the Windows key + right-arrow to move your viewer window onto the Rift’s display, then Ctrl+Alt+3 makes the window full screen and switches into Rift view.

Have I mentioned that this release is very preliminary? It does not work with direct mode yet as the current Rift SDK 0.4.1 Beta does not work in direct mode with OpenGL. Also, in this alpha, head orientation is tracked but not yet head position. Plus there’s no display of any UI. And Advanced Lighting Model must be turned on. For more details on usage, see the Release Notes.

I haven’t tested this alpha with a DK1 yet but it should in theory work. Note though that the mirrored windows mode used in previous viewer releases for the DK1 is and will not be supported by the new Oculus software.

Austin Tate has provided an overview of his experience with the viewer and the DK2, for those who would like more first-hand information.

Related Links

 

SL projects update 34/1: server, viewer, materials processing

L'Arc-en-Ciel, WinterFall, July 2014; Inara Pey on Flickr, on FlickrL’Arc-en-Ciel, WinterFall (Flickr) – Blog post

Server Deployments

As always, please refer to the server deployment thread for the latest news and information.

There was no deployment on the Main (SLS) channel on Tuesday August 19th. All three RC channels should receive the same server maintenance project  on Wednesday August 20th, aimed at fixing a crash mode.

SL Viewer Updates

The library refresh viewer, version 3.7.14.292638 was promoted to the de facto release viewer on Monday August 18th. This viewer contains an update to a large set of libraries used by the viewer to provide security, stability and consistency improvements to this and future viewers – release notes.

This leaves just the Experience Keys project viewer (due for a refresh in week 34), the Oculus Rift project viewer (due to undergo updates in the coming weeks following the Lab’s receipt of Oculus Rift DK2 headsets), and the RC / experimental log-in viewer in various visible viewer channels.

Group Ban Notifications JIRA

A couple of group ban issues have been raised on when and how notifications on ejection and banning are displayed by the viewer since the arrival of the group ban capabilities (or aren’t displayed, as the case may be) – see BUG-2054 and BUG-5928. Cinder Roxley has submitted code as a part of rectifying BUG-2054, and the Lab are looking and what they need to do to ensure consistent and logical notifications are given.

Materials and Related News

Materials Rendering via Basic Shaders

Geenz Spad contacted me over the weekend to point-out BUG-2077, a feature request that would enable all users that enable Basic Shaders to see a subset of materials functionality present in Advanced Lighting Model. Commenting on the JIRA, Geenz notes:

The performance impact won’t be noticeable on the vast majority of GPUs that support at least atmospheric shading and basic shaders, and should generally be much faster on systems that have trouble with ALM. On top of that, this should enable materials to work in water reflections and refractions to some extent.

However, he also notes a number of constraints:

  • Maximum number of lights will go unchanged
  • Projectors still will not work
  • Gamma correction will only be approximated.

In pointing the JIRA out to me, Geenz said, “A proposal has been submitted to LL regarding materials in basic shaders. I’ve started working on materials in basic shaders already, though work will be moving along slowly so definitely don’t expect this to done for a little while.”

At the same time, Geenz is also working on fixing projector reflections not respecting the environment intensity parameter (see BUG-2056). Currently, projector reflections are treated as specular reflections rather than environment reflections (see below). This fix would correct that.

BUG-2056:
BUG-2056: The image on the left shows projector reflections as they are seen today: overly brightly despite the environment intensity setting (in this case: glossiness 0; environment intensity: 20); the image on the right demonstrates how the reflections should appear with the same environment intensity (images: Geenz Spad)

Again speaking to me about the work, Geenz said, “This is something that I largely started working on while fixing the environment intensity bug on projectors.  Projectors didn’t seem to make a whole lot of sense in their previous state, and since we have enough information to actually do “glossy” reflections with projectors as it is, it made much more sense to just have glossiness tied to the existing glossiness material parameter.”

A further JIRA submitted by Geenz (see BUG-2067) proposes a means of improving the use of projectors to create surface “reflections”. Geenz provides the explanation thus:

Presently projectors have very strange behavior. Depending on a surface’s environment intensity, they get blurrier the more intense they are, and the reflections “fatten” depending on how intense the reflections on the surface are. This doesn’t really make a whole lot of sense.

Depending on how glossy the surface is, projector reflections should become sharper for higher gloss values and blurrier for lower values. On top of that, projector reflections shouldn’t “fatten” based upon intensity; this makes them unusable for decent looking reflections.

This feature makes use of the glossiness parameter to calculate the “gloss” of projector reflections.

Pojectors and glossiness: left = as things appear at present when projecting images onto glossy surfaces; right = as they would appear if Geenz's work is implemented
Pojectors and glossiness: top = as things appear at present when projecting images onto glossy surfaces; bottom = as they would appear if Geenz’s work is implemented (images: Geenz Spad)

Other Items

Mac Cocoa applicationShouldTerminate Issue

Cinder Roxley has pointed-out a problem with the Cocoa-specific applicationShouldTerminate function within the viewer, which she explains thus:

Say you are logged into sl, and you open appstore and there is an update that needs a restart to complete. Normally you click restart and it shuts down all apps completes the update and when you login your apps are reopened. Because the viewer is sending a bad value back to OSX, OSX will not close it, and it stops the restart from happening.

STORM-2053, submitted by Cinder provides a fix for this problem.

Mirror Reflections

Work is continuing to refine the SL mirrors project (see my report and JIRA (BUG-2055  initiated by Zi Ree of the Firestorm team). There has been some lively lively debate on the JIRA over the course of the last week. The more recent progress has been focused on getting mirrors to work with the Advanced lighting Model (ALM) active.

On top of everything else he’s doing, Geenz Spad has been providing pointers for some the work as well as demonstrating how mirror surfaces could benefit if they are made to work with materials, as shown in the images below.

How mirror reflections might benefit when working with materials: (L): A mirror sphere with a normal map applied; (c) a mirror sphere Mirror reflections and an environment mask applied; materials
How mirror reflections might benefit when working with materials: (L): A mirror sphere with a normal map applied; (c) a mirror sphere with environment mask applied; (r) the sphere with both a normal map and an evironment mask applied (images: Geenz Spad)

There is still a fair amount of work still to do before it is likely that the Lab look at any proposal arising from this. I’ll continue to update on progress as it is made, as I also hope to with Geenz’s work with projectors and materials as noted earlier in this report.

Viewer release summaries 2014: week 33

Updates for the week ending: Sunday August 17th, 2014

This summary is published every Monday and is a list of SL viewer / client releases (official and TPV) made during the previous week. When reading it, please note:

  • It is based on my Current Viewer Releases Page, a list of all Second Life viewers and clients that are in popular use (and of which I am aware), and which are recognised as adhering to the TPV Policy. This page includes comprehensive links to download pages, blog notes, release notes, etc., as well as links to any / all reviews of specific viewers / clients made within this blog
  • By its nature, this summary presented here will always be in arrears, please refer to the Current Viewer Release Page for more up-to-date information

Official LL Viewers

  • Current Release: version 3.7.13.292225 no change – update aniticipated in week 34
  • Release channel cohorts (See my notes on manually installing RC viewer versions if you wish to install any release candidate(s) yourself):
    • No updates
  • Project viewers:
    • No updates.

LL Viewer Resources

Third-party Viewers

V3-style

  • Firestorm updated to version 4.6.7.42398 –  core updates: parity with LL 3.7.8 code base + some items from later versions; viewer-side interest list updates; Mac 64-bit version + much more – release notes; release review

V1-style

  • Cool VL viewer updated on August 16th – Stable release to version 1.26.12.12 and Legacy version 1.26.8.70 – core updates: please refer to the release notes

Mobile / Other Clients

  • Mobile Grid Client updated to version 1.22.1221 – core updates: fix to prevent service from being killed by the latest Samsung firmware – change log

Additional TPV Resources

Related Links

Firestorm 4.6.7: rolling forward

firestorm-logoOn Sunday August 17th, the Firestorm team announced the release Firestorm 4.6.7.42398. As with the 4.6.5 release in May, this is far more of a stability and bug addressing update more than it is a release of major new features, although it does contain a lot of updates which most Firestorm users will find to their liking.

As always, the complete list of changes, together with attributions, can be found in the release notes / change log, and I refer readers to that document for specifics on all contributors, FIRE JIRA links, etc. The following is intended as an overview of some of the more major / interesting changes, updates and  fixes to be found in the release.

The Before We Begin Notes

For best results when installing this release:

Firestorm Blocking

Note that as a result of the Firestorm team’s policy to keep only 3 versions running, version 4.5.1 beta will be blocked in the coming weeks. The advice from the team is that If you are on 4.5.1, to please update now. Version 4.4.2 will continue to remain for Mac users until all the major Cocoa Mac bugs have been resolved. However, if you are not a Mac user, then there really isn’t any reason for you not to have updated, and the team again ask that you update as well

Mac 64-bit Version And Mac Fixes

This release of Firestorm sees the arrival of a Mac 64-bit version. As with the original windows and Linux 64-bit versions, this first release of the Mac 64-bit variant of the viewer is regarded as a beta release. However, the Firestorm team fully expect it to have far greater stability than the 32-bit version, and better performance, so Mac users in a position to do so are encouraged to download it and try it.

Blog posts on the 64-bit version can be found on Tonya Souther’s blog and in my blog.

As a heads-up to Mac users, please note that this release of Firestorm also includes a couple of partial fixes for known issues:

  • Alt-clicking while moving the mouse moves the camera significantly (see STORM-2041 and FIRE-12241) has been partially fixed by Linden Lab
  • The Firestorm team have implemented a partial fix for the keystroke entry lag issue (see FIRE-12172).

These may not entirely solve the issues to which they relate, but hopefully they’ll give at least some Mac users a degree of improvement.

One thing those experiencing the typing lag, and who are in a position to do so, might like to try is to create a clean virtual desktop in Spaces, switch to it and then start Firestorm, pinned it to that desktop, and make it full screen (see the suggestion from Spikeheel Starr here).

Lab Updates

This release sees Firestorm reach parity with LL’s 3.7.8 code-base, together with cherry-picked updates from later releases. Updates and fixes directly from the Lab include, but are not limited to) the following.

Project Interesting Scene loading Updates

Project Interesting has been a part of the Lab’s long-term Project Shining updates which were recently officially drawn to a close. The interest list work, primarily led by Andrew Linden prior to his departure from the Lab to join High Fidelity, is a set of improvements to how the viewer and simulator work together to know what information the viewer has or needs in order to render the world around your avatar.

The interest list updates provide more predictable and faster scene rendering, such as large objects and those closest to you appearing first, rather than at random. More use is also made of the viewer's cache (so the warning for not clearing cache as a first action in "fixing" issues becomes even more important
The interest list updates provide more predictable and faster scene rendering, such as large objects and those closest to you appearing first, rather than at random, as with the scene shown here. More use is also made of the viewer’s cache (so the warning for not clearing cache as a first action in “fixing” issues becomes even more important

The work has seen several server-side and viewer updates, and the updates included with this release of Firestorm enable the viewer to more intelligently store and reuse scene data, helping to make regions you’ve previously visited load faster (as long as you don’t clear cache!), and help improve viewer performance.

Further information on the project interesting work can be found in the following blog posts:

Google Breakpad Updates

Google Breakpad is the tool used in gathering information used in reporting underpinning reasons for viewer crashes to help with tracing causes, etc. Linden Lab have been engaged in a programme of improving when and where Google Breakpad becomes active as the viewer starts, and ceases reporting as the viewer shuts down. This release of Firestorm sees the most recent updates and improvements made to Google Breakpad integrated into the viewer, allowing the support team to improve the triaging and debugging of issues.

Other Updates of Note

  • Added a viewer check box to extend parcel entry limits to a higher ceiling (World > Region Details > Region > Block parcel fly over): when checked, extends access checks vertically to prevent parcel flyover
  • Opening large chat histories from conversation log no longer eats huge amounts of memory resulting in a viewer crash (see: BUG-4517 and FIRE-12242)
  • Searching inventory for “online” now correctly returns online friends calling cards in search results (see BUG-4409 and FIRE-12178)
  • Merchant Outbox fixes: includes fixes for accurately detecting Merchant status and improves recovery for Merchant Outbox errors
  • Improved discoverability of the Region Debug console has been moved to Develop > Consoles > Region Debug Console. Also added to World > Region Details > Debug > Region Debug console
  • Having a space after your cursor and pressing return to add a new line no longer forces an extra space to be made in the next line in notecards and script editor
  • Opening square textures now sets the 1:1 size constraint.

Building and Scripting Updates

LSL Functions for Materials

Firestorm 4.6.7 sees the addition of LSL support for materials capabilities. Materials can be added to object faces with llSetPrimitiveParams() and llSetLinkPrimitiveParams functions using the following parameters:

  • [PRIM_SPECULAR, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face, string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face, integer alpha_mode, integer alpha_cutoff]
    • Valid alpha_mode options are PRIM_ALPHA_MODE_NONE, PRIM_ALPHA_MODE_BLEND, PRIM_ALPHA_MODE_MASK, PRIM_ALPHA_MODE_EMISSIVE
LSL support for materialsarrives in Firestorm with the 4.6.7 release
LSL support for materials arrives in Firestorm with the 4.6.7 release

Materials can be read with  llGetPrimitiveParams() and llGetLinkPrimitiveParams functions using the following parameters:

  • [PRIM_SPECULAR, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians, vector color, integer glossy, integer environment]
  • [PRIM_NORMAL, integer face] returns [string texture, vector repeats, vector offsets, float rotation_in_radians]
  • [PRIM_ALPHA_MODE, integer face] returns [integer alpha_mode, integer alpha_cutoff].

For further information, please refer to the relevant LSL documentation as linked-to above.

In addition:

  • CTRL + mouse grab of objects is now disabled by default in all of Firestorm’s log-in modes other than V3. This is because the option offers no “undo” option should it be used accidentally. A toggle option has been added to Preferences > Firestorm > Build 2 (Use CTRL+mouse to grab and manipulate objects) to enable / disable the ability.
  • Clicking the area in between the Full Bright check box and the Materials drop down box no longer incorrectly opens the colour picker.

Continue reading “Firestorm 4.6.7: rolling forward”