You can download any past chromium version from
https://vikyd.github.io/download-chromium-history-version/ (and these are in fact "official" builds by google, not by 3rd parties).
Indeed 67.0.3396.99 is the last "official" stable release to work on 10.9. If you really want to use this old version, you can probably find copies online, just verify the signature (or I can upload if one doesn't exist).
68.0.3398.0 (actually probably 68.0.3398.2 as well) are confirmed to work on 10.9 as you noted. But you can actually go go a bit higher. Any release strictly before 68.0.3432.3 should be the last "nightly" build to work without hassle on 10.9. The reason is that
https://source.chromium.org/chromium/chromium/src/+/91e95822f8b6a0cd091ceeecb953c11e99d98727 was the commit to break things, as for some reason they decided to wrap it in an
@AVAILABLE and add a NOTREACHED() which ends up basically returning uninitialized garbage as the version. This then breaks anything that depends on the version, like v2 sandboxing and possibly other stuff I have not checked.
This can be fixed by hotpatching the function in-memory with a dyld_insert trick. Alternatively it seems the only thing of value that makes use of this is v2 sandboxing, which can be reverting to v1 sandboxing via --disable-features=MacV2Sandbox. Unfortunately, for some span of versions up to 68.0.3440.32 they also strongly-link against LocalAuthentication.framework. Surprisingly 68.0.3440.132 does not exhibit this issue, and it works after disabling v2 sandboxing.
Oh and somewhere in between those versions they removed the compat code for
Code:
//static CGFloat toYosemiteFontWeight(int fontWeight)
//{
// static uint64_t nsFontWeights[] = {
// 0xbfe99999a0000000, // NSFontWeightUltraLight
// 0xbfe3333340000000, // NSFontWeightThin
// 0xbfd99999a0000000, // NSFontWeightLight
// 0x0000000000000000, // NSFontWeightRegular
// 0x3fcd70a3e0000000, // NSFontWeightMedium
// 0x3fd3333340000000, // NSFontWeightSemibold
// 0x3fd99999a0000000, // NSFontWeightBold
// 0x3fe1eb8520000000, // NSFontWeightHeavy
// 0x3fe3d70a40000000, // NSFontWeightBlack
// };
// CGFloat* weight = (CGFloat*)(&nsFontWeights[fontWeight]);
// return *weight;
//}
so you'll need to polyfill it back via
Code:
@interface NSFont (Common)
+ (NSFont *)systemFontOfSize:(CGFloat)fontSize
weight:(CGFloat)weight;
@end
@implementation NSFont (Common)
+ (NSFont *)systemFontOfSize:(CGFloat)size
weight:(CGFloat)weight {
if (weight >= 0.4)
return [NSFont boldSystemFontOfSize:size];
return [NSFont systemFontOfSize:size];
}
@end
Why go through all this effort? The reason is that electron v4 is based on chrome 69, and actually with the above patches you can get it running fine on 10.9. Probably not going to the effort of getting chromium 68/69 working though given that a) you have bluebox's chromium-legacy b) if you really like nostalgia 67 works fine and there are no significant non-polyfillable JS api differences between the two.