Sojour 1.6.1.0 has now released!

This version contains a few fixes and enhancements centred around window positioning – if you pardon the pun.

First up, opened documents, document templates or external resources can now be centred on the primary monitor by right clicking on them in the tree-view and selecting this new option:

The new Centre on Primary Display option!

I have also fixed the early disk status dialog windows so that they are now centred correctly during Sojour’s load cycle.

The Webview2 component used for the PDFs also got upgraded to the latest version.

Finally, Sojour should now remember window positions correctly for setups with more than two monitors**.

** I only have access to two monitors to test against, so I’m coding this fix ‘blind’. It will be interesting to get feedback from customers using such environments!

That’s it for this release!

Have Fun!

RobP

Sojour 1.6.0.0 Has Released!

The new filing system!

This release is primarily about making Sojour play nicely with Cloud Drives.

I think it would be fair to say that file loading and saving just got a lot more complicated!

It’s one of those releases where a huge amount of work has gone into it, but if I have done my job correctly, you won’t notice much of a difference between this version and the previous one.

Only 161 files changed and that was just for this story!

I won’t go into too much detail as to how the new filing system works – that’s the video’s job which you can view at the end of this post.

What I will say is that this is the first iteration of this new and complex filing system. It has had around 2 weeks of testing, but alas, the hardware and cloud systems that I have access to is somewhat limited, which might impact the efficacy of the testing.

Before installing this update, I highly recommend that all customers backup their data first.

I’m hoping there won’t be any issues, but given the nature of what has been done, it wouldn’t surprise me.

If you do find issues, please contact me using the email at the front of the manual and we will work together to get it resolved!

Other changes included the incorporation of a new enterprise level logging system:

We now have logging!

Logging got added to facilitate the testing of the new filing system. It’s needed because so much now happens behind the scenes that this is the only reliable way to see what’s going on.

These log files are rolling log files, so they will never grow out of control. Once they reach their maximum size, the oldest entries are removed to create enough space for the new ones.

The above log is the standard log, but the system also outputs a much more detailed developers log for when Sojour is run from Visual Studio.

These logs are now included in Sojour’s exception windows if, heaven forbid, Sojour crashes:

The logs covering the day of the crash are now appended to any exception information!

This should enable me to more easily fault find customer issues.

With the inclusion of the robust filing system and logging, I’m starting to feel that Sojour has crossed that boundary from a bedroom project to a full-on enterprise application!

What else got changed?

There is now a new splash screen:

The new splash screen

This was added because the new filing system is now asynchronous. This results in the user interface loading up its various elements in real-time, which is somewhat disconcerting. The splash screen was added to hide this behaviour.

The rendering loop of Ionian – Sojour’s graphics engine also got re-written to take into account the fact that asynchronous file operations can make Sojour look less busy than it actually is. This can result in the graphics engine unintentionally hogging all the resources as it thinks Sojour is idling.

Various additional bugs were also fixed with the character health bars. These were all extreme corner cases. I only found these issues thanks to the new automated integration tests I wrote for this sub-system:

We now have new automated integration tests!

These tests should help prevent a re-occurrence of the emergency fixes that plagued the 1.5 releases.

The other big fix that got included in this release, was in and around how Sojour remembers its windows positions in a multi-monitor environment. There was a bug that prevented the windows being restored to the correct monitors. This should now be fixed – I say should, because the most monitors I could test this on was just two.

The video below provides a much more in depth explanation with regard to the new filing system. I’d encourage all customers to watch it!

That’s it for this release!

Have Fun!

RobP

Sojour 1.5.4.0 Last emergency fix (Honest(tm))!

Looks like more testing was required for the characteristic bar changes!

Sorry for the continued hassles!

This is yet another hot fix to fix yet another health bar issue.

In this case, the fix was mostly focused around auto-dice rolled NPC characteristics – the ones that auto-roll when an NPC is dropped on the map.

Also fixed another bug in and around index calculations for characteristic bars too.

Why so many hotfixes?

v1.5.x.x includes additional code to do really aggressive caching of the health-bar graphics. The intent is to vastly reduce the number of times the health-bar graphics need to be recalculated.

