Skip to content

Derived native launcher: guard stale sign-ins and cancel pending worlds - #299

Draft
Po-Mato wants to merge 10 commits into
Osiris-Team:masterfrom
Po-Mato:codex/autoplug-296-derived-lifecycle
Draft

Po-Mato wants to merge 10 commits into
Osiris-Team:masterfrom
Po-Mato:codex/autoplug-296-derived-lifecycle

Conversation

@Po-Mato

@Po-Mato Po-Mato commented Oct 5, 2026

Copy link
Copy Markdown

Refs #296. This is a derived draft for maintainer feedback and acceptance validation, not a claim that the issue is already accepted, merged or paid.

This contribution preserves AntonSelin's native launcher/profile/Worlds work and all nine commits from PR #297 through fdc3c95d3ed6454874e0a9bfdb5e474366869ca6, based on master 604c8ec7b9a814c37c7b8f9dbe7c8a9b8bad070d. That existing implementation and its tests/previews remain credited to their original contributors under the repository's MIT license. PR #298 at cb16ea15d4aeb2e9f35ec3f019bc449c204390dd was reviewed for comparison; its implementation was not copied. No HMCL code or new dependency is introduced.

Behavior added by this delta

  • A late Microsoft sign-in can no longer overwrite an offline selection, newer sign-in or closed dialog. Service generations and UI callback invalidation protect state and persistence, including collaborators that ignore interruption.
  • Stop/close now owns a pending world launch before installation completes. Previously, Stop could miss the unregistered attempt and a late server/client could start. Cancellation checks and process ownership reject late installer/readiness/client results and clean up owned processes and locks. Repeated Stop followed by a later launch is covered.
  • Store create/save/read and create/clone dialogs share profile type/loader validation. Contradictory combinations such as PLUGINS/FABRIC, PLUGINS/VANILLA and MODS_SERVER/PAPER are rejected before preparation. Valid mod, plugin and vanilla-server combinations remain supported.
  • One offline client test compares actual filesystem identity, accommodating macOS /var versus /private/var spelling.

The full inherited native dashboard, server browser, default utility profiles, save discovery, launcher and managed-world implementation is included so this branch can be assessed against the complete #296 requirements. The new delta is focused on the lifecycle/profile defects above.

Validation actually executed

  • 210 selected deterministic cases + 6 native Swing cases passed, with zero failures, errors or skips. Offline Maven package passed with existing Java 9/legacy-helper Java 8 targets. The original 35-case auth/UI coverage is retained within the total; upstream author test counts are not added.
  • Identical new world/profile regressions against Add native Minecraft launcher, unified profiles, and Worlds dashboard #297 behavior yielded 10 assertion failures, one blocked-close timeout and one passing control; all 12 pass after the fix. The prior auth baseline fails nine of ten with a passing current-login control.
  • Native Swing tests programmatically click real dialog/Stop buttons with synthetic collaborators, persist through actual ProfileStore and exercise actual WorldService. Images are native-peer component paints, not human screenshots.
  • The actual packaged CLI passed invalid-profile guards, period-preserving versions, empty-profile clone/migration, offline selection and refusal of an unaccepted world before installation.
  • Two actual packaged AutoPlug wrappers around original tiny JVM servers passed independent commands, restart, graceful save/stop and automatic wrapper exit after raw server stop. Native/wrapper smoke runs used isolated homes and a policy blocking non-loopback connections.
  • Read-only publisher JSON probes and a production metadata-only parser passed, including Java 21/25 identification. No game/mod/loader/runtime artifact was installed or executed in these probes.

The selector and per-suite results are in docs/verification/. The repository's inherited external-network/SteamCMD/download tests were excluded from this deterministic selection. docs/derived-verification.md includes reproduction commands, native fixture images, provenance and remaining IO/locking/readiness limits. Raw local logs/environment properties and payout information are excluded from public files.

AI disclosure and acceptance limits

This contribution is predominantly AI-generated. An AI coding agent wrote, directly source-reviewed and executed validation of the new delta; the original author's AI-assisted implementation is preserved and credited. No separate human technical review or human play-testing is claimed.

Real Minecraft/utility gameplay, actual save loading/preservation, real loader processors, Microsoft entitlement/authenticated join, real household-router/WAN sharing and human UX acceptance have not been exercised. Under the issue clarification, final live authenticated joining remains for maintainer validation. All acceptance and payout remain unconfirmed.

The original contributor is active; this is not an abandonment claim. The current derived-PR terms and original contributor's seven-calendar-day grace period, when initiated by a maintainer for a merge-ready derived PR, remain applicable. Please assess this draft's scope and outstanding validation before any ready-for-review transition. Draft creation is not claimed to start the grace period. No PayPal/profile change or payment request is included.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants