@cardstack/boxel-cli 0.4.0-unstable.0 → 0.4.0-unstable.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (101) hide show
  1. package/bundled-realms/base/card-api.gts +2 -0
  2. package/bundled-realms/base/components/cards-grid-layout.gts +24 -2
  3. package/bundled-realms/base/field-component.gts +16 -4
  4. package/bundled-realms/base/links-to-editor.gts +27 -3
  5. package/bundled-realms/base/realm-config.gts +18 -1
  6. package/bundled-test-harness/assets/{add-workspace-tMjv_Ar4.js → add-workspace-DBDTvtP2.js} +3 -3
  7. package/bundled-test-harness/assets/{add-workspace-test-B_ih3mkL.js → add-workspace-test-CE21v7jK.js} +1 -1
  8. package/bundled-test-harness/assets/{ai-assistant-test-CrQxlWpZ.js → ai-assistant-test-DSyMR0hY.js} +1 -1
  9. package/bundled-test-harness/assets/{ai-module-creation-test-CMLVMpYm.js → ai-module-creation-test-zY83EN93.js} +1 -1
  10. package/bundled-test-harness/assets/{aibot-message-CiwsV-h8.js → aibot-message-BfRah4Lm.js} +2 -2
  11. package/bundled-test-harness/assets/{app-BQLXfOdp.js → app-CPRVydcd.js} +14 -14
  12. package/bundled-test-harness/assets/{binary-upload-dedupe-test-B7dPaGQN.js → binary-upload-dedupe-test-nnaYqiTh.js} +1 -1
  13. package/bundled-test-harness/assets/{broken-link-template-test-BAc48VK4.js → broken-link-template-test-BHXrPxQ6.js} +1 -1
  14. package/bundled-test-harness/assets/{card-api-test-BmiwtCFR.js → card-api-test-C0HrvAuC.js} +1 -1
  15. package/bundled-test-harness/assets/{card-basics-test-DZs6Zh6Z.js → card-basics-test-CvITmKK-.js} +1 -1
  16. package/bundled-test-harness/assets/{card-catalog-test-D2mEHOpL.js → card-catalog-test-CWkfBRuQ.js} +1 -1
  17. package/bundled-test-harness/assets/{card-copy-test-DpSavuvN.js → card-copy-test-Co_MPCIJ.js} +1 -1
  18. package/bundled-test-harness/assets/{card-def-field-def-relationships-test-DYX_ubhX.js → card-def-field-def-relationships-test-7e-g4qJs.js} +1 -1
  19. package/bundled-test-harness/assets/{card-delete-test-Bmp8Ue48.js → card-delete-test-BcOtJYm4.js} +1 -1
  20. package/bundled-test-harness/assets/{card-error-detail-DuFoktdn.js → card-error-detail-Q7wtuRcv.js} +2 -2
  21. package/bundled-test-harness/assets/{card-search-adorn-test-CEA5iAcD.js → card-search-adorn-test-CbsnFvDF.js} +1 -1
  22. package/bundled-test-harness/assets/{card-search-selection-menu-test-DOLM6HU0.js → card-search-selection-menu-test-CY77b1kz.js} +1 -1
  23. package/bundled-test-harness/assets/{check-correctness-test-DR1rUhtU.js → check-correctness-test-D0EYMlP7.js} +1 -1
  24. package/bundled-test-harness/assets/{codeblocks-test-B-i0v3er.js → codeblocks-test-CFR0u5-j.js} +1 -1
  25. package/bundled-test-harness/assets/{commands-DoigkJc8.js → commands-BOwQjc8N.js} +3 -3
  26. package/bundled-test-harness/assets/{commands-test-D1X-Kikc.js → commands-test-BpFjXsiC.js} +1 -1
  27. package/bundled-test-harness/assets/{commands-test-C13_nhjT.js → commands-test-QSW7zRvO.js} +1 -1
  28. package/bundled-test-harness/assets/{components-CBfd9MIo.js → components-DYC4nC4r.js} +184 -184
  29. package/bundled-test-harness/assets/{components-8vaKSlYm.css → components-DgK6vTbM.css} +17 -14
  30. package/bundled-test-harness/assets/{container-DYJ5z0jP.js → container-DRblzvCW.js} +16 -16
  31. package/bundled-test-harness/assets/{convert-to-class-name-test-B7ILkHei.js → convert-to-class-name-test-BiCrnGxA.js} +1 -1
  32. package/bundled-test-harness/assets/{create-file-modal-BNJHELMz.js → create-file-modal-Cfvn0u5s.js} +4 -4
  33. package/bundled-test-harness/assets/{create-listing-modal-test-BIG3NbX-.js → create-listing-modal-test-W6LuCzaK.js} +2 -2
  34. package/bundled-test-harness/assets/{debug-message-test-CAzyW7l3.js → debug-message-test-CXVfUuec.js} +1 -1
  35. package/bundled-test-harness/assets/{error-display-test-Btk0RcqS.js → error-display-test-B6I8CYXw.js} +1 -1
  36. package/bundled-test-harness/assets/{externals-C65aJ_7H.js → externals-DiG6hYU9.js} +2 -2
  37. package/bundled-test-harness/assets/{fallback-banner-live-delete-test-I7o8HPay.js → fallback-banner-live-delete-test-Bv_OBmzY.js} +1 -1
  38. package/bundled-test-harness/assets/{fallback-banner-test-Bh-BDHwS.js → fallback-banner-test-TL8jNe4f.js} +1 -1
  39. package/bundled-test-harness/assets/{fallback-models-test-GjvpcpvS.js → fallback-models-test-DEhvKsfY.js} +1 -1
  40. package/bundled-test-harness/assets/{file-DUbLArQi.js → file-D8hnXC1_.js} +8 -2
  41. package/bundled-test-harness/assets/{file-attachment-test-CtV6jG8f.js → file-attachment-test-CkL6IaWf.js} +1 -1
  42. package/bundled-test-harness/assets/{file-chooser-test-C9VwTWSW.js → file-chooser-test-M1rOgltw.js} +1 -1
  43. package/bundled-test-harness/assets/{formatted-aibot-message-test-DRdKZ8lg.js → formatted-aibot-message-test-CNk1lVYO.js} +1 -1
  44. package/bundled-test-harness/assets/{general-test-pIZFE9Ii.js → general-test-B_QwZC0y.js} +1 -1
  45. package/bundled-test-harness/assets/{index-query-engine-test-DvgGBuTy.js → index-query-engine-test-x77vbwML.js} +1 -1
  46. package/bundled-test-harness/assets/{inspector-test-COfLlQnO.js → inspector-test-CtCAKlpG.js} +39 -2
  47. package/bundled-test-harness/assets/{instance-filter-matcher-test-DUeZ6eiv.js → instance-filter-matcher-test-YKzjZAa3.js} +1 -1
  48. package/bundled-test-harness/assets/{interact-submode-creation-and-permissions-test-Dr-clTrg.js → interact-submode-creation-and-permissions-test-2_4tHla6.js} +1 -1
  49. package/bundled-test-harness/assets/{interact-submode-setup-D23oc2q6.js → interact-submode-setup-DI2HM3S-.js} +1 -1
  50. package/bundled-test-harness/assets/{interact-submode-test-t8HEq7Bp.js → interact-submode-test-BUKZnm-y.js} +1 -1
  51. package/bundled-test-harness/assets/{item-button-CAhhwhRh.js → item-button-CepLHUN-.js} +1 -1
  52. package/bundled-test-harness/assets/{live-prerendered-search-kxxMxyHS.js → live-prerendered-search-DiFs_MHd.js} +1 -1
  53. package/bundled-test-harness/assets/{login-ou9E1DG9.js → login-DWNfbapF.js} +1 -1
  54. package/bundled-test-harness/assets/{login-error-text-test-BsNV9TOq.js → login-error-text-test-3lQ69Gme.js} +1 -1
  55. package/bundled-test-harness/assets/{main-CrtBvhng.js → main-CDat3XsY.js} +1 -1
  56. package/bundled-test-harness/assets/{markdown-preview-CKlpPkbc.js → markdown-preview-o2AI98EN.js} +1 -1
  57. package/bundled-test-harness/assets/{markdown-preview-test-BTdN_033.js → markdown-preview-test-D2YoXqUY.js} +1 -1
  58. package/bundled-test-harness/assets/{modal-container-wzIBYeE_.js → modal-container-BzEkpeIx.js} +1 -1
  59. package/bundled-test-harness/assets/{on-key-CpWVcRaS.js → on-key-C8yMINOQ.js} +1 -1
  60. package/bundled-test-harness/assets/{open-image-in-new-tab-test-B-jsojF0.js → open-image-in-new-tab-test-3iRCTOjd.js} +1 -1
  61. package/bundled-test-harness/assets/{operator-mode-acceptance-test-CXQkU0xV.js → operator-mode-acceptance-test-DoQ5Klyi.js} +2 -2
  62. package/bundled-test-harness/assets/{operator-mode-card-catalog-test-DjTCHu2f.js → operator-mode-card-catalog-test-Came_pKy.js} +2 -2
  63. package/bundled-test-harness/assets/{operator-mode-links-test-EeNC7Or8.js → operator-mode-links-test-DoTvJvpI.js} +2 -2
  64. package/bundled-test-harness/assets/{operator-mode-test-Cdm2eu3n.js → operator-mode-test-DeUtV1XR.js} +2 -2
  65. package/bundled-test-harness/assets/{operator-mode-ui-test-yWX9IF_q.js → operator-mode-ui-test-DTUMZBlw.js} +2 -2
  66. package/bundled-test-harness/assets/{overlay-menu-items-test-D2yM2xsl.js → overlay-menu-items-test-DhPIUwmz.js} +1 -1
  67. package/bundled-test-harness/assets/{panel-DBvohlmr.js → panel-DcMU_CGT.js} +5 -5
  68. package/bundled-test-harness/assets/{past-sessions-test-DqEv1zfI.js → past-sessions-test-BrdqlYxe.js} +1 -1
  69. package/bundled-test-harness/assets/{patch-code-ClPL6B_d.js → patch-code-F_7JKtTQ.js} +1 -1
  70. package/bundled-test-harness/assets/{patch-code-test-Y34298iq.js → patch-code-test-O5_p8vp4.js} +3 -3
  71. package/bundled-test-harness/assets/{prerendered-card-search-test-BTgiRYnI.js → prerendered-card-search-test-DLYUamOp.js} +1 -1
  72. package/bundled-test-harness/assets/{preview-format-Bb5FIkOY.js → preview-format-BqY_j3zZ.js} +1 -1
  73. package/bundled-test-harness/assets/{preview-format-test-DjS1vxlt.js → preview-format-test-CublqRWy.js} +1 -1
  74. package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-E5AhFXfq.js → realm-config-routing-rule-edit-test-T8S_2Lwq.js} +47 -4
  75. package/bundled-test-harness/assets/{reasoning-test-ChZJb8sD.js → reasoning-test-DcQkF04r.js} +1 -1
  76. package/bundled-test-harness/assets/{room-message-test-DQ2x7ymr.js → room-message-test-DuSkABnU.js} +2 -2
  77. package/bundled-test-harness/assets/{schema-generation-test-DxhNMqOe.js → schema-generation-test-z90uBA7r.js} +1 -1
  78. package/bundled-test-harness/assets/{scrolling-test-Drdch9wf.js → scrolling-test-jCKormjp.js} +2 -2
  79. package/bundled-test-harness/assets/{search-result-header-5VQHm_Ev.js → search-result-header-Ch7TKEzn.js} +1 -1
  80. package/bundled-test-harness/assets/{sending-test-6i0F6n4v.js → sending-test-Bocu5vf9.js} +2 -2
  81. package/bundled-test-harness/assets/{setup-DeQyrqyx.js → setup-CN-HHlT_.js} +1 -1
  82. package/bundled-test-harness/assets/{skills-test-Dl7uEBNz.js → skills-test-Cut0gpNU.js} +1 -1
  83. package/bundled-test-harness/assets/{store-test-Dkf9wBLg.js → store-test-C747NJ3O.js} +2 -2
  84. package/bundled-test-harness/assets/{submode-switcher-Popj4iN5.js → submode-switcher-iR4m0GzD.js} +1 -1
  85. package/bundled-test-harness/assets/{switch-submode-DOdRs5QD.js → switch-submode--ZVbWG3S.js} +1 -1
  86. package/bundled-test-harness/assets/{switch-submode-test-CX0YxbVu.js → switch-submode-test--Ncx8g_l.js} +1 -1
  87. package/bundled-test-harness/assets/{tests-D1v0wSnN.js → tests-Dw_agY8k.js} +60 -60
  88. package/bundled-test-harness/assets/{text-input-validator-test-CT3c7m8B.js → text-input-validator-test-CAlDivoV.js} +1 -1
  89. package/bundled-test-harness/assets/{theme-card-test-DyOWEJRn.js → theme-card-test-Q5eP-lEF.js} +1 -1
  90. package/bundled-test-harness/assets/{workspace-DvhB0Ltb.js → workspace-PBphyb9N.js} +2 -2
  91. package/bundled-test-harness/assets/{workspace-delete-summary-test-B7rnzX95.js → workspace-delete-summary-test-iqD1ae55.js} +1 -1
  92. package/bundled-test-harness/boxel-ui-checksum.txt +1 -1
  93. package/bundled-test-harness/index.html +26 -26
  94. package/bundled-test-harness/tests/index.html +26 -26
  95. package/bundled-types/base/field-component.d.ts +15 -4
  96. package/bundled-types/base/links-to-editor.d.ts +9 -0
  97. package/bundled-types/boxel-ui/components/filter-list/index.gts +4 -1
  98. package/dist/index.js +241 -241
  99. package/package.json +3 -3
  100. package/src/commands/realm/publish.ts +87 -16
  101. package/src/commands/realm/unpublish.ts +11 -0
