• Will Chen's avatar
    feat: add app commands configuration in Configure panel (#2433) · 3eb2c5e8
    Will Chen 提交于
    Add the ability to configure install and start commands in the Configure
    panel after an app has been created. Previously these were only
    configurable when first importing an app.
    
    Changes:
    - Add updateAppCommands IPC contract and handler
    - Add AppCommandsSection component in ConfigurePanel
    - Allow users to view, edit, and clear custom commands
    - Include validation requiring both commands when customizing
    - Add E2E tests for the new feature
    
    https://claude.ai/code/session_01RHmPUNG7Bdw9MC1DKQJX8g
    <!-- devin-review-badge-begin -->
    
    ---
    
    <a href="https://app.devin.ai/review/dyad-sh/dyad/pull/2433">
      <picture>
    <source media="(prefers-color-scheme: dark)"
    srcset="https://static.devin.ai/assets/gh-open-in-devin-review-dark.svg?v=1">
    <img
    src="https://static.devin.ai/assets/gh-open-in-devin-review-light.svg?v=1"
    alt="Open with Devin">
      </picture>
    </a>
    <!-- devin-review-badge-end -->
    
    <!-- CURSOR_SUMMARY -->
    ---
    
    > [!NOTE]
    > **Medium Risk**
    > Moderate risk because it introduces a new IPC write path that persists
    user-provided command strings and affects how apps will run, though
    guarded by client/server validation and locking.
    > 
    > **Overview**
    > Adds an **App Commands** card to `ConfigurePanel` that lets users view
    default vs custom install/start commands, edit them with client-side
    validation (both required), cancel edits, and clear back to defaults.
    > 
    > Introduces a new IPC contract `updateAppCommands` plus a main-process
    handler that trims inputs, enforces *both-or-neither* semantics, updates
    the `apps` record under `withLock`, and triggers UI refresh/toasts.
    > 
    > Adds Playwright E2E coverage for configure/edit/clear flows,
    validation behavior, and canceling edits.
    > 
    > <sup>Written by [Cursor
    Bugbot](https://cursor.com/dashboard?tab=bugbot) for commit
    3f0abe3b8f9ed2483ed27d537dd874e4caa66fcf. This will update automatically
    on new commits. Configure
    [here](https://cursor.com/dashboard?tab=bugbot).</sup>
    <!-- /CURSOR_SUMMARY -->
    
    <!-- This is an auto-generated description by cubic. -->
    ---
    ## Summary by cubic
    Let users configure custom install and start commands from the Configure
    panel after an app is created. Defaults to “pnpm install && pnpm dev”
    when unset, and both fields are required when customizing.
    
    - **New Features**
    - Configure, edit, or clear custom install/start commands in
    ConfigurePanel.
    - Added updateAppCommands IPC contract and handler to persist commands.
    - E2E tests cover happy path, validation (both required), cancel, and
    clear flows.
    
    - **Bug Fixes**
    - Prevent overwriting edits on refetch; fix custom commands check (AND),
    and update default-state message.
    - Enforce server-side validation (both commands set together or both
    cleared) and remove sensitive command content from logs.
    
    <sup>Written for commit 3f0abe3b8f9ed2483ed27d537dd874e4caa66fcf.
    Summary will update on new commits.</sup>
    
    <!-- End of auto-generated description by cubic. -->
    
    ---------
    Co-authored-by: 's avatarClaude <noreply@anthropic.com>
    Co-authored-by: 's avatarclaude[bot] <41898282+claude[bot]@users.noreply.github.com>
    3eb2c5e8