aboutsummaryrefslogtreecommitdiff
path: root/src
Commit message (Collapse)AuthorAgeFilesLines
* tighten elliptical ring radiifeature/oplog-dependency-graphMtBntChvn2026-02-212-8/+8
| | | | | | base_radius: 70 → 50, ring_gap: 40 → 32 Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
* use elliptical rings for node expansion placementMtBntChvn2026-02-212-13/+26
| | | | | | | | | 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]>
* replace fireworks expansion with ripple (concentric rings) placementMtBntChvn2026-02-212-82/+127
| | | | | | | | | | | | | | | | 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]>
* focus view on expanded node and fit children after expansionMtBntChvn2026-02-201-0/+1
| | | | | | | 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]>
* reduce expansion spread for tighter graph layoutMtBntChvn2026-02-201-3/+3
| | | | | | | | 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]>
* prevent re-push on collapse and re-expandMtBntChvn2026-02-201-1/+3
| | | | | | | | 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]>
* fix collapsed nodes not re-expandableMtBntChvn2026-02-201-1/+1
| | | | | | | | | 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]>
* remove breadcrumb path dimming from graph nodesMtBntChvn2026-02-201-8/+0
| | | | | | | 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 shared GraphEngine from graph views, add filtering and searchMtBntChvn2026-02-206-4068/+3133
| | | | | | | | | | | | | | | | | | | | | | 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]>
* WIP: add real data mode to graph debug playgroundMtBntChvn2026-02-202-62/+2791
| | | | | | | | | | | | | | | | | | 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]>
* add uniform view navigation links to dashboard pagesMtBntChvn2026-02-188-111/+1762
| | | | | | | | | 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]>
* add interactive dependency graph view to dashboardMtBntChvn2026-02-185-0/+1192
| | | | | | | | 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.
* add selective request logging support to http.sys (#762)Stefan Boberg2026-02-183-39/+156
| | | | | * implemented selective request logging for http.sys for consistency with asio * fixed traversal of GetLogicalProcessorInformationEx to account for variable-sized records * also adds CPU usage metrics
* convert ZEN_ASSERTs to exception to handle corrupt data gracefully (#760)Dan Engelbrecht2026-02-182-13/+58
| | | * convert ZEN_ASSERTs to exception to handle corrupt data gracefully
* add http server root password protection (#757)Dan Engelbrecht2026-02-1719-166/+415
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - 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" ] } } } } }
* misc fixes brought over from sb/proto (#759)Stefan Boberg2026-02-177-31/+49
| | | | | | | | * `RwLock::WithSharedLock` and `RwLock::WithExclusiveLock` can now return a value (which is returned by the passed function) * Comma-separated logger specification now correctly deals with commas * `GetSystemMetrics` properly accounts for cores * cpr response formatter passes arguments in the right order * `HttpServerRequest::SetLogRequest` can be used to selectively log HTTP requests
* added ResetConsoleLog (#758)Stefan Boberg2026-02-163-0/+14
| | | also made sure log initialization calls it to ensure the console output format is retained even if the console logger was set up before logging is initialized
* add foundation for http password protection (#756)Dan Engelbrecht2026-02-133-0/+275
|
* spelling fixes (#755)Dan Engelbrecht2026-02-131-2/+2
|
* logging config move to zenutil (#754)Stefan Boberg2026-02-1317-99/+187
| | | made logging config options from zenserver available in zen CLI
* add IHttpRequestFilter to allow server implementation to filter/reject ↵Dan Engelbrecht2026-02-1310-96/+353
| | | | | requests (#753) * add IHttpRequestFilter to allow server implementation to filter/reject requests
* add IsLocalMachineRequest to HttpServerRequest (#749)Dan Engelbrecht2026-02-126-7/+78
| | | * add IsLocalMachineRequest to HttpServerRequest
* add simple http client tests (#751)Dan Engelbrecht2026-02-128-27/+202
| | | * add simple http client tests and fix run loop of http server to not rely on application quit
* reduce lock time for project store gc precache and gc validate (#750)Dan Engelbrecht2026-02-112-46/+261
| | | | | * add oplog snapshot function to allow reduction of held oplog locks * release project lock when precaching each oplog
* Fix formatting of stat pages (#748)Liam Mitchell2026-02-094-3/+10
| | | * Fix formatting of stat pages
* ported optimizations of MeasureVarUInt (#747)Dan Engelbrecht2026-02-061-2/+12
|
* fix target folder cleanup in builds download (#746)Dan Engelbrecht2026-02-061-12/+9
|
* only check file size for requested range in asio TransmitFileAsync in debug ↵Dan Engelbrecht2026-02-061-41/+63
| | | | | | mode (#745) * only check file size for requested range in asio TransmitFileAsync in debug mode * only do Transmit file for whole files
* Merge pull request #723 from ue-foundation/lm/service-interactive-sessionLiam Mitchell2026-02-044-40/+16
|\ | | | | Run Windows service as an interactive session, so we correctly respond to RequestApplicationExit when requested to stop by the service manager
| * Revert "Run Windows service as an interactive session, so we correctly ↵Liam Mitchell2026-02-031-2/+2
| | | | | | | | | | | | respond to RequestApplicationExit when requested to stop by the service manager" This reverts commit b380c1bac4b738f49cd412697e0a051402e6d171.
| * Respond to RequestApplicationExit() in http server implementations even in ↵Liam Mitchell2026-01-294-40/+16
| | | | | | | | non-interactive sessions
| * Run Windows service as an interactive session, so we correctly respond to ↵Liam Mitchell2026-01-191-2/+2
| | | | | | | | RequestApplicationExit when requested to stop by the service manager
* | use matcher over regex (#744)Dan Engelbrecht2026-02-046-18/+58
| | | | | | | | * replace http router AddPattern with AddMatcher * fix scrub logging
* | implemented chunking for TransmitFile path (#736)Stefan Boberg2026-02-041-58/+119
| | | | | | | | | | * implemented chunking for TransmitFile path, to ensure payloads exceeding the TransmitFile API limit of 4GB can be handled * also fixes similar issue with memory path
* | Merge pull request #724 from ue-foundation/lm/restrict-reads-to-projectLiam Mitchell2026-02-031-4/+32
|\ \ | | | | | | Restrict filesystem reads in snapshot to paths under project root
| * | Disallow external file reads from project with unset project rootsLiam Mitchell2026-01-291-5/+8
| | |
| * | Revert to previous behaviour for path checking in the presence of an empty ↵Liam Mitchell2026-01-281-9/+13
| | | | | | | | | | | | project root
| * | Use std::mismatch to compare paths and hoist project root canonicalization ↵Liam Mitchell2026-01-211-13/+18
| | | | | | | | | | | | out of loop
| * | Restrict filesystem reads in snapshot to paths under project rootLiam Mitchell2026-01-191-2/+18
| |/
* | reduce blocking in scrub (#743)Dan Engelbrecht2026-02-033-67/+100
| | | | | | * reduce held locks while performing scrub operation
* | add command line option for scrub timeslice (#742)Dan Engelbrecht2026-02-033-5/+23
| |
* | only disable backlog scheduling when downloaded payload is not on disk (#741)Dan Engelbrecht2026-02-022-7/+14
| |
* | reduce batch size for reads (#740)Dan Engelbrecht2026-01-294-5/+5
| | | | | | | | | | * reduce maximum size per chunk to read to reduce disk contention * increase timeout before warning on slow shut down of zenserver * reduce default window size for blockstore chunk iteration
* | don't do full cb-object validation on cache records when read from disk (#739)Dan Engelbrecht2026-01-291-10/+9
| | | | | | * don't do full cb-object validation on cache records when read from disk
* | restore missing healthinfo call (#737)Dan Engelbrecht2026-01-281-0/+5
| |
* | Avoid conversion from JSon to compact binary when querying for builds to ↵Dan Engelbrecht2026-01-286-18/+24
| | | | | | | | avoid integer vs float conversion issues (#735)
* | allow download specification for zen builds download (#734)Dan Engelbrecht2026-01-277-126/+323
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Feature: `zen builds download` now supports `--download-spec-path` to determine what content to download from a build - The unstructured format expects one line per file relative to the root with '/' as a path delimiter - The structured format uses JSon format and the `--download-spec-path` must have extension `.json` to enable structured input { "parts": { "default" : { "files": [ "foo/bar", "baz.exe" ] }, "symbols": { "files": [ "baz.pdb" ] } } }
* | avoid big ioworker backlog (#733)Dan Engelbrecht2026-01-263-39/+56
| | | | | | | | | | | | * add ability to override scheduling mode in ParallelWork * Don't increase buffering size when copying from local cache with --boost-worker-memory enabled * Rework scheduling writes of downloaded data to reduce memory usage
* | builds scanning cache (#727)v5.7.19-pre0Dan Engelbrecht2026-01-2310-199/+1110
| | | | | | | | - Feature: Added `--chunking-cache-path` option to `zen builds upload` and `zen builds diff` - Path to cache for chunking information of scanned files. Default is empty resulting in no caching
* | make sure new blocks generated by a part is accessible to following parts (#732)Dan Engelbrecht2026-01-232-81/+92
| |