DKR-R v1.0.7 beta 9 - Mod Store installation manager

MOD STORE POLISH
Browse, Installed, Downloads, Requests and Account now share a compact layout.
Updates and Duplicates sit inside Installed; staff tools remain separate.
Management lists open dedicated detail screens and retain their selection and
scroll position. Forms keep full-width text inputs, readable Keyboard actions
and controller keyboard access. Picker results use Show more, not hidden caps.

Downloads separates transfers, items needing attention and completed history.
The badge counts active work only. Clearing history retains installed mods,
receipts and cached packages. Errors stay with the relevant task and can be
copied. Screenshot galleries show thumbnails and a separate image viewer.

Requests have a searchable listing picker and dedicated history/reply screens.
Reviews use a separate editor and reporting dialog. Account controls separate
normal sign-out from account deletion, with platform-appropriate wording.
Staff queues, reports, listing drafts, uploads, activity and access controls
have search and paged results. The listing editor separates details, artwork,
release files and preview/publication. Private staff notes are not requester
messages. Decisions and staff-access changes show a confirmation. Unsaved
listing changes require an explicit choice before leaving. Async draft replies
are fenced to the editor that sent them and account changes clear private UI.

Installer transactions, receipts, duplicate proof, code approval and server
role/revision checks are unchanged. No website/backend deployment is required.
Compilation and static packaging checks only; owner acceptance remains.

MARIO CIRCUIT PACKAGE FIX
Mario Circuit includes an extra outer folder, editor sources, and its .dkrmap
folder. The old importer only searched one folder deep, then mistakenly kept
the original ZIP path as the course folder. Its manifest was present, but this
produced the misleading "manifest.json is missing or unreadable" error.

Store and manual ZIP imports now locate one course through bounded wrapper
folders and take its HD textures from the filename declared in its manifest.
The complete course folder is kept, including music/main.mp3. Editor sources
outside the course are not installed. Bare and single-wrapper exports still
work. Multiple courses in one archive are rejected rather than picking one
unpredictably. Missing/unsafe packages report the discovery failure directly.
The cached Mario Circuit download can be retried; no repack or save reset is
needed. This build has been compiled and its packages inspected, not playtested.

INSTALLED-STATUS HOTFIX
Track receipts no longer disappear after a library refresh on Windows. The
course reader uses extended Windows paths; the Store now compares both paths
in the same native representation before making a relative ownership path.
Previously the track was omitted from inventory, leaving a successful track
and HD-pack installation incorrectly labelled as needing repair.

Track IDs are not directory ownership: an older imported copy can have the
same ID as a newer Store copy. Receipts retain their exact owned directory.
A shadowed copy is counted only when its files match the saved content proof,
and Installed mods explains when another copy is active. Checks are cached by
path, so two copies cannot borrow each other's content proof. Removal keeps
other directories with the same track ID intact.

Genuinely incomplete receipts show Repair install, not a fresh install prompt.
Existing valid installations are reconciled automatically; no library reset
or repeat download is needed to repair this status-display regression.

TRACK ZIP AND INSTALL-TIME HOTFIX
Track ZIPs and their HD pack stamps now use native file handles. This fixes
Windows extraction failures caused by mixed separators in extended paths,
and supports Unicode folder/file names without a narrow filename conversion.
ZIP entries keep their original layout, including music/main.mp3. Extraction
checks paths, links, duplicate files, checksums, output size and storage limits.
Errors now name the entry and reason instead of only saying extraction failed.

Installation protects only the library settings it can actually change.
Replacing an entire old legacy group moves it atomically into journaled
recovery storage instead of copying and flushing hundreds of small files,
then copying them again for a survivor rebuild with no survivors. Shared
groups still rebuild privately. Only disposable scratch copies skip durable
flushes; recovery backups and final published files remain protected.
New journal version 2 handles interruption before and after a retirement
move; an older build blocks on an unfinished v2 journal instead of misreading
it. Original version 1 journals are still recovered by this build.
Progress now distinguishes recovery information, file installation, library
updates and the final receipt. No install-time speedup has been measured by
the developer; acceptance and timing checks remain with the owner.

