Skip to content

Merge #0010 - #13

Merged
yoratoni merged 3 commits into
mainfrom
dev
Aug 13, 2026
Merged

yoratoni merged 3 commits into
mainfrom
dev

Conversation

@yoratoni

Copy link
Copy Markdown
Contributor

No description provided.

…ce split

Extracted a generic JsonStore that owns one JSON file with an atomic
write, a serialized update lock and a lazy in-memory cache, then split
the persisted store into three files: config.json for user-authored
preferences, state.json for the transient view state (files pane width,
search filters, window placement, recent projects) and cache.json for
the LFS lock cache.

Introduced a preferences window with General, Appearance and Services
tabs, driven by a draft that only commits on Apply. Mirrored React95
themes onto the Tailwind theme tokens so title bars and chrome repaint
the moment a theme is picked, and hydrated the preferences before the
first paint so the first frame already lands on the picked theme.

Wired the auto-lock, MCP and updater services to a broadcast that
reschedules or drops their state in place when their cadence or
endpoint changes. Replaced the PNG window control icons with themable
SVG glyphs so they follow the picked theme's title-bar text color.
…ded or removed

Adding or removing a C++ file invalidates compile_commands.json, and
until it is rewritten clangd has no entry for the new translation unit.
That rewrite was a batch script run by hand per project, so a new source
file meant dropping out of the editor before the language server could
see it at all.

Resolved the engine install in the app rather than leaning on a
per-project script: a launcher install comes off the per-version
registry key, a source build off the user's Builds key keyed by the GUID
a .uproject carries, macOS off the shared install directory, and any of
them can be overridden by hand for a layout we cannot discover. Read the
editor target off the project's own *Editor.Target.cs instead of
guessing it from the project name, then drove the engine's build tool
directly, passing -OutputDir so the database lands in the project rather
than in the engine install.

Scoped the watchers to the project's Source tree and to every plugin's,
at whatever depth the plugin sits, and pruned the generated trees the
build tool churns through so its own output cannot retrigger the watch.
Gated every event on a re-scan comparing the file set, so only a file
coming or going spends an invocation while an edit to one already in the
database spends nothing. Collapsed bursts through a settle timer so a
branch switch rewriting hundreds of files ends in a single run, and
coalesced a change landing mid-run onto one replay.

Left it off by default, with the toggle, the settle delay and the engine
override under Options > Services, a status chip carrying the running
step and the last outcome, and two Repository items for the fast path
and the full project-files regeneration. Kept the full one manual only
so an open IDE never has its solution rewritten underneath it, and
surfaced it as a hint on the chip whenever a build or plugin descriptor
moves.
Covered the pure half of the compile database watcher, which decides
whether a path counts toward the database and whether a re-scan moved
the file set. Both carry the cases that are easy to get wrong: a plugin
grouped a folder deeper than usual, a plugin descriptor sitting above
its own source tree, and the generated sources the build tool writes
under Intermediate, which look hand-written and must not count.

These are the first tests in the repo, dropped into the tests/unit
folder the vitest config already pointed at. Kept their helpers out of
the test files themselves under tests/lib/utils, reachable through a
@tests alias so nothing has to climb out with a relative import.
@yoratoni
yoratoni merged commit 6ebd8af into main Aug 13, 2026
2 checks passed
@github-actions

Copy link
Copy Markdown

🎉 This PR is included in version 1.7.0 🎉

The release is available on GitHub release

Your semantic-release bot 📦🚀

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant