Repository navigation
Conversation
… owners Replaced the module-scoped lets and the paired maps that could drift with small owned classes: ObservableStore as the shared get/set/emit/subscribe base, ConfigStore keeping the atomic temp-file write behind a serialized update lock, UpdaterStore adding dismissal tracking and the busy predicate on top of the base, UpdaterSimulator owning the fake Dev Tools flows so the service only asks whether one is active, UpdateDialogController owning the update window together with the was-downloading and was-open context its transitions need, and DialogRegistry keeping each dialog's options and its awaiter's resolver in a single entry.
…ing edited Added a streamable-HTTP JSON-RPC client for the local Unreal MCP, covering the initialize handshake and its session header, both the plain JSON and SSE response modes, a hard per-request timeout so a hung editor cannot stall the loop, and a wrapper around the call_tool dispatcher the editor toolsets sit behind. A probe loop keeps the connection state fresh every 5 seconds, and a reconcile loop runs every 10 seconds while a project is open: it asks the editor for its dirty asset tabs and current level, maps the /Game virtual paths onto their Content .uasset and .umap counterparts, merges that with the lockable files git already reports as modified, then diffs the result against the locks we own and applies only the delta. Both loops skip a tick while the previous one is still in flight, and both broadcast their state to every window, so the two new status bar chips follow the same transitions with a countdown bar to the next tick, the auto-lock one opening the per-file failures on click or forcing a reconcile when there are none.
Replaced the single error.mp3 with the five original Windows 95 system sounds behind a single audio.play route that caches each element on first use, chord on errors, ding on plain message dialogs, chimes when an update turns up, tada once one finishes downloading, and startup when the app is done booting. Added the boot screen that stands in for the workspace and the welcome view until the project context has finished its initial load, with a tiled progress bar that lands on 100% as the minimum display time runs out, so the startup sound plays over something rather than an empty window. It is gated on a new synchronous first-load IPC flag consumed by the first renderer to ask, so a reload or an HMR refresh boots through instantly and silently, and the welcome view no longer flashes over the project it is about to reopen.
The chip used to be a label that only reopened the dialog, it now carries the download icon, a short label naming the version, and either a live tile progress bar while the installer is being fetched or an Update/Restart button that runs the matching action directly. Platforms that cannot auto-install still fall back to opening the dialog, and the task chip's padding was aligned with the other fields.
…ction lock actions Broke the 260-line pane into a toolbar, a node section, a project section, and a row primitive, and moved the lockable/mine/others path sets together with the lock, unlock, and force-unlock actions into useSelectionLocks so the pane and the tree context menu derive them the same way. The project section now reports the project-wide lock counts through a new countLocksByOwnership helper, shown whenever nothing is selected.
Every raw img tag repeated the same quartet of size, pixelated rendering, sync decoding, and high fetch priority, and drifted on the gutter between an icon and its label. Replaced them with one Icon component taking a size scale and an inline flag, with the sizing classes moved into the renderer constants, and gave the menu bar a right-hand slot for the fields that will sit next to the menus.
Right-clicking a file with no lockable attribute or a folder with no lockable descendant did nothing at all, the menu now opens on every node and each entry disables itself when it has nothing to act on, force unlock included rather than appearing and disappearing with its separator.
A long tooltip near the right or bottom edge ran off screen, it is now measured after layout and clamped inside the viewport, flipping above the cursor when the natural offset would overflow the bottom. Capped the width at min(80vw, 360px) and switched to pre-wrap so a multi-line tip wraps instead of stretching the whole way across.
Wrapped the app in a StyleSheetManager whose shouldForwardProp drops non-standard props on plain tags through @emotion/is-prop-valid, while leaving composite targets to filter their own, so react95's styling props no longer land on the DOM as unknown attributes.
Layered @alien_intelligence/eslint-plugin-nitpicker on top of Biome for nit-level enforcement, Biome still owns formatting and the broader rules, and wired both into the lint and lint:fix scripts. Swept what it flagged across the codebase: condensed the multi-line JSDoc blocks into dense prose, dropped the single-use locals in favour of destructuring, and tightened a few loops. Left no-british-english off for now, it crashes on any import type line and aborts the whole run.
The MIT grant covers the source Cybearl authored but not the Windows 95 sounds, shell icons, and Microsoft Sans Serif webfonts the interface reproduces. Added NOTICE.md naming where each asset comes from and whether it is committed or resolved from node_modules at build time, the MIT react95 packages it arrives through, a trademark disclaimer, and a path for rights holders to ask for a replacement, then linked it from the README.
|
🎉 This PR is included in version 1.5.0 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.