The /ss code relies 100% on its code versioned in MC packages, and has zero dependence on image state. This was the #1 primary design goal in the 2011 upgrade. Loading the /ss code on top of the sscom-dtl code was never tested or expected to work. Instead, the initial image should be saved ONLY with the Personal SqueakSource code loaded, and NO servers started (RFB or web).
Then, the command-line to start the server should simply specify to use SSImagePersistence in the
run.st script, like this:
____
Smalltalk run:
[ : webPort | MCHttpRepository clearCredentials.
Smalltalk mitigateIfHeadless.
webPort ifNotNil: [ SSRepository port: webPort asInteger ].
(FileDirectory default fileExists: 'logo.jpg') ifTrue: [ SSFrame makeLogo: (FileDirectory default fullNameFor: 'logo.jpg') ].
SSRepository
storage: SSImagePersistence new ;
startServer: true ]
____
SSImagePersistence uses a Promise and ensures the image is saved with the server and domain and safely restartable. I tested with a full copy of
squeaksource.com several years ago.
For extra safety, we might consider using a SSCompositeStorage composed of an SSImagePersistence and a SSFilesystem, so we have data.obj files as backups in case the image saves corrupted.
I'm happy to support getting this up and running as specified above, but I don't want to experiment with mixing the /ss code with the sscom-dtl code. I'd rather see the sscom-dtl code integrated into the /ss code, and the community coalesce on a single bespoke server codebase suitable for both instances.