@@ -2838,13 +2838,13 @@
2838
2838
  }
2839
2839
 
2840
2840
  @layer boxelComponentL2 {
2841
- .list-item-buttons[data-scopedcss-4d119660ec-cbf2be1130] {
2841
+ .list-item-buttons[data-scopedcss-4d119660ec-85ad54ea33] {
2842
2842
  display: flex;
2843
2843
  border-radius: var(--boxel-border-radius-sm);
2844
2844
  color: inherit;
2845
2845
  background-color: inherit;
2846
2846
  }
2847
- .list-item-buttons.is-expanded[data-scopedcss-4d119660ec-cbf2be1130] {
2847
+ .list-item-buttons.is-expanded[data-scopedcss-4d119660ec-85ad54ea33] {
2848
2848
  background-color: var(
2849
2849
  --boxel-filter-expanded-background,
2850
2850
  color-mix(
@@ -2855,7 +2855,7 @@
2855
2855
  );
2856
2856
  color: var(--boxel-filter-expanded-foreground, var(--foreground));
2857
2857
  }
2858
- .list-item-buttons[data-scopedcss-4d119660ec-cbf2be1130]:not(.is-selected):hover {
2858
+ .list-item-buttons[data-scopedcss-4d119660ec-85ad54ea33]:not(.is-selected):hover {
2859
2859
  background-color: var(
2860
2860
  --boxel-filter-hover-background,
2861
2861
  color-mix(
@@ -2866,7 +2866,7 @@
2866
2866
  );
2867
2867
  color: var(--boxel-filter-hover-foreground, var(--accent-foreground));
2868
2868
  }
2869
- .list-item-buttons.is-selected[data-scopedcss-4d119660ec-cbf2be1130] {
2869
+ .list-item-buttons.is-selected[data-scopedcss-4d119660ec-85ad54ea33] {
2870
2870
  background-color: var(
2871
2871
  --boxel-filter-selected-background,
2872
2872
  var(--foreground, var(--boxel-dark))
@@ -2876,7 +2876,7 @@
2876
2876
  var(--background, var(--boxel-light))
2877
2877
  );
2878
2878
  }
2879
- .list-item-buttons.is-selected[data-scopedcss-4d119660ec-cbf2be1130]:hover {
2879
+ .list-item-buttons.is-selected[data-scopedcss-4d119660ec-85ad54ea33]:hover {
2880
2880
  background-color: var(
2881
2881
  --boxel-filter-selected-hover-background,
2882
2882
  color-mix(
@@ -2890,15 +2890,18 @@
2890
2890
  var(--background, var(--boxel-light))
2891
2891
  );
2892
2892
  }
2893
- .dropdown-toggle[data-scopedcss-4d119660ec-cbf2be1130] {
2893
+ .dropdown-toggle[data-scopedcss-4d119660ec-85ad54ea33] {
2894
2894
  --boxel-icon-button-width: 2rem;
2895
2895
  --boxel-icon-button-height: 2rem;
2896
2896
  flex-shrink: 0;
2897
+ /* Collapsed: the down-arrow icon points right. */
2898
+ transform: rotate(-90deg);
2897
2899
  }
2898
- .is-expanded > .dropdown-toggle[data-scopedcss-4d119660ec-cbf2be1130] {
2899
- transform: rotate(180deg);
2900
+ .is-expanded > .dropdown-toggle[data-scopedcss-4d119660ec-85ad54ea33] {
2901
+ /* Expanded: arrow points down. */
2902
+ transform: rotate(0deg);
2900
2903
  }
2901
- .filter-list__button[data-scopedcss-4d119660ec-cbf2be1130] {
2904
+ .filter-list__button[data-scopedcss-4d119660ec-85ad54ea33] {
2902
2905
  flex-grow: 1;
2903
2906
  width: 100%;
2904
2907
  display: flex;
@@ -2912,17 +2915,17 @@
2912
2915
  overflow: hidden;
2913
2916
  text-align: left;
2914
2917
  }
2915
- .filter-list__button[data-scopedcss-4d119660ec-cbf2be1130]:hover,
2916
- .filter-list__button[data-scopedcss-4d119660ec-cbf2be1130]:focus {
2918
+ .filter-list__button[data-scopedcss-4d119660ec-85ad54ea33]:hover,
2919
+ .filter-list__button[data-scopedcss-4d119660ec-85ad54ea33]:focus {
2917
2920
  color: inherit;
2918
2921
  background-color: transparent;
2919
2922
  }
2920
- .dropdown-toggle[data-scopedcss-4d119660ec-cbf2be1130],
2921
- .filter-list__button[data-scopedcss-4d119660ec-cbf2be1130] {
2923
+ .dropdown-toggle[data-scopedcss-4d119660ec-85ad54ea33],
2924
+ .filter-list__button[data-scopedcss-4d119660ec-85ad54ea33] {
2922
2925
  border: none;
2923
2926
  transition: none;
2924
2927
  }
2925
- [data-scopedcss-4d119660ec-cbf2be1130] .filter-list__icon {
2928
+ [data-scopedcss-4d119660ec-85ad54ea33] .filter-list__icon {
2926
2929
  flex-shrink: 0;
2927
2930
  width: var(--boxel-icon-xs);
2928
2931
  height: var(--boxel-icon-xs);
@@ -25,11 +25,11 @@ import { a as findDeclarationByName, c as isComponentDeclaration, l as isReexpor
25
25
  import { c as urlForRealmLookup, d as require_deburr, s as stripFileExtension } from "./utils-BXcPbdVS.js";
26
26
  import { t as LintAndFixCommand } from "./lint-and-fix-DeH3iOGn.js";
27
27
  import { i as templateOnly, r as modifier, t as ClassBasedModifier } from "./dist-BHeMAIJN.js";
28
- import { n as Submodes, r as capitalize, t as SubmodeSwitcher } from "./submode-switcher-Popj4iN5.js";
28
+ import { n as Submodes, r as capitalize, t as SubmodeSwitcher } from "./submode-switcher-iR4m0GzD.js";
29
29
  import "./component-CqcrwY5l.js";
30
30
  import { t as Component } from "./dist-CE2G0-tp.js";
31
31
  import "./template-factory-CigcGcbz.js";
32
- import { B as autoFocus, C as Picker, D as ResizablePanelGroup, E as RealmIcon, L as VelcroModifier, M as Tooltip, O as SelectionCheckmark, P as focusTrapModifier, R as autoUpdate, S as Modal, T as RadioInput, U as IconComponent$13, X as IconComponent$12, _ as InputBottomTreatments, a as BoxelInput, b as LoadingIndicator, c as CardContainer, f as DropdownButton, g as IconButton$1, h as Header, i as BoxelDropdown, l as CardHeader, m as GridContainer, nt as IconComponent$14, o as BoxelSelect, p as FieldContainer, r as Avatar, s as ButtonComponent, v as InputGroup, w as Pill, x as Menu, y as Label } from "./components-CBfd9MIo.js";
32
+ import { B as autoFocus, C as Picker, D as ResizablePanelGroup, E as RealmIcon, L as VelcroModifier, M as Tooltip, O as SelectionCheckmark, P as focusTrapModifier, R as autoUpdate, S as Modal, T as RadioInput, U as IconComponent$13, X as IconComponent$12, _ as InputBottomTreatments, a as BoxelInput, b as LoadingIndicator, c as CardContainer, f as DropdownButton, g as IconButton$1, h as Header, i as BoxelDropdown, l as CardHeader, m as GridContainer, nt as IconComponent$14, o as BoxelSelect, p as FieldContainer, r as Avatar, s as ButtonComponent, v as InputGroup, w as Pill, x as Menu, y as Label } from "./components-DYC4nC4r.js";
33
33
  import "./helper-Dqv2pcye.js";
34
34
  import { B as menuItem, C as and, D as cn, F as getContrastColor, H as not, I as gt, L as gte, M as eq, O as compact, U as optional, W as or, X as toMenuItems, g as MenuItem, h as MenuDivider, i as copyCardURLToClipboard, k as cssVar$1, s as formatNumber, t as add, w as bool, z as menuDivider } from "./helpers-BGEPA06U.js";
35
35
  import "./template-9719lre_.js";
@@ -38,42 +38,42 @@ import { t as buildWaiter } from "./dist-DMOowcyD.js";
38
38
  import { a as TrackedMap, i as TrackedSet, n as TrackedObject, o as TrackedWeakMap, r as TrackedArray } from "./dist-v5YRo032.js";
39
39
  import "./icons-DpXEIwY6.js";
40
40
  import { t as OpenCreateListingModalCommand } from "./open-create-listing-modal-x64rB8Cd.js";
41
- import { r as isReady, t as file } from "./file-DUbLArQi.js";
41
+ import { r as isReady, t as file } from "./file-D8hnXC1_.js";
42
42
  import { t as PublishRealmCommand } from "./publish-realm-BddsbWsc.js";
43
43
  import { t as UnpublishRealmCommand } from "./unpublish-realm-BuWRI7LD.js";
44
44
  import { a as CodeModePanelHeights, c as ModuleInspectorSelections, n as AiAssistantOpen, o as CodeModePanelWidths, r as AiAssistantPanelWidth, u as PlaygroundSelections, y as src_default } from "./local-storage-keys-C0jyxDKn.js";
45
- import { _ as IconComponent$20, a as component, d as consume_context_default, i as IconComponent$21, n as ai_assist_icon_default, o as ScrollIntoViewModifier, s as ClickOutsideModifier, t as AiAssistantPanel, y as getCardCollection } from "./panel-DBvohlmr.js";
45
+ import { _ as IconComponent$20, a as component, d as consume_context_default, i as IconComponent$21, n as ai_assist_icon_default, o as ScrollIntoViewModifier, s as ClickOutsideModifier, t as AiAssistantPanel, y as getCardCollection } from "./panel-DcMU_CGT.js";
46
46
  import { n as getCard } from "./card-resource-Dww3okhN.js";
47
- import { i as IconComponent$22, o as createMonacoWaiterManager } from "./aibot-message-CiwsV-h8.js";
47
+ import { i as IconComponent$22, o as createMonacoWaiterManager } from "./aibot-message-BfRah4Lm.js";
48
48
  import { t as ElementTracker } from "./element-tracker-BUMcZAYg.js";
49
49
  import { n as getSearchData } from "./search-data-P8XVAwx9.js";
50
50
  import { r as lastModifiedDate } from "./last-modified-date-BLEklCeD.js";
51
51
  import { r as provide, t as consume } from "./dist-D_yTLbzS.js";
52
52
  import { n as htmlComponent } from "./html-component-CeL8IQt8.js";
53
53
  import { n as knownFileMetaUrls } from "./known-file-meta-urls-CUPvs4V9.js";
54
- import { n as PrerenderedCardSearch, r as getPrerenderedSearch } from "./live-prerendered-search-kxxMxyHS.js";
54
+ import { n as PrerenderedCardSearch, r as getPrerenderedSearch } from "./live-prerendered-search-DiFs_MHd.js";
55
55
  import { n as markdownToHtml } from "./marked-sync-BmLv-zNi.js";
56
56
  import { i as nextUncompletedStage, n as isMatrixError, r as isValidPassword, t as isInteractiveAuth } from "./matrix-utils-NBzMSOVx.js";
57
57
  import { n as detectStackItemTypeForTarget, r as stackItemTypeToStoreReadType, t as StackItem } from "./stack-item-B42VVKmV.js";
58
- import { n as AdornLabel, r as removeFileExtension$1, t as ItemButton } from "./item-button-CAhhwhRh.js";
58
+ import { n as AdornLabel, r as removeFileExtension$1, t as ItemButton } from "./item-button-CepLHUN-.js";
59
59
  import { n as UNKNOWN_REALM_NAME } from "./realm-CxU8jc8l.js";
60
60
  import { a as isURLSearchKey, i as shouldSkipSearchQuery, n as buildSearchQuery, o as resolveSearchKeyAsURL, t as buildRecentsQuery } from "./query-builder-BN0MSxe9.js";
61
- import { a as VIEW_OPTIONS, i as SORT_OPTIONS, n as IconComponent$23, r as IconComponent$24, t as SearchResultHeader } from "./search-result-header-5VQHm_Ev.js";
61
+ import { a as VIEW_OPTIONS, i as SORT_OPTIONS, n as IconComponent$23, r as IconComponent$24, t as SearchResultHeader } from "./search-result-header-Ch7TKEzn.js";
62
62
  import { t as applyBoxelFormatting } from "./boxel-formatter-DeIpWRU8.js";
63
63
  import { n as suggestCardChooserTitle, t as getSuggestionWithLowestDepth } from "./text-suggestion-n0hbFS9h.js";
64
- import { t as modifier$1 } from "./on-key-CpWVcRaS.js";
65
- import { a as RealmDropdown, i as newFileTypes, n as SelectedTypePill, o as trackedFunction, s as WithKnownRealmsLoaded, t as CreateFileModal } from "./create-file-modal-BNJHELMz.js";
64
+ import { t as modifier$1 } from "./on-key-C8yMINOQ.js";
65
+ import { a as RealmDropdown, i as newFileTypes, n as SelectedTypePill, o as trackedFunction, s as WithKnownRealmsLoaded, t as CreateFileModal } from "./create-file-modal-Cfvn0u5s.js";
66
66
  import { t as CardRenderer } from "./card-renderer-Dp8jm4ru.js";
67
- import { t as ModalContainer } from "./modal-container-wzIBYeE_.js";
67
+ import { t as ModalContainer } from "./modal-container-BzEkpeIx.js";
68
68
  import { t as perform } from "./perform-DsvIw8zR.js";
69
69
  import { t as _class } from "./to-elsewhere-2Yti-eQv.js";
70
- import { n as ErrorDisplay, t as CardErrorDetail } from "./card-error-detail-DuFoktdn.js";
71
- import { n as _class$1, t as AddWorkspace } from "./add-workspace-tMjv_Ar4.js";
72
- import { t as Login } from "./login-ou9E1DG9.js";
73
- import { t as MarkdownPreview } from "./markdown-preview-CKlpPkbc.js";
70
+ import { n as ErrorDisplay, t as CardErrorDetail } from "./card-error-detail-Q7wtuRcv.js";
71
+ import { n as _class$1, t as AddWorkspace } from "./add-workspace-DBDTvtP2.js";
72
+ import { t as Login } from "./login-DWNfbapF.js";
73
+ import { t as MarkdownPreview } from "./markdown-preview-o2AI98EN.js";
74
74
  import { s as Position } from "./editor.api-n39zV6Fs.js";
75
75
  import "./editor.main-CwLR0LUz.js";
76
- import { a as IconComponent$25, i as WorkspaceLoadingIndicator, t as Workspace } from "./workspace-DvhB0Ltb.js";
76
+ import { a as IconComponent$25, i as WorkspaceLoadingIndicator, t as Workspace } from "./workspace-PBphyb9N.js";
77
77
  //#region app/resources/card-type.ts
78
78
  var import_lodash = /* @__PURE__ */ __toESM(require_lodash());
79
79
  var import_isEqual = /* @__PURE__ */ __toESM(require_isEqual());
@@ -1,5 +1,5 @@
1
1
  import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
- import { r as convertToClassName } from "./create-file-modal-BNJHELMz.js";
2
+ import { r as convertToClassName } from "./create-file-modal-Cfvn0u5s.js";
3
3
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
4
4
  //#region tests/unit/convert-to-class-name-test.ts
5
5
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -18,16 +18,16 @@ import "./dist-BHeMAIJN.js";
18
18
  import "./component-CqcrwY5l.js";
19
19
  import { t as Component } from "./dist-CE2G0-tp.js";
20
20
  import "./template-factory-CigcGcbz.js";
21
- import { E as RealmIcon, P as focusTrapModifier, a as BoxelInput, b as LoadingIndicator, i as BoxelDropdown, o as BoxelSelect, p as FieldContainer, s as ButtonComponent, w as Pill, x as Menu } from "./components-CBfd9MIo.js";
21
+ import { E as RealmIcon, P as focusTrapModifier, a as BoxelInput, b as LoadingIndicator, i as BoxelDropdown, o as BoxelSelect, p as FieldContainer, s as ButtonComponent, w as Pill, x as Menu } from "./components-DYC4nC4r.js";
22
22
  import { C as and, H as not, M as eq, W as or, g as MenuItem } from "./helpers-BGEPA06U.js";
23
23
  import { R as IconComponent$M, a as IconComponent$11, i as IconComponent$10, q as IconComponent$V, z as IconComponent$N } from "./warning-CY8WOyKw-BjT-7Nrv.js";
24
24
  import { a as waitForPromise } from "./dist-DMOowcyD.js";
25
25
  import "./icons-DpXEIwY6.js";
26
26
  import { t as consume } from "./dist-D_yTLbzS.js";
27
- import { t as modifier$1 } from "./on-key-CpWVcRaS.js";
28
- import { t as ModalContainer } from "./modal-container-wzIBYeE_.js";
27
+ import { t as modifier$1 } from "./on-key-C8yMINOQ.js";
28
+ import { t as ModalContainer } from "./modal-container-BzEkpeIx.js";
29
29
  import { t as perform } from "./perform-DsvIw8zR.js";
30
- import { t as CardErrorDetail } from "./card-error-detail-DuFoktdn.js";
30
+ import { t as CardErrorDetail } from "./card-error-detail-Q7wtuRcv.js";
31
31
  //#region app/components/with-known-realms-loaded.gts
32
32
  var import_camelcase = /* @__PURE__ */ __toESM(require_camelcase());
33
33
  var WithKnownRealmsLoaded = class extends Component {
@@ -5,12 +5,12 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
5
5
  import "./component-CqcrwY5l.js";
6
6
  import { t as Component } from "./dist-CE2G0-tp.js";
7
7
  import "./template-factory-CigcGcbz.js";
8
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
8
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
9
9
  import { d as click, o as waitFor } from "./dist-CWCoBB72.js";
10
10
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
11
11
  import "./mock-matrix-Bkfl9ACG.js";
12
12
  import { n as renderComponent } from "./render-component-DY19erxA.js";
13
- import { t as setupOperatorModeTests } from "./setup-DeQyrqyx.js";
13
+ import { t as setupOperatorModeTests } from "./setup-CN-HHlT_.js";
14
14
  //#region tests/integration/components/create-listing-modal-test.gts
15
15
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
16
16
  (0, import_qunit.module)("Integration | components | create-listing-modal", function(hooks) {
@@ -5,7 +5,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
5
5
  import "./component-CqcrwY5l.js";
6
6
  import { t as Component } from "./dist-CE2G0-tp.js";
7
7
  import "./template-factory-CigcGcbz.js";
8
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
8
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
9
9
  import { I as waitUntil, d as click, o as waitFor } from "./dist-CWCoBB72.js";
10
10
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
11
11
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -5,7 +5,7 @@ import { i as templateOnly } from "./dist-BHeMAIJN.js";
5
5
  import "./component-CqcrwY5l.js";
6
6
  import "./template-factory-CigcGcbz.js";
7
7
  import { d as click, o as waitFor, x as render } from "./dist-CWCoBB72.js";
8
- import { t as CardErrorDetail } from "./card-error-detail-DuFoktdn.js";
8
+ import { t as CardErrorDetail } from "./card-error-detail-Q7wtuRcv.js";
9
9
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
10
10
  import { rt as setupRenderingTest } from "./mock-matrix-Bkfl9ACG.js";
11
11
  //#region tests/integration/components/operator-mode/error-display-test.gts
@@ -12,7 +12,7 @@ import { $ as trySet, An as removeObserver, At as join, Bi as enableDestroyableT
12
12
  import { C as runLoadHooks, S as onLoad, _ as canInvoke, b as HistoryLocation, c as Engine, h as Namespace, i as Application, m as ContainerDebugAdapter, n as registerDestructor, o as getOwner$1, p as ComponentLookup, r as unregisterDestructor, s as setOwner, t as destroyable_exports, v as ApplicationInstance, x as HashLocation, y as NoneLocation } from "./destroyable-DeqNuajY.js";
13
13
  import { A as fn, At as unsubscribe, B as templateOnlyComponent, Bt as getRootViews, D as array, Et as instrument, F as isSerializationFirstNode, H as templateFactory, Ht as getViewBounds$1, I as on$1, J as isEmpty, Kt as isSimpleClick, M as hash, Nt as EventDispatcher, Ot as reset, P as invokeHelper, Q as DSLImpl, Rt as getChildViews, Ut as getViewClientRects, Vt as getViewBoundingClientRect, Wt as getViewElement, X as alias, Y as isNone, Z as EmberRouter, at as Controller, ct as inject$1, dt as MutableArray, et as Route, ft as NativeArray, gt as typeOf, ht as compare, it as EngineInstance, j as get$1, jt as Evented, k as concat, kt as subscribe, lt as A, mt as isArray, n as Helper, nt as generateControllerFactory, ot as ControllerMixin, r as Input, rt as dependentKeyCompat, t as Component, tt as generateController, ut as EmberArray, zt as getElementView } from "./index-DaCZcoCY-Bfb0Qdzr.js";
14
14
  import { t as browser_index_exports } from "./browser-index-CBypQU_L.js";
15
- import { r as shimHostCommands } from "./commands-DoigkJc8.js";
15
+ import { r as shimHostCommands } from "./commands-BOwQjc8N.js";
16
16
  import { o as async_arrow_runtime_exports, t as dist_exports$2 } from "./dist-BVuBRpuT.js";
17
17
  import { t as rsvp_exports } from "./rsvp-Cv7mV_Vk.js";
18
18
  import { r as tracking_exports } from "./tracking-CPe6fHfT.js";
@@ -24,7 +24,7 @@ import { t as setComponentManager } from "./managers-CbMgnSoo-CvcYSF2d.js";
24
24
  import { t as component_exports } from "./component-CqcrwY5l.js";
25
25
  import { n as dist_exports$6, t as Component$1 } from "./dist-CE2G0-tp.js";
26
26
  import { t as template_factory_exports } from "./template-factory-CigcGcbz.js";
27
- import { J as isPresent, Q as ElementHelper, V as modifiers_exports, Y as isBlank, q as isEqual, rt as dist_exports$7, t as components_exports, z as floating_ui_dom_exports } from "./components-CBfd9MIo.js";
27
+ import { J as isPresent, Q as ElementHelper, V as modifiers_exports, Y as isBlank, q as isEqual, rt as dist_exports$7, t as components_exports, z as floating_ui_dom_exports } from "./components-DYC4nC4r.js";
28
28
  import { l as helpers_exports } from "./helpers-BGEPA06U.js";
29
29
  import { t as template_exports } from "./template-9719lre_.js";
30
30
  import { t as internals_exports } from "./internals-BOTMROHS.js";
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
6
6
  import "./component-CqcrwY5l.js";
7
7
  import { t as Component } from "./dist-CE2G0-tp.js";
8
8
  import "./template-factory-CigcGcbz.js";
9
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
9
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
10
10
  import { A as settled, o as waitFor } from "./dist-CWCoBB72.js";
11
11
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
12
12
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
6
6
  import "./component-CqcrwY5l.js";
7
7
  import { t as Component } from "./dist-CE2G0-tp.js";
8
8
  import "./template-factory-CigcGcbz.js";
9
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
9
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
10
10
  import { A as settled, d as click, o as waitFor } from "./dist-CWCoBB72.js";
11
11
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
12
12
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -5,7 +5,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
5
5
  import "./component-CqcrwY5l.js";
6
6
  import { t as Component } from "./dist-CE2G0-tp.js";
7
7
  import "./template-factory-CigcGcbz.js";
8
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
8
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
9
9
  import { I as waitUntil, d as click, o as waitFor } from "./dist-CWCoBB72.js";
10
10
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
11
11
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -1,6 +1,6 @@
1
1
  import { r as __exportAll } from "./chunk-CGdGNDIi.js";
2
2
  import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime-CYyqkz5q-z3Y1hsJm.js";
3
- import { It as SupportedMimeType, Wr as logger, ya as rri } from "./runtime-common-BY5dBG5N.js";
3
+ import { It as SupportedMimeType, Wr as logger, a as hasExecutableExtension, ya as rri } from "./runtime-common-BY5dBG5N.js";
4
4
  import { a as parse } from "./esm-CCOu76Mh.js";
5
5
  import { r as service } from "./service-BaBMSYir.js";
6
6
  import { n as registerDestructor } from "./destroyable-DeqNuajY.js";
@@ -145,7 +145,13 @@ var _FileResource = class extends Resource {
145
145
  reloadFile = true;
146
146
  realmEventsLogger.debug(`reloading file resource ${normalizedURL} because request id is ${clientRequestId}`);
147
147
  }
148
- if (reloadFile) this.read.perform({ force: true });
148
+ if (reloadFile) {
149
+ if (hasExecutableExtension(normalizedURL) && this.loaderService.loader.isModuleLoaded(normalizedURL)) this.loaderService.resetLoader({
150
+ clearFetchCache: true,
151
+ reason: "file-resource-external-invalidation"
152
+ });
153
+ this.read.perform({ force: true });
154
+ }
149
155
  }
150
156
  });
151
157
  }
@@ -6,7 +6,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
6
6
  import "./component-CqcrwY5l.js";
7
7
  import { t as Component } from "./dist-CE2G0-tp.js";
8
8
  import "./template-factory-CigcGcbz.js";
9
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
9
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
10
10
  import { A as settled, I as waitUntil, d as click, l as triggerEvent, o as waitFor, s as fillIn } from "./dist-CWCoBB72.js";
11
11
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
12
12
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -4,7 +4,7 @@ import { A as settled, I as waitUntil, c as triggerKeyEvent, d as click, f as fo
4
4
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
5
5
  import { r as getService } from "./dist-5hbdxMR8.js";
6
6
  import { tt as visitOperatorMode } from "./mock-matrix-Bkfl9ACG.js";
7
- import { n as setupInteractSubmodeTests } from "./interact-submode-setup-D23oc2q6.js";
7
+ import { n as setupInteractSubmodeTests } from "./interact-submode-setup-DI2HM3S-.js";
8
8
  //#region tests/acceptance/file-chooser-test.gts
9
9
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
10
10
  (0, import_qunit.module)("Acceptance | file chooser tests", function(hooks) {
@@ -8,7 +8,7 @@ import { i as templateOnly } from "./dist-BHeMAIJN.js";
8
8
  import "./component-CqcrwY5l.js";
9
9
  import { t as Component } from "./dist-CE2G0-tp.js";
10
10
  import "./template-factory-CigcGcbz.js";
11
- import { c as makeCodeDiffStats, l as parseHtmlContent, t as FormattedAiBotMessage } from "./aibot-message-CiwsV-h8.js";
11
+ import { c as makeCodeDiffStats, l as parseHtmlContent, t as FormattedAiBotMessage } from "./aibot-message-BfRah4Lm.js";
12
12
  import { A as settled, I as waitUntil, d as click, o as waitFor, x as render } from "./dist-CWCoBB72.js";
13
13
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
14
14
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -7,7 +7,7 @@ import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
7
7
  import "./component-CqcrwY5l.js";
8
8
  import { t as Component } from "./dist-CE2G0-tp.js";
9
9
  import "./template-factory-CigcGcbz.js";
10
- import { t as OperatorModeContainer } from "./container-DYJ5z0jP.js";
10
+ import { t as OperatorModeContainer } from "./container-DRblzvCW.js";
11
11
  import { A as settled, I as waitUntil, a as find, d as click, l as triggerEvent, o as waitFor, s as fillIn } from "./dist-CWCoBB72.js";
12
12
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
13
13
  import { r as getService } from "./dist-5hbdxMR8.js";
@@ -3,7 +3,7 @@ import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtim
3
3
  import { Qr as wrapper_default, Si as baseRealm, Ur as FilterRefersToNonexistentTypeError, Vr as getFieldDefinitions, Wi as Loader, X as IndexQueryEngine, Zn as testRealmURL, _t as fetcher, gt as maybeHandleScopedCSSRequest, o as internalKeyFor, v as VirtualNetwork, vr as identifyCard, ya as rri } from "./runtime-common-BY5dBG5N.js";
4
4
  import { d as format } from "./esm-CCOu76Mh.js";
5
5
  import { t as config } from "./environment-kHP3shwQ.js";
6
- import { t as shimExternals } from "./externals-C65aJ_7H.js";
6
+ import { t as shimExternals } from "./externals-DiG6hYU9.js";
7
7
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
8
8
  import { $ as setupIndex, Q as serializeCard, Z as getTypes, v as getDbAdapter } from "./mock-matrix-Bkfl9ACG.js";
9
9
  import { t as p } from "./helpers-D2duENdj.js";
@@ -1,7 +1,7 @@
1
1
  import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
2
  import { Qr as wrapper_default, Si as baseRealm, Yn as testRRI, Zn as testRealmURL, _a as Deferred, ya as rri } from "./runtime-common-BY5dBG5N.js";
3
3
  import { f as fileDefFormats } from "./dompurify-runtime-DnZEeRZb.js";
4
- import { n as Submodes } from "./submode-switcher-Popj4iN5.js";
4
+ import { n as Submodes } from "./submode-switcher-iR4m0GzD.js";
5
5
  import { a as CodeModePanelHeights, y as src_default } from "./local-storage-keys-C0jyxDKn.js";
6
6
  import { A as settled, I as waitUntil, N as visit, a as find, d as click, o as waitFor, s as fillIn, w as currentURL } from "./dist-CWCoBB72.js";
7
7
  import { s as Position } from "./editor.api-n39zV6Fs.js";
@@ -120,6 +120,13 @@ var employeeCardSource = `
120
120
  }
121
121
  `;
122
122
  var erroringModuleSource = `throw new Error('boom');`;
123
+ var brokenThenFixedSource = `throw new Error('initial broken module');`;
124
+ var brokenThenFixedValidSource = `
125
+ import { CardDef } from 'https://cardstack.com/base/card-api';
126
+ export class BrokenThenFixed extends CardDef {
127
+ static displayName = 'Broken Then Fixed';
128
+ }
129
+ `;
123
130
  var inThisFileSource = `
124
131
  import {
125
132
  contains,
@@ -388,6 +395,7 @@ var localInheritSource = `
388
395
  `;
389
396
  (0, import_qunit.module)("Acceptance | code submode | inspector tests", function(hooks) {
390
397
  let adapter;
398
+ let realm;
391
399
  let monacoService;
392
400
  setupApplicationTest(hooks);
393
401
  setupLocalIndexing(hooks);
@@ -410,7 +418,7 @@ var localInheritSource = `
410
418
  });
411
419
  setupUserSubscription();
412
420
  setupAuthEndpoints();
413
- ({adapter} = await withCachedRealmSetup(async () => {
421
+ ({adapter, realm} = await withCachedRealmSetup(async () => {
414
422
  await setupAcceptanceTestRealm({
415
423
  mockMatrixUtils,
416
424
  contents: {
@@ -442,6 +450,7 @@ var localInheritSource = `
442
450
  "command-module.gts": commandModuleSource,
443
451
  "component-module.gts": componentModuleSource,
444
452
  "erroring-module.gts": erroringModuleSource,
453
+ "broken-then-fixed.gts": brokenThenFixedSource,
445
454
  "empty-file.gts": "",
446
455
  "sample-styles.css": "body { color: red; }",
447
456
  "person-entry.json": { data: {
@@ -1641,6 +1650,34 @@ export class ExportedCard extends ExportedCardParent {
1641
1650
  assert.dom("[data-test-inheritance-panel-header]").doesNotExist();
1642
1651
  assert.dom("[data-test-delete-module-button]").exists();
1643
1652
  });
1653
+ (0, import_qunit.test)("code mode recovers when a previously-broken module is fixed by an external write", async function(assert) {
1654
+ await visitOperatorMode({
1655
+ stacks: [[]],
1656
+ submode: "code",
1657
+ codePath: `${testRealmURL}broken-then-fixed.gts`
1658
+ });
1659
+ await waitFor("[data-test-syntax-error]");
1660
+ assert.dom("[data-test-syntax-error]").exists("initial broken source surfaces a syntax error");
1661
+ let store = getService("store");
1662
+ for (let [key, sub] of [...store.subscriptions]) {
1663
+ sub.unsubscribe();
1664
+ store.subscriptions.delete(key);
1665
+ }
1666
+ assert.strictEqual(store.subscriptions.size, 0, "store has no realm subscriptions before the external write");
1667
+ let incrementalEvent = new Deferred();
1668
+ let unsubscribe = getService("message-service").subscribe(testRealmURL, (ev) => {
1669
+ if (ev.eventName === "index" && ev.indexType === "incremental") {
1670
+ unsubscribe();
1671
+ incrementalEvent.fulfill();
1672
+ }
1673
+ });
1674
+ await realm.write("broken-then-fixed.gts", brokenThenFixedValidSource);
1675
+ await incrementalEvent.promise;
1676
+ await settled();
1677
+ assert.dom("[data-test-syntax-error]").doesNotExist("syntax error is cleared after the external write replaces the broken source with a valid one");
1678
+ assert.dom("[data-test-card-module-definition]").exists("the module inspector renders the fixed card definition");
1679
+ assert.dom("[data-test-card-module-definition]").includesText("Broken Then Fixed", "the fixed displayName is reflected in the inspector");
1680
+ });
1644
1681
  (0, import_qunit.test)("can delete an erroring module file", async function(assert) {
1645
1682
  await visitOperatorMode({
1646
1683
  stacks: [[]],
@@ -2,7 +2,7 @@ import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
2
  import { r as initializeDeferredDecorator, t as decorateFieldV2 } from "./runtime-CYyqkz5q-z3Y1hsJm.js";
3
3
  import { B as matchInstanceAgainstFilter, R as isClientEvaluable, Si as baseRealm, Wi as Loader, Zn as testRealmURL, _t as fetcher, gt as maybeHandleScopedCSSRequest, v as VirtualNetwork, ya as rri, z as makeInstanceComparator } from "./runtime-common-BY5dBG5N.js";
4
4
  import { t as config } from "./environment-kHP3shwQ.js";
5
- import { t as shimExternals } from "./externals-C65aJ_7H.js";
5
+ import { t as shimExternals } from "./externals-DiG6hYU9.js";
6
6
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
7
7
  import "./mock-matrix-Bkfl9ACG.js";
8
8
  import { t as p } from "./helpers-D2duENdj.js";
@@ -6,7 +6,7 @@ import { r as claimsFromRawToken } from "./realm-CxU8jc8l.js";
6
6
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
7
7
  import { r as getService } from "./dist-5hbdxMR8.js";
8
8
  import { pt as percySnapshot, s as assertMessages, tt as visitOperatorMode } from "./mock-matrix-Bkfl9ACG.js";
9
- import { i as testRealm3URL, n as setupInteractSubmodeTests, r as testRealm2URL, t as personalRealmURL } from "./interact-submode-setup-D23oc2q6.js";
9
+ import { i as testRealm3URL, n as setupInteractSubmodeTests, r as testRealm2URL, t as personalRealmURL } from "./interact-submode-setup-DI2HM3S-.js";
10
10
  //#region tests/acceptance/interact-submode-creation-and-permissions-test.gts
11
11
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
12
12
  (0, import_qunit.module)("Acceptance | interact submode creation & permissions", function(hooks) {
@@ -6,7 +6,7 @@ import { H as templateFactory, S as on } from "./index-DaCZcoCY-Bfb0Qdzr.js";
6
6
  import "./dist-BHeMAIJN.js";
7
7
  import "./component-CqcrwY5l.js";
8
8
  import "./template-factory-CigcGcbz.js";
9
- import { m as GridContainer, p as FieldContainer } from "./components-CBfd9MIo.js";
9
+ import { m as GridContainer, p as FieldContainer } from "./components-DYC4nC4r.js";
10
10
  import { r as getService } from "./dist-5hbdxMR8.js";
11
11
  import { D as setupAcceptanceTestRealm, F as setupUserSubscription, M as setupOnSave, a as SYSTEM_CARD_FIXTURE_CONTENTS, at as setupAuthEndpoints, j as setupLocalIndexing, nt as setupApplicationTest, t as setupMockMatrix, w as realmConfigCardJSON, x as makeMinimalPng } from "./mock-matrix-Bkfl9ACG.js";
12
12
  //#region tests/helpers/interact-submode-setup.gts
@@ -4,7 +4,7 @@ import { A as settled, a as find, c as triggerKeyEvent, d as click, f as focus,
4
4
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
5
5
  import { r as getService } from "./dist-5hbdxMR8.js";
6
6
  import { pt as percySnapshot, tt as visitOperatorMode } from "./mock-matrix-Bkfl9ACG.js";
7
- import { n as setupInteractSubmodeTests, r as testRealm2URL } from "./interact-submode-setup-D23oc2q6.js";
7
+ import { n as setupInteractSubmodeTests, r as testRealm2URL } from "./interact-submode-setup-DI2HM3S-.js";
8
8
  //#region tests/acceptance/interact-submode-test.gts
9
9
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
10
10
  (0, import_qunit.module)("Acceptance | interact submode tests", function(hooks) {
@@ -8,7 +8,7 @@ import { i as templateOnly, r as modifier } from "./dist-BHeMAIJN.js";
8
8
  import "./component-CqcrwY5l.js";
9
9
  import { t as Component } from "./dist-CE2G0-tp.js";
10
10
  import "./template-factory-CigcGcbz.js";
11
- import { s as ButtonComponent } from "./components-CBfd9MIo.js";
11
+ import { s as ButtonComponent } from "./components-DYC4nC4r.js";
12
12
  import { C as and, D as cn, H as not } from "./helpers-BGEPA06U.js";
13
13
  import { _ as IconComponent$1d } from "./warning-CY8WOyKw-BjT-7Nrv.js";
14
14
  import "./icons-DpXEIwY6.js";
@@ -15,7 +15,7 @@ import { i as templateOnly } from "./dist-BHeMAIJN.js";
15
15
  import "./component-CqcrwY5l.js";
16
16
  import { t as Component } from "./dist-CE2G0-tp.js";
17
17
  import "./template-factory-CigcGcbz.js";
18
- import { c as CardContainer } from "./components-CBfd9MIo.js";
18
+ import { c as CardContainer } from "./components-DYC4nC4r.js";
19
19
  import { t as buildWaiter } from "./dist-DMOowcyD.js";
20
20
  import { r as TrackedArray } from "./dist-v5YRo032.js";
21
21
  import { t as IconComponent } from "./triangle-alert-BGisgLsB.js";
@@ -10,7 +10,7 @@ import "./dist-BHeMAIJN.js";
10
10
  import "./component-CqcrwY5l.js";
11
11
  import { t as Component } from "./dist-CE2G0-tp.js";
12
12
  import "./template-factory-CigcGcbz.js";
13
- import { Z as hooks, a as BoxelInput, p as FieldContainer, s as ButtonComponent } from "./components-CBfd9MIo.js";
13
+ import { Z as hooks, a as BoxelInput, p as FieldContainer, s as ButtonComponent } from "./components-DYC4nC4r.js";
14
14
  import { n as isMatrixError } from "./matrix-utils-NBzMSOVx.js";
15
15
  //#region app/components/matrix/login.gts
16
16
  var Login = class extends Component {
@@ -1,5 +1,5 @@
1
1
  import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
- import { n as extractMatrixErrorMessage } from "./login-ou9E1DG9.js";
2
+ import { n as extractMatrixErrorMessage } from "./login-DWNfbapF.js";
3
3
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
4
4
  //#region tests/unit/matrix/login-error-text-test.ts
5
5
  var import_qunit = /* @__PURE__ */ __toESM(require_qunit());
@@ -1,4 +1,4 @@
1
- import { t as App } from "./app-BQLXfOdp.js";
1
+ import { t as App } from "./app-CPRVydcd.js";
2
2
  import { t as config } from "./environment-kHP3shwQ.js";
3
3
  //#region index.html?html-proxy&index=1.js
4
4
  App.create(config.APP);
@@ -8,7 +8,7 @@ import { r as modifier } from "./dist-BHeMAIJN.js";
8
8
  import "./component-CqcrwY5l.js";
9
9
  import { t as Component } from "./dist-CE2G0-tp.js";
10
10
  import "./template-factory-CigcGcbz.js";
11
- import { s as ButtonComponent } from "./components-CBfd9MIo.js";
11
+ import { s as ButtonComponent } from "./components-DYC4nC4r.js";
12
12
  import { D as cn, M as eq } from "./helpers-BGEPA06U.js";
13
13
  import { t as CardRenderer } from "./card-renderer-Dp8jm4ru.js";
14
14
  import { t as RenderedMarkdown } from "./rendered-markdown-B2pz5rUk.js";
@@ -7,7 +7,7 @@ import "./component-CqcrwY5l.js";
7
7
  import { t as Component } from "./dist-CE2G0-tp.js";
8
8
  import "./template-factory-CigcGcbz.js";
9
9
  import { A as settled, d as click, o as waitFor } from "./dist-CWCoBB72.js";
10
- import { t as MarkdownPreview } from "./markdown-preview-CKlpPkbc.js";
10
+ import { t as MarkdownPreview } from "./markdown-preview-o2AI98EN.js";
11
11
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
12
12
  import { r as getService } from "./dist-5hbdxMR8.js";
13
13
  import { rt as setupRenderingTest } from "./mock-matrix-Bkfl9ACG.js";
@@ -5,7 +5,7 @@ import "./dist-BHeMAIJN.js";
5
5
  import "./component-CqcrwY5l.js";
6
6
  import { t as Component } from "./dist-CE2G0-tp.js";
7
7
  import "./template-factory-CigcGcbz.js";
8
- import { S as Modal, c as CardContainer, g as IconButton$1, h as Header } from "./components-CBfd9MIo.js";
8
+ import { S as Modal, c as CardContainer, g as IconButton$1, h as Header } from "./components-DYC4nC4r.js";
9
9
  import { st as IconComponent$i } from "./warning-CY8WOyKw-BjT-7Nrv.js";
10
10
  import "./icons-DpXEIwY6.js";
11
11
  //#region app/components/modal-container.gts
@@ -4,7 +4,7 @@ import { f as action, n as inject } from "./service-BaBMSYir.js";
4
4
  import { n as registerDestructor } from "./destroyable-DeqNuajY.js";
5
5
  import { Y as isNone } from "./index-DaCZcoCY-Bfb0Qdzr.js";
6
6
  import { t as ClassBasedModifier } from "./dist-BHeMAIJN.js";
7
- import "./components-CBfd9MIo.js";
7
+ import "./components-DYC4nC4r.js";
8
8
  //#region ../../node_modules/.pnpm/ember-keyboard@8.2.1_@babel+core@7.29.0_@ember+test-helpers@5.4.2_@babel+core@7.29.0_@glint+template@1.7.7_/node_modules/ember-keyboard/dist/_rollupPluginBabelHelpers-30c82890.js
9
9
  function _defineProperty(obj, key, value) {
10
10
  if (key in obj) Object.defineProperty(obj, key, {
@@ -1,6 +1,6 @@
1
1
  import { s as __toESM } from "./chunk-CGdGNDIi.js";
2
2
  import { Zn as testRealmURL } from "./runtime-common-BY5dBG5N.js";
3
- import { n as Submodes } from "./submode-switcher-Popj4iN5.js";
3
+ import { n as Submodes } from "./submode-switcher-iR4m0GzD.js";
4
4
  import { N as visit, o as waitFor, w as currentURL } from "./dist-CWCoBB72.js";
5
5
  import { t as require_qunit } from "./qunit-DZc8vxH_.js";
6
6
  import { D as setupAcceptanceTestRealm, F as setupUserSubscription, M as setupOnSave, N as setupRealmCacheTeardown, a as SYSTEM_CARD_FIXTURE_CONTENTS, at as setupAuthEndpoints, j as setupLocalIndexing, nt as setupApplicationTest, q as withCachedRealmSetup, t as setupMockMatrix } from "./mock-matrix-Bkfl9ACG.js";
@@ -5,10 +5,10 @@ import { A as ensureTrailingSlash } from "./dompurify-runtime-DnZEeRZb.js";
5
5
  import { t as config } from "./environment-kHP3shwQ.js";
6
6
  import { or as setComponentTemplate } from "./service-BaBMSYir.js";
7
7
  import { H as templateFactory } from "./index-DaCZcoCY-Bfb0Qdzr.js";
8
- import { n as Submodes } from "./submode-switcher-Popj4iN5.js";
8
+ import { n as Submodes } from "./submode-switcher-iR4m0GzD.js";
9
9
  import "./component-CqcrwY5l.js";
10
10
  import "./template-factory-CigcGcbz.js";
11
- import { p as FieldContainer } from "./components-CBfd9MIo.js";
11
+ import { p as FieldContainer } from "./components-DYC4nC4r.js";
12
12
  import { m as SessionLocalStorageKey, p as ScrollPositions, y as src_default } from "./local-storage-keys-C0jyxDKn.js";
13
13
  import { I as waitUntil, N as visit, d as click, l as triggerEvent, o as waitFor, s as fillIn, w as currentURL } from "./dist-CWCoBB72.js";
14
14
  import "./realm-CxU8jc8l.js";