Alas, the caching was way too aggressive and it wasn’t updating the health bars when it really should be!

There is most definitely a lesson to be learned here and characteristics are now going to get targeted for some new automated integration tests to try and reduce this risk in the future.

All customers on v1.5.x.x should upgrade!

Sorry for the constant updates!

Have Fun!

RobP

Sojour 1.5.3.0 One more emergency fix!

Howdy folks!

This tiny release fixes an issue where tokens dragged off of the token palette to the map were not showing their health-bars.

I recommend that all 1.5.X.X users switch to 1.5.3.0 – this issue does not affect 1.4.x.x versions.

You can download from the usual place in your Drive-Thru RPG library 🙂

Have fun!

RobP

Of Splash Screens and Cloud Drives!

A prototype of Sojour’s new splash screen!

I don’t normally like splash screens – but had to reluctantly add one to Sojour as its new disk filing system is now asynchronous.

Without a splash screen you can now see the UI elements populating in real-time as each loading process completes. I think this looks a wee bit unprofessional – hence the splash screen to hide the UI updates.

The older synchronous system – which you folks have – used to hide the UI updates simply because Sojour was blocking the main UI thread whilst performing the loading of the data.

Why the change to Sojour’s loading mechanism?

Cloud Drives.

It’s not just the loading mechanism either, everything file based has been overhauled in Sojour to allow it to play well with Cloud Drives such as One-Drive and Google-Drive.

This has been a huge undertaking, but I am now very pleased with the results.

For those that don’t know, Cloud Drives like to perform random management tasks on your files. Whilst they are doing this, they will lock your files at random. These file locks result in Windows throwing errors if Sojour ever tries to touch them – which can be quite often.

To get around this I have built a new filing system for Sojour which includes a file synchronisation manager to deal with the Cloud Drives various antics.

The code changes are huge:

Only 139 changed code files, but whose counting? 🙂

The new synchronisation system even resulted in me having to redesign Sojour’s graphics engine’s rendering loop – not a trivial task, but more on that when I produce a release video for this functionality.

So where are we with this?

The principal coding is done and the initial testing looks positive. However, these code changes touch and affect everything in Sojour – so there is a lot more testing to do before I can release it.

If we are very lucky we could be looking at a release in two weeks time, maybe earlier. It all depends if the testing discovers anything untoward.

Whilst we wait for this update, I highly recommend that users whose data directories are on a Cloud Drive move them to a local drive using Sojour’s file manager (double click the root node – the Sojour node in the assets browser):

How to move your data folder!

That’s it for this update! Hopefully you will hear from me in the next week or so!

Have Fun!

RobP

Emergency Fix v1.5.2.0 is now out!

Sometimes all it takes is for one line of code not to be there…

I didn’t expect to be posting so soon!

I have just released v1.5.2.0 which fixes an issue where pre-1.5.0.0 rulesets that have no characteristics or character sets defined would cause v1.5.0.0 to hang during loading.

It is recommended that all v.1.5.x.0 users upgrade to this version.

I only had one report for this issue. I suspect that the reason for the singular report is that by default Sojour provides one characteristic for a brand new ruleset – thus preventing the issue from popping up.

I’d like to thank the reporting customer for their patience and cooperation in helping to identify and fix this issue! 🙂

In other news, work is now quite advanced on Sojour’s new file sync manager which will make Sojour a lot more fault tolerant when its data folder is pointed at a cloud drive like Google Drive or One Drive.

Hopefully there will be a release either this week or the next.

Have fun!

RobP

Sojour 1.5.1.0 has now been released!

This is a minor release that addresses two issues:

  1. Drawing tools no longer working. This was caused by the new left mouse drag for the map functionality – I had completely forgotten about the drawing tools! The map drag functionality is now compatible with them!
  2. All windows including Sojour itself that memorise their last position, now check that this memorised position is still a valid screen location when re-opened again. This is to prevent some windows getting opened off screen when external monitors are disconnected or the screen resolution is altered.

As for the future, I have been getting a few reports about issues when Sojour’s data directory is set to a ‘Cloud’ drive such as One-Drive or Google-Drive.

