Repository navigation
Tags: nodebox/nodebox
Tags
Document the pixel layer, and ship a document that uses it Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KmRim6UaWVrpa37gF429YF
Add desktop integration session handoff doc. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Sync viewer mode to rendered output type Add viewer availability state and automatic switching between visual/data modes based on the currently rendered node output. - Renderer state: introduce preferredGeometryViewerMode and visualViewerAvailable, persist visual availability in main hydration. - Sync logic: add syncViewerModeForRender to ui-slice to enable/disable visual mode and restore previous geometry preference when visual output returns. - UI: disable the Visual tab when visual viewer is unavailable and add test IDs/ARIA attributes to support e2e tests. - Data viewer: refactor DataViewer into GeometryTable/ValuesTable, add EmptyState, value formatting utilities and color swatches for value lists. - App: detect rendered child and renderResult to drive viewer mode syncing. - Rust (nodebox-electron): add output display string formatting (output_display_strings, format_data_row), minor JSON shaping and formatting refactors to include output values for the frontend. - Tests: add end-to-end tests for viewer mode transitions and a unit test suite for ui-slice behavior. These changes ensure non-graphical outputs force the data viewer and that returning geometry restores the previous visual preference.
Increase coordinate tolerance to 10.0 (1% of canvas) Cross-implementation transform chains accumulate floating-point differences up to ~6px. A tolerance of 10.0 on a 1000px canvas (1%) is visually imperceptible and appropriate for golden master comparison. Golden test score: 20/42 testable (48%), +Copy Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Handle macOS file-open events by injecting application:openFiles: int… …o winit's delegate. winit 0.30.12's NSApplicationDelegate doesn't implement application:openFiles:, so macOS shows an error when double-clicking .ndbx files. This uses raw ObjC runtime calls (class_addMethod) to inject the method into the delegate's class during the eframe creation callback — after the delegate exists but before Apple Events are dispatched. File paths are stored in a global Mutex and polled each frame in update(). Handles both cold start (file double-clicked to launch app) and warm start (file double-clicked while app is already running). No new crate dependencies. https://claude.ai/code/session_01NXut6FX3rsrwY1mDyjUadn
Switch theme from Tailwind Slate to Zinc color palette
Add GUI screenshot tests for visual regression testing Enable egui_kittest snapshot + wgpu features and add 11 screenshot tests covering parameter panels, network view, menus, dialogs, view options, toolbar controls, and node selection. Baseline snapshots are generated via lavapipe (software Vulkan) and stored in tests/snapshots/. Run UPDATE_SNAPSHOTS=true cargo test to regenerate baselines after intentional UI changes. https://claude.ai/code/session_01GGwHMrAJCeG9Lff5mWv75t
Add E2E GUI tests for the Rust/egui GUI Two tiers of E2E tests that simulate complete user workflows: 1. State-level workflow tests (e2e_workflow_tests.rs) — 9 tests exercising AppState + evaluate_network: create/render/delete nodes, multi-node pipelines, undo/redo, parameter changes, save/load round-trips, and connection cleanup. 2. App-level E2E tests (app_e2e_tests.rs) — 6 tests using NodeBoxApp directly with update_for_testing() for full frame-cycle simulation including change detection, history management, and evaluation. Also: - Remove #[cfg(test)] from NodeBoxApp test constructors so they're available from integration tests - Add rust-test CI job running cargo test --no-default-features https://claude.ai/code/session_01DgqWM7ChctkRrvFVA6LMsx
Add golden SVG test generation for node implementations
- Create comprehensive Java test (CoreVectorFunctionsTest) that renders all
core vector functions to SVG for comparison
- Create Rust golden file generator (golden_files.rs) that renders all
nodebox-ops nodes to SVG
- Add nodebox-ops as dev dependency for nodebox-svg examples
- Both generators produce comparable SVG output for:
- Generators: ellipse, rect, line, arc, grid, polygon, star, quad_curve
- Filters: align, colorize, copy, fit, group, skew, snap, translate,
scale, rotate, reflect, wiggle, stack, point_on_path
- Complex examples: spiral, radial_pattern, grid_of_shapes
All nodebox-core, nodebox-ops, nodebox-svg tests pass.
https://claude.ai/code/session_01K8qMt26WPSaTg52d1gJcSH
PreviousNext