Skip to content

Commit cc19bd3

Browse files
committed
Release v0.84.38 runtime cache layout
1 parent b222b7d commit cc19bd3

16 files changed

Lines changed: 197 additions & 70 deletions

.gitignore

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,12 @@ Tools/epoch_install.log
6767
Tools/epoch_install.log
6868
Engine/examples/ConsoleApplication1/atlas_dump/
6969
Engine/examples/ConsoleApplication1/atlas_dump_backup/
70+
cache/updates/
71+
cache/packages/
72+
cache/atlases/
73+
Engine/cache/updates/
74+
Engine/cache/packages/
75+
Engine/cache/atlases/
7076

7177
Engine/bin/
7278
Engine/Bin/

AGENTS.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,11 @@
2323
task is explicitly about those artifacts. Common generated/local paths include
2424
`build/`, `x64/`, `Engine/Bin/`, `Engine/build/`, `Engine/built/`, and
2525
runtime logs/captures.
26+
- Runtime-created cache buckets are executable-local: updater work, temporary
27+
probes, extraction state, and managed helper tools belong in `cache/updates/`;
28+
downloaded package archives belong in `cache/packages/`; generated/runtime
29+
atlases belong in `cache/atlases/`. These are disposable local artifacts, not
30+
public release payload and not tracked source.
2631
- Keep `addons/` local/offline. It contains extra starter projects and research
2732
imports that may later be reviewed into core Epoch, but it must not be added
2833
to the online repo by default.

Changes/changelog.txt

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,29 @@
11
# Epoch Changelog
22

3+
## [Unreleased]
4+
5+
## [v0.84.38]
6+
- Bumped the active source and stable release line to `v0.84.38` for the
7+
executable-local cache and command-menu stability release.
8+
- Fixed a remaining command/dropdown menu flicker path by keeping OpenGL
9+
top-layer menu sprites out of the normal GUI draw queue. OpenGL now draws
10+
those sprites only in the explicit top-layer replay pass that sits above the
11+
scene viewport.
12+
- Top toolbar dropdowns now close when the operator clicks outside the active
13+
menu button and dropdown bounds.
14+
- Operator eye-test confirmed the Windows Release editor is stable with the
15+
command menu open after this fix.
16+
- Updater downloads, source-update work, temporary scripts/log probes, and
17+
managed helper tools now stay under executable-local `cache/updates/`; runtime
18+
release packages download under executable-local `cache/packages/` instead of
19+
`%LOCALAPPDATA%`, the system temp directory, or loose executable-root update
20+
artifacts.
21+
- The updater's Windows runtime fallback now matches the public
22+
`EpochEditor.exe` product name while still accepting legacy
23+
`ConsoleApplication1.exe` source-build outputs during source-update probes.
24+
- Documented `cache/atlases/` as the runtime-generated/generated-atlas home so
25+
created atlases do not pollute source asset trees or public release payloads.
26+
327
## [v0.84.37]
428
- Bumped the active source and stable release line to `v0.84.37` for the
529
corrected production runtime package refresh.

Changes/roadmap.md

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,12 @@ Build Epoch into one professional, engine-owned runtime and editor shell for:
8686
duplicated `x64` compatibility folders, source-shaped `Engine/` folders,
8787
headless smoke binaries, and `ConsoleApplication1.exe` aliases are not public
8888
runtime payload.
89+
- Runtime-created data stays executable-local under `cache/`: updater work,
90+
temporary update probes, managed tools, and extraction state live under
91+
`cache/updates/`; downloaded runtime/source packages live under
92+
`cache/packages/`; generated/runtime atlases live under `cache/atlases/`.
93+
None of these cache buckets belong in public release payloads or tracked
94+
source.
8995
- The updater must resolve the active install type before replacing files:
9096
- packaged Windows runtime: install the newest matching `.zip` runtime asset
9197
- packaged Linux/WSL runtime: install the newest matching `.tar.gz` runtime asset
@@ -295,7 +301,8 @@ does not claim renderer, editor, atlas, or source-tree migration work is done.
295301
- Later cleanup must classify source atlas assets, generated atlases,
296302
runtime/cache atlases, and test/demo atlases.
297303
- Source atlases belong under the canonical asset tree.
298-
- Generated/cache atlases must not pollute source directories.
304+
- Generated/cache atlases must be written under executable-local
305+
`cache/atlases/` and must not pollute source directories.
299306
- Generated/cache atlases must be ignored.
300307
- Editor-generated graph/runtime surfaces must use the dedicated runtime-surface
301308
atlas and must not be packed into the small built-in GUI skin atlas.
@@ -334,7 +341,8 @@ does not claim renderer, editor, atlas, or source-tree migration work is done.
334341
resolver-only cleanup pass.
335342
- Atlas state is mixed but classified: source/demo assets live under the
336343
example/canonical asset trees, tracked prebaked atlases live under
337-
`Engine/examples/ConsoleApplication1/atlases`, generated dump output under
344+
`Engine/examples/ConsoleApplication1/atlases`, generated/runtime atlas output
345+
belongs under executable-local `cache/atlases/`, legacy dump output under
338346
`Engine/examples/ConsoleApplication1/atlas_dump` is ignored, and runtime
339347
copies under `x64/` are build output.
340348
- MSVC project/filter files were only touched for newly added files in this
@@ -598,6 +606,13 @@ engine shape and should be treated as starting truth for the next passes:
598606
`directx.gui.cpp`. Remaining DirectX work is renderer-resource parity, real
599607
depth/resource ownership, and any operator-observed GUI flicker in the D3D11
600608
pane, not basic context creation.
609+
- `v0.84.38` is the cache/update and command-menu stability release line:
610+
OpenGL top-layer menu sprites are replay-only, toolbar dropdowns close on
611+
outside click, updater work/tools/temp extraction stay under executable-local
612+
`cache/updates/`, downloaded packages stay under `cache/packages/`, and
613+
generated atlases are reserved for `cache/atlases/`. Windows Release and WSL
614+
Clang release build/CTest lanes are required proof before publishing the new
615+
runtime packages.
601616
- Canvas2D projection ownership has moved into `render.preview_grid` via one
602617
shared projection helper. Editor picking, OpenGL, DirectX, Raylib, SDL, SFML,
603618
Vulkan, and the software preview fallback now consume the same Canvas2D
@@ -829,8 +844,10 @@ engine shape and should be treated as starting truth for the next passes:
829844
- finish drag/drop and docking/popup behavior as first-class editor systems,
830845
not per-backend patches
831846
- keep GUI menu rendering in the OpenGL flicker repro matrix; menu interaction
832-
currently makes the issue easier to trigger and should stay documented until
833-
root cause is fixed
847+
remains an acceptance test even after the OpenGL top-layer replay-only fix
848+
because dropdowns, modals, and command windows must stay scene-over without
849+
slow flip/flicker regressions. Windows Release operator eye-test confirmed
850+
the first replay-only command-menu fix as stable.
834851
- improve project, script, AI, systems, and output surfaces until the shell
835852
reads as a professional editor rather than a debug console
836853
- keep the new script/file/asset workspaces usable as visible AI iteration

