feat: merge feature branch — context menus, UX overhaul, Gantt interactivity, graph improvements#2
Merged
neuron-tech-ai merged 319 commits intoMay 11, 2026
Conversation
…r available for actions.
…commands programmatically.
…, move the plan Id to SettingService.
…cessing and loading.
… updated when inputs are empty. Reactivate the command line project.
…rojectPlanManagerViewModel and CoreViewModel since we now have some cross communication between the two via the MainViewModel).
…ings file, and upgrade appsettings file to v0.6.0. Also, fix small bug in appsettings upgrade scripts.
…ntain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
…ntain permissions' Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Resource chart: - Right-click context menu now includes ShowToday and ShowMilestones checkbox toggles, matching the Gantt chart convention - Dropdown submenus for AllocationMode, ScheduleMode, and DisplayStyle with Radio button selection via ChangeAllocationModeCommand, ChangeScheduleModeCommand, and ChangeDisplayStyleCommand - Sidebar ScrollViewer changed from VerticalScrollBarVisibility=Hidden to Auto so options are scrollable when the panel is constrained Scenario chart: - Right-click context menu now includes ShowNames checkbox toggle - Dropdown submenus for TrackedMetricXAxis, TrackedMetricYAxis, and CurveFittingType with Radio button selection via dedicated commands - Sidebar ScrollViewer changed to Auto — required because TrackedMetrics has 34 values and the options panel must be scrollable - All 34 TrackedMetrics values enumerated in both X/Y axis submenus Both charts follow the exact same convention as the Gantt chart: EnumToBoolConverter for Radio checked state, ToggleType=Radio on enum submenus, ToggleType=CheckBox on boolean options, Separator before SaveAs/Reset, ICommand per enum type with async error handling.
- Consistent typography: SemiBold for section labels, LineHeight 18 on TextBlock - Spacing rhythm: 8px margin on panels (multiples of 4), 12px between form groups - Toolbar/status bar: subtle top border separating status bar from content - Side panels: left border divider for chart control panels (ResourceChart, ScenarioChart, ResourceSettings) - Compact form labels: 11px SemiBold at 0.65 opacity as field captions; 12px values at full opacity - ToggleSwitch alignment: left-aligned in side panels for visual consistency - DataGrid column headers: SemiBold weight, 28px min height for clarity - Button padding: 8x4 for better click target and visual rhythm - ComboBox: explicit MinHeight 25 and Padding 6,3 for uniform sizing - Editable cell palette: refined warm cream/amber scheme (Light); clearly distinct states - GridSplitter in TrackingView: matches theme border color instead of harsh black - MetricView values: SemiBold (down from Bold) for softer emphasis - About dialog header: SemiBold for cleaner weight - Error border: slightly softer red (#DC2626) in MainView
ScottPlot's AvaPlot has a built-in right-click menu. After clearing it Menu?.Clear() was followed by Menu?.Add() which re-populated it, causing both the ScottPlot menu and the Avalonia ContextMenu to open simultaneously. Fix: remove the Add() calls. Save As and Reset are already present in the Avalonia ContextMenu on the ContentControl, so no functionality is lost.
- Comprehensive design token system (ZBackground, ZSurface, ZAccent, etc.) with full Light and Dark theme support in App.axaml ThemeDictionaries - Base font size 12→13px across TextBlock, Label, Button, ComboBox, MenuItem - MainView: remove window margin and outer border; redesigned menu bar (36px, white bg, bottom border); error state replaced by subtle 3px top accent bar; cleaner 30px status bar with ZStatusBar background and muted 11px labels - ZametekTheme.axaml: dedicated Styles file with overrides for DataGrid, DataGridColumnHeader, Dock tabs (TabItem), MenuItem, Button, ComboBox, TextBox, DatePicker, ToggleSwitch, and section-header label class - ResourceChartManagerView and ScenarioChartManagerView side panels: replaced nested DockPanel stacks with StackPanel, removed hardcoded BorderBrush/Height values, switched to ZBorder/ZSurface tokens, section-header label class - GanttChartManagerView: removed outer Margin="7" - ActivitiesManagerView: removed outer margin, changed grid lines to Horizontal - Dark mode palette aligned to same design system (navy accent, dark surfaces)
…ound overrides - Remove Z* brush static fallbacks from outside ThemeDictionaries in App.axaml; only ThemeDictionary Light/Dark entries now define theme-sensitive colors so Avalonia's resource lookup correctly switches values on theme change - Remove global Foreground setters on TextBlock/SelectableTextBlock/Label in ZametekTheme.axaml to stop fighting Semi.Avalonia's per-component dark-mode text theming - Remove Background/Foreground from DataGrid and DataGridColumnHeader styles; let Semi handle theme-aware grid coloring - Fix hardcoded BorderBrush="Gray" in AddNodeTagView and NodeNameView; replace with DynamicResource ZBorder so borders render correctly in dark mode
…mand palette - Replace Dock.Avalonia free-floating layout with fixed opinionated shell - Left sidebar: 52px icon-based navigation between all views (Activities+Gantt, Resources, Scenario, Arrow Graph, Vertex Graph, Tracking) - Home view: Activities + Gantt side-by-side with live GridSplitter (40/60 split) - Auto-compile already enabled by default for live feedback loop - Toolbar: full menu bar + quick-action buttons (Add Activity, Compile, Dates, Cost) + Ctrl+K command palette trigger badge - Stats bar: project title + compilation status (OK / Stale / Errors) always visible - Command palette: Ctrl+K overlay with searchable list of 22 commands, Escape to close, auto-closes after execution - ShellView enum in Common.ProjectPlan; ActiveShellView + IsCommandPaletteOpen on IMainViewModel + MainViewModel; panel VM properties exposed on MainViewModel for clean AXAML binding without ViewLocator indirection in HomeView - IsShellViewMatch converter added to EnumConverters for sidebar active-state binding Pre-existing test failure (Converter_Given_v0_2_1_Input_Then_ConvertsTo_v0_3_0) is unrelated to this change and fails on the unmodified branch.
…treams, graph settings, holidays, metrics, earned value, project scenario, output
…fix arrowhead indicator size; wire SelectActivity navigation for graph click-to-navigate
…moji shortcuts - Add Activity / Insert / Milestone buttons now visible in activities panel toolbar - Remove + Activity and emoji shortcut buttons from main titlebar (was cluttering menu area) - Replace MsBox confirmation dialog with custom native Avalonia window (no more blue MsBox buttons) - Keep Compile shortcut button in toolbar only
…lot sticky pan on Gantt drag
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merges
feature/context-menus-resource-scenario-chartsintomasteron the fork.This branch is also open as PR countincognito#117 to the upstream repo. Merging here keeps the fork's master up to date with all active feature work.
What's included