The core problem is that cloud drives will occasionally take charge of various files, either to synchronise them or move them around. Once they have a file locked, there is nothing Sojour can do about it. This can lead to Sojour crashing out as it tries to write data to a file it thinks it has sole ownership of.

For the moment, I would recommend not pointing Sojour’s data directory at a cloud drive.

My intent is to work out a technical solution for this.

I already have one idea, and that is some kind of file synchronisation manager which will let Sojour simply retry file tasks at a future point in time if the files are locked.

I have been through the code and so far I know it will be possible, but non-trivial.

This piece of functionality has pipped its way to the top of my priorities list as I want my customers to be able to use their cloud drives for Sojour’s data

In the meantime

Have Fun!

RobP

Sojour 1.5.0.0 has now been released!

Sojour 1.5.0.0 has now been released! Tokens and map from Chaosium’s RuneQuest Starter Set and RuneQuest Adventure Tokens pack.

This is the first release from my new build and release system (I migrated from JIRA/Confluence/TeamCity to Azure DevOps earlier in the year). Hopefully, there will be no issues, but this is something to be aware of!

The new Azure Devops System scaring the willies out of me! Is that really how much time I have left?

Before we get to the list of changes, I’d like to point out that I’m now working in iterative sprints where the stories are a lot smaller than they used to be. The upshot is that it is no longer worth publishing the story numbers like I used to do with the old RPG-XXX format.

The reason for this is that the number of stories per release has increased dramatically. This release alone as over 30 of them. I’m pretty sure you don’t want to know about all the details!

What are the changes?

At a high level, they can be broken down as follows:

  1. Added support to add external web pages to Sojour as either a tab within Sojour’s main window or as a separate standalone window.
  2. Added a dice rolling trigger to enable web pages to trigger rolls on Sojour’s tables. Note, this is an early version, in that right now it only works by inspecting network traffic. I do have an upgrade in the pipeline which will also analyse the web page itself. Until then, JavaScript only apps might not work with this system.
  3. Sojour’s tokens and maps now support three additional image formats: GIF, WEBP and AVIF.
  4. Sojour’s map can now be panned by left clicking and dragging the mouse directly on the map – you would not believe how hard this was to do – especially in 3d!
  5. Trackable Characteristics now support as many characteristics as you want to add! This used to be limited to four, but I have now lifted the limitation. However, the health-bars displayed on the maps and toolbars can only show these characteristics in groups of four at a time. You can switch between groups by using the left and right keyboard arrows when hovered over the health bar for a token.
  6. Fixed an issue where computers with touch pads or touch screens could force Sojour’s maps into an infinite zoom.
  7. Campaign Assets are now always rendered underneath other tokens with Static Campaign assets being at the lowest level. This is because these tend to represent map features, so other tokens should appear above them.
  8. The File Manager now performs a ‘Save All’ prior to performing some of its operations. (A necessity after Sojour’s file system got changed in the previous release.) The File Manager has also been updated to aggressively close down and free all memory allocated by WebView2 – this is to prevent crashing when restoring from a backup due to WebView’s cache being locked.
  9. Fixed a bug where changing External Characteristics on a player character didn’t propagate to all maps.
  10. Opening Characters, Campaign Assets or Tokens and then shutting them now returns focus back to Sojour properly. This is a WebView2 message queue and threading bug!
  11. All external components used by Sojour have been upgraded to latest – if I have done this right, you won’t notice any changes!

That’s it for this release. Please do get in touch if there are any issues (email is in the front of the manual). I have done a lot of testing, but I’m a little on edge as this is my new development environment’s first real public release!

Here is a video covering off the main features!

Have Fun!

RobP

Merry Christmas & A Happy New Year!

Merry Christmas!

I’d like to take this opportunity to wish everyone a Merry Christmas and Happy New Year!

I’m currently targeting a new release for 4th January which will contain external resources and a few other bits and pieces.

The external resources functionality is coming on in leaps and bounds and we can now target them to external windows or tabbed controls. Sojour remembers external window sizes and positions from instance to instance too.

Here is a screenshot from the latest development build:

External resources can now be opened in separate windows too! 🙂

That’s it for this year. I’m hoping to post again early in the New Year with the new release!

Have Fun!

RobP