Added
serverVersionin context pack —get_context_packnow returnsserverVersion: stringpopulated from theVERSIONconstant. Agents compare it against the codebase version file at boot without a separateGET /api/versionHTTP call.
Fixed
Toast colors — success toasts (comment added, task updated, etc.) were showing red because
showToastaccepted only booleans but callers passed"success"or"error"strings (both truthy). Function now accepts both boolean and string forms..hiddenvsdisplayconflicts — batch action bar, Eisenhower grid, and MoSCoW grid CSS rules setdisplay: flex/gridunconditionally, overriding the.hiddenutility class. Fixed with:not(.hidden)selectors sodisplayonly applies when the element is visible. No!importantneeded.Section jump bar — moved out of the filter header div so
position: stickytakes effect while scrolling a long task list.Hide completed tasks — toggling the “Incomplete” filter or enabling “hide completed after 0 days” now removes the completed task row from the DOM immediately via
updateInView, not only on the next full re-render.Task list scroll jump — list container
minHeightis pinned to current height before clearinginnerHTML, preventing layout collapse during re-renders. Scroll position is restored atomically in the samerequestAnimationFrame.Note click-to-edit — single click on note content no longer enters edit mode. Edit now requires a double-click or the explicit Edit button.
Toast notifications — error toasts now use amber/warning color instead of red (less alarming for non-fatal errors). Success toasts show a green checkmark prefix; error toasts show an amber warning prefix. Slide-in easing switched to
cubic-bezier(0.16,1,0.3,1)for a snappier feel. Rapid successive toasts update the existing element in-place instead of remove+recreate, eliminating flicker during batch operations. Error duration corrected to 5 s (was 4.5 s).Portfolio scroll from global search — clicking a portfolio item in the global search (Cmd+K) now scrolls to that project after the portfolio view loads. Previously the scroll was never attempted because
portfolioView.load()is async and the view had not rendered by the time any timeout fired._pendingScrollIdis set on the portfolio view beforeswitchViewsorender()scrolls to the target element as soon as it is in the DOM.C4 diagram drilldown — context, container, and component level boxes are now always clickable to drill down into. Previously, a component with no children yet would silently ignore clicks because
canBeDrilledDownreturned false, making it impossible to add children through the UI. Now onlycodelevel components (the leaf level) are non-drillable.Milestone filter and batch edit dropdowns — both the list view filter dropdown and the batch edit panel milestone select were always empty. They read from
projectConfig.milestoneswhich does not exist in the config type. Switched tothis.tm.milestones(the array loaded from the milestones API at startup).Batch mode click interference — parent task rows had
draggable="true"which could intercept clicks intended for batch selection. Entering batch mode now disables dragging on all task rows; exiting restores the original state.