@cardstack/boxel-cli 0.12.0 → 0.13.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.
- package/bundled-realms/base/command.gts +4 -4
- package/bundled-realms/base/realm-api-keys.gts +35 -3
- package/bundled-realms/pretui/components/chip.gts +47 -2
- package/bundled-realms/pretui/components/chip.md +5 -2
- package/bundled-realms/pretui/components/chip.usage.gts +37 -2
- package/bundled-realms/pretui/components/status-chip.gts +12 -2
- package/bundled-realms/pretui/components/status-chip.md +2 -1
- package/bundled-realms/pretui/components/status-chip.usage.gts +2 -0
- package/bundled-test-harness/assets/{ai-module-creation-test-B9lSKNq1.js → ai-module-creation-test-DxxsXNXe.js} +1 -1
- package/bundled-test-harness/assets/{aibot-message-LXV0UlzI.js → aibot-message-Dg5nzE1b.js} +1 -1
- package/bundled-test-harness/assets/{app-BIQcKrVT.js → app-BEvPLshl.js} +8 -8
- package/bundled-test-harness/assets/{assistant-transcript-test-CG_2-bog.js → assistant-transcript-test-kILRv_pf.js} +1 -1
- package/bundled-test-harness/assets/{binary-upload-dedupe-test-Q7e6bzl1.js → binary-upload-dedupe-test-B_gcWqxF.js} +1 -1
- package/bundled-test-harness/assets/{bundled-base-DldokUSJ.js → bundled-base-CYD5iFX3.js} +3 -3
- package/bundled-test-harness/assets/{bundled-base-modules-test-VAlRx4t3.js → bundled-base-modules-test-bO7yZysu.js} +1 -1
- package/bundled-test-harness/assets/{can-invoke-test-BGmUJHxo.js → can-invoke-test-BBTE4_cE.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-paging-test-CzooKL4I.js → card-chooser-paging-test-14IqQei3.js} +1 -1
- package/bundled-test-harness/assets/{card-chooser-test-C3fjaDYi.js → card-chooser-test-CRg2JrXQ.js} +1 -1
- package/bundled-test-harness/assets/{card-def-field-def-relationships-test-yqv8ir8Y.js → card-def-field-def-relationships-test-BapYGyoB.js} +1 -1
- package/bundled-test-harness/assets/{card-delete-test-BtjqrqKO.js → card-delete-test-CvbDQUUE.js} +1 -1
- package/bundled-test-harness/assets/{chip-D6Xffhjx.css → chip-B2Ns53A6.css} +35 -9
- package/bundled-test-harness/assets/{chip-BydgljDL.js → chip-DVJE_YDh.js} +11 -3
- package/bundled-test-harness/assets/{choreo-D7dLCdGB.js → choreo-CIrop3HM.js} +16 -35
- package/bundled-test-harness/assets/choreo-Ca2Y2sF3.js +2 -0
- package/bundled-test-harness/assets/{choreo-feature-reel-test--x-L3ZKc.js → choreo-feature-reel-test-CJHms7Sf.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-ZO9vXOxd.js → choreo-gallery-DZm1KZ20.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-build-order-test-DG5UTyc9.js → choreo-gallery-build-order-test-QKyMWELN.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-compositor-test-DJP80SNj.js → choreo-gallery-compositor-test-BQDptxfE.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-cover-test-CHYz7sM4.js → choreo-gallery-cover-test-Do-HYF96.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-crossing-stage-test-BuinlINr.js → choreo-gallery-crossing-stage-test-yJVXghRc.js} +10 -10
- package/bundled-test-harness/assets/{choreo-gallery-demos-alive-test-BjNCGfH9.js → choreo-gallery-demos-alive-test-BCeaaZye.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-drift-test-BJ17f3yv.js → choreo-gallery-drift-test-CJ1yq6R0.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-escort-test-Dadih8-S.js → choreo-gallery-escort-test-DypqSgvs.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-films-test-CCXty_WI.js → choreo-gallery-films-test-ClMy5M_p.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-filter-test-BozCoT_M.js → choreo-gallery-filter-test-CzOmgqgl.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-fold-test-Kez2P3_Y.js → choreo-gallery-fold-test-qNnH6wtC.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-guide-pages-test-BV5oxrYA.js → choreo-gallery-guide-pages-test-BtKWMkTv.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-guides-test-DwYBDgKi.js → choreo-gallery-guides-test-CXMsuDYi.js} +4 -3
- package/bundled-test-harness/assets/{choreo-gallery-hang-test-B-5u7cGJ.js → choreo-gallery-hang-test-BD4JQ04e.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-highlight-test-BZ5Lg8V6.js → choreo-gallery-highlight-test-BK280K2W.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-inline-edit-test-wSlSI-VM.js → choreo-gallery-inline-edit-test-DAgUcaaw.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-interruption-test-DBpCEiro.js → choreo-gallery-interruption-test-DY5KUilC.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-lone-stack-test-aMLrHsns.js → choreo-gallery-lone-stack-test-Dxd_Nb0-.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-navigation-test-B8b-2ZTz.js → choreo-gallery-navigation-test-DWJq12PN.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-playhead-transport-test-B95CYBh7.js → choreo-gallery-playhead-transport-test-DlQ6yTKW.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-poplayout-subtree-test-jZAAICV6.js → choreo-gallery-poplayout-subtree-test-D59W8gYt.js} +5 -5
- package/bundled-test-harness/assets/{choreo-gallery-presence-modes-test-BawIKB-a.js → choreo-gallery-presence-modes-test-BAU-dggP.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-presentation-test-CYIb-8ML.js → choreo-gallery-presentation-test-BqGsinE0.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-reduced-motion-test-C6Vi1WYr.js → choreo-gallery-reduced-motion-test-By0rb2Ai.js} +4 -3
- package/bundled-test-harness/assets/{choreo-gallery-sheet-standalone-test-_e4T5KDI.js → choreo-gallery-sheet-standalone-test-Cfw-4ULF.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-sheet-test-Cv51Te3G.js → choreo-gallery-sheet-test-dm53Pdzb.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-site-test-Cm35kHu_.js → choreo-gallery-site-test-SAlqtZgL.js} +3 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-Bp6QVqlI.js → choreo-gallery-stage-CU8LvQqX.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stage-keyboard-test-DDX2cuMa.js → choreo-gallery-stage-keyboard-test-DQ4v5qA4.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-stages-test-Dfa_33_4.js → choreo-gallery-stages-test-CRvaS6w6.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-subdivision-test-CgR3WdcT.js → choreo-gallery-subdivision-test-CtOm-U35.js} +3 -3
- package/bundled-test-harness/assets/{choreo-gallery-table-plan-test-DF-cE3J9.js → choreo-gallery-table-plan-test-_0koIm2u.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-theater-test-BuIyb2ke.js → choreo-gallery-theater-test-yedwQVyP.js} +4 -4
- package/bundled-test-harness/assets/{choreo-gallery-tuning-test-BdZ45YBK.js → choreo-gallery-tuning-test-CmMtfJ5a.js} +1 -1
- package/bundled-test-harness/assets/{choreo-gallery-widget-room-test-HcPX75Dg.js → choreo-gallery-widget-room-test-jnYOas5x.js} +2 -2
- package/bundled-test-harness/assets/{choreo-gallery-wires-test-BhFCIjB1.js → choreo-gallery-wires-test-CSyqjVnm.js} +2 -2
- package/bundled-test-harness/assets/clip--wioup_3.js +2 -0
- package/bundled-test-harness/assets/{clip-BmBVqUyU.js → clip-Cm32sLyn.js} +3 -3
- package/bundled-test-harness/assets/{codeblocks-test-DbZYlmG_.js → codeblocks-test-j4ES37-L.js} +1 -1
- package/bundled-test-harness/assets/{compaction-test-D1G3KCSe.js → compaction-test-CyhMODxy.js} +1 -1
- package/bundled-test-harness/assets/{container-BCOmNUou.css → container-CAEYXGQg.css} +179 -155
- package/bundled-test-harness/assets/{container-XSX5809v.js → container-CATqNgYF.js} +20 -19
- package/bundled-test-harness/assets/{create-listing-modal-test--oGT9P_F.js → create-listing-modal-test-QmWcm9hl.js} +1 -1
- package/bundled-test-harness/assets/{debug-message-test-C8UZUtCt.js → debug-message-test-D-4Dcu8y.js} +1 -1
- package/bundled-test-harness/assets/{externals--YMzwHwd.js → externals-Cw0MmkHM.js} +38 -38
- package/bundled-test-harness/assets/{fallback-banner-live-delete-test-DPK_coJY.js → fallback-banner-live-delete-test-Bzqw4uMs.js} +1 -1
- package/bundled-test-harness/assets/{fallback-banner-test-C2wi6Lu6.js → fallback-banner-test-BMQVK4gy.js} +1 -1
- package/bundled-test-harness/assets/{fallback-models-test-SqdXWB1Z.js → fallback-models-test-DkdjPwvA.js} +1 -1
- package/bundled-test-harness/assets/{file-attachment-test-DT0HK6yS.js → file-attachment-test-yvR5gw9_.js} +1 -1
- package/bundled-test-harness/assets/{film-Zt2YoVoG.js → film-9V69qBWw.js} +6 -6
- package/bundled-test-harness/assets/{film-77OfTGL7.js → film-Z87hSVo_.js} +8 -8
- package/bundled-test-harness/assets/film-h1N8vUjG.js +2 -0
- package/bundled-test-harness/assets/{formatted-aibot-message-test-B6i0k9wW.js → formatted-aibot-message-test-DH3WPvU1.js} +1 -1
- package/bundled-test-harness/assets/{general-test-C0Xb2Idr.js → general-test-D2j4JhrD.js} +1 -1
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-in-cards-test-DFlkZtek.js → glimmer-motion-and-choreo-in-cards-test-Byg3fSOY.js} +32 -32
- package/bundled-test-harness/assets/{glimmer-motion-and-choreo-test-B2ustNm9.js → glimmer-motion-and-choreo-test-BM7uX8k4.js} +10 -10
- package/bundled-test-harness/assets/group-Cgg5RLul.js +2 -0
- package/bundled-test-harness/assets/{group-BNxp6qON.js → group-DL-b_Hzj.js} +2 -2
- package/bundled-test-harness/assets/{index-query-engine-test-BKOqgBMv.js → index-query-engine-test-DFkm037X.js} +1 -1
- package/bundled-test-harness/assets/{instance-filter-matcher-test-CNIzKZvP.js → instance-filter-matcher-test-UqB2Rto8.js} +1 -1
- package/bundled-test-harness/assets/item-Bu9hhPf2.js +2 -0
- package/bundled-test-harness/assets/{item-BDyVqxdA.js → item-CBEoTOyj.js} +2 -2
- package/bundled-test-harness/assets/{main-BiI-FhMc.js → main-CM62YtMN.js} +1 -1
- package/bundled-test-harness/assets/{markdown-preview-BItI_AEl.js → markdown-preview-D_QssEOi.js} +1 -1
- package/bundled-test-harness/assets/{markdown-preview-test-Bntyikh1.js → markdown-preview-test-nljzB8o_.js} +1 -1
- package/bundled-test-harness/assets/memory-B73-H_Rp.js +223 -0
- package/bundled-test-harness/assets/{model-cost-tier-test-Hu2-LpEw.js → model-cost-tier-test-CDXxio0B.js} +1 -1
- package/bundled-test-harness/assets/{motion-DeM7UCtd.js → motion-BiMvMS08.js} +1 -1
- package/bundled-test-harness/assets/{node-BAM535H5.js → node-BWOLCOMI.js} +95 -6
- package/bundled-test-harness/assets/{operation-lowering-test-CG1gatuH.js → operation-lowering-test-C_CaTJ0F.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-card-chooser-test-Bo5ZnF_x.js → operator-mode-card-chooser-test-CU5f7q6r.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-links-test-DVx_LQOU.js → operator-mode-links-test-CoeF3prV.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-test-CCbFrYgN.js → operator-mode-test-B9c6N5FF.js} +1 -1
- package/bundled-test-harness/assets/{operator-mode-ui-test-Dm2Bf6Vn.js → operator-mode-ui-test-CJQxypf_.js} +1 -1
- package/bundled-test-harness/assets/{overlay-menu-items-test-Bk5AidFD.js → overlay-menu-items-test-CFWZ-tzq.js} +1 -1
- package/bundled-test-harness/assets/{overlays-CY7IgeOl.js → overlays-DZXjQykn.js} +3 -3
- package/bundled-test-harness/assets/{overlays-DhVKmSP-.js → overlays-hrAO43jG.js} +1 -1
- package/bundled-test-harness/assets/{panel-t9QyU1lY.js → panel-CXmB6GMs.js} +15 -75
- package/bundled-test-harness/assets/{panel-CUYJ8oHS.css → panel-D2zkZoIr.css} +39 -31
- package/bundled-test-harness/assets/{past-sessions-test-Dq-Y9T6W.js → past-sessions-test-7FgLJlog.js} +1 -1
- package/bundled-test-harness/assets/{permission-checking-realm-test-CuImx8ie.js → permission-checking-realm-test-Cm9eB-hE.js} +1 -1
- package/bundled-test-harness/assets/pill-menu-Ctn3JNqG.js +154 -0
- package/bundled-test-harness/assets/{pill-menu-test-kpWBGrX5.js → pill-menu-test-Cf2xO2w6.js} +1 -1
- package/bundled-test-harness/assets/plate-CnatwP3n.js +2 -0
- package/bundled-test-harness/assets/{plate-B4Lz2Ulo.js → plate-Cu5EnXQZ.js} +3 -3
- package/bundled-test-harness/assets/player-Bwn5tEsh.js +2 -0
- package/bundled-test-harness/assets/{player-B965XH82.js → player-CVdsx7Ng.js} +3 -3
- package/bundled-test-harness/assets/presence-BKkR2au7.js +553 -0
- package/bundled-test-harness/assets/presence-CcEXVges.js +2 -0
- package/bundled-test-harness/assets/{quick-look-test-VW5_W7dm.js → quick-look-test-DrqgCLlM.js} +1 -1
- package/bundled-test-harness/assets/{realm-api-keys-Tlj0OK1c.css → realm-api-keys-16eN_yJb.css} +35 -25
- package/bundled-test-harness/assets/{realm-api-keys-sg--fohv.js → realm-api-keys-ZJedocgl.js} +11 -5
- package/bundled-test-harness/assets/realm-api-keys-m-EOSWuV.js +2 -0
- package/bundled-test-harness/assets/{realm-api-keys-test-mrgvnhFJ.js → realm-api-keys-test-Ba_1CKJu.js} +3 -5
- package/bundled-test-harness/assets/{realm-api-keys-test-Cy7qSoAd.js → realm-api-keys-test-jXscHLbS.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-DvpP1xf-.js → realm-config-DIOozzdQ.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-policy-standing-test-DJk-ftgH.js → realm-config-policy-standing-test-DEFQEEvl.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-routing-rule-edit-test-CTPiJrAL.js → realm-config-routing-rule-edit-test-CtLYsxzq.js} +1 -1
- package/bundled-test-harness/assets/{realm-config-settings-test-CUa-PjMC.js → realm-config-settings-test-Dsatuv-T.js} +1 -1
- package/bundled-test-harness/assets/{reasoning-test-CeeGGwvf.js → reasoning-test-3p_PygAV.js} +1 -1
- package/bundled-test-harness/assets/{rendered-markdown-B8TH0yN4.js → rendered-markdown-DPEXS7MQ.js} +1 -1
- package/bundled-test-harness/assets/{rendered-markdown-test-CBRsIBqW.js → rendered-markdown-test-DxbJ1nFX.js} +1 -1
- package/bundled-test-harness/assets/{room-message-test-BTxZ_W74.js → room-message-test-BBE8UIPX.js} +1 -1
- package/bundled-test-harness/assets/{run-BSEzn_PH.js → run-CfyzhBXb.js} +2 -2
- package/bundled-test-harness/assets/{schema-generation-test-De1eamwr.js → schema-generation-test-hkFzUr7-.js} +1 -1
- package/bundled-test-harness/assets/{scrolling-test-C7R0UASi.js → scrolling-test-B8CudFE9.js} +2 -2
- package/bundled-test-harness/assets/{searchable-option-test-BiOqxIIs.js → searchable-option-test-B8lZyJij.js} +1 -1
- package/bundled-test-harness/assets/{sending-test-DOXQ0Tvx.js → sending-test-BtH1z2uE.js} +1 -1
- package/bundled-test-harness/assets/{skills-test-BjCYI4Z_.js → skills-test-DIQvoCLm.js} +1 -1
- package/bundled-test-harness/assets/src-CEw1V0fi.js +11 -0
- package/bundled-test-harness/assets/{src-Bhefkhqj.js → src-CbBcj3xm.js} +11 -5
- package/bundled-test-harness/assets/{src-BDDYD1rs.js → src-D8bpj2tb.js} +2 -2
- package/bundled-test-harness/assets/{src-DySBAkac.js → src-Df4Vutrk.js} +3 -3
- package/bundled-test-harness/assets/{stick-to-bottom-resize-test-hN0AjdXP.js → stick-to-bottom-resize-test-Du4B3w2x.js} +4 -4
- package/bundled-test-harness/assets/{store-test-BD99H9dQ.js → store-test-DoHgyfQA.js} +1 -1
- package/bundled-test-harness/assets/{test-support-BcjhIHQa.js → test-support-BOFeeYuE.js} +25 -2
- package/bundled-test-harness/assets/test-support-CXESl4Wf.js +3 -0
- package/bundled-test-harness/assets/test-support-CgWmpebE.js +3 -0
- package/bundled-test-harness/assets/{test-support-Dl6FChlV.js → test-support-xTaMuaOA.js} +4 -27
- package/bundled-test-harness/assets/{tests-BqLDuQog.js → tests-DXX9TrgY.js} +759 -750
- package/bundled-test-harness/assets/{text-input-validator-test-CW6Ay7bo.js → text-input-validator-test-D56aDP2e.js} +1 -1
- package/bundled-test-harness/assets/{titles-CFt3dEls.js → titles-BUbpcMoe.js} +3 -3
- package/bundled-test-harness/assets/titles-D80DwOQU.js +2 -0
- package/bundled-test-harness/assets/{to-device-streaming-test-DRxNCi7Z.js → to-device-streaming-test-Ug8UnlUl.js} +1 -1
- package/bundled-test-harness/assets/{token-usage-test-Ck9rB3Ie.js → token-usage-test-BolKbZVL.js} +1 -1
- package/bundled-test-harness/assets/{tools-DRCjAZCp.js → tools-CkouX4wE.js} +1 -1
- package/bundled-test-harness/assets/{tools-test-B3zniq10.js → tools-test-CdYgRu5Z.js} +1 -1
- package/bundled-test-harness/assets/{turn-settling-test-C0X6hL7x.js → turn-settling-test-CS0PlpTg.js} +1 -1
- package/bundled-test-harness/assets/{turn-summary-0XOoAv3j.js → turn-summary-CAZVdcBd.js} +1 -1
- package/bundled-test-harness/assets/{unshare-key-Dfy1IK9g.js → unshare-key-W_bNI_MF.js} +0 -1
- package/bundled-test-harness/index.html +29 -28
- package/bundled-test-harness/tests/index.html +29 -28
- package/bundled-types/base/command.d.ts +0 -1
- package/bundled-types/choreo/choreo.gts +21 -42
- package/bundled-types/choreo/test-support/index.ts +9 -30
- package/bundled-types/glimmer-motion/index.ts +11 -3
- package/bundled-types/glimmer-motion/memory.ts +302 -0
- package/bundled-types/glimmer-motion/node.ts +125 -14
- package/bundled-types/glimmer-motion/presence-types.ts +13 -5
- package/bundled-types/glimmer-motion/presence.gts +199 -11
- package/bundled-types/glimmer-motion/snapshot.ts +280 -0
- package/bundled-types/glimmer-motion/test-support/index.ts +36 -4
- package/bundled-types/host-app/components/ai-assistant/llm-select.gts +3 -0
- package/bundled-types/host-app/components/ai-assistant/skill-menu/index.gts +3 -0
- package/bundled-types/host-app/components/matrix/room.gts +15 -3
- package/bundled-types/host-app/components/operator-mode/dashboard/add-workspace.gts +5 -3
- package/bundled-types/host-app/components/operator-mode/dashboard/archived-workspace.gts +3 -5
- package/bundled-types/host-app/components/operator-mode/dashboard/catalog-shelf.gts +24 -7
- package/bundled-types/host-app/components/operator-mode/dashboard/workspace.gts +9 -4
- package/bundled-types/host-app/components/pill-menu/index.gts +74 -23
- package/bundled-types/host-app/lib/key-shares.ts +0 -1
- package/bundled-types/host-app/tools/get-key-share-usage.ts +0 -1
- package/dist/index.js +161 -161
- package/package.json +1 -1
- package/src/commands/keys/manage.ts +22 -6
- package/src/lib/user-keys.ts +18 -5
- package/bundled-test-harness/assets/choreo-Cd9yKlEK.js +0 -2
- package/bundled-test-harness/assets/clip-DnEy6oK5.js +0 -2
- package/bundled-test-harness/assets/film-C4NJTl9U.js +0 -2
- package/bundled-test-harness/assets/group-CPQojb-T.js +0 -2
- package/bundled-test-harness/assets/item-DGzMAZ9K.js +0 -2
- package/bundled-test-harness/assets/pill-menu-DaRpDMUm.js +0 -68
- package/bundled-test-harness/assets/plate-B7JjCVMj.js +0 -2
- package/bundled-test-harness/assets/player-DpGXST02.js +0 -2
- package/bundled-test-harness/assets/presence-CmLmFwhO.js +0 -2
- package/bundled-test-harness/assets/presence-Sv4y4tQy.js +0 -230
- package/bundled-test-harness/assets/realm-api-keys-DkdlXgAg.js +0 -2
- package/bundled-test-harness/assets/src-BpmcuCfH.js +0 -10
- package/bundled-test-harness/assets/test-support-CB3auo8h.js +0 -2
- package/bundled-test-harness/assets/test-support-DfGKwg35.js +0 -3
- package/bundled-test-harness/assets/titles-DVhrJZzS.js +0 -2
|
@@ -20,6 +20,8 @@ export interface LLMOption {
|
|
|
20
20
|
|
|
21
21
|
interface Signature {
|
|
22
22
|
Args: {
|
|
23
|
+
/** see PillMenu's `anchorY` */
|
|
24
|
+
anchorY?: 'top' | 'bottom';
|
|
23
25
|
selected: string;
|
|
24
26
|
options: LLMOption[];
|
|
25
27
|
onChange: (selectedLLM: string) => void;
|
|
@@ -37,6 +39,7 @@ export default class LLMSelect extends Component<Signature> {
|
|
|
37
39
|
<template>
|
|
38
40
|
<PillMenu
|
|
39
41
|
class='llm-select'
|
|
42
|
+
@anchorY={{@anchorY}}
|
|
40
43
|
@onExpand={{@onExpand}}
|
|
41
44
|
@onCollapse={{@onCollapse}}
|
|
42
45
|
...attributes
|
|
@@ -32,6 +32,8 @@ const markdownDefRef = {
|
|
|
32
32
|
interface Signature {
|
|
33
33
|
Element: HTMLDivElement | HTMLButtonElement;
|
|
34
34
|
Args: {
|
|
35
|
+
/** see PillMenu's `anchorY` */
|
|
36
|
+
anchorY?: 'top' | 'bottom';
|
|
35
37
|
skills: RoomSkill[];
|
|
36
38
|
onExpand?: () => void;
|
|
37
39
|
onCollapse?: () => void;
|
|
@@ -46,6 +48,7 @@ export default class AiAssistantSkillMenu extends Component<Signature> {
|
|
|
46
48
|
<template>
|
|
47
49
|
<PillMenu
|
|
48
50
|
class='skill-menu'
|
|
51
|
+
@anchorY={{@anchorY}}
|
|
49
52
|
@onExpand={{fn this.setExpanded true}}
|
|
50
53
|
@onCollapse={{fn this.setExpanded false}}
|
|
51
54
|
title={{if this.isExpanded undefined this.headerText}}
|
|
@@ -397,9 +397,12 @@ export default class Room extends Component<Signature> {
|
|
|
397
397
|
{{/if}}
|
|
398
398
|
|
|
399
399
|
<div class='chat-input-area__bottom-actions'>
|
|
400
|
+
{{! the composer holds its bottom edge and grows upward, so
|
|
401
|
+
a collapsing menu's fading copy is pinned to the bottom }}
|
|
400
402
|
{{#if this.displayLLMSelect}}
|
|
401
403
|
<LLMSelect
|
|
402
404
|
class='llm-select'
|
|
405
|
+
@anchorY='bottom'
|
|
403
406
|
@selected={{@roomResource.activeLLM}}
|
|
404
407
|
@onChange={{perform @roomResource.activateLLMTask}}
|
|
405
408
|
@options={{this.llmsForSelectMenu}}
|
|
@@ -441,6 +444,7 @@ export default class Room extends Component<Signature> {
|
|
|
441
444
|
{{#if this.displaySkillMenu}}
|
|
442
445
|
<AiAssistantSkillMenu
|
|
443
446
|
class='skill-menu'
|
|
447
|
+
@anchorY='bottom'
|
|
444
448
|
@skills={{this.sortedSkills}}
|
|
445
449
|
@onChooseCard={{perform this.attachSkillTask}}
|
|
446
450
|
@onChooseSkillMarkdown={{perform this.attachSkillTask}}
|
|
@@ -625,11 +629,17 @@ export default class Room extends Component<Signature> {
|
|
|
625
629
|
flex-shrink: 1;
|
|
626
630
|
}
|
|
627
631
|
|
|
628
|
-
|
|
632
|
+
/* an open menu, not the fading copy of one that has closed: the row
|
|
633
|
+
takes its closed layout in the render that closes the menu */
|
|
634
|
+
.chat-input-area__bottom-actions:not(
|
|
635
|
+
:has(.menu-content:not([data-motion-memory] *))
|
|
636
|
+
) {
|
|
629
637
|
height: 40px;
|
|
630
638
|
}
|
|
631
639
|
|
|
632
|
-
.chat-input-area__bottom-actions:has(
|
|
640
|
+
.chat-input-area__bottom-actions:has(
|
|
641
|
+
.menu-content:not([data-motion-memory] *)
|
|
642
|
+
) {
|
|
633
643
|
padding: 0;
|
|
634
644
|
}
|
|
635
645
|
|
|
@@ -674,7 +684,9 @@ export default class Room extends Component<Signature> {
|
|
|
674
684
|
|
|
675
685
|
/* the bottom row answers its own width, so the context ring can step
|
|
676
686
|
aside before it squeezes the model's name out */
|
|
677
|
-
.chat-input-area__bottom-actions:not(
|
|
687
|
+
.chat-input-area__bottom-actions:not(
|
|
688
|
+
:has(.menu-content:not([data-motion-memory] *))
|
|
689
|
+
) {
|
|
678
690
|
container: composer / inline-size;
|
|
679
691
|
}
|
|
680
692
|
/* how full the model's context window is, beside the model it
|
|
@@ -67,12 +67,14 @@ export default class AddWorkspace extends Component<Signature> {
|
|
|
67
67
|
justify-content: center;
|
|
68
68
|
align-items: center;
|
|
69
69
|
background-color: transparent;
|
|
70
|
-
box-shadow: inset 0 0 0 1px var(--boxel-light-
|
|
70
|
+
box-shadow: inset 0 0 0 1px var(--boxel-light-25);
|
|
71
71
|
color: var(--boxel-light);
|
|
72
72
|
transition: box-shadow var(--boxel-transition);
|
|
73
73
|
}
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
@media (hover: hover) {
|
|
75
|
+
.add-workspace:hover {
|
|
76
|
+
box-shadow: inset 0 0 0 1px var(--boxel-light-50);
|
|
77
|
+
}
|
|
76
78
|
}
|
|
77
79
|
.add-workspace.is-selected,
|
|
78
80
|
.add-workspace:focus-visible {
|
|
@@ -90,14 +90,12 @@ export default class ArchivedWorkspace extends Component<Signature> {
|
|
|
90
90
|
@appearance='outlined'
|
|
91
91
|
@shape='pill'
|
|
92
92
|
@size='s'
|
|
93
|
+
@icon={{ArchiveRestoreIcon}}
|
|
93
94
|
@busy={{this.restoreTask.isRunning}}
|
|
94
95
|
@busyLabel='Restoring'
|
|
95
96
|
{{on 'click' (perform this.restoreTask)}}
|
|
96
97
|
data-test-restore-workspace-btn={{@archivedRealm.url}}
|
|
97
|
-
>
|
|
98
|
-
<ArchiveRestoreIcon width='14' height='14' aria-hidden='true' />
|
|
99
|
-
Restore
|
|
100
|
-
</Button>
|
|
98
|
+
>Restore</Button>
|
|
101
99
|
</div>
|
|
102
100
|
<style scoped>
|
|
103
101
|
.archived-row {
|
|
@@ -110,7 +108,7 @@ export default class ArchivedWorkspace extends Component<Signature> {
|
|
|
110
108
|
padding: var(--boxel-sp-xs);
|
|
111
109
|
border-radius: var(--dashboard-tile-radius);
|
|
112
110
|
background-color: var(--dashboard-row-tint);
|
|
113
|
-
box-shadow: inset 0 0 0 1px var(--boxel-light-
|
|
111
|
+
box-shadow: inset 0 0 0 1px var(--boxel-light-25);
|
|
114
112
|
color: var(--boxel-light);
|
|
115
113
|
}
|
|
116
114
|
.thumb {
|
|
@@ -315,7 +315,7 @@ export default class CatalogShelf extends Component<Signature> {
|
|
|
315
315
|
@appearance='link'
|
|
316
316
|
{{on 'click' this.openCatalog}}
|
|
317
317
|
data-test-catalog-see-all
|
|
318
|
-
>See the
|
|
318
|
+
>See the full catalog <span aria-hidden='true'>→</span></Button>
|
|
319
319
|
</div>
|
|
320
320
|
{{else if this.isPending}}
|
|
321
321
|
{{! The stories' metrics with nothing in them. }}
|
|
@@ -343,7 +343,7 @@ export default class CatalogShelf extends Component<Signature> {
|
|
|
343
343
|
class='see-all is-pending'
|
|
344
344
|
@tone='neutral'
|
|
345
345
|
@appearance='link'
|
|
346
|
-
>See the
|
|
346
|
+
>See the full catalog</Button>
|
|
347
347
|
</div>
|
|
348
348
|
{{/if}}
|
|
349
349
|
|
|
@@ -383,16 +383,33 @@ export default class CatalogShelf extends Component<Signature> {
|
|
|
383
383
|
border-radius: var(--boxel-border-radius-2xl);
|
|
384
384
|
background-color: var(--_story-paper);
|
|
385
385
|
color: var(--foreground);
|
|
386
|
+
/* Edged like the workspace tiles, just outside the card so the edge
|
|
387
|
+
reads the same against the dashboard on every paper. */
|
|
386
388
|
box-shadow:
|
|
387
|
-
0 0 0 1px var(--
|
|
389
|
+
0 0 0 1px var(--boxel-light-25),
|
|
388
390
|
var(--shadow-md);
|
|
389
|
-
transition: transform var(--boxel-transition);
|
|
390
391
|
}
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
392
|
+
/* The hover ring stands 1px off the resting edge. */
|
|
393
|
+
.story::after {
|
|
394
|
+
content: '';
|
|
395
|
+
position: absolute;
|
|
396
|
+
inset: 0;
|
|
397
|
+
border-radius: inherit;
|
|
398
|
+
outline: 1px solid var(--boxel-light-50);
|
|
399
|
+
outline-offset: 1px;
|
|
400
|
+
opacity: 0;
|
|
401
|
+
transition: opacity var(--boxel-transition);
|
|
402
|
+
pointer-events: none;
|
|
403
|
+
}
|
|
404
|
+
@media (hover: hover) {
|
|
405
|
+
.story:not(.is-pending):hover::after {
|
|
406
|
+
opacity: 1;
|
|
394
407
|
}
|
|
395
408
|
}
|
|
409
|
+
/* Keeps the hover ring off the keyboard ring. */
|
|
410
|
+
.story:has(.story-open:focus-visible)::after {
|
|
411
|
+
opacity: 0;
|
|
412
|
+
}
|
|
396
413
|
/* The story draws the keyboard ring around the whole card. */
|
|
397
414
|
.story:has(.story-open:focus-visible) {
|
|
398
415
|
box-shadow: var(--dashboard-ring), var(--shadow-md);
|
|
@@ -1037,14 +1037,19 @@ export default class Workspace extends Component<Signature> {
|
|
|
1037
1037
|
var(--boxel-sp-xs) var(--boxel-sp-xs);
|
|
1038
1038
|
border-radius: var(--dashboard-tile-radius);
|
|
1039
1039
|
background-color: var(--dashboard-row-tint);
|
|
1040
|
-
box-shadow: inset 0 0 0 1px var(--boxel-light-
|
|
1041
|
-
transition:
|
|
1040
|
+
box-shadow: inset 0 0 0 1px var(--boxel-light-25);
|
|
1041
|
+
transition:
|
|
1042
|
+
background-color var(--boxel-transition),
|
|
1043
|
+
box-shadow var(--boxel-transition);
|
|
1042
1044
|
}
|
|
1043
1045
|
.workspace.is-row:has(.host-menu) {
|
|
1044
1046
|
--_workspace-controls: 3;
|
|
1045
1047
|
}
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
+
@media (hover: hover) {
|
|
1049
|
+
.workspace.is-row:hover {
|
|
1050
|
+
background-color: var(--_workspace-row-tint-hover);
|
|
1051
|
+
box-shadow: inset 0 0 0 1px var(--boxel-light-50);
|
|
1052
|
+
}
|
|
1048
1053
|
}
|
|
1049
1054
|
/* Over the list's scrim, so a row the cursor rests on is never hidden
|
|
1050
1055
|
under it; the Show more toggle, later in the page at the same level,
|
|
@@ -3,10 +3,18 @@ import { action } from '@ember/object';
|
|
|
3
3
|
import Component from '@glimmer/component';
|
|
4
4
|
import { tracked } from '@glimmer/tracking';
|
|
5
5
|
|
|
6
|
+
import { motion, Presence, to, tween } from 'glimmer-motion';
|
|
7
|
+
|
|
6
8
|
import { Button, Header } from '@cardstack/boxel-ui/components';
|
|
7
9
|
|
|
8
10
|
import { DropdownArrowFilled } from '@cardstack/boxel-ui/icons';
|
|
9
11
|
|
|
12
|
+
import {
|
|
13
|
+
DURATION,
|
|
14
|
+
EASE_IN,
|
|
15
|
+
motionEnabled,
|
|
16
|
+
} from '../ai-assistant/motion/tokens';
|
|
17
|
+
|
|
10
18
|
export type PillMenuItem = {
|
|
11
19
|
cardId: string;
|
|
12
20
|
realmURL: string | undefined;
|
|
@@ -16,6 +24,13 @@ export type PillMenuItem = {
|
|
|
16
24
|
interface Signature {
|
|
17
25
|
Element: HTMLDivElement | HTMLButtonElement;
|
|
18
26
|
Args: {
|
|
27
|
+
/**
|
|
28
|
+
* The edge of the menu's containing block that holds still when the menu
|
|
29
|
+
* collapses: the menu's fading copy is pinned to it. `bottom` in a
|
|
30
|
+
* container that is anchored at its bottom and grows upward, such as the
|
|
31
|
+
* AI assistant's composer. Default `top`.
|
|
32
|
+
*/
|
|
33
|
+
anchorY?: 'top' | 'bottom';
|
|
19
34
|
title?: string;
|
|
20
35
|
onExpand?: () => void;
|
|
21
36
|
onCollapse?: () => void;
|
|
@@ -28,6 +43,22 @@ interface Signature {
|
|
|
28
43
|
};
|
|
29
44
|
}
|
|
30
45
|
|
|
46
|
+
// The expanded menu is the one item of a <Presence>, so its exit can play
|
|
47
|
+
// after `isExpanded` has already flipped. One stable array per state: the
|
|
48
|
+
// presence diffs its items by identity.
|
|
49
|
+
type MenuFace = { id: 'menu' };
|
|
50
|
+
const MENU_PRESENT: MenuFace[] = [{ id: 'menu' }];
|
|
51
|
+
const MENU_ABSENT: MenuFace[] = [];
|
|
52
|
+
const faceKey = (face: MenuFace) => face.id;
|
|
53
|
+
|
|
54
|
+
// Leaving eases in (ADR 007 §1.5). Opacity only: a fade cannot deform the
|
|
55
|
+
// menu's text, and under reduced motion it is the short fade §1.5 asks for.
|
|
56
|
+
const MENU_EXIT = to({ opacity: 0 });
|
|
57
|
+
const MENU_EXIT_TRANSITION = tween({
|
|
58
|
+
duration: DURATION.exit,
|
|
59
|
+
ease: [...EASE_IN],
|
|
60
|
+
});
|
|
61
|
+
|
|
31
62
|
/**
|
|
32
63
|
* A pill that expands into a menu and collapses back to the pill.
|
|
33
64
|
*
|
|
@@ -36,19 +67,44 @@ interface Signature {
|
|
|
36
67
|
* other face renders in the same pass. The expand animation is CSS on the
|
|
37
68
|
* menu root, so no state tracks whether it is playing.
|
|
38
69
|
*
|
|
39
|
-
* The menu
|
|
40
|
-
*
|
|
41
|
-
* already moved on
|
|
42
|
-
* re-render as the collapsed face, and
|
|
43
|
-
*
|
|
44
|
-
*
|
|
70
|
+
* The menu's exit belongs to the motion engine (ADR 007 §1.2). Its header and
|
|
71
|
+
* content are the caller's blocks, rendered from state that `@onCollapse` has
|
|
72
|
+
* already moved on, so the live menu cannot stay on screen to fade: it would
|
|
73
|
+
* re-render as the collapsed face, beside the pill, and stay focusable and
|
|
74
|
+
* clickable while it faded. The menu is the one item of a
|
|
75
|
+
* `<Presence @mode="snapshot">` instead: the live menu leaves with the render
|
|
76
|
+
* that collapses it, and the engine fades a static, inert copy of its last
|
|
77
|
+
* frame over the pill. With motion off nothing is copied.
|
|
45
78
|
*/
|
|
46
79
|
export default class PillMenu extends Component<Signature> {
|
|
47
80
|
<template>
|
|
48
|
-
{{#
|
|
81
|
+
{{#unless this.isExpanded}}
|
|
82
|
+
<Button
|
|
83
|
+
@kind='secondary'
|
|
84
|
+
@size='extra-small'
|
|
85
|
+
@pill={{true}}
|
|
86
|
+
{{on 'click' this.expandMenu}}
|
|
87
|
+
class='pill-menu-button'
|
|
88
|
+
data-test-pill-menu-button
|
|
89
|
+
data-test-pill-menu-collapsed
|
|
90
|
+
...attributes
|
|
91
|
+
>
|
|
92
|
+
{{yield to='headerIcon'}}
|
|
93
|
+
{{yield to='headerDetail'}}
|
|
94
|
+
<DropdownArrowFilled class='minimized-arrow' width='8px' height='8px' />
|
|
95
|
+
</Button>
|
|
96
|
+
{{/unless}}
|
|
97
|
+
<Presence
|
|
98
|
+
@items={{this.menuFaces}}
|
|
99
|
+
@key={{faceKey}}
|
|
100
|
+
@mode='snapshot'
|
|
101
|
+
@anchorY={{@anchorY}}
|
|
102
|
+
as |_face h|
|
|
103
|
+
>
|
|
49
104
|
<div
|
|
50
105
|
class='pill-menu
|
|
51
106
|
{{if (has-block "contentActions") "has-content-actions"}}'
|
|
107
|
+
{{motion presence=h exit=this.menuExit transition=MENU_EXIT_TRANSITION}}
|
|
52
108
|
...attributes
|
|
53
109
|
>
|
|
54
110
|
<Header class='menu-header' data-test-pill-menu-header>
|
|
@@ -90,22 +146,7 @@ export default class PillMenu extends Component<Signature> {
|
|
|
90
146
|
</div>
|
|
91
147
|
</div>
|
|
92
148
|
</div>
|
|
93
|
-
|
|
94
|
-
<Button
|
|
95
|
-
@kind='secondary'
|
|
96
|
-
@size='extra-small'
|
|
97
|
-
@pill={{true}}
|
|
98
|
-
{{on 'click' this.expandMenu}}
|
|
99
|
-
class='pill-menu-button'
|
|
100
|
-
data-test-pill-menu-button
|
|
101
|
-
data-test-pill-menu-collapsed
|
|
102
|
-
...attributes
|
|
103
|
-
>
|
|
104
|
-
{{yield to='headerIcon'}}
|
|
105
|
-
{{yield to='headerDetail'}}
|
|
106
|
-
<DropdownArrowFilled class='minimized-arrow' width='8px' height='8px' />
|
|
107
|
-
</Button>
|
|
108
|
-
{{/if}}
|
|
149
|
+
</Presence>
|
|
109
150
|
<style scoped>
|
|
110
151
|
.pill-menu {
|
|
111
152
|
--boxel-header-gap: var(--boxel-sp-4xs);
|
|
@@ -336,6 +377,16 @@ export default class PillMenu extends Component<Signature> {
|
|
|
336
377
|
</template>
|
|
337
378
|
|
|
338
379
|
@tracked isExpanded = false;
|
|
380
|
+
private motion = motionEnabled();
|
|
381
|
+
|
|
382
|
+
private get menuFaces(): MenuFace[] {
|
|
383
|
+
return this.isExpanded ? MENU_PRESENT : MENU_ABSENT;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
/** With motion off the menu has no exit to play, and nothing is copied. */
|
|
387
|
+
private get menuExit() {
|
|
388
|
+
return this.motion ? MENU_EXIT : undefined;
|
|
389
|
+
}
|
|
339
390
|
|
|
340
391
|
@action expandMenu() {
|
|
341
392
|
if (this.isExpanded) {
|