RECEIPT AND DIALOG HOTFIX
Windows library paths now use the same forward-slash receipt format as Linux.
The previous build could reject its own native inventory as an unsafe path,
then leave unsaved records behind for the next installation attempt. Each
operation now reloads saved receipts, and publication checks its recovery
snapshot before changing installed content. Existing Windows-style member
paths are normalised only inside the strict managed ownership allowlist.
External resources remain outside Store ownership; path safety checks remain.

Duplicate, update, removal and linking dialogs have a fixed readable width,
fit the current display and scroll their content separately from the actions.
Cancel remains reachable, including when a proposal is missing or an operation
is busy. Escape/controller Back dismisses these dialogs; failed or cancelled
duplicate proposals cannot leave a stale popup blocking the launcher.

Open MODS / HACKS > Mod Store. Both browsing layouts are still available.

DOWNLOADS AND INSTALLED MODS
Track downloads reuse a verified ordinary cache file. This repairs the older
hard-linked cache aliases which caused "another filesystem owner" failures.
The original aliases are not deleted and file-verification guards stay intact.

Installation receipts now cover texture packs, modern tracks, legacy tracks
and characters, and Custom Magic Codes. Store cards use these receipts and
the native library, not download history, to show Installed or Update available.
Mod titles are carried through to friendly filenames and library labels.

Existing legacy/code packages can be linked by their exact source checksum.
Converted texture packs require the existing cached-package/pixel proof.
Modern tracks can be linked by comparing their complete installed content
against a privately unpacked, verified cached release. Matching names alone
are not proof. Other installations can be linked manually in Installed.

DUPLICATES AND EDITIONS
A matching download offers Replace & reinstall, Add as new, or Cancel.
Possible name matches are labelled separately from confirmed identities.
Locally modified managed content asks for a fresh replacement decision.
Textures can have separate installed copies. Game/code identities cannot
safely be rewritten just to create copies: Add as new stores another edition
which can be activated from Installed, with only one edition in use at a time.

Duplicates lists local candidates and lets you remove the selected copy.
Removal asks first. Shared owned resources are kept. Saves, source downloads
and unrelated authoring folders are never deletion targets.

MOD UPDATES
The launcher checks the catalogue at startup and periodically while idle.
Updates lists the installed and publisher-current versions, size and notes.
Choose Update, Update selected, Update all, Skip this version, or pin the
installed version by turning off update notifications. Nothing installs just
because a new version appeared. Apparent downgrades need an individual choice.

An update replaces its selected installation instead of adding another copy.
Texture enable/visibility/priority and legacy enable/visibility are retained.
Compatible code settings and structured user data are migrated. Changed code
starts without approval/enabled permission. Incompatible settings are called
out and their previous values remain in the protected transaction copy.
The previous verified edition can be restored when its cached source exists.

SAFE INSTALLATION
Downloads, unpacking, verification and conversion run off the UI thread.
Downloads pause during gameplay and resume on return to the launcher.
Publishing/removing mods waits until outside gameplay and online sessions,
with no competing native import. A process lock prevents simultaneous Store
writes by two launcher copies.

Packages are prepared privately, then published with a durable journal and
verified backups of the affected files and metadata. Failure restores the old
installation. Interrupted publication is recovered at startup before launch
is enabled. Invalid recovery paths stop safely and offer Retry recovery.
Current/previous edition transactions and the twenty newest other completed
operations are retained; older completed private transaction backups are
pruned on a later startup. Unknown directories and unfinished journals are
never silently deleted. Recovery copies live under mod-store/transactions.

The server companion adds an explicit currentReleaseId to the public catalogue.
It is optional: the launcher also supports the currently deployed catalogue by
matching its current version and download URL. No server deployment is needed
for the installation-manager changes. No remote data or hosting was changed.

BUILD AND ACCEPTANCE
Authored changes are confined to patches/mod-store. Fresh staged copies are
generated through the Patch Pipeline. Protected dependencies and generated
recompilation sources were not edited.
Build validation is compilation and static source/package inspection only.
No launcher, gameplay, mod installation, sign-in or controller test was run.
The owner performs those acceptance checks. This is a preview, not a claim
that untested runtime behaviour is proven fault-free.
