Skip to content

feat(web): add full feature management to inventory page#557

Merged
arielshad merged 18 commits into
mainfrom
feat/inventory-feature-management
Apr 26, 2026
Merged

feat(web): add full feature management to inventory page#557
arielshad merged 18 commits into
mainfrom
feat/inventory-feature-management

Conversation

@arielshad
Copy link
Copy Markdown
Contributor

@arielshad arielshad commented Apr 14, 2026

Summary

  • Fixes inventory page crash after main merge — missing ListAgentRunsUseCase DI string token caused a 500 error when loading the features page
  • Adds repository actions (Open IDE, Terminal, Folder, Start Server) to repository group headers in the inventory table — users can now manage repos directly from the inventory without navigating to the control center
  • Adds a (+) FAB to the inventory page with all creation actions from 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 are rendered directly as modals/drawers on the inventory page — no navigation to the control center required
  • Extends the server data-fetching layer to provide workflow defaults, repository options, and feature options needed by the create drawer
  • All existing row management actions (start, stop, retry, archive, unarchive, delete, review) remain available via the frozen actions column

Changes

  • register-use-cases.ts — Added missing ListAgentRunsUseCase DI string token alias (root cause of the 500 error)
  • get-feature-tree-data.ts — Extended to include _repositoryId on feature rows; repository lookup now includes id for repo actions
  • feature-tree-table.tsx — Added _repositoryId field to FeatureTreeRow; group header name formatter now renders portal containers for repo action buttons alongside the existing (+) create button
  • repository-group-actions.tsx — New RepositoryGroupActionsManager component that renders Open IDE, Terminal, Folder, and Start Server buttons into group header portal containers
  • feature-tree-page-client.tsx — Added repo action handlers calling server actions (openIde, openShell, openFolder, deployRepository, stopDeployment); wired RepositoryGroupActionsManager with callbacks

Evidence

Inventory Page with Actions Column

Actions column overview

Row Actions Dropdown

Row actions dropdown

Grouped View with Actions

Grouped by status

Storybook Stories

Pending state
Running state
Error state
Archived state
Loading state

Test plan

  • Verify inventory page loads without 500 error (ListAgentRunsUseCase DI fix)
  • Verify repository group headers show action buttons (IDE, Terminal, Folder, Server)
  • Verify (+) FAB appears on the inventory page with all expected actions
  • Verify "New feature" opens the create feature drawer with repository/parent selection
  • Verify "New project" opens the project creation dialog
  • Verify all existing row actions (start, stop, retry, archive, unarchive, delete, review) still work
  • Verify all 6481 unit tests pass
  • Verify all 763 integration tests pass
  • Verify typecheck passes with no errors
  • Verify lint passes with no warnings

🐑 Built with Shep.bot

arielshad and others added 3 commits April 14, 2026 10:29
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>
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.185.0-pr557.b926dc4 npm install -g @shepai/cli@1.185.0-pr557.b926dc4

Published from commit 219fea5 | View CI

arielshad and others added 10 commits April 14, 2026 13:00
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>
@arielshad arielshad force-pushed the feat/inventory-feature-management branch from 219fea5 to ab7dd70 Compare April 14, 2026 10:00
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.185.0-pr557.096bca0 npm install -g @shepai/cli@1.185.0-pr557.096bca0

Published from commit ab7dd70 | View CI

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>
@arielshad arielshad changed the title feat(web): add inline row actions to inventory feature table feat(web): add full feature management to inventory page Apr 14, 2026
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.185.0-pr557.952dc4c npm install -g @shepai/cli@1.185.0-pr557.952dc4c

Published from commit b3a39cd | View CI

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>
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.185.0-pr557.0710bb2 npm install -g @shepai/cli@1.185.0-pr557.0710bb2

Published from commit caa9e88 | View CI

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>
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.187.0-pr557.8b9298b npm install -g @shepai/cli@1.187.0-pr557.8b9298b

Published from commit 91622a9 | View CI

…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>
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.188.0-pr557.0e9af6d npm install -g @shepai/cli@1.188.0-pr557.0e9af6d

Published from commit f318ac6 | View CI

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>
@github-actions
Copy link
Copy Markdown
Contributor

Dev Release Published

Artifact Version Install
npm 1.188.0-pr557.6d1f19d npm install -g @shepai/cli@1.188.0-pr557.6d1f19d

Published from commit 65c86ee | View CI

@arielshad arielshad merged commit cbe4279 into main Apr 26, 2026
20 checks passed
@arielshad arielshad deleted the feat/inventory-feature-management branch April 26, 2026 16:40
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>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant