When the spectrum.filePath property is set the API checks to see if it's in the inside, alongside or other locations. If it is, the save location is changed to the $INSIDE, $ALONGSIDE or $DATA format. It should be possible to store those paths absolutely, as well as relatively.
I propose a change where if you set the path with one of the $prefixes, it's stored relatively, but if you set the absolute path, it's preserved as absolute. The file menu would automatically give the relative path, and there should be a toggle to switch between absolute and relative in the pop-up.
There is a problem with this.
First, the 'normal' ways of specifying file locations is likely to be drag-and-drop, followed by file browser selection. Files selected in those ways will have location update behaviour, and there is not much room for people to learn by experience about the detailed behaviour of typed-in file paths. Most would expect file locations to behave the same way no matter how they are specified.
Second, it only makes a difference if you have a file in one of the standard locations, but do NOT want that file location to be updated when the project moves. The number of people who understand the system that well, think that far ahead, and deliberately choose to not have that location updated, is likely to be very small. And they retain the option to put their files in a different location if they do not want the update behaviour.
The number of people who simply point to the file, one way or another, expect the behaviour to be the same regardless, and then find to their surprise that some spectrum file locations have to be updated by hand when the project moves, is likely to be rather larger.
This is not worth doing - too little need, will be confusing.