From 5247005e17a18f4b8316d4bd02839428ec42ac9d Mon Sep 17 00:00:00 2001 From: Cursor Agent Date: Thu, 22 Jan 2026 08:16:03 +0000 Subject: [PATCH] Allow deleting erroring modules in code mode Co-authored-by: matic --- .../components/operator-mode/detail-panel.gts | 1 + .../acceptance/code-submode/inspector-test.ts | 24 +++++++++++++++++++ 2 files changed, 25 insertions(+) diff --git a/packages/host/app/components/operator-mode/detail-panel.gts b/packages/host/app/components/operator-mode/detail-panel.gts index 80c5a29d5e..fd9801d630 100644 --- a/packages/host/app/components/operator-mode/detail-panel.gts +++ b/packages/host/app/components/operator-mode/detail-panel.gts @@ -146,6 +146,7 @@ export default class DetailPanel extends Component { private get showDetailsPanel() { return ( this.args.cardError || + this.args.moduleAnalysis.moduleError || (!this.isModule && !isCardDocumentString(this.args.readyFile.content)) ); } diff --git a/packages/host/tests/acceptance/code-submode/inspector-test.ts b/packages/host/tests/acceptance/code-submode/inspector-test.ts index 32d835066e..7782b17821 100644 --- a/packages/host/tests/acceptance/code-submode/inspector-test.ts +++ b/packages/host/tests/acceptance/code-submode/inspector-test.ts @@ -168,6 +168,8 @@ const employeeCardSource = ` } `; +const erroringModuleSource = `throw new Error('boom');`; + const inThisFileSource = ` import { contains, @@ -468,6 +470,7 @@ module('Acceptance | code submode | inspector tests', function (hooks) { 're-export.gts': reExportSource, 'local-inherit.gts': localInheritSource, 'command-module.gts': commandModuleSource, + 'erroring-module.gts': erroringModuleSource, 'empty-file.gts': '', 'person-entry.json': { data: { @@ -2161,6 +2164,27 @@ export class ExportedCard extends ExportedCardParent { assert.dom('[data-test-delete-module-button]').exists(); }); + test('can delete an erroring module file', async function (assert) { + await visitOperatorMode({ + stacks: [[]], + submode: 'code', + codePath: `${testRealmURL}erroring-module.gts`, + }); + + await waitFor('[data-test-syntax-error]'); + await waitFor('[data-test-action-button="Delete"]'); + + await click('[data-test-action-button="Delete"]'); + await waitFor( + `[data-test-delete-modal="${testRealmURL}erroring-module.gts"]`, + ); + await click('[data-test-confirm-delete-button]'); + await waitFor('[data-test-empty-code-mode]'); + + let notFound = await adapter.openFile('erroring-module.gts'); + assert.strictEqual(notFound, undefined, 'file ref does not exist'); + }); + module('when the user lacks write permissions', function (hooks) { hooks.beforeEach(async function () { setRealmPermissions({ [testRealmURL]: ['read'] });