| Commit message (Collapse) | Author | Age | Files | Lines |
| |
|
|
|
|
| |
base_radius: 70 → 50, ring_gap: 40 → 32
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
| |
Ripple rings are now elliptical (2:1 horizontal-to-vertical ratio)
to match the rectangular shape of nodes. This spreads children wider
horizontally where nodes need more room, and keeps them tighter
vertically where nodes are slim.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Children are now placed in concentric rings around the expanded node
like ripples in water, instead of a single arc at a large radius.
Ring placement:
- base_radius=70, ring_gap=40, min_node_gap=45
- Each ring fits floor(arc_length / min_gap) nodes
- Inner rings fill first, outer rings hold more nodes
- Semi-circle for non-root, full circle for root
Push-away reduced from 200+4n to a fixed 80px since the tight
rings no longer need a large clearance.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
| |
Call fit_subtree(node) after layout completes in expand_node so the
view zooms to show the expanded node and all its new children.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
| |
Push distance: 400+6n → 200+4n
Arc radius: 200+4n → 120+2.5n
Jitter: 40 → 20
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
| |
Mark nodes with _was_pushed after the first push-away from parent.
On subsequent expand after collapse, the node stays in place instead
of being pushed further away each time.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
| |
mark_has_deps was setting has_deps=false on ALL nodes not in the
check set, including previously collapsed nodes that have deps.
The click guard (has_deps !== false) then blocked re-expansion.
Fix: only set has_deps=false on nodes not yet checked (undefined).
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
| |
The breadcrumb is for navigation only — selecting a path segment
navigates the tree browser panel, it should not dim graph nodes.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Extract ~2000-line GraphEngine class from duplicated code across
graph-debug-playground.js, graph.js, and minigraph.js. All three
consumers now share: QuadTree layout, viewport culling, text LOD,
context menu (collapse/re-expand/fit subtree/trace to root/pin),
compression fill, descendant dragging, overlap removal, loading pulse.
New features added to the shared engine:
- Compression slider: arrow beneath the gradient scale filters nodes
by compression ratio with smooth fade
- Edge-type node hiding: toggling off an edge type fades out nodes
that become unreachable from roots
- Graph search overlay (Ctrl+F / find button): highlights matches,
dims non-matching nodes, navigate with Enter/Shift+Enter
- Quick-filter pills: leaves, unresolved, large (top 20% by size)
- Breadcrumb path filter: clickable path segments dim non-matching
nodes, synced with the right-panel tree browser
- Improved node appearance: slimmer, rounder, border-based styling
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Connect the graph debug playground to live zenstore API data via
project/oplog URL parameters. Builds a path prefix tree from the
indexer as the entry point for navigating large oplogs (1M+ entries).
- dual-mode: no params = existing synthetic mode, with params = real data
- prefix tree built from indexer.enum_all(), shown as group nodes
- group nodes expand into sub-groups or individual entries
- entry nodes fetch deps via CBO API with legacy fallback
- dep IDs resolved via indexer.lookup_id() with hex fallback
- async expansion with loading pulse animation
- has_deps pre-check for children (same pattern as graph.js)
Still TODO: testing with live data, edge cases, polish.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
|
| |
Adds list/tree/graph links to the section header of the oplog,
tree, and graph pages. Links are displayed in a row at the top
right, on the same line as the section heading, with the
border extending under them.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
|
| |
|
|
|
|
|
|
| |
Canvas-based force-directed graph for exploring package dependencies.
Nodes show short names with full path on hover tooltip (with size/dep info).
Supports pan, zoom, node drag, click-to-expand, double-click to promote
nodes to root, right-click to demote. Includes side panel with browsable
entry tree and filter. Linked from project page and entry detail page.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
- Feature: Added `--security-config-path` option to zenserver to configure security settings
- Expects a path to a .json file
- Default is an empty path resulting in no extra security settings and legacy behavior
- Current support is a top level filter of incoming http requests restricted to the `password` type
- `password` type will check the `Authorization` header and match it to the selected authorization strategy
- Currently the security settings is very basic and configured to a fixed username+password at startup
{
"http" {
"root": {
"filter": {
"type": "password",
"config": {
"password": {
"username": "<username>",
"password": "<password>"
},
"protect-machine-local-requests": false,
"unprotected-uris": [
"/health/",
"/health/info",
"/health/version"
]
}
}
}
}
}
|
| |
|
| |
made logging config options from zenserver available in zen CLI
|
| |
|
| |
* Fix formatting of stat pages
|
| |
|
|
| |
* replace http router AddPattern with AddMatcher
* fix scrub logging
|
| |\
| |
| | |
Restrict filesystem reads in snapshot to paths under project root
|
| | | |
|
| | |
| |
| |
| | |
project root
|
| | |
| |
| |
| | |
out of loop
|
| | | |
|
| | | |
|
| | | |
|
| | |
| |
| | |
* Fix incorrect oplog navigation symbols
|
| | |
| |
| |
| | |
* make sure we properly convert command line args for zenserver as well
* make sure we *add* wildcards/excludes in addition to defaults
|
| |/
|
|
|
| |
Initial implementation of zenserver "hub" mode. This is an experimental feature.
zenserver can be started in hub mode by specifying `hub` as the first argument to zenserver
|
| |
|
|
|
|
|
| |
* add system metrics output to top command
* removed unnecessary xmake directives
* file system API/comment tweaks
* fixed out-of-range access in httpserver test
* updated ZenServer base API to allow customization by mode
|
| |
|
|
|
|
|
| |
This PR brings over some changes made to avoid performing setup for otel instrumentation if we are not sending otel information anywhere anyway.
It also adds the ability to configure an OTLP endpoint on the command line using `--otlp-endpoint=<URI>`.
Bear in mind that OTLP support is still not officially supported so this should not be used in production at this stage.
|
| |
|
|
|
|
| |
string (#712)
* set utf8 locale, only set LC_CTYPE as we don't want to affect how decimal point or sorting orders are handled
* set language/region explicitly so we can use LC_ALL
|
| |
|
|
|
|
|
| |
This change primarily introduces improved logic for dealing with sending data from file references.
This is intended to reduce the amount of memory-mapping we end up doing when sending data from files. Windows now uses `TransmitFile` to send file data more efficiently using kernel-side I/O, but Linux/Mac basically behaves as before since they don't offer any true async file I/O support via asio. This should be implemented separately using a background I/O thread pool.
This PR also includes improved memory management for http/asio with reduced allocation counts, and a fix for a potential use-after-free in very high load scenarios.
|
| |
|
|
| |
sending error to Sentry (#705)
|
| |
|
| |
* Avoid rendering user text input as HTML
|
| |
|
|
| |
When changing the default limit-overwrite behavior, a unit test surfaced a bug where an put of data with overwrite cache policy would not get propagated via zen's built-in upstream mechanism with a matching overwrite cache policy to the upstream. This change ensures that it does and leaves the unit test configured to exercise this scenario.
|
| | |
|
| |
|
| |
* changed some logging string so they don't get caught in CI logging
|
| |
|
|
|
|
|
|
|
|
| |
- Feature: `zen oplog-export`, `zen oplog-import` and `zen oplog-download` now has options to boost workers
- `--boost-worker-count` - Increase the number of worker threads - may cause computer to be less responsive
- `--boost-worker-memory` - Increase the limit where we write downloaded data to temporary storage to conserve space - may cause computer to be less responsive due to high memory usage
- `--boost-workers` - Enables both 'boost-worker-count' and 'boost-worker-memory' - may cause computer to be less responsive
- Improvement: Refactored boost options for `zen builds` operations `upload`, `download`, `diff`, `prime-cache`, `fetch-blob` and `validate-part`
- `--boost-worker-count` - Increase the number of worker threads - may cause computer to be less responsive
- `--boost-worker-memory` - Increase the limit where we write downloaded data to temporary storage to conserve space - may cause computer to be less responsive due to high memory usage
- `--boost-workers` - Enables both 'boost-worker-count' and 'boost-worker-memory' - may cause computer to be less responsive
|
| |
|
|
|
|
|
|
| |
this change adds OTEL tracing to a few places
* Top-level application lifecycle (config/init/cleanup, main loop)
* http.sys requests
it also brings some otlptrace optimizations and dynamic configuration of tracing. OTLP tracing is currently always disabled
|
| | |
|
| | |
|
| |
|
|
|
| |
- Improvement: Deeper validation of data when scrub is activated (cas/cache/project)
- Improvement: Enabled more multi threading when running scrub operations
- Improvement: Added means to force a scrub operation at startup with a new release using ZEN_DATA_FORCE_SCRUB_VERSION variable in xmake.lua
|
| |
|
|
|
| |
* Eliminate spurious `FlushFileBuffers` calls on Windows by tracking writes
* Make cache log file creation optional
|
| |
|
|
|
|
|
|
|
|
|
| |
* Save references to the project and zcache tables
* Add an attribute to table rows with the actionable project/namespace id
* Drop-all option for projects and cache namespaces
* Updated frontend .zip archive
* Edited changelog
|
| |
|
|
|
|
|
|
|
|
|
| |
* Method to get plain text from an async request
* Include server's version on the dashboard start page
* Same paragraph style as the rest of the method
* Updated changelog
* Update frontend archive
|
| |
|
| |
* add option to enable/disable upload to builds cache
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This change removes our dependency on vcpkg for package management, in favour of bringing some code in-tree in the `thirdparty` folder as well as using the xmake build-in package management feature. For the latter, all the package definitions are maintained in the zen repo itself, in the `repo` folder.
It should now also be easier to build the project as it will no longer depend on having the right version of vcpkg installed, which has been a common problem for new people coming in to the codebase. Now you should only need xmake to build.
* Bumps xmake requirement on github runners to 2.9.9 to resolve an issue where xmake on Windows invokes cmake with `v144` toolchain which does not exist
* BLAKE3 is now in-tree at `thirdparty/blake3`
* cpr is now in-tree at `thirdparty/cpr`
* cxxopts is now in-tree at `thirdparty/cxxopts`
* fmt is now in-tree at `thirdparty/fmt`
* robin-map is now in-tree at `thirdparty/robin-map`
* ryml is now in-tree at `thirdparty/ryml`
* sol2 is now in-tree at `thirdparty/sol2`
* spdlog is now in-tree at `thirdparty/spdlog`
* utfcpp is now in-tree at `thirdparty/utfcpp`
* xmake package repo definitions is in `repo`
* implemented support for sanitizers. ASAN is supported on windows, TSAN, UBSAN, MSAN etc are supported on Linux/MacOS though I have not yet tested it extensively on MacOS
* the zencore encryption implementation also now supports using mbedTLS which is used on MacOS, though for now we still use openssl on Linux
* crashpad
* bumps libcurl to 8.11.0 (from 8.8.0) which should address a rare build upload bug
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
* gcc: avoid using memset on nontrivial struct
* redundant `return std::move`
* fixed various compilation issues flagged by gcc
* fix issue in xmake.lua detecting whether we are building with the UE toolchain or not
* add GCC ignore -Wundef (comment is inaccurate)
* remove redundant std::move
* don't catch exceptions by value
* unreferenced variables
* initialize "by the book" instead of memset
* remove unused exception reference
* add #include <cstring> to fix gcc build
* explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation
* remove unreferenced variable
* eliminate redundant `std::move` which gcc complains about
* fix gcc compilation by including <cstring>
* tag unreferenced variable to fix gcc compilation
* fixes for various cases of naming members the same as their type
|
| |
|
| |
previously, a null reference would be passed into ProjectStore constructor
|
| |
|
|
|
|
| |
* make sure the correct `UE_WITH_TRACE` conditional is used to enable/disable support code as appropriate
* fixed some accidental `int32`, `int64` et al usage, due to typedefs leaking through from trace header
with this fix, it is now possible to build with `--zentrace=no` again
|
| |
|
|
|
|
| |
* added cpr 1.10.5 in-tree to allow updates to vcpkg without breaking the build
* added asio 1.29.0 in-tree to remove one more vcpkg dependency
* bumped vcpkg to 2024.06.15 to address failure to build due to use of deprecated binaries in vcpkg (404 error: `https://mirror.msys2.org/mingw/mingw64/mingw-w64-x86_64-pkgconf-1~2.1.0-1-any.pkg.tar.zst` during build)
|
| |
|
| |
* add host discovery and zen cache support for oplog import
|