feat(web): add full feature management to inventory page#557
Merged
Conversation
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
…ment Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
…adata Extend FeatureTreeRow with nodeState, hasChildren, and hasOpenPr fields for the upcoming inventory row actions feature. Update getFeatureTreeData() to fetch agent runs in parallel and compute derived state per row using the existing deriveNodeState() function. Add string token alias for ListAgentRunsUseCase in the DI container for web route access. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
…ventory table Create FEATURE_ROW_ACTIONS_CONFIG mapping all 9 FeatureNodeState values to available actions with icons and confirmation flags. Build FeatureRowActions component with shadcn/ui DropdownMenu that renders state-appropriate menu items. Includes unit tests for config and component, plus Storybook stories covering all states. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Add a frozen right-edge actions column to the FeatureTreeTable with a custom Tabulator formatter that creates portal target divs with data-feature-id attributes for each non-group-header row. The column is 48px fixed width, non-sortable, non-resizable. Expose onTableRender callback for portal manager integration via Tabulator renderComplete/tableBuilt events. Export buildColumns and actionsColumnFormatter for testability. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Create FeatureRowActionsManager component that discovers portal target containers ([data-feature-id] elements) in the Tabulator table DOM and renders FeatureRowActions into each via createPortal. Supports grouped/tree data by recursively collecting features from _children. Reconciles portal map when tableContainer ref changes. Export from index.ts barrel. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
… row actions Connect all six server actions (start, stop, resume, archive, unarchive, delete) to the inventory table row actions via FeatureRowActionsManager. Add per-row in-flight state tracking with Set<string>, toast notifications via sonner, and router.refresh() after mutations. Wire DeleteFeatureDialog for delete confirmation with hasChildren/hasOpenPr data, and AlertDialog for archive confirmation matching the canvas pattern. Update FeatureRowActions to call onArchive/onDelete callbacks directly instead of early-returning, since confirmation is now handled at the page level. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Add tests for mixed-state feature rendering, in-flight loading state isolation, transient state exclusion, and nested feature portal discovery. Verify existing tests pass with extended FeatureTreeRow type. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
evidence includes app screenshots, storybook screenshots, test output, and typecheck results for all 11 tasks in spec 089. also fixes redundant overflow hidden in tabulator css that prevented frozen column rendering. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Replace old daemon-sourced screenshots with correct app-level screenshots from the feature branch dev server showing the frozen actions column, dropdown menus with state-specific actions, and grouped-by-status view. Add per-task test output evidence for all 11 tasks covering unit tests, integration tests, and full suite verification (467 files, 6350 tests). Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
219fea5 to
ab7dd70
Compare
Contributor
Add (+) FAB to the inventory page with the same create actions as the control center: new feature, new project, add local repo, new application, adopt branch, and github import. The create feature drawer, new project dialog, and application builder overlay are rendered directly on the inventory page via modals/drawers so users never need to leave the table view. Server page extended to fetch workflow defaults and repository options needed by the create drawer. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
Collapse tree groups by default, add (+) button on repository group headers to create features for that repo, and add quick action buttons above the table for new project, new feature, add local repo, and new application. Passes repositoryPath through FeatureTreeRow for pre- populated create drawer. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
Resolve merge conflict in container.ts — accept main's refactored modular DI registration (registerRepositories, registerServices, etc.) replacing the old inline registration block. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
…up headers Register missing ListAgentRunsUseCase DI string token that caused a 500 error on the inventory page after the main merge. Add open IDE, terminal, folder, and start server action buttons to repository group headers in the inventory table via React portals. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
Portal managers used useCallback + tableContainer as the sole dependency for re-discovering portal targets. Since Tabulator passes the same container DOM element on every renderComplete event, React skipped the state update and portals remained attached to stale (destroyed) elements. Introduce a renderTick counter incremented on every Tabulator renderComplete/tableBuilt event to force portal re-discovery regardless of whether the container reference changed. Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
Contributor
blackpc
pushed a commit
that referenced
this pull request
Apr 26, 2026
# [1.194.0](v1.193.0...v1.194.0) (2026-04-26) ### Bug Fixes * **web:** add code-review flag to app-shell test fixtures ([#579](#579)) ([875f940](875f940)), closes [#568](#568) ### Features * **domain:** add ai-powered code review for pr analysis and github posting ([#568](#568)) ([32394f6](32394f6)) * **web:** add full feature management to inventory page ([#557](#557)) ([cbe4279](cbe4279)) * **web:** build-mode picker in create drawer + apps view locked to application ([#578](#578)) ([aefb435](aefb435)) * **web:** default to applications and split control center routing ([#577](#577)) ([9ef06f1](9ef06f1)) Co-Authored-By: Shep Bot <shep-agent@users.noreply.github.com>
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.
Summary
ListAgentRunsUseCaseDI string token caused a 500 error when loading the features pageChanges
register-use-cases.ts— Added missingListAgentRunsUseCaseDI string token alias (root cause of the 500 error)get-feature-tree-data.ts— Extended to include_repositoryIdon feature rows; repository lookup now includes id for repo actionsfeature-tree-table.tsx— Added_repositoryIdfield toFeatureTreeRow; group header name formatter now renders portal containers for repo action buttons alongside the existing (+) create buttonrepository-group-actions.tsx— NewRepositoryGroupActionsManagercomponent that renders Open IDE, Terminal, Folder, and Start Server buttons into group header portal containersfeature-tree-page-client.tsx— Added repo action handlers calling server actions (openIde,openShell,openFolder,deployRepository,stopDeployment); wiredRepositoryGroupActionsManagerwith callbacksEvidence
Inventory Page with Actions Column
Row Actions Dropdown
Grouped View with Actions
Storybook Stories
Test plan
🐑 Built with Shep.bot