Engine/docs/build/local_build_scripts_and_release_packaging.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,12 @@ When a pass changes runtime, editor, backend, AI, or capture behavior:
7878
- close live windows after validation
7979
- avoid disposable runs from bad folders that leave stray logs or captures in
8080
the wrong place
81+
- keep updater downloads, extraction work, temporary probes, and managed helper
82+
tools under the runtime's executable-local `cache/updates/` folder; downloaded
83+
package archives belong in `cache/packages/`, and generated atlases belong in
84+
`cache/atlases/`
85+
- do not include `cache/updates/`, `cache/packages/`, or `cache/atlases/` in
86+
public runtime packages
8187
- when the README or other public-facing markdown changes, verify the rendered
8288
GitHub result after push instead of trusting the raw file text alone
8389

Engine/docs/engine/gui_library_architecture.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ viewport should wrap their window draw in `gui::begin_top_layer()` /
4040
`gui::end_top_layer()` so the renderer can replay only those sprites after the
4141
scene pass. Do not rely on menu creation order alone for z-order.
4242

43+
On OpenGL, top-layer sprites are replay-only. They must not also be queued in
44+
the normal deferred GUI batch, or command menus can slowly flip between
45+
scene-under and scene-over composition while a dropdown is open. Backends that
46+
do not yet consume the explicit top-layer replay path keep their existing
47+
normal-batch behavior until their presenter owns a matching replay pass.
48+
4349
## Intended Layers
4450

4551
- Primitive widgets: labels, buttons, connected tabs, dropdown/select boxes,

Engine/docs/engine/runtime_and_editor_workflows.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,12 @@ the same engine-owned path.
3434
- source checkout installs still use the same binary-first rule; only after
3535
packaged parity or absence of a newer package should they rebuild from the
3636
GitHub source snapshot using the platform build path
37+
- runtime-created update/package/cache data is app-local: updater work,
38+
temporary probes, extraction folders, and helper tools live under
39+
`cache/updates/`; downloaded release/source packages live under
40+
`cache/packages/`; generated/runtime atlases live under `cache/atlases/`.
41+
These folders are disposable runtime state, not public release payload and not
42+
tracked source.
3743
- OpenGL editor composition is scene-first: draw the scene preview, drain
3844
queued render work, then render the latest persistent GUI batch. The
3945
persistent batch is required because the OpenGL render thread can run between

Engine/examples/ConsoleApplication1/assets/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,5 +21,5 @@ This folder holds the tracked source images used by the example runtime.
2121

2222
- Prebaked atlas outputs do not live in this folder. They belong in
2323
`../atlases/`.
24-
- Disposable atlas debug dumps do not live in this folder. They belong in the
25-
ignored local dump paths beside the example runtime.
24+
- Disposable generated/runtime atlases do not live in this folder. They belong
25+
in executable-local `cache/atlases/` and remain ignored.

Engine/examples/ConsoleApplication1/atlases/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,8 @@ This folder is the tracked prebaked atlas output for the example runtime.
77
- Keep source images under `../assets/`.
88
- Keep tracked prebaked atlases here when they are needed so new clones do not
99
have to regenerate everything before the example runtime is usable.
10-
- Keep disposable local dump/debug output out of git.
10+
- Keep disposable generated/runtime atlas output under executable-local
11+
`cache/atlases/` and out of git.
1112

1213
## Not source of truth
1314

Engine/modules/engine.version.ixx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ module;
5151
#if defined(EPOCH_OVERRIDE_VERSION_REVISION)
5252
# define EPOCH_VERSION_REVISION_VALUE EPOCH_OVERRIDE_VERSION_REVISION
5353
#else
54-
# define EPOCH_VERSION_REVISION_VALUE 37
54+
# define EPOCH_VERSION_REVISION_VALUE 38
5555
#endif
5656

5757
#if defined(EPOCH_OVERRIDE_WINDOWS_PACKAGED_VERSION_MAJOR)

0 commit comments

Comments
 (0)