Verify live admission mod recovery and document direct multiplayer join
This commit is contained in:
@@ -202,3 +202,18 @@ server. Windows installers have no Authenticode signature; macOS is not Apple
|
||||
notarized. Native CI tests and packaging do not certify full Minecraft installs
|
||||
or desktop updater/restart behavior on Windows/macOS. Older unsupported clients
|
||||
need a manual installation of the current release. Previous releases immutable.
|
||||
|
||||
|
||||
## Admission client menu 0.1.1 (2026-09-11)
|
||||
|
||||
The signed Aeronautics payload now contains admission mod 0.1.1 at the existing
|
||||
managed path `mods/shacraft-admission-0.1.0.jar` to prevent duplicate mod IDs on
|
||||
upgrade. SHA-256: `faa9ae13cb0f2d93c03dae26ab36ae20d3fb6b66c89c09254b16808d6b183f89`.
|
||||
From the title screen (and vanilla safety acknowledgement), Multiplayer connects
|
||||
to fixed `135.106.154.86:25567`. Cancel/errors return to TitleScreen; transitions
|
||||
from other screens do not auto-connect. Client-only registration, protocol 1 and
|
||||
one-use admission remain unchanged. Running game server was not restarted.
|
||||
Linux Java 21 build and 8 mod tests pass. An opt-in native live test verifies
|
||||
signed-manifest retrieval and download/repair/restoration of the admission jar
|
||||
only in a temporary directory. Mac 0.1.5 connection failure remains unclassified
|
||||
pending exact error/log; this is not a verified macOS fix or desktop UI test.
|
||||
|
||||
@@ -305,3 +305,18 @@ or desktop updater/restart behavior on Windows/macOS. Older unsupported clients
|
||||
need a manual installation of the current release. Previous releases immutable.
|
||||
|
||||
The live native updater test passed against the published 0.1.5 feed: verified download, corrupted-byte rejection and replacement of only a temporary AppImage copy. The user-installed launcher was not modified.
|
||||
|
||||
|
||||
## Admission client menu 0.1.1 (2026-09-11)
|
||||
|
||||
The signed Aeronautics payload now contains admission mod 0.1.1 at the existing
|
||||
managed path `mods/shacraft-admission-0.1.0.jar` to prevent duplicate mod IDs on
|
||||
upgrade. SHA-256: `faa9ae13cb0f2d93c03dae26ab36ae20d3fb6b66c89c09254b16808d6b183f89`.
|
||||
From the title screen (and vanilla safety acknowledgement), Multiplayer connects
|
||||
to fixed `135.106.154.86:25567`. Cancel/errors return to TitleScreen; transitions
|
||||
from other screens do not auto-connect. Client-only registration, protocol 1 and
|
||||
one-use admission remain unchanged. Running game server was not restarted.
|
||||
Linux Java 21 build and 8 mod tests pass. An opt-in native live test verifies
|
||||
signed-manifest retrieval and download/repair/restoration of the admission jar
|
||||
only in a temporary directory. Mac 0.1.5 connection failure remains unclassified
|
||||
pending exact error/log; this is not a verified macOS fix or desktop UI test.
|
||||
|
||||
@@ -185,6 +185,41 @@ mod tests {
|
||||
time::{SystemTime, UNIX_EPOCH},
|
||||
};
|
||||
|
||||
#[test]
|
||||
#[ignore = "downloads the public signed admission mod into a temporary directory"]
|
||||
fn live_admission_mod_is_restored_when_missing_or_corrupt() {
|
||||
let mut manifest = crate::remote::fetch_manifest("aeronautics").unwrap();
|
||||
manifest.files.retain(|file| {
|
||||
file.path.starts_with("mods/shacraft-admission") && file.path.ends_with(".jar")
|
||||
});
|
||||
assert_eq!(
|
||||
manifest.files.len(),
|
||||
1,
|
||||
"exactly one admission mod is required"
|
||||
);
|
||||
assert!(matches!(manifest.files[0].policy, FilePolicy::Managed));
|
||||
let root = std::env::temp_dir().join(format!(
|
||||
"shacraft-live-admission-{}-{}",
|
||||
process::id(),
|
||||
SystemTime::now()
|
||||
.duration_since(UNIX_EPOCH)
|
||||
.unwrap()
|
||||
.as_nanos()
|
||||
));
|
||||
assert_eq!(inspect(&root, &manifest).unwrap().missing_files, 1);
|
||||
super::sync(&root, &manifest).unwrap();
|
||||
assert!(inspect(&root, &manifest).unwrap().up_to_date);
|
||||
let target = root.join(&manifest.files[0].path);
|
||||
fs::write(&target, b"corrupt fixture").unwrap();
|
||||
assert!(!inspect(&root, &manifest).unwrap().up_to_date);
|
||||
super::sync(&root, &manifest).unwrap();
|
||||
assert!(inspect(&root, &manifest).unwrap().up_to_date);
|
||||
fs::remove_file(&target).unwrap();
|
||||
super::sync(&root, &manifest).unwrap();
|
||||
assert!(inspect(&root, &manifest).unwrap().up_to_date);
|
||||
fs::remove_dir_all(root).unwrap();
|
||||
}
|
||||
|
||||
fn manifest(hash: String, size: u64) -> Manifest {
|
||||
Manifest {
|
||||
schema_version: 1,
|
||||
|
||||
Reference in New Issue
Block a user